File indexing completed on 2024-04-06 12:20:45
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 }