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 
52 
63 
65 
67 
70 #include "CLHEP/Random/RandomEngine.h"
71 
72 #include "fastjet/SISConePlugin.hh"
73 
74 
75 namespace cms
76 {
78  {
79  public:
80 
82 
83  virtual ~HTTTopJetProducer() {}
84 
85  virtual void produce( edm::Event& iEvent, const edm::EventSetup& iSetup );
86 
87  virtual void runAlgorithm( edm::Event& iEvent, const edm::EventSetup& iSetup );
88 
89  virtual void addHTTTopJetTagInfoCollection( edm::Event& iEvent,
90  const edm::EventSetup& iSetup,
92 
93 
94  private:
95  std::auto_ptr<fastjet::HEPTopTaggerV2> fjHEPTopTagger_;
96 
97  // Below are all configurable options.
98  // Parenthesis indicates if this is enforced by the tagger itself or by the producer
99 
100  bool optimalR_; // Should the MultiR version of the tagger be used? (tagger)
101  bool qJets_; // Should Q-jets be used? (tagger/producer)
102 
103  double minFatjetPt_; // Only process fatjets larger pT with the tagger [GeV] (producer)
104  double minSubjetPt_; // Minimal pT for subjets [GeV] (tagger)
105  double minCandPt_; // Minimal pT to return a candidate [GeV] (tagger)
106 
107  double maxFatjetAbsEta_; // Only process fatjets with smaller |eta| with the tagger. (producer)
108 
109  double subjetMass_; // Mass above which subjets are further unclustered (tagger)
110  double muCut_; // Mass drop threshold (tagger)
111 
112  double filtR_; // maximal filtering radius
113  int filtN_; // number of filtered subjets to use
114 
115  // HEPTopTagger Mode (tagger):
116  // 0: do 2d-plane, return candidate with delta m_top minimal
117  // 1: return candidate with delta m_top minimal IF passes 2d plane
118  // 2: do 2d-plane, return candidate with max dj_sum
119  // 3: return candidate with max dj_sum IF passes 2d plane
120  // 4: return candidate built from leading three subjets after unclustering IF passes 2d plane
121  // Note: Original HTT was mode==1
122  int mode_;
123 
124  // Top Quark mass window in GeV (tagger)
125  double minCandMass_;
126  double maxCandMass_;
127 
128  double massRatioWidth_; // One sided width of the A-shaped window around m_W/m_top in % (tagger)
129  double minM23Cut_; // minimal value of m23/m123 (tagger)
130  double minM13Cut_; // minimal value of atan(m13/m12) (tagger)
131  double maxM13Cut_; // maximal value of atan(m13/m12) (tagger)
132 
133  double maxR_; // maximal fatjet size for MultiR tagger (tagger)
134  double minR_; // minimal fatjet size for MultiR tagger (tagger)
135 
136  bool rejectMinR_; // set Ropt to zero when the candidate never
137  // leaves the window around the initial mass
138 
139  bool verbose_;
140 
141  };
142 
143 }
144 
145 
146 #endif
std::auto_ptr< fastjet::HEPTopTaggerV2 > fjHEPTopTagger_
virtual void produce(edm::Event &iEvent, const edm::EventSetup &iSetup)
virtual void addHTTTopJetTagInfoCollection(edm::Event &iEvent, const edm::EventSetup &iSetup, edm::OrphanHandle< reco::BasicJetCollection > &oh)
int iEvent
Definition: GenABIO.cc:230
HTTTopJetProducer(const edm::ParameterSet &ps)
virtual void runAlgorithm(edm::Event &iEvent, const edm::EventSetup &iSetup)