CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/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 "DataFormats/Common/interface/EDProduct.h"
00047 #include "FWCore/Framework/interface/Event.h"
00048 #include "FWCore/Framework/interface/EventSetup.h"
00049 #include "DataFormats/Common/interface/View.h"
00050 #include "DataFormats/Common/interface/Handle.h"
00051 #include "DataFormats/Provenance/interface/ProductID.h"
00052 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00053 
00054 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00055 #include "DataFormats/JetReco/interface/GenJetCollection.h"
00056 #include "DataFormats/JetReco/interface/PFJetCollection.h"
00057 #include "DataFormats/JetReco/interface/BasicJetCollection.h"
00058 #include "RecoJets/JetAlgorithms/interface/JetAlgoHelper.h"
00059 #include "DataFormats/Candidate/interface/CandidateFwd.h"
00060 #include "DataFormats/Candidate/interface/LeafCandidate.h"
00061 #include "FWCore/Framework/interface/ESHandle.h"
00062 #include "Geometry/CaloGeometry/interface/CaloGeometry.h"
00063 #include "Geometry/Records/interface/CaloGeometryRecord.h"
00064 
00065 #include "RecoJets/JetProducers/plugins/CompoundJetProducer.h"
00066 #include "RecoJets/JetAlgorithms/interface/CATopJetAlgorithm.h"
00067 #include "RecoJets/JetAlgorithms/interface/CompoundPseudoJet.h"
00068 
00069 namespace cms
00070 {
00071   class CATopJetProducer : public CompoundJetProducer
00072   {
00073   public:
00074 
00075     CATopJetProducer(const edm::ParameterSet& ps);
00076 
00077     virtual ~CATopJetProducer() {}
00078 
00079     virtual void produce( edm::Event& iEvent, const edm::EventSetup& iSetup );
00080 
00081     virtual void runAlgorithm( edm::Event& iEvent, const edm::EventSetup& iSetup );
00082 
00083   private:
00084     CATopJetAlgorithm        alg_;         
00085 
00086   };
00087 
00088 }
00089 
00090 
00091 #endif