CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_4_5_patch3/src/RecoJets/JetProducers/plugins/CATopJetProducer.h

Go to the documentation of this file.
00001 #ifndef RecoJets_JetProducers_CATopJetProducer_h
00002 #define RecoJets_JetProducers_CATopJetProducer_h
00003 
00004 
00005 /* *********************************************************
00006 
00007 
00008  * \class CATopJetProducer
00009  * Jet producer to produce top jets using the C-A algorithm to break
00010  * jets into subjets as described here:
00011  * "Top-tagging: A Method for Identifying Boosted Hadronic Tops"
00012  * David E. Kaplan, Keith Rehermann, Matthew D. Schwartz, Brock Tweedie
00013  * arXiv:0806.0848v1 [hep-ph] 
00014 
00015   \brief Jet producer to run the CATopJetAlgorithm
00016 
00017   \author   Salvatore Rappoccio
00018   \version  
00019 
00020          Notes on implementation:
00021 
00022          Because the BaseJetProducer only allows the user to produce
00023          one jet collection at a time, this algorithm cannot
00024          fit into that paradigm. 
00025 
00026          All of the "hard" jets are of type BasicJet, since
00027          they are "jets of jets". The subjets will be either
00028          CaloJets, GenJets, etc.
00029 
00030          In order to avoid a templatization of the entire
00031          EDProducer itself, we only use a templated method
00032          to write out the subjets to the event record,
00033          and to use that information to write out the
00034          hard jets to the event record.
00035 
00036          This templated method is called "write_outputs". It
00037          relies on a second templated method called "write_specific",
00038          which relies on some template specialization to create
00039          different specific objects (i.e. CaloJets, BasicJets, GenJets, etc). 
00040 
00041  ************************************************************/
00042 
00043 
00044 
00045 
00046 #include "FWCore/Framework/interface/Event.h"
00047 #include "FWCore/Framework/interface/EventSetup.h"
00048 #include "DataFormats/Common/interface/View.h"
00049 #include "DataFormats/Common/interface/Handle.h"
00050 #include "DataFormats/Provenance/interface/ProductID.h"
00051 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00052 
00053 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00054 #include "DataFormats/JetReco/interface/GenJetCollection.h"
00055 #include "DataFormats/JetReco/interface/PFJetCollection.h"
00056 #include "DataFormats/JetReco/interface/BasicJetCollection.h"
00057 #include "RecoJets/JetAlgorithms/interface/JetAlgoHelper.h"
00058 #include "DataFormats/Candidate/interface/CandidateFwd.h"
00059 #include "DataFormats/Candidate/interface/LeafCandidate.h"
00060 #include "FWCore/Framework/interface/ESHandle.h"
00061 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00062 #include "Geometry/Records/interface/CaloGeometryRecord.h"
00063 
00064 #include "RecoJets/JetProducers/plugins/CompoundJetProducer.h"
00065 #include "RecoJets/JetAlgorithms/interface/CATopJetAlgorithm.h"
00066 #include "RecoJets/JetAlgorithms/interface/CompoundPseudoJet.h"
00067 
00068 namespace cms
00069 {
00070   class CATopJetProducer : public CompoundJetProducer
00071   {
00072   public:
00073 
00074     CATopJetProducer(const edm::ParameterSet& ps);
00075 
00076     virtual ~CATopJetProducer() {}
00077 
00078     virtual void produce( edm::Event& iEvent, const edm::EventSetup& iSetup );
00079 
00080     virtual void runAlgorithm( edm::Event& iEvent, const edm::EventSetup& iSetup );
00081 
00082   private:
00083     CATopJetAlgorithm        alg_;         
00084 
00085   };
00086 
00087 }
00088 
00089 
00090 #endif