|
FastJet 3.0alpha3
|
00001 //STARTHEADER 00002 // $Id: NSubjettinessTagger.hh 2193 2011-06-01 11:51:06Z soyez $ 00003 // 00004 // Copyright (c) 2005-2011, Matteo Cacciari, Gavin Salam and Gregory Soyez 00005 // 00006 //---------------------------------------------------------------------- 00007 // This file is part of FastJet. 00008 // 00009 // FastJet is free software; you can redistribute it and/or modify 00010 // it under the terms of the GNU General Public License as published by 00011 // the Free Software Foundation; either version 2 of the License, or 00012 // (at your option) any later version. 00013 // 00014 // The algorithms that underlie FastJet have required considerable 00015 // development and are described in hep-ph/0512210. If you use 00016 // FastJet as part of work towards a scientific publication, please 00017 // include a citation to the FastJet paper. 00018 // 00019 // FastJet is distributed in the hope that it will be useful, 00020 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00021 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00022 // GNU General Public License for more details. 00023 // 00024 // You should have received a copy of the GNU General Public License 00025 // along with FastJet; if not, write to the Free Software 00026 // Foundation, Inc.: 00027 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00028 //---------------------------------------------------------------------- 00029 //ENDHEADER 00030 00031 #ifndef __FASTJET_NSUBJETTINESS_TAGGER_HH__ 00032 #define __FASTJET_NSUBJETTINESS_TAGGER_HH__ 00033 00034 #include <fastjet/PseudoJet.hh> 00035 #include <fastjet/JetDefinition.hh> 00036 #include <fastjet/CompositeJetStructure.hh> 00037 #include <fastjet/tools/Transformer.hh> 00038 00039 FASTJET_BEGIN_NAMESPACE 00040 00041 class NSubjettinessTagger; 00042 class NSubjettinessStructure; 00043 00044 //---------------------------------------------------------------------- 00045 /// @ingroup tools 00046 /// \class NSubjettinessTagger 00047 /// Class that helps perform 2-pronged boosted tagging using 00048 /// N-subjettiness 00049 /// 00050 /// This is the implementation of the N-Subjettiness tagger introduced 00051 /// by Ji-Hun Kim in arXiv:1011.1493. 00052 /// 00053 /// To tag a fat jet, we proceed as follows: 00054 /// 00055 /// - boost its constituents into the rest frame of the jet 00056 /// 00057 /// - recluster them using another jet definition (the original 00058 /// choice was SISCone in spherical coordinates with R=0.6 and 00059 /// f=0.75. 00060 /// 00061 /// - keep the 2 most energetic subjets (\f$q_{1,2}\f$) and compute 00062 /// the 2-subjettiness 00063 /// \f[ 00064 /// \tau_2^j = \frac{2}{m_{\rm jet}^2}\, 00065 /// \sum_{k\in {\rm jet}} {\rm min}(q_1.p_k,q_2.p_k) 00066 /// \f] 00067 /// where the sum runs over the constituents of the jet. 00068 /// 00069 /// - require \f$\tau_2^j < \tau_2^{\rm cut}\f$ [0.08 by default] 00070 /// 00071 /// - impose that (in the rest frame of the fat jet), the angles 00072 /// between the 2 most energetic subjets and the boost axis are 00073 /// both large enough: \f$\cos(\theta_s)<c_\theta^{\rm cut}\f$ 00074 /// [0.8 by default] 00075 /// 00076 /// Note that in the original version, the jets are reconstructed 00077 /// using SISCone with R=0.8 and f=0.75. Also, b-tagging was imposed 00078 /// on the 2 subjets found in the tagging procedure. 00079 /// 00080 /// \section desc Options 00081 /// 00082 /// The constructor has the following arguments: 00083 /// - The first argument is the jet definition to be used to 00084 /// recluster the constituents of the jet to be filtered (in the 00085 /// rest frame of the tagged jet). 00086 /// - The second argument is the cut on tau_2 [0.08 by default] 00087 /// - The 3rd argument is the cut on cos(theta_s) [0.8 by default] 00088 /// - If the 4th argument is true, 2 exclusive rest-frame jets will 00089 /// be considered in place of the 2 most energetic inclusive jets 00090 /// 00091 /// \section input Input conditions 00092 /// 00093 /// - the original jet must have constituents 00094 /// 00095 /// \section output Output/structure 00096 /// 00097 /// - the 2 subjets are kept as pieces if some substructure is found, 00098 /// otherwise a single 0-momentum piece 00099 /// - the tau2 and maximal cos(theta_s) values computed during the 00100 /// tagging 00101 /// 00102 class NSubjettinessTagger : public Transformer{ 00103 public: 00104 /// ctor with arguments (see the class description above) 00105 NSubjettinessTagger(const JetDefinition subjet_def, 00106 const double tau2cut=0.08, 00107 const double costhetascut=0.8, 00108 const bool use_exclusive = false) 00109 : _subjet_def(subjet_def), _t2cut(tau2cut), _costscut(costhetascut), 00110 _use_exclusive(use_exclusive){}; 00111 00112 /// tagger description 00113 virtual std::string description() const; 00114 00115 /// action on a single jet 00116 virtual PseudoJet result(const PseudoJet & jet) const; 00117 00118 /// the type of Structure returned 00119 typedef NSubjettinessStructure StructureType; 00120 00121 protected: 00122 JetDefinition _subjet_def; 00123 double _t2cut, _costscut; 00124 bool _use_exclusive; 00125 }; 00126 00127 00128 //------------------------------------------------------------------------ 00129 /// @ingroup tools 00130 /// \class NSubjettinessStructure 00131 /// the structure returned by the NSubjettinessTagger transformer. 00132 /// 00133 /// See the NSubjettinessTagger class description for the details of 00134 /// what is inside this structure 00135 /// 00136 class NSubjettinessStructure : public CompositeJetStructure{ 00137 public: 00138 /// ctor with pieces initialisation 00139 NSubjettinessStructure(const std::vector<PseudoJet> & pieces) : 00140 CompositeJetStructure(pieces), _tau2(0.0), _costhetas(1.0){} 00141 00142 /// access to the associated N-subjettiness 00143 inline double tau2() const{return _tau2;} 00144 00145 /// access to the associated angle with the boosted axis 00146 inline double costhetas() const {return _costhetas;} 00147 00148 protected: 00149 double _tau2; ///< the value of the N-subjettiness 00150 double _costhetas; ///< the minimal angle between the dijets 00151 ///< and the boost axis 00152 00153 // allow the tagger to set these 00154 friend class NSubjettinessTagger; 00155 }; 00156 00157 FASTJET_END_NAMESPACE 00158 #endif // __FASTJET_NSUBJETTINESS_TAGGER_HH__ 00159
1.7.4