Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2022-05-10 05:44:04

0001 #include "DataFormats/HepMCCandidate/interface/GenParticle.h"
0002 #include "DataFormats/JetReco/interface/GenJet.h"
0003 #include "DataFormats/JetReco/interface/GenJetCollection.h"
0004 
0005 #include "L1Trigger/L1THGCalUtilities/interface/HGCalTriggerNtupleBase.h"
0006 
0007 class HGCalTriggerNtupleGenJet : public HGCalTriggerNtupleBase {
0008 public:
0009   HGCalTriggerNtupleGenJet(const edm::ParameterSet&);
0010 
0011   void initialize(TTree&, const edm::ParameterSet&, edm::ConsumesCollector&&) final;
0012   void fill(const edm::Event&, const HGCalTriggerNtupleEventSetup&) final;
0013 
0014 private:
0015   void clear() final;
0016 
0017   edm::EDGetToken genjet_token_;
0018 
0019   int genjet_n_;
0020   std::vector<float> genjet_energy_;
0021   std::vector<float> genjet_pt_;
0022   std::vector<float> genjet_eta_;
0023   std::vector<float> genjet_phi_;
0024 };
0025 
0026 DEFINE_EDM_PLUGIN(HGCalTriggerNtupleFactory, HGCalTriggerNtupleGenJet, "HGCalTriggerNtupleGenJet");
0027 
0028 HGCalTriggerNtupleGenJet::HGCalTriggerNtupleGenJet(const edm::ParameterSet& conf) : HGCalTriggerNtupleBase(conf) {
0029   accessEventSetup_ = false;
0030 }
0031 
0032 void HGCalTriggerNtupleGenJet::initialize(TTree& tree,
0033                                           const edm::ParameterSet& conf,
0034                                           edm::ConsumesCollector&& collector) {
0035   genjet_token_ = collector.consumes<reco::GenJetCollection>(conf.getParameter<edm::InputTag>("GenJets"));
0036   tree.Branch("genjet_n", &genjet_n_, "genjet_n/I");
0037   tree.Branch("genjet_energy", &genjet_energy_);
0038   tree.Branch("genjet_pt", &genjet_pt_);
0039   tree.Branch("genjet_eta", &genjet_eta_);
0040   tree.Branch("genjet_phi", &genjet_phi_);
0041 }
0042 
0043 void HGCalTriggerNtupleGenJet::fill(const edm::Event& e, const HGCalTriggerNtupleEventSetup& es) {
0044   edm::Handle<reco::GenJetCollection> genjets_h;
0045   e.getByToken(genjet_token_, genjets_h);
0046   const reco::GenJetCollection& genjets = *genjets_h;
0047 
0048   clear();
0049   genjet_n_ = genjets.size();
0050   genjet_energy_.reserve(genjet_n_);
0051   genjet_pt_.reserve(genjet_n_);
0052   genjet_eta_.reserve(genjet_n_);
0053   genjet_phi_.reserve(genjet_n_);
0054   for (const auto& jet : genjets) {
0055     genjet_energy_.emplace_back(jet.energy());
0056     genjet_pt_.emplace_back(jet.pt());
0057     genjet_eta_.emplace_back(jet.eta());
0058     genjet_phi_.emplace_back(jet.phi());
0059   }
0060 }
0061 
0062 void HGCalTriggerNtupleGenJet::clear() {
0063   genjet_n_ = 0;
0064   genjet_energy_.clear();
0065   genjet_pt_.clear();
0066   genjet_eta_.clear();
0067   genjet_phi_.clear();
0068 }