CMS 3D CMS Logo

CATopJetProducer.h
Go to the documentation of this file.
1 #ifndef RecoJets_JetProducers_CATopJetProducer_h
2 #define RecoJets_JetProducers_CATopJetProducer_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 
68 #include "CATopJetProducer.h"
70 
71 #include <fastjet/tools/RestFrameNSubjettinessTagger.hh>
72 #include "fastjet/SISConePlugin.hh"
73 
74 
75 namespace cms
76 {
78  {
79  public:
80 
82 
83  ~CATopJetProducer() override {}
84  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
85 
86  void produce( edm::Event& iEvent, const edm::EventSetup& iSetup ) override;
87 
88  void runAlgorithm( edm::Event& iEvent, const edm::EventSetup& iSetup ) override;
89 
90  private:
91  std::unique_ptr<CATopJetAlgorithm> legacyCMSTopTagger_;
92  std::unique_ptr<fastjet::CMSTopTagger> fjCMSTopTagger_; // The FastJet implementation of the CMS tagger
93  std::unique_ptr<fastjet::JHTopTagger> fjJHUTopTagger_;
94  std::unique_ptr<fastjet::RestFrameNSubjettinessTagger> fjNSUBTagger_;
95 
96 
97 
98  int tagAlgo_;
99  double ptMin_;
101  bool verbose_;
102  enum tagalgos {
107  };
108 
109 
110  };
111 
112 }
113 
114 
115 #endif
void produce(edm::Event &iEvent, const edm::EventSetup &iSetup) override
std::unique_ptr< fastjet::RestFrameNSubjettinessTagger > fjNSUBTagger_
std::unique_ptr< fastjet::JHTopTagger > fjJHUTopTagger_
int iEvent
Definition: GenABIO.cc:230
std::unique_ptr< CATopJetAlgorithm > legacyCMSTopTagger_
void runAlgorithm(edm::Event &iEvent, const edm::EventSetup &iSetup) override
CATopJetProducer(const edm::ParameterSet &ps)
Namespace of DDCMS conversion namespace.
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::unique_ptr< fastjet::CMSTopTagger > fjCMSTopTagger_
The algorithm to do the work.