Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:25:32

0001 #ifndef RecoJets_JetProducers_CompoundJetProducer_h
0002 #define RecoJets_JetProducers_CompoundJetProducer_h
0003 
0004 /* *********************************************************
0005   \class CompoundJetProducer
0006 
0007   \brief Jet producer to produce compound jets (i.e. jets of jets)
0008 
0009   \author   Salvatore Rappoccio
0010   \version  
0011 
0012          Notes on implementation:
0013 
0014      Because the BaseJetProducer only allows the user to produce
0015      one jet collection at a time, this algorithm cannot
0016      fit into that paradigm. 
0017 
0018      All of the "hard" jets are of type BasicJet, since
0019      they are "jets of jets". The subjets will be either
0020      CaloJets, GenJets, etc.
0021 
0022      In order to avoid a templatization of the entire
0023      EDProducer itself, we only use a templated method
0024      to write out the subjets to the event record,
0025      and to use that information to write out the
0026      hard jets to the event record.
0027 
0028 Modifications:
0029          25Feb09: Updated to use anomalous cells, also 
0030               included corrected CaloTowers for the PV.
0031 
0032  ************************************************************/
0033 
0034 #include "RecoJets/JetProducers/plugins/VirtualJetProducer.h"
0035 
0036 #include "RecoJets/JetAlgorithms/interface/CompoundPseudoJet.h"
0037 
0038 namespace cms {
0039   class CompoundJetProducer : public VirtualJetProducer {
0040   public:
0041     CompoundJetProducer(const edm::ParameterSet& ps);
0042 
0043     ~CompoundJetProducer() override {}
0044 
0045   protected:
0046     std::vector<CompoundPseudoJet> fjCompoundJets_;  /// compound fastjet::PseudoJets
0047 
0048   protected:
0049     // overridden inputTowers method. Resets fjCompoundJets_ and
0050     // calls VirtualJetProducer::inputTowers
0051     void inputTowers() override;
0052 
0053     /// Overridden output method. For the compound jet producer, this will
0054     /// call the "writeCompoundJets" function template.
0055     void output(edm::Event& iEvent, edm::EventSetup const& iSetup) override;
0056     template <typename T>
0057     void writeCompoundJets(edm::Event& iEvent, edm::EventSetup const& iSetup);
0058   };
0059 
0060 }  // namespace cms
0061 
0062 #endif