|
||||
File indexing completed on 2025-01-18 09:57:16
0001 #ifndef __FASTJET_TOP_TAGGER_BASE_HH__ 0002 #define __FASTJET_TOP_TAGGER_BASE_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/internal/base.hh" 0035 #include "fastjet/tools/Transformer.hh" 0036 0037 FASTJET_BEGIN_NAMESPACE 0038 0039 class TopTaggerBase; 0040 class TopTaggerBaseStructure; 0041 0042 //---------------------------------------------------------------------- 0043 /// @ingroup tools_taggers 0044 /// \class TopTaggerBase 0045 /// A base class that provides a common interface for top taggers 0046 /// that are able to return a W (in addition to the top itself). 0047 /// 0048 /// Top taggers that derive from this should satisfy the following 0049 /// criteria: 0050 /// 0051 /// - their underlying structure should derive from TopTaggerBaseStructure 0052 /// - tagged tops should have two pieces, the first of which is the W candidate 0053 /// - they should apply the top and W selectors to decide if the top has been 0054 /// tagged 0055 class TopTaggerBase : public Transformer { 0056 public: 0057 TopTaggerBase() : _top_selector(SelectorIdentity()), 0058 _W_selector(SelectorIdentity()), 0059 _top_selector_set(false), 0060 _W_selector_set(false) {} 0061 0062 /// the type of the associated structure 0063 typedef TopTaggerBaseStructure StructureType; 0064 0065 /// sets the selector that is applied to the top candidate 0066 void set_top_selector(const Selector & sel) {_top_selector = sel; _top_selector_set = true;} 0067 /// sets the selector that is applied to the W candidate 0068 void set_W_selector (const Selector & sel) {_W_selector = sel; _W_selector_set = true;} 0069 0070 /// returns a description of the top and W selectors 0071 virtual std::string description_of_selectors() const { 0072 std::string descr; 0073 if (_top_selector_set) descr = ", top selector: "+_top_selector.description(); 0074 if (_W_selector_set) descr += ", W selector: "+_W_selector.description(); 0075 return descr; 0076 } 0077 0078 protected: 0079 /// computes the W helicity angle 0080 double _cos_theta_W(const PseudoJet & result) const; 0081 0082 Selector _top_selector, _W_selector; 0083 bool _top_selector_set, _W_selector_set; 0084 }; 0085 0086 0087 //---------------------------------------------------------------------- 0088 /// @ingroup tools_taggers 0089 /// \class TopTaggerBaseStructure 0090 /// class that specifies the structure common to all top taggers 0091 /// 0092 /// Note that this specifies only the W, non_W part of the 0093 /// interface. An actual top tagger structure class will also need to 0094 /// derive from a PseudoJetStructureBase type class 0095 /// (e.g. CompositeJetStructure) 0096 class TopTaggerBaseStructure { 0097 public: 0098 virtual const PseudoJet & W() const = 0; 0099 virtual const PseudoJet & non_W() const = 0; 0100 virtual ~TopTaggerBaseStructure() {} 0101 }; 0102 0103 0104 FASTJET_END_NAMESPACE 0105 0106 #endif // __FASTJET_TOP_TAGGER_BASE_HH__ 0107
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |