|
||||
File indexing completed on 2025-01-18 09:57:16
0001 #ifndef __FASTJET_RESTFRAMENSUBJETTINESS_TAGGER_HH__ 0002 #define __FASTJET_RESTFRAMENSUBJETTINESS_TAGGER_HH__ 0003 0004 //FJSTARTHEADER 0005 // $Id$ 0006 // 0007 // Copyright (c) 2005-2021, Matteo Cacciari, Gavin P. Salam and Gregory Soyez 0008 // 0009 //---------------------------------------------------------------------- 0010 // This file is part of FastJet. 0011 // 0012 // FastJet is free software; you can redistribute it and/or modify 0013 // it under the terms of the GNU General Public License as published by 0014 // the Free Software Foundation; either version 2 of the License, or 0015 // (at your option) any later version. 0016 // 0017 // The algorithms that underlie FastJet have required considerable 0018 // development. They are described in the original FastJet paper, 0019 // hep-ph/0512210 and in the manual, arXiv:1111.6097. If you use 0020 // FastJet as part of work towards a scientific publication, please 0021 // quote the version you use and include a citation to the manual and 0022 // optionally also to hep-ph/0512210. 0023 // 0024 // FastJet is distributed in the hope that it will be useful, 0025 // but WITHOUT ANY WARRANTY; without even the implied warranty of 0026 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0027 // GNU General Public License for more details. 0028 // 0029 // You should have received a copy of the GNU General Public License 0030 // along with FastJet. If not, see <http://www.gnu.org/licenses/>. 0031 //---------------------------------------------------------------------- 0032 //FJENDHEADER 0033 0034 #include "fastjet/PseudoJet.hh" 0035 #include "fastjet/JetDefinition.hh" 0036 #include "fastjet/CompositeJetStructure.hh" 0037 #include "fastjet/tools/Transformer.hh" 0038 0039 FASTJET_BEGIN_NAMESPACE 0040 0041 class RestFrameNSubjettinessTagger; 0042 class RestFrameNSubjettinessTaggerStructure; 0043 0044 //---------------------------------------------------------------------- 0045 /// @ingroup tools_taggers 0046 /// \class RestFrameNSubjettinessTagger 0047 /// Class that helps perform 2-pronged boosted tagging using 0048 /// a reclustering in the jet's rest frame, supplemented with a cut on N-subjettiness 0049 /// (and a decay angle), as discussed by Ji-Hun Kim in arXiv:1011.1493. 0050 /// 0051 /// To tag a fat jet, the tagger proceeds as follows: 0052 /// 0053 /// - boost its constituents into the rest frame of the jet 0054 /// 0055 /// - recluster them using another jet definition (the original 0056 /// choice was SISCone in spherical coordinates with R=0.6 and 0057 /// f=0.75. 0058 /// 0059 /// - keep the 2 most energetic subjets (\f$q_{1,2}\f$) and compute 0060 /// the 2-subjettiness 0061 /// \f[ 0062 /// \tau_2^j = \frac{2}{m_{\rm jet}^2}\, 0063 /// \sum_{k\in {\rm jet}} {\rm min}(q_1.p_k,q_2.p_k) 0064 /// \f] 0065 /// where the sum runs over the constituents of the jet. 0066 /// 0067 /// - require \f$\tau_2^j < \tau_2^{\rm cut}\f$ [0.08 by default] 0068 /// 0069 /// - impose that (in the rest frame of the fat jet), the angles 0070 /// between the 2 most energetic subjets and the boost axis are 0071 /// both large enough: \f$\cos(\theta_s)<c_\theta^{\rm cut}\f$ 0072 /// [0.8 by default] 0073 /// 0074 /// Note that in the original version, the jets to be tagged were reconstructed 0075 /// using SISCone with R=0.8 and f=0.75. Also, b-tagging was imposed 0076 /// on the 2 subjets found in the rest-frame tagging procedure. 0077 /// 0078 /// \section desc Options 0079 /// 0080 /// The constructor has the following arguments: 0081 /// - The first argument is the jet definition to be used to 0082 /// recluster the constituents of the jet to be filtered (in the 0083 /// rest frame of the tagged jet). 0084 /// - The second argument is the cut on tau_2 [0.08 by default] 0085 /// - The 3rd argument is the cut on cos(theta_s) [0.8 by default] 0086 /// - If the 4th argument is true, 2 exclusive rest-frame jets will 0087 /// be considered in place of the 2 most energetic inclusive jets 0088 /// 0089 /// \section input Input conditions 0090 /// 0091 /// - the original jet must have constituents 0092 /// 0093 /// \section output Output/structure 0094 /// 0095 /// - the 2 subjets are kept as pieces if some substructure is found, 0096 /// otherwise a single 0-momentum piece 0097 /// - the tau2 and maximal cos(theta_s) values computed during the 0098 /// tagging can be obtained via the resulting jet's structure_of<...>() 0099 /// function 0100 /// 0101 class RestFrameNSubjettinessTagger : public Transformer{ 0102 public: 0103 /// ctor with arguments (see the class description above) 0104 RestFrameNSubjettinessTagger(const JetDefinition subjet_def, 0105 const double tau2cut=0.08, 0106 const double costhetascut=0.8, 0107 const bool use_exclusive = false) 0108 : _subjet_def(subjet_def), _t2cut(tau2cut), _costscut(costhetascut), 0109 _use_exclusive(use_exclusive){}; 0110 0111 /// returns a textual description of the tagger 0112 virtual std::string description() const; 0113 0114 /// runs the tagger on the given jet and 0115 /// returns the tagged PseudoJet if successful, a PseudoJet==0 otherwise 0116 /// (standard access is through operator()). 0117 virtual PseudoJet result(const PseudoJet & jet) const; 0118 0119 /// the type of Structure returned 0120 typedef RestFrameNSubjettinessTaggerStructure StructureType; 0121 0122 protected: 0123 JetDefinition _subjet_def; 0124 double _t2cut, _costscut; 0125 bool _use_exclusive; 0126 }; 0127 0128 0129 //------------------------------------------------------------------------ 0130 /// @ingroup tools_taggers 0131 /// \class RestFrameNSubjettinessTaggerStructure 0132 /// the structure returned by the RestFrameNSubjettinessTagger transformer. 0133 /// 0134 /// See the RestFrameNSubjettinessTagger class description for the details of 0135 /// what is inside this structure 0136 /// 0137 class RestFrameNSubjettinessTaggerStructure : public CompositeJetStructure{ 0138 public: 0139 /// ctor with pieces initialisation 0140 RestFrameNSubjettinessTaggerStructure(const std::vector<PseudoJet> & pieces_in) : 0141 CompositeJetStructure(pieces_in), _tau2(0.0), _costhetas(1.0){} 0142 0143 /// returns the associated N-subjettiness 0144 inline double tau2() const{return _tau2;} 0145 0146 /// returns the associated angle with the boosted axis 0147 inline double costhetas() const {return _costhetas;} 0148 0149 // /// returns the original jet (before tagging) 0150 // const PseudoJet & original() const {return _original_jet;} 0151 0152 protected: 0153 double _tau2; ///< the value of the N-subjettiness 0154 double _costhetas; ///< the minimal angle between the dijets 0155 ///< and the boost axis 0156 // PseudoJet _original_jet; ///< the original jet (before tagging) 0157 0158 // allow the tagger to set these 0159 friend class RestFrameNSubjettinessTagger; 0160 }; 0161 0162 FASTJET_END_NAMESPACE 0163 #endif // __FASTJET_RESTFRAMENSUBJETTINESS_TAGGER_HH__ 0164
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |