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  * \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 
64 #include "CATopJetProducer.h"
66 
67 #include <fastjet/tools/RestFrameNSubjettinessTagger.hh>
68 #include "fastjet/SISConePlugin.hh"
69 
70 namespace cms {
72  public:
74 
75  ~CATopJetProducer() override {}
76  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
77 
78  void produce(edm::Event& iEvent, const edm::EventSetup& iSetup) override;
79 
80  void runAlgorithm(edm::Event& iEvent, const edm::EventSetup& iSetup) override;
81 
82  private:
83  std::unique_ptr<CATopJetAlgorithm> legacyCMSTopTagger_;
84  std::unique_ptr<fastjet::CMSTopTagger> fjCMSTopTagger_; // The FastJet implementation of the CMS tagger
85  std::unique_ptr<fastjet::JHTopTagger> fjJHUTopTagger_;
86  std::unique_ptr<fastjet::RestFrameNSubjettinessTagger> fjNSUBTagger_;
87 
88  int tagAlgo_;
89  double ptMin_;
91  bool verbose_;
93  };
94 
95 } // namespace cms
96 
97 #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:224
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.