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