Fork me on GitHub

source: git/external/fastjet/contribs/RecursiveTools/ModifiedMassDropTagger.hh@ 95e6b7a

ImprovedOutputFile Timing dual_readout llp
Last change on this file since 95e6b7a was 1f1f858, checked in by Michele Selvaggi <michele.selvaggi@…>, 9 years ago

added RecursiveTools package from fastjet contribs

  • Property mode set to 100644
File size: 5.2 KB
RevLine 
[1f1f858]1// $Id: ModifiedMassDropTagger.hh 688 2014-06-17 14:29:56Z jthaler $
2//
3// Copyright (c) 2014-, Gavin P. Salam
4// based on arXiv:1307.007 by Mrinal Dasgupta, Simone Marzani and Gavin P. Salam
5//
6//----------------------------------------------------------------------
7// This file is part of FastJet contrib.
8//
9// It is free software; you can redistribute it and/or modify it under
10// the terms of the GNU General Public License as published by the
11// Free Software Foundation; either version 2 of the License, or (at
12// your option) any later version.
13//
14// It is distributed in the hope that it will be useful, but WITHOUT
15// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17// License for more details.
18//
19// You should have received a copy of the GNU General Public License
20// along with this code. If not, see <http://www.gnu.org/licenses/>.
21//----------------------------------------------------------------------
22
23#ifndef __FASTJET_CONTRIB_MODIFIEDMASSDROPTAGGER_HH__
24#define __FASTJET_CONTRIB_MODIFIEDMASSDROPTAGGER_HH__
25
26#include "RecursiveSymmetryCutBase.hh"
27
28FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh
29
30namespace contrib{
31
32//------------------------------------------------------------------------
33/// \class ModifiedMassDropTagger
34/// An implementation of the modified Mass-Drop Tagger from arXiv:1307.0007.
35///
36class ModifiedMassDropTagger : public RecursiveSymmetryCutBase {
37public:
38
39 /// Simplified constructor, which takes just a symmetry cut (applied
40 /// on the scalar_z variable) and an optional subtractor.
41 ///
42 /// In this incarnation the ModifiedMassDropTagger is a bit of a
43 /// misnomer, because there is no mass-drop condition
44 /// applied. Recursion into the jet structure chooses the prong with
45 /// largest pt. (Results from arXiv:1307.0007 were based on the
46 /// largest mt, but this only makes a difference for values of the
47 /// symmetry_cut close to 1/2).
48 ///
49 /// If the (optional) pileup subtractor can be supplied, then see
50 /// also the documentation for the set_input_jet_is_subtracted() member
51 /// function.
52 ///
53 /// NB: The configuration of MMDT provided by this constructor is
54 /// probably the most robust for use with subtraction.
55 ModifiedMassDropTagger(double symmetry_cut,
56 const FunctionOfPseudoJet<PseudoJet> * subtractor = 0
57 ) :
58 RecursiveSymmetryCutBase(scalar_z, // the default SymmetryMeasure
59 std::numeric_limits<double>::infinity(), // the default is no mass drop
60 larger_pt, // the default RecursionChoice
61 subtractor),
62 _symmetry_cut(symmetry_cut)
63 {}
64
65 /// Full constructor, which takes the following parameters:
66 ///
67 /// \param symmetry_cut the value of the cut on the symmetry measure
68 /// \param symmetry_measure the choice of measure to use to estimate the symmetry
69 /// \param mu_cut the maximal allowed value of mass drop variable mu = m_heavy/m_parent
70 /// \param recursion_choice the strategy used to decide which subjet to recurse into
71 /// \param subtractor an optional pointer to a pileup subtractor (ignored if zero)
72 ///
73 /// To obtain the mMDT as discussed in arXiv:1307.0007, use an
74 /// symmetry_measure that's one of the following
75 ///
76 /// - RecursiveSymmetryCutBase::y (for a cut on y)
77 /// - RecursiveSymmetryCutBase::scalar_z (for a cut on z)
78 ///
79 /// and use the default recursion choice of
80 /// RecursiveSymmetryCutBase::larger_pt (larger_mt will give something
81 /// very similar, while larger_m will give the behaviour of the
82 /// original, but now deprecated MassDropTagger)
83 ///
84 /// Notes:
85 ///
86 /// - By default the ModifiedMassDropTagger will relcuster the jets
87 /// with the C/A algorithm (if needed).
88 ///
89 /// - the mu_cut parameter is mostly irrelevant when it's taken
90 /// larger than about 1/2: the tagger is then one that cuts
91 /// essentially on the (a)symmetry of the jet's momentum
92 /// sharing. The default value of infinity turns off its use
93 /// entirely
94 ModifiedMassDropTagger(double symmetry_cut,
95 SymmetryMeasure symmetry_measure,
96 double mu_cut = std::numeric_limits<double>::infinity(),
97 RecursionChoice recursion_choice = larger_pt,
98 const FunctionOfPseudoJet<PseudoJet> * subtractor = 0
99 ) :
100 RecursiveSymmetryCutBase(symmetry_measure, mu_cut, recursion_choice, subtractor),
101 _symmetry_cut(symmetry_cut)
102 {}
103
104 /// default destructor
105 virtual ~ModifiedMassDropTagger(){}
106
107protected:
108
109 /// The symmetry cut function for MMDT returns just a constant, since the cut value
110 /// has no dependence on the subjet kinematics
111 virtual double symmetry_cut_fn(const PseudoJet & /* p1 */,
112 const PseudoJet & /* p2 */
113 ) const {return _symmetry_cut;}
114 virtual std::string symmetry_cut_description() const;
115
116 double _symmetry_cut;
117};
118
119} // namespace contrib
120
121FASTJET_END_NAMESPACE
122
123#endif // __FASTJET_CONTRIB_MODIFIEDMASSDROPTAGGER_HH__
Note: See TracBrowser for help on using the repository browser.