CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
HcalSimHitStudy.cc
Go to the documentation of this file.
8 
10 
13 
17 
20 
21 #include <fstream>
22 #include <iostream>
23 #include <map>
24 #include <string>
25 #include <vector>
26 
28 public:
30  ~HcalSimHitStudy() override;
31 
32  void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
33 
34 protected:
35  // void endJob ();
36  void analyze(const edm::Event &e, const edm::EventSetup &c) override;
37 
38  void analyzeHits(std::vector<PCaloHit> &);
39 
40 private:
44  int maxDepth_;
46 
47  int iphi_bins;
57 
60 
62 
66  std::vector<MonitorElement *> meEtaPhiHitDepth_;
80 };
81 
83  g4Label = ps.getUntrackedParameter<std::string>("moduleLabel", "g4SimHits");
84  hcalHits = ps.getUntrackedParameter<std::string>("HitCollection", "HcalHits");
85  outFile_ = ps.getUntrackedParameter<std::string>("outputFile", "hcHit.root");
86  verbose_ = ps.getUntrackedParameter<bool>("Verbose", false);
87  testNumber_ = ps.getParameter<bool>("TestNumber");
88  hep17_ = ps.getParameter<bool>("hep17");
89  checkHit_ = true;
90 
91  tok_hits_ = consumes<edm::PCaloHitContainer>(edm::InputTag(g4Label, hcalHits));
92  tok_HRNDC_ = esConsumes<HcalDDDRecConstants, HcalRecNumberingRecord, edm::Transition::BeginRun>();
93 
94  edm::LogInfo("HcalSim") << "Module Label: " << g4Label << " Hits: " << hcalHits << " / " << checkHit_
95  << " Output: " << outFile_;
96 }
97 
99 
101  hcons_ = &es.getData(tok_HRNDC_);
109 
110  // Get Phi segmentation from geometry, use the max phi number so that all iphi
111  // values are included.
112 
113  int NphiMax = hcons_->getNPhi(0);
114 
115  NphiMax = (hcons_->getNPhi(1) > NphiMax ? hcons_->getNPhi(1) : NphiMax);
116  NphiMax = (hcons_->getNPhi(2) > NphiMax ? hcons_->getNPhi(2) : NphiMax);
117  NphiMax = (hcons_->getNPhi(3) > NphiMax ? hcons_->getNPhi(3) : NphiMax);
118 
119  // Center the iphi bins on the integers
120  iphi_min = 0.5;
121  iphi_max = NphiMax + 0.5;
122  iphi_bins = (int)(iphi_max - iphi_min);
123 
124  int iEtaHBMax = hcons_->getEtaRange(0).second;
125  int iEtaHEMax = std::max(hcons_->getEtaRange(1).second, 1);
126  int iEtaHFMax = hcons_->getEtaRange(2).second;
127  int iEtaHOMax = hcons_->getEtaRange(3).second;
128 
129  // Retain classic behavior, all plots have same ieta range.
130  // Comment out code to allow each subdetector to have its on range
131 
132  int iEtaMax = (iEtaHBMax > iEtaHEMax ? iEtaHBMax : iEtaHEMax);
133  iEtaMax = (iEtaMax > iEtaHFMax ? iEtaMax : iEtaHFMax);
134  iEtaMax = (iEtaMax > iEtaHOMax ? iEtaMax : iEtaHOMax);
135 
136  iEtaHBMax = iEtaMax;
137  iEtaHEMax = iEtaMax;
138  iEtaHFMax = iEtaMax;
139  iEtaHOMax = iEtaMax;
140 
141  // Give an empty bin around the subdet ieta range to make it clear that all
142  // ieta rings have been included
143  ieta_min_HB = -iEtaHBMax - 1.5;
144  ieta_max_HB = iEtaHBMax + 1.5;
146 
147  ieta_min_HE = -iEtaHEMax - 1.5;
148  ieta_max_HE = iEtaHEMax + 1.5;
150 
151  ieta_min_HF = -iEtaHFMax - 1.5;
152  ieta_max_HF = iEtaHFMax + 1.5;
154 
155  ieta_min_HO = -iEtaHOMax - 1.5;
156  ieta_max_HO = iEtaHOMax + 1.5;
158 
159  Char_t hname[100];
160  Char_t htitle[100];
161 
162  ib.setCurrentFolder("HcalHitsV/HcalSimHitsTask");
163 
164  // Histograms for Hits
165  if (checkHit_) {
166  meAllNHit_ = ib.book1D("Hit01", "Number of Hits in HCal", 20000, 0., 20000.);
167  meBadDetHit_ = ib.book1D("Hit02", "Hits with wrong Det", 100, 0., 100.);
168  meBadSubHit_ = ib.book1D("Hit03", "Hits with wrong Subdet", 100, 0., 100.);
169  meBadIdHit_ = ib.book1D("Hit04", "Hits with wrong ID", 100, 0., 100.);
170  meHBNHit_ = ib.book1D("Hit05", "Number of Hits in HB", 20000, 0., 20000.);
171  meHENHit_ = ib.book1D("Hit06", "Number of Hits in HE", 10000, 0., 10000.);
172  meHONHit_ = ib.book1D("Hit07", "Number of Hits in HO", 10000, 0., 10000.);
173  meHFNHit_ = ib.book1D("Hit08", "Number of Hits in HF", 10000, 0., 10000.);
174  meDetectHit_ = ib.book1D("Hit09", "Detector ID", 50, 0., 50.);
175  meSubdetHit_ = ib.book1D("Hit10", "Subdetectors in HCal", 50, 0., 50.);
176  meDepthHit_ = ib.book1D("Hit11", "Depths in HCal", 20, 0., 20.);
177  meEtaHit_ = ib.book1D("Hit12", "Eta in HCal", ieta_bins_HF, ieta_min_HF, ieta_max_HF);
178  meEtaPhiHit_ =
179  ib.book2D("Hit12b", "Eta-phi in HCal", ieta_bins_HF, ieta_min_HF, ieta_max_HF, iphi_bins, iphi_min, iphi_max);
180  for (int depth = 1; depth <= maxDepth_; depth++) {
181  sprintf(hname, "Hit12bd%d", depth);
182  sprintf(htitle, "Eta-phi in HCal d%d", depth);
183  meEtaPhiHitDepth_.push_back(
185  }
186  // KC: There are different phi segmentation schemes, this plot uses wider
187  // bins to represent the most sparse segmentation
188  mePhiHit_ = ib.book1D("Hit13", "Phi in HCal (HB,HO)", iphi_bins, iphi_min, iphi_max);
189  mePhiHitb_ = ib.book1D("Hit13b", "Phi in HCal (HE,HF)", iphi_bins, iphi_min, iphi_max);
190  meEnergyHit_ = ib.book1D("Hit14", "Energy in HCal", 2000, 0., 20.);
191  meTimeHit_ = ib.book1D("Hit15", "Time in HCal", 528, 0., 528.);
192  meTimeWHit_ = ib.book1D("Hit16", "Time in HCal (E wtd)", 528, 0., 528.);
193  meHBDepHit_ = ib.book1D("Hit17", "Depths in HB", 20, 0., 20.);
194  meHEDepHit_ = ib.book1D("Hit18", "Depths in HE", 20, 0., 20.);
195  meHODepHit_ = ib.book1D("Hit19", "Depths in HO", 20, 0., 20.);
196  meHFDepHit_ = ib.book1D("Hit20", "Depths in HF", 20, 0., 20.);
197  meHFDepHitw_ = ib.book1D("Hit20b", "Depths in HF (p.e. weighted)", 20, 0., 20.);
198  meHBEtaHit_ = ib.book1D("Hit21", "Eta in HB", ieta_bins_HB, ieta_min_HB, ieta_max_HB);
199  meHEEtaHit_ = ib.book1D("Hit22", "Eta in HE", ieta_bins_HE, ieta_min_HE, ieta_max_HE);
200  meHOEtaHit_ = ib.book1D("Hit23", "Eta in HO", ieta_bins_HO, ieta_min_HO, ieta_max_HO);
201  meHFEtaHit_ = ib.book1D("Hit24", "Eta in HF", ieta_bins_HF, ieta_min_HF, ieta_max_HF);
202  meHBPhiHit_ = ib.book1D("Hit25", "Phi in HB", iphi_bins, iphi_min, iphi_max);
203  meHEPhiHit_ = ib.book1D("Hit26", "Phi in HE", iphi_bins, iphi_min, iphi_max);
204  meHOPhiHit_ = ib.book1D("Hit27", "Phi in HO", iphi_bins, iphi_min, iphi_max);
205  meHFPhiHit_ = ib.book1D("Hit28", "Phi in HF", iphi_bins, iphi_min, iphi_max);
206  meHBEneHit_ = ib.book1D("Hit29", "Energy in HB", 2000, 0., 20.);
207  meHEEneHit_ = ib.book1D("Hit30", "Energy in HE", 500, 0., 5.);
208  meHEP17EneHit_ = ib.book1D("Hit30b", "Energy in HEP17", 500, 0., 5.);
209  meHOEneHit_ = ib.book1D("Hit31", "Energy in HO", 500, 0., 5.);
210  meHFEneHit_ = ib.book1D("Hit32", "Energy in HF", 1001, -0.5, 1000.5);
211 
212  // HxEneMap, HxEneSum, HxEneSum_vs_ieta plot the sum of the simhits energy
213  // within a single ieta-iphi tower.
214 
215  meHBEneMap_ =
216  ib.book2D("HBEneMap", "HBEneMap", ieta_bins_HB, ieta_min_HB, ieta_max_HB, iphi_bins, iphi_min, iphi_max);
217  meHEEneMap_ =
218  ib.book2D("HEEneMap", "HEEneMap", ieta_bins_HE, ieta_min_HE, ieta_max_HE, iphi_bins, iphi_min, iphi_max);
219  meHOEneMap_ =
220  ib.book2D("HOEneMap", "HOEneMap", ieta_bins_HO, ieta_min_HO, ieta_max_HO, iphi_bins, iphi_min, iphi_max);
221  meHFEneMap_ =
222  ib.book2D("HFEneMap", "HFEneMap", ieta_bins_HF, ieta_min_HF, ieta_max_HF, iphi_bins, iphi_min, iphi_max);
223 
224  meHBEneSum_ = ib.book1D("HBEneSum", "HBEneSum", 2000, 0., 20.);
225  meHEEneSum_ = ib.book1D("HEEneSum", "HEEneSum", 500, 0., 5.);
226  meHOEneSum_ = ib.book1D("HOEneSum", "HOEneSum", 500, 0., 5.);
227  meHFEneSum_ = ib.book1D("HFEneSum", "HFEneSum", 1001, -0.5, 1000.5);
228 
230  "HBEneSum_vs_ieta", "HBEneSum_vs_ieta", ieta_bins_HB, ieta_min_HB, ieta_max_HB, 2011, -10.5, 2000.5, " ");
232  "HEEneSum_vs_ieta", "HEEneSum_vs_ieta", ieta_bins_HE, ieta_min_HE, ieta_max_HE, 2011, -10.5, 2000.5, " ");
234  "HOEneSum_vs_ieta", "HOEneSum_vs_ieta", ieta_bins_HO, ieta_min_HO, ieta_max_HO, 2011, -10.5, 2000.5, " ");
236  "HFEneSum_vs_ieta", "HFEneSum_vs_ieta", ieta_bins_HF, ieta_min_HF, ieta_max_HF, 2011, -10.5, 2000.5, " ");
237 
238  meHBTimHit_ = ib.book1D("Hit33", "Time in HB", 528, 0., 528.);
239  meHETimHit_ = ib.book1D("Hit34", "Time in HE", 528, 0., 528.);
240  meHOTimHit_ = ib.book1D("Hit35", "Time in HO", 528, 0., 528.);
241  meHFTimHit_ = ib.book1D("Hit36", "Time in HF", 528, 0., 528.);
242  // These are the zoomed in energy ranges
243  meHBEneHit2_ = ib.book1D("Hit37", "Energy in HB 2", 100, 0., 0.0001);
244  meHEEneHit2_ = ib.book1D("Hit38", "Energy in HE 2", 100, 0., 0.0001);
245  meHEP17EneHit2_ = ib.book1D("Hit38b", "Energy in HEP17 2", 100, 0., 0.0001);
246  meHOEneHit2_ = ib.book1D("Hit39", "Energy in HO 2", 100, 0., 0.0001);
247  meHFEneHit2_ = ib.book1D("Hit40", "Energy in HF 2", 100, 0.5, 100.5);
248  meHBL10Ene_ = ib.book1D("Hit41", "Log10Energy in HB", 140, -10., 4.);
249  meHEL10Ene_ = ib.book1D("Hit42", "Log10Energy in HE", 140, -10., 4.);
250  meHFL10Ene_ = ib.book1D("Hit43", "Log10Energy in HF", 50, -1., 4.);
251  meHOL10Ene_ = ib.book1D("Hit44", "Log10Energy in HO", 140, -10., 4.);
252  meHBL10EneP_ = ib.bookProfile("Hit45", "Log10Energy in HB vs Hit contribution", 140, -10., 4., 100, 0., 1.);
253  meHEL10EneP_ = ib.bookProfile("Hit46", "Log10Energy in HE vs Hit contribution", 140, -10., 4., 100, 0., 1.);
254  meHFL10EneP_ = ib.bookProfile("Hit47", "Log10Energy in HF vs Hit contribution", 140, -10., 4., 100, 0., 1.);
255  meHOL10EneP_ = ib.bookProfile("Hit48", "Log10Energy in HO vs Hit contribution", 140, -10., 4., 100, 0., 1.);
256  }
257 }
258 
259 /*void HcalSimHitStudy::endJob() {
260  if (dbe_ && outFile_.size() > 0) dbe_->save(outFile_);
261 }*/
262 
264  edm::LogVerbatim("HcalSim") << "Run = " << e.id().run() << " Event = " << e.id().event();
265 
266  std::vector<PCaloHit> caloHits;
268 
269  bool getHits = false;
270  if (checkHit_) {
271  e.getByToken(tok_hits_, hitsHcal);
272  if (hitsHcal.isValid())
273  getHits = true;
274  }
275 
276  edm::LogVerbatim("HcalSim") << "HcalValidation: Input flags Hits " << getHits;
277 
278  if (getHits) {
279  caloHits.insert(caloHits.end(), hitsHcal->begin(), hitsHcal->end());
280  edm::LogVerbatim("HcalSim") << "HcalValidation: Hit buffer " << caloHits.size();
281  analyzeHits(caloHits);
282  }
283 }
284 
285 void HcalSimHitStudy::analyzeHits(std::vector<PCaloHit> &hits) {
286  int nHit = hits.size();
287  int nHB = 0, nHE = 0, nHO = 0, nHF = 0, nBad1 = 0, nBad2 = 0, nBad = 0;
288  std::vector<double> encontHB(140, 0.);
289  std::vector<double> encontHE(140, 0.);
290  std::vector<double> encontHF(140, 0.);
291  std::vector<double> encontHO(140, 0.);
292  double entotHB = 0, entotHE = 0, entotHF = 0, entotHO = 0;
293 
294  double HBEneMap[ieta_bins_HB][iphi_bins];
295  double HEEneMap[ieta_bins_HE][iphi_bins];
296  double HOEneMap[ieta_bins_HO][iphi_bins];
297  double HFEneMap[ieta_bins_HF][iphi_bins];
298 
299  // Works in ieta_min_Hx is < 0
300  int eta_offset_HB = -(int)ieta_min_HB;
301  int eta_offset_HE = -(int)ieta_min_HE;
302  int eta_offset_HO = -(int)ieta_min_HO;
303  int eta_offset_HF = -(int)ieta_min_HF;
304 
305  for (int i = 0; i < ieta_bins_HB; i++) {
306  for (int j = 0; j < iphi_bins; j++) {
307  HBEneMap[i][j] = 0.;
308  }
309  }
310 
311  for (int i = 0; i < ieta_bins_HE; i++) {
312  for (int j = 0; j < iphi_bins; j++) {
313  HEEneMap[i][j] = 0.;
314  }
315  }
316 
317  for (int i = 0; i < ieta_bins_HO; i++) {
318  for (int j = 0; j < iphi_bins; j++) {
319  HOEneMap[i][j] = 0.;
320  }
321  }
322 
323  for (int i = 0; i < ieta_bins_HF; i++) {
324  for (int j = 0; j < iphi_bins; j++) {
325  HFEneMap[i][j] = 0.;
326  }
327  }
328 
329  for (int i = 0; i < nHit; i++) {
330  double energy = hits[i].energy();
331  double log10en = log10(energy);
332  int log10i = int((log10en + 10.) * 10.);
333  double time = hits[i].time();
334  unsigned int id = hits[i].id();
335  int det, subdet, depth, eta, phi;
336  HcalDetId hid;
337  if (testNumber_)
339  else
340  hid = HcalDetId(id);
341  det = hid.det();
342  subdet = hid.subdet();
343  depth = hid.depth();
344  eta = hid.ieta();
345  phi = hid.iphi();
346 
347  edm::LogVerbatim("HcalSim") << "Hit[" << i << "] ID " << std::hex << id << std::dec << " Det " << det << " Sub "
348  << subdet << " depth " << depth << " Eta " << eta << " Phi " << phi << " E " << energy
349  << " time " << time;
350  if (det == 4) { // Check DetId.h
351  if (subdet == static_cast<int>(HcalBarrel))
352  nHB++;
353  else if (subdet == static_cast<int>(HcalEndcap))
354  nHE++;
355  else if (subdet == static_cast<int>(HcalOuter))
356  nHO++;
357  else if (subdet == static_cast<int>(HcalForward))
358  nHF++;
359  else {
360  nBad++;
361  nBad2++;
362  }
363  } else {
364  nBad++;
365  nBad1++;
366  }
367 
368  meDetectHit_->Fill(double(det));
369  if (det == 4) {
370  meSubdetHit_->Fill(double(subdet));
371  meDepthHit_->Fill(double(depth));
372  meEtaHit_->Fill(double(eta));
373  meEtaPhiHit_->Fill(double(eta), double(phi));
374  meEtaPhiHitDepth_[depth - 1]->Fill(double(eta), double(phi));
375 
376  // We will group the phi plots by HB,HO and HE,HF since these groups share
377  // similar segmentation schemes
378  if (subdet == static_cast<int>(HcalBarrel))
379  mePhiHit_->Fill(double(phi));
380  else if (subdet == static_cast<int>(HcalEndcap))
381  mePhiHitb_->Fill(double(phi));
382  else if (subdet == static_cast<int>(HcalOuter))
383  mePhiHit_->Fill(double(phi));
384  else if (subdet == static_cast<int>(HcalForward))
385  mePhiHitb_->Fill(double(phi));
386 
387  // KC: HF energy is in photoelectrons rather than eV, so it will not be
388  // included in total HCal energy
389  if (subdet != static_cast<int>(HcalForward)) {
390  meEnergyHit_->Fill(energy);
391 
392  // Since the HF energy is a different scale it does not make sense to
393  // include it in the Energy Weighted Plot
394  meTimeWHit_->Fill(double(time), energy);
395  }
396  meTimeHit_->Fill(time);
397 
398  if (subdet == static_cast<int>(HcalBarrel)) {
399  meHBDepHit_->Fill(double(depth));
400  meHBEtaHit_->Fill(double(eta));
401  meHBPhiHit_->Fill(double(phi));
402  meHBEneHit_->Fill(energy);
403  meHBEneHit2_->Fill(energy);
404  meHBTimHit_->Fill(time);
405  meHBL10Ene_->Fill(log10en);
406  if (log10i >= 0 && log10i < 140)
407  encontHB[log10i] += energy;
408  entotHB += energy;
409 
410  HBEneMap[eta + eta_offset_HB][phi - 1] += energy;
411 
412  } else if (subdet == static_cast<int>(HcalEndcap)) {
413  meHEDepHit_->Fill(double(depth));
414  meHEEtaHit_->Fill(double(eta));
415  meHEPhiHit_->Fill(double(phi));
416 
417  bool isHEP17 = (phi >= 63) && (phi <= 66) && (eta > 0);
418  if (hep17_) {
419  if (!isHEP17) {
420  meHEEneHit_->Fill(energy);
421  meHEEneHit2_->Fill(energy);
422  } else {
423  meHEP17EneHit_->Fill(energy);
424  meHEP17EneHit2_->Fill(energy);
425  }
426  } else {
427  meHEEneHit_->Fill(energy);
428  meHEEneHit2_->Fill(energy);
429  }
430 
431  meHETimHit_->Fill(time);
432  meHEL10Ene_->Fill(log10en);
433  if (log10i >= 0 && log10i < 140)
434  encontHE[log10i] += energy;
435  entotHE += energy;
436 
437  HEEneMap[eta + eta_offset_HE][phi - 1] += energy;
438 
439  } else if (subdet == static_cast<int>(HcalOuter)) {
440  meHODepHit_->Fill(double(depth));
441  meHOEtaHit_->Fill(double(eta));
442  meHOPhiHit_->Fill(double(phi));
443  meHOEneHit_->Fill(energy);
444  meHOEneHit2_->Fill(energy);
445  meHOTimHit_->Fill(time);
446  meHOL10Ene_->Fill(log10en);
447  if (log10i >= 0 && log10i < 140)
448  encontHO[log10i] += energy;
449  entotHO += energy;
450 
451  HOEneMap[eta + eta_offset_HO][phi - 1] += energy;
452 
453  } else if (subdet == static_cast<int>(HcalForward)) {
454  meHFDepHit_->Fill(double(depth));
455  meHFDepHitw_->Fill(double(depth), energy);
456  meHFEtaHit_->Fill(double(eta));
457  meHFPhiHit_->Fill(double(phi));
458  meHFEneHit_->Fill(energy);
459  meHFEneHit2_->Fill(energy);
460  meHFTimHit_->Fill(time);
461  meHFL10Ene_->Fill(log10en);
462  if (log10i >= 0 && log10i < 140)
463  encontHF[log10i] += energy;
464  entotHF += energy;
465 
466  HFEneMap[eta + eta_offset_HF][phi - 1] += energy;
467  }
468  }
469  }
470  if (entotHB != 0)
471  for (int i = 0; i < 140; i++)
472  meHBL10EneP_->Fill(-10. + (float(i) + 0.5) / 10., encontHB[i] / entotHB);
473  if (entotHE != 0)
474  for (int i = 0; i < 140; i++)
475  meHEL10EneP_->Fill(-10. + (float(i) + 0.5) / 10., encontHE[i] / entotHE);
476  if (entotHF != 0)
477  for (int i = 0; i < 140; i++)
478  meHFL10EneP_->Fill(-10. + (float(i) + 0.5) / 10., encontHF[i] / entotHF);
479  if (entotHO != 0)
480  for (int i = 0; i < 140; i++)
481  meHOL10EneP_->Fill(-10. + (float(i) + 0.5) / 10., encontHO[i] / entotHO);
482 
483  meAllNHit_->Fill(double(nHit));
484  meBadDetHit_->Fill(double(nBad1));
485  meBadSubHit_->Fill(double(nBad2));
486  meBadIdHit_->Fill(double(nBad));
487  meHBNHit_->Fill(double(nHB));
488  meHENHit_->Fill(double(nHE));
489  meHONHit_->Fill(double(nHO));
490  meHFNHit_->Fill(double(nHF));
491 
492  for (int i = 0; i < ieta_bins_HB; i++) {
493  for (int j = 0; j < iphi_bins; j++) {
494  if (HBEneMap[i][j] != 0) {
495  meHBEneSum_->Fill(HBEneMap[i][j]);
496  meHBEneSum_vs_ieta_->Fill((i - eta_offset_HB), HBEneMap[i][j]);
497  meHBEneMap_->Fill((i - eta_offset_HB), j + 1, HBEneMap[i][j]);
498  }
499  }
500  }
501 
502  for (int i = 0; i < ieta_bins_HE; i++) {
503  for (int j = 0; j < iphi_bins; j++) {
504  if (HEEneMap[i][j] != 0) {
505  meHEEneSum_->Fill(HEEneMap[i][j]);
506  meHEEneSum_vs_ieta_->Fill((i - eta_offset_HE), HEEneMap[i][j]);
507  meHEEneMap_->Fill((i - eta_offset_HE), j + 1, HEEneMap[i][j]);
508  }
509  }
510  }
511 
512  for (int i = 0; i < ieta_bins_HO; i++) {
513  for (int j = 0; j < iphi_bins; j++) {
514  if (HOEneMap[i][j] != 0) {
515  meHOEneSum_->Fill(HOEneMap[i][j]);
516  meHOEneSum_vs_ieta_->Fill((i - eta_offset_HO), HOEneMap[i][j]);
517  meHOEneMap_->Fill((i - eta_offset_HO), j + 1, HOEneMap[i][j]);
518  }
519  }
520  }
521 
522  for (int i = 0; i < ieta_bins_HF; i++) {
523  for (int j = 0; j < iphi_bins; j++) {
524  if (HFEneMap[i][j] != 0) {
525  meHFEneSum_->Fill(HFEneMap[i][j]);
526  meHFEneSum_vs_ieta_->Fill((i - eta_offset_HF), HFEneMap[i][j]);
527  meHFEneMap_->Fill((i - eta_offset_HF), j + 1, HFEneMap[i][j]);
528  }
529  }
530  }
531 
532  edm::LogVerbatim("HcalSim") << "HcalSimHitStudy::analyzeHits: HB " << nHB << " HE " << nHE << " HO " << nHO << " HF "
533  << nHF << " Bad " << nBad << " All " << nHit;
534 }
535 
538 
RunNumber_t run() const
Definition: EventID.h:38
MonitorElement * mePhiHit_
MonitorElement * meHBEneMap_
edm::EDGetTokenT< edm::PCaloHitContainer > tok_hits_
Log< level::Info, true > LogVerbatim
EventNumber_t event() const
Definition: EventID.h:40
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * meHEDepHit_
MonitorElement * meHOL10Ene_
MonitorElement * meHOEneSum_vs_ieta_
const edm::EventSetup & c
int ib
Definition: cuy.py:661
MonitorElement * meHOEneSum_
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
MonitorElement * meHOPhiHit_
MonitorElement * meDetectHit_
MonitorElement * meHFNHit_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
void analyze(const edm::Event &e, const edm::EventSetup &c) override
MonitorElement * meHFEtaHit_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ESGetToken< HcalDDDRecConstants, HcalRecNumberingRecord > tok_HRNDC_
MonitorElement * meHFL10EneP_
MonitorElement * meHBEneSum_vs_ieta_
MonitorElement * meHFEneHit2_
MonitorElement * meHOL10EneP_
MonitorElement * meHFDepHitw_
MonitorElement * meHBNHit_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * meHFTimHit_
MonitorElement * meHEEneSum_vs_ieta_
MonitorElement * meHBEneHit2_
MonitorElement * meHONHit_
void Fill(long long x)
MonitorElement * meAllNHit_
bool getData(T &iHolder) const
Definition: EventSetup.h:128
MonitorElement * meHBL10Ene_
MonitorElement * meHEEneSum_
constexpr HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:138
MonitorElement * meBadDetHit_
MonitorElement * meHEP17EneHit2_
MonitorElement * meHFL10Ene_
MonitorElement * mePhiHitb_
constexpr int iphi() const
get the cell iphi
Definition: HcalDetId.h:157
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:322
MonitorElement * meHETimHit_
MonitorElement * meTimeHit_
void analyzeHits(std::vector< PCaloHit > &)
const HcalDDDRecConstants * hcons_
MonitorElement * meHFDepHit_
MonitorElement * meHBEneSum_
MonitorElement * meHOEneMap_
MonitorElement * meHBTimHit_
MonitorElement * meHFEneSum_vs_ieta_
constexpr int ieta() const
get the cell ieta
Definition: HcalDetId.h:155
MonitorElement * meTimeWHit_
bool isValid() const
Definition: HandleBase.h:70
MonitorElement * meHBDepHit_
MonitorElement * meHFEneSum_
MonitorElement * meHFEneMap_
MonitorElement * meBadSubHit_
Log< level::Info, false > LogInfo
MonitorElement * meHENHit_
MonitorElement * meBadIdHit_
MonitorElement * meHEL10EneP_
MonitorElement * meEnergyHit_
std::string hcalHits
int getMaxDepth(const int &type) const
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
MonitorElement * meHOEtaHit_
MonitorElement * meEtaPhiHit_
MonitorElement * meHEEneMap_
MonitorElement * meEtaHit_
MonitorElement * meHBEneHit_
MonitorElement * meHOTimHit_
MonitorElement * meHBL10EneP_
edm::EventID id() const
Definition: EventBase.h:59
MonitorElement * meHEEneHit2_
MonitorElement * meHFPhiHit_
std::string outFile_
MonitorElement * meDepthHit_
MonitorElement * meHBEtaHit_
MonitorElement * meHODepHit_
std::vector< MonitorElement * > meEtaPhiHitDepth_
MonitorElement * meHEL10Ene_
DetId relabel(const uint32_t testId) const
constexpr int depth() const
get the tower depth
Definition: HcalDetId.h:164
std::pair< int, int > getEtaRange(const int &i) const
MonitorElement * meHEEneHit_
std::string g4Label
MonitorElement * meHEPhiHit_
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
HcalSimHitStudy(const edm::ParameterSet &ps)
MonitorElement * meSubdetHit_
MonitorElement * meHBPhiHit_
MonitorElement * meHEP17EneHit_
Definition: Run.h:45
MonitorElement * meHFEneHit_
~HcalSimHitStudy() override
int getNPhi(const int &type) const
MonitorElement * meHEEtaHit_
MonitorElement * meHOEneHit_
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
MonitorElement * meHOEneHit2_