CMS 3D CMS Logo

HGCalTriggerNtupleTowers.cc
Go to the documentation of this file.
5 
7 public:
10  void initialize(TTree&, const edm::ParameterSet&, edm::ConsumesCollector&&) final;
11  void fill(const edm::Event& e, const edm::EventSetup& es) final;
12 
13 private:
14  void clear() final;
15 
17 
18  int tower_n_;
19  std::vector<float> tower_pt_;
20  std::vector<float> tower_energy_;
21  std::vector<float> tower_eta_;
22  std::vector<float> tower_phi_;
23  std::vector<float> tower_etEm_;
24  std::vector<float> tower_etHad_;
25  std::vector<int> tower_iEta_;
26  std::vector<int> tower_iPhi_;
27 };
28 
30 
32  : HGCalTriggerNtupleBase(conf) {}
33 
35  const edm::ParameterSet& conf,
36  edm::ConsumesCollector&& collector) {
37  towers_token_ = collector.consumes<l1t::HGCalTowerBxCollection>(conf.getParameter<edm::InputTag>("Towers"));
38 
39  std::string prefix(conf.getUntrackedParameter<std::string>("Prefix", "tower"));
40 
41  std::string bname;
42  auto withPrefix([&prefix, &bname](char const* vname) -> char const* {
43  bname = prefix + "_" + vname;
44  return bname.c_str();
45  });
46 
47  tree.Branch(withPrefix("n"), &tower_n_, (prefix + "_n/I").c_str());
48  tree.Branch(withPrefix("pt"), &tower_pt_);
49  tree.Branch(withPrefix("energy"), &tower_energy_);
50  tree.Branch(withPrefix("eta"), &tower_eta_);
51  tree.Branch(withPrefix("phi"), &tower_phi_);
52  tree.Branch(withPrefix("etEm"), &tower_etEm_);
53  tree.Branch(withPrefix("etHad"), &tower_etHad_);
54  tree.Branch(withPrefix("iEta"), &tower_iEta_);
55  tree.Branch(withPrefix("iPhi"), &tower_iPhi_);
56 }
57 
59  // retrieve towers
61  e.getByToken(towers_token_, towers_h);
62  const l1t::HGCalTowerBxCollection& towers = *towers_h;
63 
64  // retrieve geometry
66  es.get<CaloGeometryRecord>().get(geometry);
67 
68  clear();
69  for (auto tower_itr = towers.begin(0); tower_itr != towers.end(0); tower_itr++) {
70  tower_n_++;
71  // physical values
72  tower_pt_.emplace_back(tower_itr->pt());
73  tower_energy_.emplace_back(tower_itr->energy());
74  tower_eta_.emplace_back(tower_itr->eta());
75  tower_phi_.emplace_back(tower_itr->phi());
76  tower_etEm_.emplace_back(tower_itr->etEm());
77  tower_etHad_.emplace_back(tower_itr->etHad());
78 
79  tower_iEta_.emplace_back(tower_itr->id().iEta());
80  tower_iPhi_.emplace_back(tower_itr->id().iPhi());
81  }
82 }
83 
85  tower_n_ = 0;
86  tower_pt_.clear();
87  tower_energy_.clear();
88  tower_eta_.clear();
89  tower_phi_.clear();
90  tower_etEm_.clear();
91  tower_etHad_.clear();
92  tower_iEta_.clear();
93  tower_iPhi_.clear();
94 }
const_iterator end(int bx) const
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void fill(const edm::Event &e, const edm::EventSetup &es) final
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
HGCalTriggerNtupleHGCTowers(const edm::ParameterSet &conf)
ESHandle< TrackerGeometry > geometry
T get() const
Definition: EventSetup.h:73
#define DEFINE_EDM_PLUGIN(factory, type, name)
Definition: tree.py:1
const_iterator begin(int bx) const
void initialize(TTree &, const edm::ParameterSet &, edm::ConsumesCollector &&) final