Back to home page

EIC code displayed by LXR

 
 

    


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__