FastJet  3.0.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
EECambridgePlugin.hh
1 #ifndef __EECAMBRIDGEPLUGIN_HH__
2 #define __EECAMBRIDGEPLUGIN_HH__
3 
4 //STARTHEADER
5 // $Id: EECambridgePlugin.hh 2692 2011-11-14 16:27:44Z soyez $
6 //
7 // Copyright (c) 2009, Matteo Cacciari, Gavin Salam and Gregory Soyez
8 //
9 //----------------------------------------------------------------------
10 // This file is part of FastJet.
11 //
12 // FastJet is free software; you can redistribute it and/or modify
13 // it under the terms of the GNU General Public License as published by
14 // the Free Software Foundation; either version 2 of the License, or
15 // (at your option) any later version.
16 //
17 // The algorithms that underlie FastJet have required considerable
18 // development and are described in hep-ph/0512210. If you use
19 // FastJet as part of work towards a scientific publication, please
20 // include a citation to the FastJet paper.
21 //
22 // FastJet is distributed in the hope that it will be useful,
23 // but WITHOUT ANY WARRANTY; without even the implied warranty of
24 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 // GNU General Public License for more details.
26 //
27 // You should have received a copy of the GNU General Public License
28 // along with FastJet. If not, see <http://www.gnu.org/licenses/>.
29 //----------------------------------------------------------------------
30 //ENDHEADER
31 
32 
33 #include "fastjet/JetDefinition.hh"
34 
35 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
36 
37 // forward declaration to reduce includes
38 class ClusterSequence;
39 
40 //----------------------------------------------------------------------
41 //
42 /// @ingroup plugins
43 /// \class EECambridgePlugin
44 /// Implementation of the e+e- Cambridge algorithm (plugin for fastjet v2.4 upwards)
45 ///
46 /// EECambridgePlugin is a plugin for fastjet (v2.4 upwards)
47 /// It implements the Cambridge algorithm, as defined in
48 ///
49 /// Better jet clustering algorithms
50 /// Yuri Dokshitzer, Garth Leder, Stefano Moretti, Bryan Webber
51 /// JHEP 9708 (1997) 001
52 /// http://www-spires.slac.stanford.edu/spires/find/hep/www?rawcmd=FIND+j+JHEPA%2C9708%2C001
53 ///
54 /// On construction one must supply a ycut value.
55 ///
56 /// To get the jets at the end call ClusterSequence::inclusive_jets();
58 public:
59  /// Main constructor for the EECambridge Plugin class.
60  /// It takes the dimensionless parameter ycut (the Q value for normalisation
61  /// of the kt-distances is taken from the sum of all particle energies).
62  EECambridgePlugin (double ycut_in) : _ycut(ycut_in) {}
63 
64  /// copy constructor
66  *this = plugin;
67  }
68 
69  // the things that are required by base class
70  virtual std::string description () const;
71  virtual void run_clustering(ClusterSequence &) const;
72 
73  double ycut() const {return _ycut;}
74 
75  /// the plugin mechanism's standard way of accessing the jet radius.
76  /// This must be set to return something sensible, even if R
77  /// does not make sense for this algorithm!
78  virtual double R() const {return 1.0;}
79 
80  /// avoid the warning whenever the user requests "exclusive" jets
81  /// from the cluster sequence
82  virtual bool exclusive_sequence_meaningful() const {return true;}
83 
84 private:
85  double _ycut;
86 };
87 
88 FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh
89 
90 #endif // __EECAMBRIDGEPLUGIN_HH__
91