|
||||
File indexing completed on 2025-01-18 09:57:15
0001 // $Id: SoftDrop.hh 1034 2017-08-01 10:03:53Z gsoyez $ 0002 // 0003 // Copyright (c) 2014-, Gregory Soyez, Jesse Thaler 0004 // based on arXiv:1402.2657 by Andrew J. Larkoski, Simone Marzani, 0005 // Gregory Soyez, Jesse Thaler 0006 // 0007 //---------------------------------------------------------------------- 0008 // This file is part of FastJet contrib. 0009 // 0010 // It is free software; you can redistribute it and/or modify it under 0011 // the terms of the GNU General Public License as published by the 0012 // Free Software Foundation; either version 2 of the License, or (at 0013 // your option) any later version. 0014 // 0015 // It is distributed in the hope that it will be useful, but WITHOUT 0016 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 0017 // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 0018 // License for more details. 0019 // 0020 // You should have received a copy of the GNU General Public License 0021 // along with this code. If not, see <http://www.gnu.org/licenses/>. 0022 //---------------------------------------------------------------------- 0023 0024 #ifndef __FASTJET_CONTRIB_SOFTDROP_HH__ 0025 #define __FASTJET_CONTRIB_SOFTDROP_HH__ 0026 0027 #include "RecursiveSymmetryCutBase.hh" 0028 0029 FASTJET_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh 0030 0031 0032 namespace contrib{ 0033 0034 //------------------------------------------------------------------------ 0035 /// \class SoftDrop 0036 /// An implementation of the SoftDrop from arXiv:1402.2657. 0037 /// 0038 /// For the basic functionalities, we refer the reader to the 0039 /// documentation of the RecursiveSymmetryCutBase from which SoftDrop 0040 /// inherits. Here, we mostly put the emphasis on things specific to 0041 /// SoftDrop: 0042 /// 0043 /// - the cut applied recursively is 0044 /// \f[ 0045 /// z > z_{\rm cut} (\theta/R0)^\beta 0046 /// \f] 0047 /// with z the asymmetry measure and \f$\theta\f$ the geometrical 0048 /// distance between the two subjets. R0 is set to 1 by default. 0049 /// 0050 /// - by default, we work in "grooming mode" i.s. if no substructure 0051 /// is found, we return a jet made of a single parton. Note that 0052 /// this behaviour differs from the mMDT (and can be a source of 0053 /// differences when running SoftDrop with beta=0.) 0054 /// 0055 class SoftDrop : public RecursiveSymmetryCutBase { 0056 public: 0057 /// Simplified constructor. This takes the value of the "beta" 0058 /// parameter and the symmetry cut (applied by default on the 0059 /// scalar_z variable, as for the mMDT). It also takes an optional 0060 /// subtractor. 0061 /// 0062 /// If the (optional) pileup subtractor can be supplied, then see 0063 /// also the documentation for the set_input_jet_is_subtracted() member 0064 /// function. 0065 /// 0066 /// \param beta the value of the beta parameter 0067 /// \param symmetry_cut the value of the cut on the symmetry measure 0068 /// \param R0 the angular distance normalisation [1 by default] 0069 SoftDrop(double beta, 0070 double symmetry_cut, 0071 double R0 = 1, 0072 const FunctionOfPseudoJet<PseudoJet> * subtractor = 0) : 0073 RecursiveSymmetryCutBase(scalar_z, // the default SymmetryMeasure 0074 std::numeric_limits<double>::infinity(), // default is no mass drop 0075 larger_pt, // the default RecursionChoice 0076 subtractor), 0077 _beta(beta), _symmetry_cut(symmetry_cut), _R0sqr(R0*R0) { 0078 // change the default: use grooming mode 0079 set_grooming_mode(); 0080 } 0081 0082 /// Full constructor, which takes the following parameters: 0083 /// 0084 /// \param beta the value of the beta parameter 0085 /// \param symmetry_cut the value of the cut on the symmetry measure 0086 /// \param symmetry_measure the choice of measure to use to estimate the symmetry 0087 /// \param R0 the angular distance normalisation [1 by default] 0088 /// \param mu_cut the maximal allowed value of mass drop variable mu = m_heavy/m_parent 0089 /// \param recursion_choice the strategy used to decide which subjet to recurse into 0090 /// \param subtractor an optional pointer to a pileup subtractor (ignored if zero) 0091 /// 0092 /// The default values provided for this constructor are suited to 0093 /// obtain the SoftDrop as discussed in arXiv:1402.2657: 0094 /// - no mass drop is requested 0095 /// - recursion follows the branch with the largest pt 0096 /// The symmetry measure has to be specified (scalar_z is the recommended value) 0097 /// 0098 /// Notes: 0099 /// 0100 /// - by default, SoftDrop will recluster the jet with the 0101 /// Cambridge/Aachen algorithm if it is not already the case. This 0102 /// behaviour can be changed using the "set_reclustering" method 0103 /// defined below 0104 /// 0105 SoftDrop(double beta, 0106 double symmetry_cut, 0107 SymmetryMeasure symmetry_measure, 0108 double R0 = 1.0, 0109 double mu_cut = std::numeric_limits<double>::infinity(), 0110 RecursionChoice recursion_choice = larger_pt, 0111 const FunctionOfPseudoJet<PseudoJet> * subtractor = 0) : 0112 RecursiveSymmetryCutBase(symmetry_measure, mu_cut, recursion_choice, subtractor), 0113 _beta(beta), _symmetry_cut(symmetry_cut), _R0sqr(R0*R0) 0114 { 0115 // change the default: use grooming mode 0116 set_grooming_mode(); 0117 } 0118 0119 /// default destructor 0120 virtual ~SoftDrop(){} 0121 0122 //---------------------------------------------------------------------- 0123 // access to class info 0124 double beta() const { return _beta; } 0125 double symmetry_cut() const { return _symmetry_cut; } 0126 double R0() const { return sqrt(_R0sqr); } 0127 0128 protected: 0129 0130 // Unlike MMDT, the SoftDrop symmetry_cut_fn depends on the subjet kinematics 0131 // since the symmetry condition depends on the DeltaR between subjets. 0132 virtual double symmetry_cut_fn(const PseudoJet & p1, 0133 const PseudoJet & p2, 0134 void * optional_R0sqr_ptr = 0) const; 0135 virtual std::string symmetry_cut_description() const; 0136 0137 //private: 0138 double _beta; ///< the power of the angular distance to be used 0139 ///< in the symmetry condition 0140 double _symmetry_cut; ///< the value of zcut (the prefactor in the asymmetry cut) 0141 double _R0sqr; ///< normalisation of the angular distance 0142 ///< (typically set to the jet radius, 1 by default) 0143 }; 0144 0145 } // namespace contrib 0146 0147 FASTJET_END_NAMESPACE 0148 0149 #endif // __FASTJET_CONTRIB_SOFTDROP_HH__
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |