FastJet  3.3.3
JadePlugin.hh
1 #ifndef __JADEPLUGIN_HH__
2 #define __JADEPLUGIN_HH__
3 
4 //FJSTARTHEADER
5 // $Id: JadePlugin.hh 4420 2019-11-29 09:28:20Z soyez $
6 //
7 // Copyright (c) 2005-2019, Matteo Cacciari, Gavin P. 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. They are described in the original FastJet paper,
19 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use
20 // FastJet as part of work towards a scientific publication, please
21 // quote the version you use and include a citation to the manual and
22 // optionally also to hep-ph/0512210.
23 //
24 // FastJet is distributed in the hope that it will be useful,
25 // but WITHOUT ANY WARRANTY; without even the implied warranty of
26 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 // GNU General Public License for more details.
28 //
29 // You should have received a copy of the GNU General Public License
30 // along with FastJet. If not, see <http://www.gnu.org/licenses/>.
31 //----------------------------------------------------------------------
32 //FJENDHEADER
33 
34 #include "fastjet/JetDefinition.hh"
35 
36 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
37 
38 // forward declaration to reduce includes
39 class ClusterSequence;
40 
41 //----------------------------------------------------------------------
42 //
43 /// @ingroup plugins
44 /// \class JadePlugin
45 /// Implementation of the e+e- Jade algorithm (plugin for fastjet v2.4 upwards)
46 ///
47 /// JadePlugin is a plugin for fastjet (v2.4 upwards)
48 /// It implements the JADE algorithm, which is an e+e- sequential
49 /// recombination algorithm with interparticle distance
50 ///
51 /// dij = 2 E_i E_j (1 - cos theta_ij)
52 ///
53 /// or equivalently
54 ///
55 /// yij = dij/E_{vis}^2
56 ///
57 /// This corresponds to the distance measured used in
58 ///
59 /// "Experimental Investigation of the Energy Dependence of the Strong Coupling Strength."
60 /// JADE Collaboration (S. Bethke et al.)
61 /// Phys.Lett.B213:235,1988
62 ///
63 /// The JADE article carries out particle recombinations in the
64 /// E-scheme (4-vector recombination), which is the default procedure for this
65 /// plugin.
66 ///
67 /// NOTE: other widely used schemes include E0, P, P0; however they also
68 /// involve modifications to the distance measure. Be sure of
69 /// what you're doing before running a JADE type algorithm.
70 ///
71 /// To access the jets with a given ycut value (clustering stops once
72 /// all yij > ycut), use
73 ///
74 /// vector<PseudoJet> jets = cluster_sequence.exclusive_jets_ycut(ycut);
75 ///
76 /// and related routines.
78 public:
79  /// enum that contains the two clustering strategy options; for
80  /// higher multiplicities, strategy_NNFJN2Plain is about a factor of
81  /// two faster.
82  enum Strategy { strategy_NNH = 0, strategy_NNFJN2Plain = 1};
83 
84  /// Main constructor for the Jade Plugin class.
85  JadePlugin (Strategy strategy = strategy_NNFJN2Plain) : _strategy(strategy) {}
86 
87  /// copy constructor
88  JadePlugin (const JadePlugin & plugin) {
89  *this = plugin;
90  }
91 
92  // the things that are required by base class
93  virtual std::string description () const;
94  virtual void run_clustering(ClusterSequence &) const;
95 
96  /// the plugin mechanism's standard way of accessing the jet radius.
97  /// This must be set to return something sensible, even if R
98  /// does not make sense for this algorithm!
99  virtual double R() const {return 1.0;}
100 
101  /// avoid the warning whenever the user requests "exclusive" jets
102  /// from the cluster sequence
103  virtual bool exclusive_sequence_meaningful() const {return true;}
104 
105 private:
106 
107  template<class N> void _actual_run_clustering(ClusterSequence &) const;
108 
109  Strategy _strategy;
110 };
111 
112 FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh
113 
114 #endif // __JADEPLUGIN_HH__
115 
virtual double R() const
the plugin mechanism&#39;s standard way of accessing the jet radius.
Definition: JadePlugin.hh:99
Strategy
enum that contains the two clustering strategy options; for higher multiplicities, strategy_NNFJN2Plain is about a factor of two faster.
Definition: JadePlugin.hh:82
deals with clustering
JadePlugin(const JadePlugin &plugin)
copy constructor
Definition: JadePlugin.hh:88
virtual bool exclusive_sequence_meaningful() const
avoid the warning whenever the user requests "exclusive" jets from the cluster sequence ...
Definition: JadePlugin.hh:103
a class that allows a user to introduce their own "plugin" jet finder
JadePlugin(Strategy strategy=strategy_NNFJN2Plain)
Main constructor for the Jade Plugin class.
Definition: JadePlugin.hh:85
Implementation of the e+e- Jade algorithm (plugin for fastjet v2.4 upwards)
Definition: JadePlugin.hh:77