CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/RecoJets/JetProducers/plugins/CompoundJetProducer.h

Go to the documentation of this file.
00001 #ifndef RecoJets_JetProducers_CompoundJetProducer_h
00002 #define RecoJets_JetProducers_CompoundJetProducer_h
00003 
00004 /* *********************************************************
00005   \class CompoundJetProducer
00006 
00007   \brief Jet producer to produce compound jets (i.e. jets of jets)
00008 
00009   \author   Salvatore Rappoccio
00010   \version  
00011 
00012          Notes on implementation:
00013 
00014          Because the BaseJetProducer only allows the user to produce
00015          one jet collection at a time, this algorithm cannot
00016          fit into that paradigm. 
00017 
00018          All of the "hard" jets are of type BasicJet, since
00019          they are "jets of jets". The subjets will be either
00020          CaloJets, GenJets, etc.
00021 
00022          In order to avoid a templatization of the entire
00023          EDProducer itself, we only use a templated method
00024          to write out the subjets to the event record,
00025          and to use that information to write out the
00026          hard jets to the event record.
00027 
00028 Modifications:
00029          25Feb09: Updated to use anomalous cells, also 
00030                   included corrected CaloTowers for the PV.
00031 
00032  ************************************************************/
00033 
00034 
00035 #include "RecoJets/JetProducers/plugins/VirtualJetProducer.h"
00036 
00037 #include "RecoJets/JetAlgorithms/interface/CompoundPseudoJet.h"
00038 
00039 namespace cms
00040 {
00041   class CompoundJetProducer : public VirtualJetProducer
00042   {
00043   public:
00044 
00045     CompoundJetProducer(const edm::ParameterSet& ps);
00046 
00047     virtual ~CompoundJetProducer() {}
00048     
00049   protected:
00050     std::vector<CompoundPseudoJet> fjCompoundJets_; 
00051 
00052   protected:
00053 
00054     // overridden inputTowers method. Resets fjCompoundJets_ and 
00055     // calls VirtualJetProducer::inputTowers
00056     virtual void inputTowers();
00057 
00060     virtual void output( edm::Event & iEvent, edm::EventSetup const& iSetup );
00061     template< typename T >
00062     void writeCompoundJets( edm::Event & iEvent, edm::EventSetup const& iSetup);
00063 
00064 
00065   };
00066 
00067 
00068 
00069   
00070 }
00071 
00072 
00073 #endif