FastJet  3.2.0
JadeDistanceTagger.hh
1 //STARTHEADER
2 // $Id$
3 //
4 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin Salam and Gregory Soyez
5 //
6 //----------------------------------------------------------------------
7 // This file is part of FastJet.
8 //
9 // FastJet is free software; you can redistribute it and/or modify
10 // it under the terms of the GNU General Public License as published by
11 // the Free Software Foundation; either version 2 of the License, or
12 // (at your option) any later version.
13 //
14 // The algorithms that underlie FastJet have required considerable
15 // development and are described in hep-ph/0512210. If you use
16 // FastJet as part of work towards a scientific publication, please
17 // include a citation to the FastJet paper.
18 //
19 // FastJet is distributed in the hope that it will be useful,
20 // but WITHOUT ANY WARRANTY; without even the implied warranty of
21 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 // GNU General Public License for more details.
23 //
24 // You should have received a copy of the GNU General Public License
25 // along with FastJet; if not, write to the Free Software
26 // Foundation, Inc.:
27 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28 //----------------------------------------------------------------------
29 //ENDHEADER
30 
31 #ifndef __FASTJET_JADE_DISTANCE_TAGGER_HH__
32 #define __FASTJET_JADE_DISTANCE_TAGGER_HH__
33 
34 #include <fastjet/tools/Transformer.hh>
35 #include <fastjet/CompositeJetStructure.hh>
36 
37 FASTJET_BEGIN_NAMESPACE
38 
39 class JadeDistanceTagger;
40 class JadeDistanceStructure;
41 
42 //----------------------------------------------------------------------
43 /// @ingroup tools_taggers
44 /// \class JadeDistanceTagger
45 /// Class that helps perform 2-pronged boosted tagging searching the
46 /// clustring with maximal Jade distance
47 ///
48 /// <FULL DESCRIPTION TO BE ADDED>
49 ///
50 /// \section desc Options
51 ///
52 /// The constructor has the following arguments:
53 /// - The first argument is the minimal mass drop requested
54 /// - The second argument is the maximal mass of the subjets
55 ///
56 /// \section input Input conditions
57 ///
58 /// - the original jet must have constituents
59 ///
60 /// \section output Output/interface
61 ///
62 /// - the 2 subjets are kept as pieces if some substructure is found,
63 /// otherwise a single 0-momentum piece
64 /// - the 'mdrop' and 'jade distance' values corresponding to the
65 /// unclustering step that passed the tagger's cuts
66 ///
68 public:
69  /// default ctor
70  JadeDistanceTagger(const double mdrop=0.9, const double mcut=40.0)
71  : _mdrop(mdrop), _mcut(mcut){};
72 
73  /// description of the tagger
74  virtual std::string description() const;
75 
76  /// the tagging itself
77  /// \param jet the PseudoJet to tag
78  virtual PseudoJet apply(const PseudoJet & jet) const;
79 
80  /// the type of the associated structure
82 
83 protected:
84  void _recursively_find_subjets(const PseudoJet &jet, std::vector<PseudoJet> &subjets) const;
85 
86  double _mdrop, _mcut;
87 };
88 
89 
90 //------------------------------------------------------------------------
91 /// @ingroup tools_taggers
92 /// \class JadeDistanceStructure
93 /// the structure returned by the JadeDistanceTagger transformer.
94 ///
95 /// See the JadeDistanceTagger class description for the details of what
96 /// is inside this structure
97 ///
99 public:
100  /// ctor with pieces initialisation
101  JadeDistanceStructure(std::vector<PseudoJet> pieces) :
102  CompositeJetStructure(pieces), _mdrop(0.0), _jade_distance(0.0){}
103 
104  /// access to the associated N-subjettiness
105  inline double mdrop() const{return _mdrop;}
106 
107  /// access to the associated angle with the boosted axis
108  inline double jade_distance() const {return _jade_distance;}
109 
110 protected:
111  mutable double _mdrop; ///< the value of the mass-drop parameter
112  mutable double _jade_distance; ///< the value of the jade distance
113 
114  // allow the tagger to set these
115  friend class JadeDistanceTagger;
116 };
117 
118 
119 
120 FASTJET_END_NAMESPACE
121 
122 #endif // __FASTJET_JADE_DISTANCE_TAGGER_HH__
123 
double _jade_distance
the value of the jade distance
double _mdrop
the value of the mass-drop parameter
Class that helps perform 2-pronged boosted tagging searching the clustring with maximal Jade distance...
Base (abstract) class for a jet transformer.
Definition: Transformer.hh:71
JadeDistanceStructure(std::vector< PseudoJet > pieces)
ctor with pieces initialisation
The structure for a jet made of pieces.
the structure returned by the JadeDistanceTagger transformer.
double jade_distance() const
access to the associated angle with the boosted axis
JadeDistanceStructure StructureType
the type of the associated structure
JadeDistanceTagger(const double mdrop=0.9, const double mcut=40.0)
default ctor
double mdrop() const
access to the associated N-subjettiness
Class to contain pseudojets, including minimal information of use to jet-clustering routines...
Definition: PseudoJet.hh:67