CMS 3D CMS Logo

HTTTopJetProducer.h
Go to the documentation of this file.
1 #ifndef RecoJets_JetProducers_HTTTopJetProducer_h
2 #define RecoJets_JetProducers_HTTTopJetProducer_h
3 
4 /* *********************************************************
5 
6 
7  * \class CATopJetProducer
8  * Jet producer to produce top jets using the C-A algorithm to break
9  * jets into subjets as described here:
10  * "Top-tagging: A Method for Identifying Boosted Hadronic Tops"
11  * David E. Kaplan, Keith Rehermann, Matthew D. Schwartz, Brock Tweedie
12  * arXiv:0806.0848v1 [hep-ph]
13 
14  \brief Jet producer to run the CATopJetAlgorithm
15 
16  \author Salvatore Rappoccio
17  \version
18 
19  Notes on implementation:
20 
21  Because the BaseJetProducer only allows the user to produce
22  one jet collection at a time, this algorithm cannot
23  fit into that paradigm.
24 
25  All of the "hard" jets are of type BasicJet, since
26  they are "jets of jets". The subjets will be either
27  CaloJets, GenJets, etc.
28 
29  In order to avoid a templatization of the entire
30  EDProducer itself, we only use a templated method
31  to write out the subjets to the event record,
32  and to use that information to write out the
33  hard jets to the event record.
34 
35  This templated method is called "write_outputs". It
36  relies on a second templated method called "write_specific",
37  which relies on some template specialization to create
38  different specific objects (i.e. CaloJets, BasicJets, GenJets, etc).
39 
40  ************************************************************/
41 
50 
61 
63 
65 
68 #include "CLHEP/Random/RandomEngine.h"
69 
70 #include "fastjet/SISConePlugin.hh"
71 
72 namespace cms {
74  public:
76 
77  ~HTTTopJetProducer() override {}
78 
79  void produce(edm::Event& iEvent, const edm::EventSetup& iSetup) override;
80 
81  void runAlgorithm(edm::Event& iEvent, const edm::EventSetup& iSetup) override;
82 
84  const edm::EventSetup& iSetup,
86 
87  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
88 
89  private:
90  std::unique_ptr<fastjet::HEPTopTaggerV2> fjHEPTopTagger_;
91 
92  // Below are all configurable options.
93  // Parenthesis indicates if this is enforced by the tagger itself or by the producer
94 
95  bool optimalR_; // Should the MultiR version of the tagger be used? (tagger)
96  bool qJets_; // Should Q-jets be used? (tagger/producer)
97 
98  double minFatjetPt_; // Only process fatjets larger pT with the tagger [GeV] (producer)
99  double minSubjetPt_; // Minimal pT for subjets [GeV] (tagger)
100  double minCandPt_; // Minimal pT to return a candidate [GeV] (tagger)
101 
102  double maxFatjetAbsEta_; // Only process fatjets with smaller |eta| with the tagger. (producer)
103 
104  double subjetMass_; // Mass above which subjets are further unclustered (tagger)
105  double muCut_; // Mass drop threshold (tagger)
106 
107  double filtR_; // maximal filtering radius
108  int filtN_; // number of filtered subjets to use
109 
110  // HEPTopTagger Mode (tagger):
111  // 0: do 2d-plane, return candidate with delta m_top minimal
112  // 1: return candidate with delta m_top minimal IF passes 2d plane
113  // 2: do 2d-plane, return candidate with max dj_sum
114  // 3: return candidate with max dj_sum IF passes 2d plane
115  // 4: return candidate built from leading three subjets after unclustering IF passes 2d plane
116  // Note: Original HTT was mode==1
117  int mode_;
118 
119  // Top Quark mass window in GeV (tagger)
120  double minCandMass_;
121  double maxCandMass_;
122 
123  double massRatioWidth_; // One sided width of the A-shaped window around m_W/m_top in % (tagger)
124  double minM23Cut_; // minimal value of m23/m123 (tagger)
125  double minM13Cut_; // minimal value of atan(m13/m12) (tagger)
126  double maxM13Cut_; // maximal value of atan(m13/m12) (tagger)
127 
128  double maxR_; // maximal fatjet size for MultiR tagger (tagger)
129  double minR_; // minimal fatjet size for MultiR tagger (tagger)
130 
131  bool rejectMinR_; // set Ropt to zero when the candidate never
132  // leaves the window around the initial mass
133 
134  bool verbose_;
135  };
136 
137 } // namespace cms
138 
139 #endif
int iEvent
Definition: GenABIO.cc:224
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void addHTTTopJetTagInfoCollection(edm::Event &iEvent, const edm::EventSetup &iSetup, edm::OrphanHandle< reco::BasicJetCollection > &oh) override
Namespace of DDCMS conversion namespace.
HTTTopJetProducer(const edm::ParameterSet &ps)
std::unique_ptr< fastjet::HEPTopTaggerV2 > fjHEPTopTagger_
void runAlgorithm(edm::Event &iEvent, const edm::EventSetup &iSetup) override