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
ConfigurationDescriptions.h
cms::HTTTopJetProducer::muCut_
double muCut_
Definition: HTTTopJetProducer.h:105
CaloJetCollection.h
GenJetCollection.h
cms::HTTTopJetProducer::produce
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: HTTTopJetProducer.cc:83
Handle.h
MessageLogger.h
cms::HTTTopJetProducer::subjetMass_
double subjetMass_
Definition: HTTTopJetProducer.h:104
ESHandle.h
RandomNumberGenerator.h
cms::HTTTopJetProducer::filtR_
double filtR_
Definition: HTTTopJetProducer.h:107
cms::HTTTopJetProducer::mode_
int mode_
Definition: HTTTopJetProducer.h:117
PFJetCollection.h
cms::HTTTopJetProducer::maxFatjetAbsEta_
double maxFatjetAbsEta_
Definition: HTTTopJetProducer.h:102
cms::HTTTopJetProducer::massRatioWidth_
double massRatioWidth_
Definition: HTTTopJetProducer.h:123
BasicJetCollection.h
cms::HTTTopJetProducer::minM13Cut_
double minM13Cut_
Definition: HTTTopJetProducer.h:125
cms::HTTTopJetProducer
Definition: HTTTopJetProducer.h:73
cms::HTTTopJetProducer::minR_
double minR_
Definition: HTTTopJetProducer.h:129
CandidateFwd.h
cms::HTTTopJetProducer::minSubjetPt_
double minSubjetPt_
Definition: HTTTopJetProducer.h:99
cms::HTTTopJetProducer::fjHEPTopTagger_
std::unique_ptr< fastjet::HEPTopTaggerV2 > fjHEPTopTagger_
Definition: HTTTopJetProducer.h:90
JetAlgoHelper.h
cms::HTTTopJetProducer::qJets_
bool qJets_
Definition: HTTTopJetProducer.h:96
Service.h
ProductID.h
LeafCandidate.h
cms::HTTTopJetProducer::HTTTopJetProducer
HTTTopJetProducer(const edm::ParameterSet &ps)
Definition: HTTTopJetProducer.cc:13
cms::HTTTopJetProducer::maxM13Cut_
double maxM13Cut_
Definition: HTTTopJetProducer.h:126
ParameterSetDescription.h
HEPTopTaggerWrapperV2.h
cms::HTTTopJetProducer::fillDescriptions
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: HTTTopJetProducer.cc:188
cms::HTTTopJetProducer::maxCandMass_
double maxCandMass_
Definition: HTTTopJetProducer.h:121
CaloGeometryRecord.h
edm::ConfigurationDescriptions
Definition: ConfigurationDescriptions.h:28
edm::ParameterSet
Definition: ParameterSet.h:47
cms::HTTTopJetProducer::minCandMass_
double minCandMass_
Definition: HTTTopJetProducer.h:120
Event.h
cms::HTTTopJetProducer::rejectMinR_
bool rejectMinR_
Definition: HTTTopJetProducer.h:131
cms::HTTTopJetProducer::optimalR_
bool optimalR_
Definition: HTTTopJetProducer.h:95
cms::HTTTopJetProducer::verbose_
bool verbose_
Definition: HTTTopJetProducer.h:134
cms::HTTTopJetProducer::~HTTTopJetProducer
~HTTTopJetProducer() override
Definition: HTTTopJetProducer.h:77
iEvent
int iEvent
Definition: GenABIO.cc:224
edm::EventSetup
Definition: EventSetup.h:58
cms::HTTTopJetProducer::minFatjetPt_
double minFatjetPt_
Definition: HTTTopJetProducer.h:98
FastjetJetProducer.h
edm::OrphanHandle
Definition: EDProductfwd.h:39
cms::HTTTopJetProducer::minM23Cut_
double minM23Cut_
Definition: HTTTopJetProducer.h:124
cms::HTTTopJetProducer::filtN_
int filtN_
Definition: HTTTopJetProducer.h:108
CaloGeometry.h
EventSetup.h
cms::HTTTopJetProducer::minCandPt_
double minCandPt_
Definition: HTTTopJetProducer.h:100
cms::HTTTopJetProducer::maxR_
double maxR_
Definition: HTTTopJetProducer.h:128
View.h
cms::HTTTopJetProducer::addHTTTopJetTagInfoCollection
void addHTTTopJetTagInfoCollection(edm::Event &iEvent, const edm::EventSetup &iSetup, edm::OrphanHandle< reco::BasicJetCollection > &oh) override
Definition: HTTTopJetProducer.cc:136
edm::Event
Definition: Event.h:73
FastjetJetProducer
Definition: FastjetJetProducer.h:41
cms
Namespace of DDCMS conversion namespace.
Definition: ProducerAnalyzer.cc:21
cms::HTTTopJetProducer::runAlgorithm
void runAlgorithm(edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: HTTTopJetProducer.cc:93