FastJet 3.4.1
JadePlugin.hh
1#ifndef __JADEPLUGIN_HH__
2#define __JADEPLUGIN_HH__
3
4//FJSTARTHEADER
5// $Id$
6//
7// Copyright (c) 2005-2023, 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
36FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
37
38// forward declaration to reduce includes
39class 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.
78public:
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
105private:
106
107 template<class N> void _actual_run_clustering(ClusterSequence &) const;
108
109 Strategy _strategy;
110};
111
112FASTJET_END_NAMESPACE // defined in fastjet/internal/base.hh
113
114#endif // __JADEPLUGIN_HH__
115
deals with clustering
Implementation of the e+e- Jade algorithm (plugin for fastjet v2.4 upwards)
Definition: JadePlugin.hh:77
JadePlugin(Strategy strategy=strategy_NNFJN2Plain)
Main constructor for the Jade Plugin class.
Definition: JadePlugin.hh:85
virtual double R() const
the plugin mechanism's standard way of accessing the jet radius.
Definition: JadePlugin.hh:99
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
Strategy
enum that contains the two clustering strategy options; for higher multiplicities,...
Definition: JadePlugin.hh:82
a class that allows a user to introduce their own "plugin" jet finder
Strategy
the various options for the algorithmic strategy to adopt in clustering events with kt and cambridge ...