|
||||
File indexing completed on 2025-01-18 09:57:14
0001 // $Id: ModifiedMassDropTagger.hh 1032 2017-07-31 14:20:03Z gsoyez $ 0002 // 0003 // Copyright (c) 2014-, Gavin P. Salam 0004 // based on arXiv:1307.007 by Mrinal Dasgupta, Simone Marzani and Gavin P. Salam 0005 // 0006 //---------------------------------------------------------------------- 0007 // This file is part of FastJet contrib. 0008 // 0009 // It is free software; you can redistribute it and/or modify it under 0010 // the terms of the GNU General Public License as published by the 0011 // Free Software Foundation; either version 2 of the License, or (at 0012 // your option) any later version. 0013 // 0014 // It is distributed in the hope that it will be useful, but WITHOUT 0015 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 0016 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 0017 // License for more details. 0018 // 0019 // You should have received a copy of the GNU General Public License 0020 // along with this code. If not, see <http://www.gnu.org/licenses/>. 0021 //---------------------------------------------------------------------- 0022 0023 #ifndef __FASTJET_CONTRIB_MODIFIEDMASSDROPTAGGER_HH__ 0024 #define __FASTJET_CONTRIB_MODIFIEDMASSDROPTAGGER_HH__ 0025 0026 #include "RecursiveSymmetryCutBase.hh" 0027 0028 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 0029 0030 namespace contrib{ 0031 0032 //------------------------------------------------------------------------ 0033 /// \class ModifiedMassDropTagger 0034 /// An implementation of the modified Mass-Drop Tagger from arXiv:1307.0007. 0035 /// 0036 class ModifiedMassDropTagger : public RecursiveSymmetryCutBase { 0037 public: 0038 0039 /// Simplified constructor, which takes just a symmetry cut (applied 0040 /// on the scalar_z variable) and an optional subtractor. 0041 /// 0042 /// In this incarnation the ModifiedMassDropTagger is a bit of a 0043 /// misnomer, because there is no mass-drop condition 0044 /// applied. Recursion into the jet structure chooses the prong with 0045 /// largest pt. (Results from arXiv:1307.0007 were based on the 0046 /// largest mt, but this only makes a difference for values of the 0047 /// symmetry_cut close to 1/2). 0048 /// 0049 /// If the (optional) pileup subtractor can be supplied, then see 0050 /// also the documentation for the set_input_jet_is_subtracted() member 0051 /// function. 0052 /// 0053 /// NB: The configuration of MMDT provided by this constructor is 0054 /// probably the most robust for use with subtraction. 0055 ModifiedMassDropTagger(double symmetry_cut, 0056 const FunctionOfPseudoJet<PseudoJet> * subtractor = 0 0057 ) : 0058 RecursiveSymmetryCutBase(scalar_z, // the default SymmetryMeasure 0059 std::numeric_limits<double>::infinity(), // the default is no mass drop 0060 larger_pt, // the default RecursionChoice 0061 subtractor), 0062 _symmetry_cut(symmetry_cut) 0063 {} 0064 0065 /// Full constructor, which takes the following parameters: 0066 /// 0067 /// \param symmetry_cut the value of the cut on the symmetry measure 0068 /// \param symmetry_measure the choice of measure to use to estimate the symmetry 0069 /// \param mu_cut the maximal allowed value of mass drop variable mu = m_heavy/m_parent 0070 /// \param recursion_choice the strategy used to decide which subjet to recurse into 0071 /// \param subtractor an optional pointer to a pileup subtractor (ignored if zero) 0072 /// 0073 /// To obtain the mMDT as discussed in arXiv:1307.0007, use an 0074 /// symmetry_measure that's one of the following 0075 /// 0076 /// - RecursiveSymmetryCutBase::y (for a cut on y) 0077 /// - RecursiveSymmetryCutBase::scalar_z (for a cut on z) 0078 /// 0079 /// and use the default recursion choice of 0080 /// RecursiveSymmetryCutBase::larger_pt (larger_mt will give something 0081 /// very similar, while larger_m will give the behaviour of the 0082 /// original, but now deprecated MassDropTagger) 0083 /// 0084 /// Notes: 0085 /// 0086 /// - By default the ModifiedMassDropTagger will relcuster the jets 0087 /// with the C/A algorithm (if needed). 0088 /// 0089 /// - the mu_cut parameter is mostly irrelevant when it's taken 0090 /// larger than about 1/2: the tagger is then one that cuts 0091 /// essentially on the (a)symmetry of the jet's momentum 0092 /// sharing. The default value of infinity turns off its use 0093 /// entirely 0094 ModifiedMassDropTagger(double symmetry_cut, 0095 SymmetryMeasure symmetry_measure, 0096 double mu_cut = std::numeric_limits<double>::infinity(), 0097 RecursionChoice recursion_choice = larger_pt, 0098 const FunctionOfPseudoJet<PseudoJet> * subtractor = 0 0099 ) : 0100 RecursiveSymmetryCutBase(symmetry_measure, mu_cut, recursion_choice, subtractor), 0101 _symmetry_cut(symmetry_cut) 0102 {} 0103 0104 /// default destructor 0105 virtual ~ModifiedMassDropTagger(){} 0106 0107 //---------------------------------------------------------------------- 0108 // access to class info 0109 double symmetry_cut() const { return _symmetry_cut; } 0110 0111 protected: 0112 0113 /// The symmetry cut function for MMDT returns just a constant, since the cut value 0114 /// has no dependence on the subjet kinematics 0115 virtual double symmetry_cut_fn(const PseudoJet & /* p1 */, 0116 const PseudoJet & /* p2 */, 0117 void *extra_parameters = 0 0118 ) const {return _symmetry_cut;} 0119 virtual std::string symmetry_cut_description() const; 0120 0121 double _symmetry_cut; 0122 }; 0123 0124 } // namespace contrib 0125 0126 FASTJET_END_NAMESPACE 0127 0128 #endif // __FASTJET_CONTRIB_MODIFIEDMASSDROPTAGGER_HH__
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |