CMS 3D CMS Logo

HGCalTriggerNtupleGen.cc
Go to the documentation of this file.
3 
4 
5 
7 {
8 
9  public:
11 
12  virtual void initialize(TTree&, const edm::ParameterSet&, edm::ConsumesCollector&&) override final;
13  virtual void fill(const edm::Event&, const edm::EventSetup& ) override final;
14 
15  private:
16  virtual void clear() override final;
17 
19  int gen_n_;
20  std::vector<int> gen_id_;
21  std::vector<int> gen_status_;
22  std::vector<float> gen_energy_;
23  std::vector<float> gen_pt_;
24  std::vector<float> gen_eta_;
25  std::vector<float> gen_phi_;
26 };
27 
30  "HGCalTriggerNtupleGen" );
31 
32 
35 {
36 }
37 
38 void
40 initialize(TTree& tree, const edm::ParameterSet& conf, edm::ConsumesCollector&& collector)
41 {
42 
43  gen_token_ = collector.consumes<reco::GenParticleCollection>(conf.getParameter<edm::InputTag>("GenParticles"));
44  tree.Branch("gen_n", &gen_n_, "gen_n/I");
45  tree.Branch("gen_id", &gen_id_);
46  tree.Branch("gen_status", &gen_status_);
47  tree.Branch("gen_energy", &gen_energy_);
48  tree.Branch("gen_pt", &gen_pt_);
49  tree.Branch("gen_eta", &gen_eta_);
50  tree.Branch("gen_phi", &gen_phi_);
51 
52 }
53 
54 void
56 fill(const edm::Event& e, const edm::EventSetup& es)
57 {
59  e.getByToken(gen_token_, gen_particles_h);
60  const reco::GenParticleCollection& gen_particles = *gen_particles_h;
61 
62  clear();
63  gen_n_ = gen_particles.size();
64  gen_id_.reserve(gen_n_);
65  gen_status_.reserve(gen_n_);
66  gen_energy_.reserve(gen_n_);
67  gen_pt_.reserve(gen_n_);
68  gen_eta_.reserve(gen_n_);
69  gen_phi_.reserve(gen_n_);
70  for(const auto& particle : gen_particles)
71  {
72  gen_id_.emplace_back(particle.pdgId());
73  gen_status_.emplace_back(particle.status());
74  gen_energy_.emplace_back(particle.energy());
75  gen_pt_.emplace_back(particle.pt());
76  gen_eta_.emplace_back(particle.eta());
77  gen_phi_.emplace_back(particle.phi());
78  }
79 
80 }
81 
82 
83 void
86 {
87  gen_n_ = 0;
88  gen_id_.clear();
89  gen_status_.clear();
90  gen_energy_.clear();
91  gen_pt_.clear();
92  gen_eta_.clear();
93  gen_phi_.clear();
94 }
95 
96 
97 
98 
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
T getParameter(std::string const &) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
std::vector< int > gen_id_
std::vector< float > gen_energy_
std::vector< float > gen_eta_
std::vector< int > gen_status_
std::vector< float > gen_phi_
virtual void fill(const edm::Event &, const edm::EventSetup &) override final
virtual void clear() override final
std::vector< float > gen_pt_
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: tree.py:1
HGCalTriggerNtupleGen(const edm::ParameterSet &)
virtual void initialize(TTree &, const edm::ParameterSet &, edm::ConsumesCollector &&) override final