CMS 3D CMS Logo

HcalDigisValidation.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: HcalDigisValidation
4 // Class: HcalDigisValidation
5 //
13 //
14 // Original Author: Ali Fahim,22 R-013,+41227672649,
15 // Created: Wed Mar 23 11:42:34 CET 2011
16 //
17 //
18 
22 
24  subdet_ = iConfig.getUntrackedParameter<std::string>("subdetector", "all");
25  outputFile_ = iConfig.getUntrackedParameter<std::string>("outputFile", "");
26  // inputLabel_ = iConfig.getParameter<std::string > ("digiLabel");
27  inputTag_ = iConfig.getParameter<edm::InputTag>("digiTag");
28  QIE10inputTag_ = iConfig.getParameter<edm::InputTag>("QIE10digiTag");
29  QIE11inputTag_ = iConfig.getParameter<edm::InputTag>("QIE11digiTag");
30  emulTPsTag_ = iConfig.getParameter<edm::InputTag>("emulTPs");
31  dataTPsTag_ = iConfig.getParameter<edm::InputTag>("dataTPs");
32  mc_ = iConfig.getUntrackedParameter<std::string>("mc", "no");
33  mode_ = iConfig.getUntrackedParameter<std::string>("mode", "multi");
34  dirName_ = iConfig.getUntrackedParameter<std::string>("dirName", "HcalDigisV/HcalDigiTask");
35  testNumber_ = iConfig.getParameter<bool>("TestNumber");
36  hep17_ = iConfig.getParameter<bool>("hep17");
37  HEPhase1_ = iConfig.getParameter<bool>("HEPhase1");
38  HBPhase1_ = iConfig.getParameter<bool>("HBPhase1");
39  Plot_TP_ver_ = iConfig.getParameter<bool>("Plot_TP_ver");
40 
41  // register for data access
42  if (iConfig.exists("simHits")) {
43  tok_mc_ = consumes<edm::PCaloHitContainer>(iConfig.getUntrackedParameter<edm::InputTag>("simHits"));
44  }
45  tok_hbhe_ = consumes<HBHEDigiCollection>(inputTag_);
46  tok_ho_ = consumes<HODigiCollection>(inputTag_);
47  tok_hf_ = consumes<HFDigiCollection>(inputTag_);
48  tok_emulTPs_ = consumes<HcalTrigPrimDigiCollection>(emulTPsTag_);
49  if (dataTPsTag_ == edm::InputTag(""))
50  skipDataTPs = true;
51  else {
52  skipDataTPs = false;
53  tok_dataTPs_ = consumes<HcalTrigPrimDigiCollection>(dataTPsTag_);
54  }
55 
56  tok_qie10_hf_ = consumes<QIE10DigiCollection>(QIE10inputTag_);
57  tok_qie11_hbhe_ = consumes<QIE11DigiCollection>(QIE11inputTag_);
58 
59  tok_HRNDC_ = esConsumes<HcalDDDRecConstants, HcalRecNumberingRecord, edm::Transition::BeginRun>();
60  tok_Geom_ = esConsumes<CaloGeometry, CaloGeometryRecord, edm::Transition::BeginRun>();
61  tok_Decoder_ = esConsumes<CaloTPGTranscoder, CaloTPGRecord>();
62  tok_TPGeom_ = esConsumes<HcalTrigTowerGeometry, CaloGeometryRecord>();
63  tok_Topo_ = esConsumes<HcalTopology, HcalRecNumberingRecord>();
64  tok_Cond_ = esConsumes<HcalDbService, HcalDbRecord>();
65 
66  nevent1 = 0;
67  nevent2 = 0;
68  nevent3 = 0;
69  nevent4 = 0;
70  nevtot = 0;
71 
72  msm_ = new std::map<std::string, MonitorElement*>();
73 
74  if (!outputFile_.empty())
75  edm::LogInfo("OutputInfo") << " Hcal Digi Task histograms will be saved to '" << outputFile_.c_str() << "'";
76  else
77  edm::LogInfo("OutputInfo") << " Hcal Digi Task histograms will NOT be saved";
78 }
79 
81 
83  const auto& pHRNDC = es.getData(tok_HRNDC_);
84  hcons = &pHRNDC;
85 
87 
88  maxDepth_[1] = hcons->getMaxDepth(0); // HB
89  maxDepth_[2] = hcons->getMaxDepth(1); // HE
90  maxDepth_[3] = hcons->getMaxDepth(3); // HO
91  maxDepth_[4] = hcons->getMaxDepth(2); // HF
92  maxDepth_[0] = (maxDepth_[1] > maxDepth_[2] ? maxDepth_[1] : maxDepth_[2]);
93  maxDepth_[0] = (maxDepth_[0] > maxDepth_[3] ? maxDepth_[0] : maxDepth_[3]);
94  maxDepth_[0] = (maxDepth_[0] > maxDepth_[4] ? maxDepth_[0] : maxDepth_[4]); // any of HB/HE/HO/HF
95 
96  const CaloGeometry* geo = &es.getData(tok_Geom_);
97  const HcalGeometry* gHB = static_cast<const HcalGeometry*>(geo->getSubdetectorGeometry(DetId::Hcal, HcalBarrel));
98  const HcalGeometry* gHE = static_cast<const HcalGeometry*>(geo->getSubdetectorGeometry(DetId::Hcal, HcalEndcap));
99  const HcalGeometry* gHO = static_cast<const HcalGeometry*>(geo->getSubdetectorGeometry(DetId::Hcal, HcalOuter));
100  const HcalGeometry* gHF = static_cast<const HcalGeometry*>(geo->getSubdetectorGeometry(DetId::Hcal, HcalForward));
101 
102  nChannels_[1] = gHB->getHxSize(1);
103  nChannels_[2] = gHE->getHxSize(2);
104  nChannels_[3] = gHO->getHxSize(3);
105  nChannels_[4] = gHF->getHxSize(4);
106 
107  nChannels_[0] = nChannels_[1] + nChannels_[2] + nChannels_[3] + nChannels_[4];
108 }
109 
111  ib.setCurrentFolder(dirName_);
112 
113  // book
114  book1D(ib, "nevtot", 1, 0, 1);
115  int bnoise = 0;
116  int bmc = 0;
117  if (subdet_ == "noise")
118  bnoise = 1;
119  if (mc_ == "yes")
120  bmc = 1;
121  if (subdet_ == "noise" || subdet_ == "all") {
122  booking(ib, "HB", bnoise, bmc);
123  booking(ib, "HO", bnoise, bmc);
124  booking(ib, "HF", bnoise, bmc);
125  booking(ib, "HE", bnoise, bmc);
126  } else {
127  booking(ib, subdet_, 0, bmc);
128  }
129 
130  if (skipDataTPs)
131  return;
132 
133  HistLim tp_hl_et(260, -10, 250);
134  HistLim tp_hl_ntp(640, -20, 3180);
135  HistLim tp_hl_ntp_sub(404, -20, 2000);
136  HistLim tp_hl_ieta(85, -42.5, 42.5);
137  HistLim tp_hl_iphi(74, -0.5, 73.5);
138 
139  book1D(ib, "HcalDigiTask_tp_et", tp_hl_et);
140  book1D(ib, "HcalDigiTask_tp_et_HB", tp_hl_et);
141  book1D(ib, "HcalDigiTask_tp_et_HE", tp_hl_et);
142  book1D(ib, "HcalDigiTask_tp_et_HF", tp_hl_et);
143  book1D(ib, "HcalDigiTask_tp_ntp", tp_hl_ntp);
144  book1D(ib, "HcalDigiTask_tp_ntp_HB", tp_hl_ntp_sub);
145  book1D(ib, "HcalDigiTask_tp_ntp_HE", tp_hl_ntp_sub);
146  book1D(ib, "HcalDigiTask_tp_ntp_HF", tp_hl_ntp_sub);
147  book1D(ib, "HcalDigiTask_tp_ntp_ieta", tp_hl_ieta);
148  book1D(ib, "HcalDigiTask_tp_ntp_iphi", tp_hl_iphi);
149  book1D(ib, "HcalDigiTask_tp_ntp_10_ieta", tp_hl_ieta);
150  book2D(ib, "HcalDigiTask_tp_et_ieta", tp_hl_ieta, tp_hl_et);
151  book2D(ib, "HcalDigiTask_tp_ieta_iphi", tp_hl_ieta, tp_hl_iphi);
152  bookPf(ib, "HcalDigiTask_tp_ave_et_ieta", tp_hl_ieta, tp_hl_et, " ");
153  if (Plot_TP_ver_) {
154  book1D(ib, "HcalDigiTask_tp_et_v0", tp_hl_et);
155  book1D(ib, "HcalDigiTask_tp_et_v1", tp_hl_et);
156  book1D(ib, "HcalDigiTask_tp_et_HF_v0", tp_hl_et);
157  book1D(ib, "HcalDigiTask_tp_et_HF_v1", tp_hl_et);
158  book1D(ib, "HcalDigiTask_tp_ntp_v0", tp_hl_ntp);
159  book1D(ib, "HcalDigiTask_tp_ntp_v1", tp_hl_ntp);
160  book1D(ib, "HcalDigiTask_tp_ntp_HF_v0", tp_hl_ntp_sub);
161  book1D(ib, "HcalDigiTask_tp_ntp_HF_v1", tp_hl_ntp_sub);
162  book1D(ib, "HcalDigiTask_tp_ntp_ieta_v0", tp_hl_ieta);
163  book1D(ib, "HcalDigiTask_tp_ntp_ieta_v1", tp_hl_ieta);
164  book1D(ib, "HcalDigiTask_tp_ntp_iphi_v0", tp_hl_iphi);
165  book1D(ib, "HcalDigiTask_tp_ntp_iphi_v1", tp_hl_iphi);
166  book1D(ib, "HcalDigiTask_tp_ntp_10_ieta_v0", tp_hl_ieta);
167  book1D(ib, "HcalDigiTask_tp_ntp_10_ieta_v1", tp_hl_ieta);
168  book2D(ib, "HcalDigiTask_tp_et_ieta_v0", tp_hl_ieta, tp_hl_et);
169  book2D(ib, "HcalDigiTask_tp_et_ieta_v1", tp_hl_ieta, tp_hl_et);
170  book2D(ib, "HcalDigiTask_tp_ieta_iphi_v0", tp_hl_ieta, tp_hl_iphi);
171  book2D(ib, "HcalDigiTask_tp_ieta_iphi_v1", tp_hl_ieta, tp_hl_iphi);
172  bookPf(ib, "HcalDigiTask_tp_ave_et_ieta_v0", tp_hl_ieta, tp_hl_et, " ");
173  bookPf(ib, "HcalDigiTask_tp_ave_et_ieta_v1", tp_hl_ieta, tp_hl_et, " ");
174  }
175 }
176 
177 void HcalDigisValidation::booking(DQMStore::IBooker& ib, const std::string bsubdet, int bnoise, int bmc) {
178  // Adjust/Optimize binning (JR Dittmann, 16-JUL-2015)
179 
180  HistLim Ndigis(2600, 0., 2600.);
181  HistLim sime(200, 0., 1.0);
182 
183  HistLim digiAmp(360, -100., 7100.);
184  HistLim digiAmpWide(2410, -3000., 720000.); //300 fC binning
185  HistLim ratio(2000, -100., 3900.);
186  HistLim sumAmp(100, -500., 1500.);
187 
188  HistLim nbin(11, -0.5, 10.5);
189 
190  HistLim pedestal(80, -1.0, 15.);
191  HistLim pedestalfC(400, -10., 30.);
192 
193  HistLim frac(80, -0.20, 1.40);
194 
195  HistLim pedLim(80, 0., 8.);
196  HistLim pedWidthLim(100, 0., 2.);
197 
198  HistLim gainLim(120, 0., 0.6);
199  HistLim gainWidthLim(160, 0., 0.32);
200 
201  HistLim ietaLim(85, -42.5, 42.5);
202  HistLim iphiLim(74, -0.5, 73.5);
203 
204  HistLim depthLim(15, -0.5, 14.5);
205 
206  //...TDC
207  HistLim tdcLim(250, 0., 250.);
208  HistLim adcLim(256, 0., 256.);
209 
210  if (bsubdet == "HB") {
211  Ndigis = HistLim(((int)(nChannels_[1] / 100) + 1) * 100, 0., (float)((int)(nChannels_[1] / 100) + 1) * 100);
212  } else if (bsubdet == "HE") {
213  sime = HistLim(200, 0., 1.0);
214  Ndigis = HistLim(((int)(nChannels_[2] / 100) + 1) * 100, 0., (float)((int)(nChannels_[2] / 100) + 1) * 100);
215  } else if (bsubdet == "HF") {
216  sime = HistLim(100, 0., 100.);
217  pedLim = HistLim(100, 0., 20.);
218  pedWidthLim = HistLim(100, 0., 5.);
219  frac = HistLim(400, -4.00, 4.00);
220  Ndigis = HistLim(((int)(nChannels_[4] / 100) + 1) * 100, 0., (float)((int)(nChannels_[4] / 100) + 1) * 100);
221  } else if (bsubdet == "HO") {
222  sime = HistLim(200, 0., 1.0);
223  gainLim = HistLim(160, 0., 1.6);
224  Ndigis = HistLim(((int)(nChannels_[3] / 100) + 1) * 100, 0., (float)((int)(nChannels_[3] / 100) + 1) * 100);
225  }
226 
227  int isubdet = 0;
228  if (bsubdet == "HB")
229  isubdet = 1;
230  else if (bsubdet == "HE")
231  isubdet = 2;
232  else if (bsubdet == "HO")
233  isubdet = 3;
234  else if (bsubdet == "HF")
235  isubdet = 4;
236  else
237  edm::LogWarning("HcalDigisValidation") << "HcalDigisValidation Warning: not HB/HE/HF/HO " << bsubdet << std::endl;
238 
239  Char_t histo[100];
240  const char* sub = bsubdet.c_str();
241  if (bnoise == 0) {
242  // number of digis in each subdetector
243  sprintf(histo, "HcalDigiTask_Ndigis_%s", sub);
244  book1D(ib, histo, Ndigis);
245 
246  // maps of occupancies
247  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
248  sprintf(histo, "HcalDigiTask_ieta_iphi_occupancy_map_depth%d_%s", depth, sub);
249  book2D(ib, histo, ietaLim, iphiLim);
250  }
251 
252  //Depths
253  sprintf(histo, "HcalDigiTask_depths_%s", sub);
254  book1D(ib, histo, depthLim);
255 
256  // occupancies vs ieta
257  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
258  sprintf(histo, "HcalDigiTask_occupancy_vs_ieta_depth%d_%s", depth, sub);
259  book1D(ib, histo, ietaLim);
260  }
261 
262  // just 1D of all cells' amplitudes
263  sprintf(histo, "HcalDigiTask_sum_all_amplitudes_%s", sub);
264  if ((HBPhase1_ && bsubdet == "HB") || (HEPhase1_ && bsubdet == "HE"))
265  book1D(ib, histo, digiAmpWide);
266  else
267  book1D(ib, histo, digiAmp);
268 
269  sprintf(histo, "HcalDigiTask_number_of_amplitudes_above_10fC_%s", sub);
270  book1D(ib, histo, Ndigis);
271 
272  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
273  sprintf(histo, "HcalDigiTask_ADC0_adc_depth%d_%s", depth, sub);
274  book1D(ib, histo, pedestal);
275  }
276 
277  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
278  sprintf(histo, "HcalDigiTask_ADC0_fC_depth%d_%s", depth, sub);
279  book1D(ib, histo, pedestalfC);
280  }
281 
282  sprintf(histo, "HcalDigiTask_signal_amplitude_%s", sub);
283  if ((HBPhase1_ && bsubdet == "HB") || (HEPhase1_ && bsubdet == "HE"))
284  book1D(ib, histo, digiAmpWide);
285  else
286  book1D(ib, histo, digiAmp);
287 
288  if (hep17_ && bsubdet == "HE") {
289  sprintf(histo, "HcalDigiTask_signal_amplitude_HEP17");
290  book1D(ib, histo, digiAmpWide);
291  }
292  //
293  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
294  sprintf(histo, "HcalDigiTask_signal_amplitude_depth%d_%s", depth, sub);
295  if ((HBPhase1_ && bsubdet == "HB") || (HEPhase1_ && bsubdet == "HE"))
296  book1D(ib, histo, digiAmpWide);
297  else
298  book1D(ib, histo, digiAmp);
299  if (hep17_ && bsubdet == "HE") {
300  sprintf(histo, "HcalDigiTask_signal_amplitude_depth%d_HEP17", depth);
301  book1D(ib, histo, digiAmpWide);
302  }
303  }
304 
305  sprintf(histo, "HcalDigiTask_signal_amplitude_vs_bin_all_depths_%s", sub);
306  if ((HBPhase1_ && bsubdet == "HB") || (HEPhase1_ && bsubdet == "HE"))
307  book2D(ib, histo, nbin, digiAmpWide);
308  else
309  book2D(ib, histo, nbin, digiAmp);
310  if (hep17_ && bsubdet == "HE") {
311  sprintf(histo, "HcalDigiTask_signal_amplitude_vs_bin_all_depths_HEP17");
312  book2D(ib, histo, nbin, digiAmpWide);
313  }
314 
315  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
316  sprintf(histo, "HcalDigiTask_all_amplitudes_vs_bin_1D_depth%d_%s", depth, sub);
317  book1D(ib, histo, nbin);
318  if (hep17_ && bsubdet == "HE") {
319  sprintf(histo, "HcalDigiTask_all_amplitudes_vs_bin_1D_depth%d_HEP17", depth);
320  book1D(ib, histo, nbin);
321  }
322  }
323 
324  sprintf(histo, "HcalDigiTask_SOI_frac_%s", sub);
325  book1D(ib, histo, frac);
326  sprintf(histo, "HcalDigiTask_postSOI_frac_%s", sub);
327  book1D(ib, histo, frac);
328 
329  if (bmc == 1) {
330  sprintf(histo, "HcalDigiTask_amplitude_vs_simhits_%s", sub);
331  book2D(ib, histo, sime, digiAmp);
332  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
333  sprintf(histo, "HcalDigiTask_amplitude_vs_simhits_depth%d_%s", depth, sub);
334  book2D(ib, histo, sime, digiAmp);
335  }
336 
337  sprintf(histo, "HcalDigiTask_amplitude_vs_simhits_profile_%s", sub);
338  bookPf(ib, histo, sime, digiAmp);
339  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
340  sprintf(histo, "HcalDigiTask_amplitude_vs_simhits_profile_depth%d_%s", depth, sub);
341  bookPf(ib, histo, sime, digiAmp);
342  }
343 
344  sprintf(histo, "HcalDigiTask_ratio_amplitude_vs_simhits_%s", sub);
345  book1D(ib, histo, ratio);
346  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
347  sprintf(histo, "HcalDigiTask_ratio_amplitude_vs_simhits_depth%d_%s", depth, sub);
348  book1D(ib, histo, ratio);
349  }
350 
351  //...TDC
352  if (bsubdet == "HB" || bsubdet == "HE") {
353  sprintf(histo, "HcalDigiTask_TDCtime_%s", sub);
354  book1D(ib, histo, tdcLim);
355 
356  sprintf(histo, "HcalDigiTask_TDCtime_vs_ADC_%s", sub);
357  book2D(ib, histo, adcLim, tdcLim);
358  }
359 
360  } //mc only
361 
362  } else { // noise only
363 
364  // EVENT "1" distributions of all cells properties
365 
366  //KH
367  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
368  sprintf(histo, "HcalDigiTask_gain_capId0_Depth%d_%s", depth, sub);
369  book1D(ib, histo, gainLim);
370  sprintf(histo, "HcalDigiTask_gain_capId1_Depth%d_%s", depth, sub);
371  book1D(ib, histo, gainLim);
372  sprintf(histo, "HcalDigiTask_gain_capId2_Depth%d_%s", depth, sub);
373  book1D(ib, histo, gainLim);
374  sprintf(histo, "HcalDigiTask_gain_capId3_Depth%d_%s", depth, sub);
375  book1D(ib, histo, gainLim);
376 
377  sprintf(histo, "HcalDigiTask_gainWidth_capId0_Depth%d_%s", depth, sub);
378  book1D(ib, histo, gainWidthLim);
379  sprintf(histo, "HcalDigiTask_gainWidth_capId1_Depth%d_%s", depth, sub);
380  book1D(ib, histo, gainWidthLim);
381  sprintf(histo, "HcalDigiTask_gainWidth_capId2_Depth%d_%s", depth, sub);
382  book1D(ib, histo, gainWidthLim);
383  sprintf(histo, "HcalDigiTask_gainWidth_capId3_Depth%d_%s", depth, sub);
384  book1D(ib, histo, gainWidthLim);
385 
386  sprintf(histo, "HcalDigiTask_pedestal_capId0_Depth%d_%s", depth, sub);
387  book1D(ib, histo, pedLim);
388  sprintf(histo, "HcalDigiTask_pedestal_capId1_Depth%d_%s", depth, sub);
389  book1D(ib, histo, pedLim);
390  sprintf(histo, "HcalDigiTask_pedestal_capId2_Depth%d_%s", depth, sub);
391  book1D(ib, histo, pedLim);
392  sprintf(histo, "HcalDigiTask_pedestal_capId3_Depth%d_%s", depth, sub);
393  book1D(ib, histo, pedLim);
394 
395  sprintf(histo, "HcalDigiTask_pedestal_width_capId0_Depth%d_%s", depth, sub);
396  book1D(ib, histo, pedWidthLim);
397  sprintf(histo, "HcalDigiTask_pedestal_width_capId1_Depth%d_%s", depth, sub);
398  book1D(ib, histo, pedWidthLim);
399  sprintf(histo, "HcalDigiTask_pedestal_width_capId2_Depth%d_%s", depth, sub);
400  book1D(ib, histo, pedWidthLim);
401  sprintf(histo, "HcalDigiTask_pedestal_width_capId3_Depth%d_%s", depth, sub);
402  book1D(ib, histo, pedWidthLim);
403  }
404 
405  //KH
406  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
407  sprintf(histo, "HcalDigiTask_gainMap_Depth%d_%s", depth, sub);
408  book2D(ib, histo, ietaLim, iphiLim);
409  sprintf(histo, "HcalDigiTask_pwidthMap_Depth%d_%s", depth, sub);
410  book2D(ib, histo, ietaLim, iphiLim);
411  }
412 
413  } //end of noise-only
414 } //book
415 
417  conditions = &iSetup.getData(tok_Cond_);
418 
419  //TP Code
420  const auto& decoder = &iSetup.getData(tok_Decoder_);
421  const auto& tp_geometry = &iSetup.getData(tok_TPGeom_);
422  htopo = &iSetup.getData(tok_Topo_);
423 
424  //Get all handles
426  iEvent.getByToken(tok_emulTPs_, emulTPs);
427 
429  if (!skipDataTPs)
430  iEvent.getByToken(tok_dataTPs_, dataTPs);
431  //iEvent.getByLabel("hcalDigis", dataTPs);
432 
433  //~TP Code
434 
435  if (subdet_ != "all") {
436  noise_ = 0;
437  if (subdet_ == "HB") {
438  reco<HBHEDataFrame>(iEvent, iSetup, tok_hbhe_);
439  reco<QIE11DataFrame>(iEvent, iSetup, tok_qie11_hbhe_);
440  }
441  if (subdet_ == "HE") {
442  reco<HBHEDataFrame>(iEvent, iSetup, tok_hbhe_);
443  reco<QIE11DataFrame>(iEvent, iSetup, tok_qie11_hbhe_);
444  }
445  if (subdet_ == "HO")
446  reco<HODataFrame>(iEvent, iSetup, tok_ho_);
447  if (subdet_ == "HF") {
448  reco<HFDataFrame>(iEvent, iSetup, tok_hf_);
449  reco<QIE10DataFrame>(iEvent, iSetup, tok_qie10_hf_);
450  }
451 
452  if (subdet_ == "noise") {
453  noise_ = 1;
454  subdet_ = "HB";
455  reco<HBHEDataFrame>(iEvent, iSetup, tok_hbhe_);
456  reco<QIE11DataFrame>(iEvent, iSetup, tok_qie11_hbhe_);
457  subdet_ = "HE";
458  reco<HBHEDataFrame>(iEvent, iSetup, tok_hbhe_);
459  reco<QIE11DataFrame>(iEvent, iSetup, tok_qie11_hbhe_);
460  subdet_ = "HO";
461  reco<HODataFrame>(iEvent, iSetup, tok_ho_);
462  subdet_ = "HF";
463  reco<HFDataFrame>(iEvent, iSetup, tok_hf_);
464  reco<QIE10DataFrame>(iEvent, iSetup, tok_qie10_hf_);
465  subdet_ = "noise";
466  }
467  } // all subdetectors
468  else {
469  noise_ = 0;
470 
471  subdet_ = "HB";
472  reco<HBHEDataFrame>(iEvent, iSetup, tok_hbhe_);
473  reco<QIE11DataFrame>(iEvent, iSetup, tok_qie11_hbhe_);
474  subdet_ = "HE";
475  reco<HBHEDataFrame>(iEvent, iSetup, tok_hbhe_);
476  reco<QIE11DataFrame>(iEvent, iSetup, tok_qie11_hbhe_);
477  subdet_ = "HO";
478  reco<HODataFrame>(iEvent, iSetup, tok_ho_);
479  subdet_ = "HF";
480  reco<HFDataFrame>(iEvent, iSetup, tok_hf_);
481  reco<QIE10DataFrame>(iEvent, iSetup, tok_qie10_hf_);
482  subdet_ = "all";
483  }
484 
485  fill1D("nevtot", 0);
486  nevtot++;
487 
488  //TP Code
489  //Counters
490  int c = 0, chb = 0, che = 0, chf = 0, cv0 = 0, cv1 = 0, chfv0 = 0, chfv1 = 0;
491 
492  if (skipDataTPs)
493  return;
494 
495  for (HcalTrigPrimDigiCollection::const_iterator itr = dataTPs->begin(); itr != dataTPs->end(); ++itr) {
496  int ieta = itr->id().ieta();
497  int iphi = itr->id().iphi();
498 
499  HcalSubdetector subdet = (HcalSubdetector)0;
500 
501  if (abs(ieta) <= 16)
503  else if (abs(ieta) < tp_geometry->firstHFTower(itr->id().version()))
505  else if (abs(ieta) <= 42)
507 
508  //Right now, the only case where version matters is in HF
509  //If the subdetector is not HF, set version to -1
510  int tpVersion = (subdet == HcalSubdetector::HcalForward ? itr->id().version() : -1);
511 
512  float en = decoder->hcaletValue(itr->id(), itr->t0());
513 
514  if (en < 0.00001)
515  continue;
516 
517  //Plot the variables
518  //Retain classic behavior (include all tps)
519  //Additional plots that only include HF 3x2 or HF 1x1
520 
521  //Classics
522  fill1D("HcalDigiTask_tp_et", en);
523  fill2D("HcalDigiTask_tp_et_ieta", ieta, en);
524  fill2D("HcalDigiTask_tp_ieta_iphi", ieta, iphi);
525  fillPf("HcalDigiTask_tp_ave_et_ieta", ieta, en);
526  fill1D("HcalDigiTask_tp_ntp_ieta", ieta);
527  fill1D("HcalDigiTask_tp_ntp_iphi", iphi);
528  if (en > 10.)
529  fill1D("HcalDigiTask_tp_ntp_10_ieta", ieta);
530 
531  //3x2 Trig Primitives (tpVersion == 0)
532  if ((subdet != HcalSubdetector::HcalForward || tpVersion == 0) && Plot_TP_ver_) {
533  fill1D("HcalDigiTask_tp_et_v0", en);
534  fill2D("HcalDigiTask_tp_et_ieta_v0", ieta, en);
535  fill2D("HcalDigiTask_tp_ieta_iphi_v0", ieta, iphi);
536  fillPf("HcalDigiTask_tp_ave_et_ieta_v0", ieta, en);
537  fill1D("HcalDigiTask_tp_ntp_ieta_v0", ieta);
538  fill1D("HcalDigiTask_tp_ntp_iphi_v0", iphi);
539  if (en > 10.)
540  fill1D("HcalDigiTask_tp_ntp_10_ieta_v0", ieta);
541  }
542 
543  //1x1 Trig Primitives (tpVersion == 1)
544  if ((subdet != HcalSubdetector::HcalForward || tpVersion == 1) && Plot_TP_ver_) {
545  fill1D("HcalDigiTask_tp_et_v1", en);
546  fill2D("HcalDigiTask_tp_et_ieta_v1", ieta, en);
547  fill2D("HcalDigiTask_tp_ieta_iphi_v1", ieta, iphi);
548  fillPf("HcalDigiTask_tp_ave_et_ieta_v1", ieta, en);
549  fill1D("HcalDigiTask_tp_ntp_ieta_v1", ieta);
550  fill1D("HcalDigiTask_tp_ntp_iphi_v1", iphi);
551  if (en > 10.)
552  fill1D("HcalDigiTask_tp_ntp_10_ieta_v1", ieta);
553  }
554 
555  ++c;
556  if (subdet == HcalSubdetector::HcalBarrel) {
557  fill1D("HcalDigiTask_tp_et_HB", en);
558  ++chb;
559  if (Plot_TP_ver_) {
560  ++cv0;
561  ++cv1;
562  }
563  }
564  if (subdet == HcalSubdetector::HcalEndcap) {
565  fill1D("HcalDigiTask_tp_et_HE", en);
566  ++che;
567  if (Plot_TP_ver_) {
568  ++cv0;
569  ++cv1;
570  }
571  }
572  if (subdet == HcalSubdetector::HcalForward) {
573  fill1D("HcalDigiTask_tp_et_HF", en);
574  ++chf;
575 
576  if (tpVersion == 0 && Plot_TP_ver_) {
577  fill1D("HcalDigiTask_tp_et_HF_v0", en);
578  ++chfv0;
579  ++cv0;
580  }
581 
582  if (tpVersion == 1 && Plot_TP_ver_) {
583  fill1D("HcalDigiTask_tp_et_HF_v1", en);
584  ++chfv1;
585  ++cv1;
586  }
587  }
588 
589  } //end data TP collection
590 
591  fill1D("HcalDigiTask_tp_ntp", c);
592  fill1D("HcalDigiTask_tp_ntp_HB", chb);
593  fill1D("HcalDigiTask_tp_ntp_HE", che);
594  fill1D("HcalDigiTask_tp_ntp_HF", chf);
595  if (Plot_TP_ver_) {
596  fill1D("HcalDigiTask_tp_ntp_v0", cv0);
597  fill1D("HcalDigiTask_tp_ntp_v1", cv1);
598  fill1D("HcalDigiTask_tp_ntp_HF_v0", chfv0);
599  fill1D("HcalDigiTask_tp_ntp_HF_v1", chfv1);
600  }
601 
602  //~TP Code
603 }
604 
605 template <class Digi>
607  const edm::EventSetup& iSetup,
609  // HistLim =============================================================
610 
611  std::string strtmp;
612 
613  // ======================================================================
616 
617  // ADC2fC
618  CaloSamples tool;
619  iEvent.getByToken(tok, digiCollection);
620  if (!digiCollection.isValid())
621  return;
622  int isubdet = 0;
623  if (subdet_ == "HB")
624  isubdet = 1;
625  if (subdet_ == "HE")
626  isubdet = 2;
627  if (subdet_ == "HO")
628  isubdet = 3;
629  if (subdet_ == "HF")
630  isubdet = 4;
631 
632  if (isubdet == 1)
633  nevent1++;
634  if (isubdet == 2)
635  nevent2++;
636  if (isubdet == 3)
637  nevent3++;
638  if (isubdet == 4)
639  nevent4++;
640 
641  int indigis = 0;
642  // amplitude for signal cell at diff. depths
643  std::vector<double> v_ampl_c(maxDepth_[isubdet] + 1, 0);
644 
645  // is set to 1 if "seed" SimHit is found
646  int seedSimHit = 0;
647 
648  int ieta_Sim = 9999;
649  int iphi_Sim = 9999;
650  double emax_Sim = -9999.;
651 
652  // SimHits MC only
653  if (mc_ == "yes") {
655  iEvent.getByToken(tok_mc_, hcalHits);
656  const edm::PCaloHitContainer* simhitResult = hcalHits.product();
657 
658  if (isubdet != 0 && noise_ == 0) { // signal only SimHits
659 
660  for (std::vector<PCaloHit>::const_iterator simhits = simhitResult->begin(); simhits != simhitResult->end();
661  ++simhits) {
662  unsigned int id_ = simhits->id();
663  int sub, ieta, iphi;
664  HcalDetId hid;
665  if (testNumber_)
666  hid = HcalHitRelabeller::relabel(id_, hcons);
667  else
668  hid = HcalDetId(id_);
669  sub = hid.subdet();
670  ieta = hid.ieta();
671  iphi = hid.iphi();
672 
673  double en = simhits->energy();
674 
675  if (en > emax_Sim && sub == isubdet) {
676  emax_Sim = en;
677  ieta_Sim = ieta;
678  iphi_Sim = iphi;
679  // to limit "seed" SimHit energy in case of "multi" event
680  if (mode_ == "multi" && ((sub == 4 && en < 100. && en > 1.) || ((sub != 4) && en < 1. && en > 0.02))) {
681  seedSimHit = 1;
682  break;
683  }
684  }
685 
686  } // end of SimHits cycle
687 
688  // found highest-energy SimHit for single-particle
689  if (mode_ != "multi" && emax_Sim > 0.)
690  seedSimHit = 1;
691  } // end of SimHits
692  } // end of mc_ == "yes"
693 
694  // CYCLE OVER CELLS ========================================================
695  int Ndig = 0;
696 
697  for (digiItr = digiCollection->begin(); digiItr != digiCollection->end(); digiItr++) {
698  HcalDetId cell(digiItr->id());
699  int depth = cell.depth();
700  int iphi = cell.iphi();
701  int ieta = cell.ieta();
702  int sub = cell.subdet();
703 
704  if (depth > maxDepth_[isubdet] && sub == isubdet) {
705  edm::LogWarning("HcalDetId") << "HcalDetID presents conflicting information. Depth: " << depth
706  << ", iphi: " << iphi << ", ieta: " << ieta
707  << ". Max depth from geometry is: " << maxDepth_[isubdet]
708  << ". TestNumber = " << testNumber_;
709  continue;
710  }
711 
712  // amplitude for signal cell at diff. depths
713  std::vector<double> v_ampl(maxDepth_[isubdet] + 1, 0);
714 
715  // Gains, pedestals (once !) and only for "noise" case
716  if (((nevent1 == 1 && isubdet == 1) || (nevent2 == 1 && isubdet == 2) || (nevent3 == 1 && isubdet == 3) ||
717  (nevent4 == 1 && isubdet == 4)) &&
718  noise_ == 1 && sub == isubdet) {
719  HcalGenericDetId hcalGenDetId(digiItr->id());
720  const HcalPedestal* pedestal = conditions->getPedestal(hcalGenDetId);
721  const HcalGain* gain = conditions->getGain(hcalGenDetId);
722  const HcalGainWidth* gainWidth = conditions->getGainWidth(hcalGenDetId);
723  const HcalPedestalWidth* pedWidth = conditions->getPedestalWidth(hcalGenDetId);
724 
725  for (int i = 0; i < 4; i++) {
726  fill1D("HcalDigiTask_gain_capId" + str(i) + "_Depth" + str(depth) + "_" + subdet_, gain->getValue(i));
727  fill1D("HcalDigiTask_gainWidth_capId" + str(i) + "_Depth" + str(depth) + "_" + subdet_, gainWidth->getValue(i));
728  fill1D("HcalDigiTask_pedestal_capId" + str(i) + "_Depth" + str(depth) + "_" + subdet_, pedestal->getValue(i));
729  fill1D("HcalDigiTask_pedestal_width_capId" + str(i) + "_Depth" + str(depth) + "_" + subdet_,
730  pedWidth->getWidth(i));
731  }
732 
733  fill2D("HcalDigiTask_gainMap_Depth" + str(depth) + "_" + subdet_, double(ieta), double(iphi), gain->getValue(0));
734  fill2D("HcalDigiTask_pwidthMap_Depth" + str(depth) + "_" + subdet_,
735  double(ieta),
736  double(iphi),
737  pedWidth->getWidth(0));
738 
739  } // end of event #1
740 
741  if (sub == isubdet)
742  Ndig++; // subdet number of digi
743 
744  // No-noise case, only single subdet selected ===========================
745 
746  if (sub == isubdet && noise_ == 0) {
748 
749  const HcalQIECoder* channelCoder = conditions->getHcalCoder(cell);
750  const HcalQIEShape* shape = conditions->getHcalShape(channelCoder);
751  HcalCoderDb coder(*channelCoder, *shape);
752  coder.adc2fC(*digiItr, tool);
753 
754  // for dynamic digi time sample analysis
755  int soi = tool.presamples();
756  int lastbin = tool.size() - 1;
757 
758  double noiseADC = (*digiItr)[0].adc();
759  double noisefC = tool[0];
760  // noise evaluations from "pre-samples"
761  fill1D("HcalDigiTask_ADC0_adc_depth" + str(depth) + "_" + subdet_, noiseADC);
762  fill1D("HcalDigiTask_ADC0_fC_depth" + str(depth) + "_" + subdet_, noisefC);
763 
764  // OCCUPANCY maps fill
765  fill2D("HcalDigiTask_ieta_iphi_occupancy_map_depth" + str(depth) + "_" + subdet_, double(ieta), double(iphi));
766 
767  fill1D("HcalDigiTask_depths_" + subdet_, double(depth));
768 
769  // Cycle on time slices
770  // - for each Digi
771  // - for one Digi with max SimHits E in subdet
772 
773  int closen = 0; // =1 if 1) seedSimHit = 1 and 2) the cell is the same
774  if (ieta == ieta_Sim && iphi == iphi_Sim)
775  closen = seedSimHit;
776 
777  for (int ii = 0; ii < tool.size(); ii++) {
778  int capid = (*digiItr)[ii].capid();
779  // single ts amplitude
780  double val = (tool[ii] - calibrations.pedestal(capid));
781 
782  if (val > 100.) {
783  fill1D("HcalDigiTask_ADC0_adc_depth" + str(depth) + "_" + subdet_, noiseADC);
784  strtmp = "HcalDigiTask_all_amplitudes_vs_bin_1D_depth" + str(depth) + "_" + subdet_;
785  fill1D(strtmp, double(ii), val);
786  }
787 
788  if (closen == 1) {
789  strtmp = "HcalDigiTask_signal_amplitude_vs_bin_all_depths_" + subdet_;
790  fill2D(strtmp, double(ii), val);
791  }
792 
793  // all detectors
794  if (ii >= soi && ii <= lastbin) {
795  v_ampl[0] += val;
796  v_ampl[depth] += val;
797 
798  if (closen == 1) {
799  v_ampl_c[0] += val;
800  v_ampl_c[depth] += val;
801  }
802  }
803  }
804  // end of time bucket sample
805 
806  // maps of sum of amplitudes (sum lin.digis(4,5,6,7) - ped) all depths
807  // just 1D of all cells' amplitudes
808  strtmp = "HcalDigiTask_sum_all_amplitudes_" + subdet_;
809  fill1D(strtmp, v_ampl[0]);
810 
811  std::vector<int> v_ampl_sub(v_ampl.begin() + 1, v_ampl.end()); // remove element 0, which is the sum of any depth
812  double ampl_max = *std::max_element(v_ampl_sub.begin(), v_ampl_sub.end());
813  if (ampl_max > 10.)
814  indigis++;
815  //KH if (ampl1 > 10. || ampl2 > 10. || ampl3 > 10. || ampl4 > 10.) indigis++;
816 
817  // fraction 5,6 bins if ampl. is big.
818  if (v_ampl[depth] > 30.) {
819  double fbinSOI = tool[soi] - calibrations.pedestal((*digiItr)[soi].capid());
820  double fbinPS = 0;
821 
822  for (int j = soi + 1; j <= lastbin; j++)
823  fbinPS += tool[j] - calibrations.pedestal((*digiItr)[j].capid());
824 
825  fbinSOI /= v_ampl[depth];
826  fbinPS /= v_ampl[depth];
827  strtmp = "HcalDigiTask_SOI_frac_" + subdet_;
828  fill1D(strtmp, fbinSOI);
829  strtmp = "HcalDigiTask_postSOI_frac_" + subdet_;
830  fill1D(strtmp, fbinPS);
831  }
832 
833  strtmp = "HcalDigiTask_signal_amplitude_" + subdet_;
834  fill1D(strtmp, v_ampl[0]);
835  strtmp = "HcalDigiTask_signal_amplitude_depth" + str(depth) + "_" + subdet_;
836  fill1D(strtmp, v_ampl[depth]);
837  }
838  } // End of CYCLE OVER CELLS =============================================
839 
840  if (isubdet != 0 && noise_ == 0) { // signal only, once per event
841  strtmp = "HcalDigiTask_number_of_amplitudes_above_10fC_" + subdet_;
842  fill1D(strtmp, indigis);
843 
844  // SimHits once again !!!
845  double eps = 1.e-3;
846  std::vector<double> v_ehits(maxDepth_[isubdet] + 1, 0);
847 
848  if (mc_ == "yes") {
850  iEvent.getByToken(tok_mc_, hcalHits);
851  const edm::PCaloHitContainer* simhitResult = hcalHits.product();
852  for (std::vector<PCaloHit>::const_iterator simhits = simhitResult->begin(); simhits != simhitResult->end();
853  ++simhits) {
854  unsigned int id_ = simhits->id();
855  int sub, depth, ieta, iphi;
856  HcalDetId hid;
857  if (testNumber_)
858  hid = HcalHitRelabeller::relabel(id_, hcons);
859  else
860  hid = HcalDetId(id_);
861  sub = hid.subdet();
862  depth = hid.depth();
863  ieta = hid.ieta();
864  iphi = hid.iphi();
865 
866  if (depth > maxDepth_[isubdet] && sub == isubdet) {
867  edm::LogWarning("HcalDetId") << "HcalDetID(SimHit) presents conflicting information. Depth: " << depth
868  << ", iphi: " << iphi << ", ieta: " << ieta
869  << ". Max depth from geometry is: " << maxDepth_[isubdet]
870  << ". TestNumber = " << testNumber_;
871  continue;
872  }
873 
874  // take cell already found to be max energy in a particular subdet
875  if (sub == isubdet && ieta == ieta_Sim && iphi == iphi_Sim) {
876  double en = simhits->energy();
877 
878  v_ehits[0] += en;
879  v_ehits[depth] += en;
880  }
881  } // simhit loop
882 
883  strtmp = "HcalDigiTask_amplitude_vs_simhits_" + subdet_;
884  if (v_ehits[0] > eps)
885  fill2D(strtmp, v_ehits[0], v_ampl_c[0]);
886  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
887  strtmp = "HcalDigiTask_amplitude_vs_simhits_depth" + str(depth) + "_" + subdet_;
888  if (v_ehits[depth] > eps)
889  fill2D(strtmp, v_ehits[depth], v_ampl_c[depth]);
890  }
891 
892  strtmp = "HcalDigiTask_amplitude_vs_simhits_profile_" + subdet_;
893  if (v_ehits[0] > eps)
894  fillPf(strtmp, v_ehits[0], v_ampl_c[0]);
895  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
896  strtmp = "HcalDigiTask_amplitude_vs_simhits_profile_depth" + str(depth) + "_" + subdet_;
897  if (v_ehits[depth] > eps)
898  fillPf(strtmp, v_ehits[depth], v_ampl_c[depth]);
899  }
900 
901  strtmp = "HcalDigiTask_ratio_amplitude_vs_simhits_" + subdet_;
902  if (v_ehits[0] > eps)
903  fill1D(strtmp, v_ampl_c[0] / v_ehits[0]);
904  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
905  strtmp = "HcalDigiTask_amplitude_vs_simhits_profile_depth" + str(depth) + "_" + subdet_;
906  if (v_ehits[depth] > eps)
907  fillPf(strtmp, v_ehits[depth], v_ampl_c[depth]);
908  strtmp = "HcalDigiTask_ratio_amplitude_vs_simhits_depth" + str(depth) + "_" + subdet_;
909  if (v_ehits[depth] > eps)
910  fill1D(strtmp, v_ampl_c[depth] / v_ehits[depth]);
911  }
912 
913  } // end of if(mc_ == "yes")
914 
915  strtmp = "HcalDigiTask_Ndigis_" + subdet_;
916  fill1D(strtmp, double(Ndig));
917 
918  } // end of if( subdet != 0 && noise_ == 0) { // signal only
919 }
920 template <class dataFrameType>
922  const edm::EventSetup& iSetup,
924  // HistLim =============================================================
925 
926  std::string strtmp;
927 
928  // ======================================================================
930  //typename HcalDataFrameContainer<dataFrameType>::const_iterator digiItr;
931 
932  // ADC2fC
933  CaloSamples tool;
934  iEvent.getByToken(tok, digiHandle);
935  if (!digiHandle.isValid())
936  return;
938  int isubdet = 0;
939  if (subdet_ == "HB")
940  isubdet = 1;
941  if (subdet_ == "HE")
942  isubdet = 2;
943  if (subdet_ == "HO")
944  isubdet = 3;
945  if (subdet_ == "HF")
946  isubdet = 4;
947 
948  if (isubdet == 1)
949  nevent1++;
950  if (isubdet == 2)
951  nevent2++;
952  if (isubdet == 3)
953  nevent3++;
954  if (isubdet == 4)
955  nevent4++;
956 
957  int indigis = 0;
958  // amplitude for signal cell at diff. depths
959  std::vector<double> v_ampl_c(maxDepth_[isubdet] + 1, 0);
960 
961  // is set to 1 if "seed" SimHit is found
962  int seedSimHit = 0;
963 
964  int ieta_Sim = 9999;
965  int iphi_Sim = 9999;
966  double emax_Sim = -9999.;
967 
968  // SimHits MC only
969  if (mc_ == "yes") {
971  iEvent.getByToken(tok_mc_, hcalHits);
972  const edm::PCaloHitContainer* simhitResult = hcalHits.product();
973 
974  if (isubdet != 0 && noise_ == 0) { // signal only SimHits
975 
976  for (std::vector<PCaloHit>::const_iterator simhits = simhitResult->begin(); simhits != simhitResult->end();
977  ++simhits) {
978  unsigned int id_ = simhits->id();
979  int sub, ieta, iphi;
980  HcalDetId hid;
981  if (testNumber_)
982  hid = HcalHitRelabeller::relabel(id_, hcons);
983  else
984  hid = HcalDetId(id_);
985  sub = hid.subdet();
986  ieta = hid.ieta();
987  iphi = hid.iphi();
988 
989  double en = simhits->energy();
990 
991  if (en > emax_Sim && sub == isubdet) {
992  emax_Sim = en;
993  ieta_Sim = ieta;
994  iphi_Sim = iphi;
995  // to limit "seed" SimHit energy in case of "multi" event
996  if (mode_ == "multi" && ((sub == 4 && en < 100. && en > 1.) || ((sub != 4) && en < 1. && en > 0.02))) {
997  seedSimHit = 1;
998  break;
999  }
1000  }
1001 
1002  } // end of SimHits cycle
1003 
1004  // found highest-energy SimHit for single-particle
1005  if (mode_ != "multi" && emax_Sim > 0.)
1006  seedSimHit = 1;
1007  } // end of SimHits
1008  } // end of mc_ == "yes"
1009 
1010  // CYCLE OVER CELLS ========================================================
1011  int Ndig = 0;
1012 
1014  digiItr != digiCollection->end();
1015  digiItr++) {
1016  dataFrameType dataFrame = *digiItr;
1017 
1018  HcalDetId cell(digiItr->id());
1019  int depth = cell.depth();
1020  int iphi = cell.iphi();
1021  int ieta = cell.ieta();
1022  int sub = cell.subdet();
1023 
1024  //Is this in HEP17
1025  bool isHEP17 = (iphi >= 63) && (iphi <= 66) && (ieta > 0) && (sub == 2);
1026 
1027  if (depth > maxDepth_[isubdet] && sub == isubdet) {
1028  edm::LogWarning("HcalDetId") << "HcalDetID presents conflicting information. Depth: " << depth
1029  << ", iphi: " << iphi << ", ieta: " << ieta
1030  << ". Max depth from geometry is: " << maxDepth_[isubdet]
1031  << ". TestNumber = " << testNumber_;
1032  continue;
1033  }
1034 
1035  // amplitude for signal cell at diff. depths
1036  std::vector<double> v_ampl(maxDepth_[isubdet] + 1, 0);
1037 
1038  // Gains, pedestals (once !) and only for "noise" case
1039  if (((nevent1 == 1 && isubdet == 1) || (nevent2 == 1 && isubdet == 2) || (nevent3 == 1 && isubdet == 3) ||
1040  (nevent4 == 1 && isubdet == 4)) &&
1041  noise_ == 1 && sub == isubdet) {
1042  HcalGenericDetId hcalGenDetId(digiItr->id());
1043  const HcalPedestal* pedestal = conditions->getPedestal(hcalGenDetId);
1044  const HcalGain* gain = conditions->getGain(hcalGenDetId);
1045  const HcalGainWidth* gainWidth = conditions->getGainWidth(hcalGenDetId);
1046  const HcalPedestalWidth* pedWidth = conditions->getPedestalWidth(hcalGenDetId);
1047 
1048  for (int i = 0; i < 4; i++) {
1049  fill1D("HcalDigiTask_gain_capId" + str(i) + "_Depth" + str(depth) + "_" + subdet_, gain->getValue(i));
1050  fill1D("HcalDigiTask_gainWidth_capId" + str(i) + "_Depth" + str(depth) + "_" + subdet_, gainWidth->getValue(i));
1051  fill1D("HcalDigiTask_pedestal_capId" + str(i) + "_Depth" + str(depth) + "_" + subdet_, pedestal->getValue(i));
1052  fill1D("HcalDigiTask_pedestal_width_capId" + str(i) + "_Depth" + str(depth) + "_" + subdet_,
1053  pedWidth->getWidth(i));
1054  }
1055 
1056  fill2D("HcalDigiTask_gainMap_Depth" + str(depth) + "_" + subdet_, double(ieta), double(iphi), gain->getValue(0));
1057  fill2D("HcalDigiTask_pwidthMap_Depth" + str(depth) + "_" + subdet_,
1058  double(ieta),
1059  double(iphi),
1060  pedWidth->getWidth(0));
1061 
1062  } // end of event #1
1063  //std::cout << "==== End of event noise block in cell cycle" << std::endl;
1064 
1065  if (sub == isubdet)
1066  Ndig++; // subdet number of digi
1067 
1068  // No-noise case, only single subdet selected ===========================
1069 
1070  if (sub == isubdet && noise_ == 0) {
1072 
1073  const HcalQIECoder* channelCoder = conditions->getHcalCoder(cell);
1074  const HcalQIEShape* shape = conditions->getHcalShape(channelCoder);
1075  HcalCoderDb coder(*channelCoder, *shape);
1076  coder.adc2fC(dataFrame, tool);
1077 
1078  // for dynamic digi time sample analysis
1079  int soi = tool.presamples();
1080  int lastbin = tool.size() - 1;
1081 
1082  double noiseADC = (dataFrame)[0].adc();
1083  double noisefC = tool[0];
1084  // noise evaluations from "pre-samples"
1085  fill1D("HcalDigiTask_ADC0_adc_depth" + str(depth) + "_" + subdet_, noiseADC);
1086  fill1D("HcalDigiTask_ADC0_fC_depth" + str(depth) + "_" + subdet_, noisefC);
1087 
1088  // OCCUPANCY maps fill
1089  fill2D("HcalDigiTask_ieta_iphi_occupancy_map_depth" + str(depth) + "_" + subdet_, double(ieta), double(iphi));
1090 
1091  fill1D("HcalDigiTask_depths_" + subdet_, double(depth));
1092 
1093  // Cycle on time slices
1094  // - for each Digi
1095  // - for one Digi with max SimHits E in subdet
1096 
1097  int closen = 0; // =1 if 1) seedSimHit = 1 and 2) the cell is the same
1098  if (ieta == ieta_Sim && iphi == iphi_Sim)
1099  closen = seedSimHit;
1100 
1101  for (int ii = 0; ii < tool.size(); ii++) {
1102  int capid = (dataFrame)[ii].capid();
1103  // single ts amplitude
1104  double val = (tool[ii] - calibrations.pedestal(capid));
1105 
1106  if (val > 100.) {
1107  fill1D("HcalDigiTask_ADC0_adc_depth" + str(depth) + "_" + subdet_, noiseADC);
1108  if (hep17_) {
1109  if (!isHEP17) {
1110  strtmp = "HcalDigiTask_all_amplitudes_vs_bin_1D_depth" + str(depth) + "_" + subdet_;
1111  fill1D(strtmp, double(ii), val);
1112  } else {
1113  strtmp = "HcalDigiTask_all_amplitudes_vs_bin_1D_depth" + str(depth) + "_HEP17";
1114  fill1D(strtmp, double(ii), val);
1115  }
1116  } else {
1117  strtmp = "HcalDigiTask_all_amplitudes_vs_bin_1D_depth" + str(depth) + "_" + subdet_;
1118  fill1D(strtmp, double(ii), val);
1119  }
1120  }
1121 
1122  if (closen == 1) {
1123  if (hep17_) {
1124  if (!isHEP17) {
1125  strtmp = "HcalDigiTask_signal_amplitude_vs_bin_all_depths_" + subdet_;
1126  fill2D(strtmp, double(ii), val);
1127  } else {
1128  strtmp = "HcalDigiTask_signal_amplitude_vs_bin_all_depths_HEP17";
1129  fill2D(strtmp, double(ii), val);
1130  }
1131  } else {
1132  strtmp = "HcalDigiTask_signal_amplitude_vs_bin_all_depths_" + subdet_;
1133  fill2D(strtmp, double(ii), val);
1134  }
1135  }
1136 
1137  // all detectors
1138  if (ii >= soi && ii <= lastbin) {
1139  v_ampl[0] += val;
1140  v_ampl[depth] += val;
1141 
1142  if (closen == 1) {
1143  v_ampl_c[0] += val;
1144  v_ampl_c[depth] += val;
1145  }
1146  }
1147 
1148  //...TDC
1149 
1150  if ((HBPhase1_ && sub == 1) || (HEPhase1_ && sub == 2)) {
1151  double digiADC = (dataFrame)[ii].adc();
1152  const QIE11DataFrame dataFrameHBHE = static_cast<const QIE11DataFrame>(*digiItr);
1153  double digiTDC = (dataFrameHBHE)[ii].tdc();
1154  if (digiTDC < 50) {
1155  double time = ii * 25. + (digiTDC * 0.5);
1156  strtmp = "HcalDigiTask_TDCtime_" + subdet_;
1157  fill1D(strtmp, time);
1158 
1159  strtmp = "HcalDigiTask_TDCtime_vs_ADC_" + subdet_;
1160  fill2D(strtmp, digiADC, time);
1161  }
1162  }
1163  }
1164  // end of time bucket sample
1165 
1166  // just 1D of all cells' amplitudes
1167  strtmp = "HcalDigiTask_sum_all_amplitudes_" + subdet_;
1168  fill1D(strtmp, v_ampl[0]);
1169 
1170  std::vector<int> v_ampl_sub(v_ampl.begin() + 1, v_ampl.end()); // remove element 0, which is the sum of any depth
1171  double ampl_max = *std::max_element(v_ampl_sub.begin(), v_ampl_sub.end());
1172  if (ampl_max > 10.)
1173  indigis++;
1174  //KH if (ampl1 > 10. || ampl2 > 10. || ampl3 > 10. || ampl4 > 10.) indigis++;
1175 
1176  // fraction 5,6 bins if ampl. is big.
1177  //histogram names have not been changed, but it should be understood that bin_5 is soi, and bin_6_7 is latter TS'
1178  if ((v_ampl[depth] > 30. && (subdet_ != "HE" || subdet_ != "HB")) ||
1179  (v_ampl[depth] > 300.)) { //300 fC cut for QIE-11 HB & HE
1180  double fbinSOI = tool[soi] - calibrations.pedestal((dataFrame)[soi].capid());
1181  double fbinPS = 0;
1182 
1183  for (int j = soi + 1; j <= lastbin; j++)
1184  fbinPS += tool[j] - calibrations.pedestal((dataFrame)[j].capid());
1185 
1186  fbinSOI /= v_ampl[depth];
1187  fbinPS /= v_ampl[depth];
1188  strtmp = "HcalDigiTask_SOI_frac_" + subdet_;
1189  fill1D(strtmp, fbinSOI);
1190  strtmp = "HcalDigiTask_postSOI_frac_" + subdet_;
1191  fill1D(strtmp, fbinPS);
1192  }
1193 
1194  if (hep17_) {
1195  if (!isHEP17) {
1196  strtmp = "HcalDigiTask_signal_amplitude_" + subdet_;
1197  fill1D(strtmp, v_ampl[0]);
1198  strtmp = "HcalDigiTask_signal_amplitude_depth" + str(depth) + "_" + subdet_;
1199  fill1D(strtmp, v_ampl[depth]);
1200  } else {
1201  strtmp = "HcalDigiTask_signal_amplitude_HEP17";
1202  fill1D(strtmp, v_ampl[0]);
1203  strtmp = "HcalDigiTask_signal_amplitude_depth" + str(depth) + "_HEP17";
1204  fill1D(strtmp, v_ampl[depth]);
1205  }
1206  } else {
1207  strtmp = "HcalDigiTask_signal_amplitude_" + subdet_;
1208  fill1D(strtmp, v_ampl[0]);
1209  strtmp = "HcalDigiTask_signal_amplitude_depth" + str(depth) + "_" + subdet_;
1210  fill1D(strtmp, v_ampl[depth]);
1211  }
1212  }
1213  } // End of CYCLE OVER CELLS =============================================
1214 
1215  if (isubdet != 0 && noise_ == 0) { // signal only, once per event
1216  strtmp = "HcalDigiTask_number_of_amplitudes_above_10fC_" + subdet_;
1217  fill1D(strtmp, indigis);
1218 
1219  // SimHits once again !!!
1220  double eps = 1.e-3;
1221  std::vector<double> v_ehits(maxDepth_[isubdet] + 1, 0);
1222 
1223  if (mc_ == "yes") {
1225  iEvent.getByToken(tok_mc_, hcalHits);
1226  const edm::PCaloHitContainer* simhitResult = hcalHits.product();
1227  for (std::vector<PCaloHit>::const_iterator simhits = simhitResult->begin(); simhits != simhitResult->end();
1228  ++simhits) {
1229  unsigned int id_ = simhits->id();
1230  int sub, depth, ieta, iphi;
1231  HcalDetId hid;
1232  if (testNumber_)
1233  hid = HcalHitRelabeller::relabel(id_, hcons);
1234  else
1235  hid = HcalDetId(id_);
1236  sub = hid.subdet();
1237  depth = hid.depth();
1238  ieta = hid.ieta();
1239  iphi = hid.iphi();
1240 
1241  if (depth > maxDepth_[isubdet] && sub == isubdet) {
1242  edm::LogWarning("HcalDetId") << "HcalDetID(SimHit) presents conflicting information. Depth: " << depth
1243  << ", iphi: " << iphi << ", ieta: " << ieta
1244  << ". Max depth from geometry is: " << maxDepth_[isubdet]
1245  << ". TestNumber = " << testNumber_;
1246  continue;
1247  }
1248 
1249  // take cell already found to be max energy in a particular subdet
1250  if (sub == isubdet && ieta == ieta_Sim && iphi == iphi_Sim) {
1251  double en = simhits->energy();
1252 
1253  v_ehits[0] += en;
1254  v_ehits[depth] += en;
1255  }
1256  } // simhit loop
1257 
1258  strtmp = "HcalDigiTask_amplitude_vs_simhits_" + subdet_;
1259  if (v_ehits[0] > eps)
1260  fill2D(strtmp, v_ehits[0], v_ampl_c[0]);
1261  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
1262  strtmp = "HcalDigiTask_amplitude_vs_simhits_depth" + str(depth) + "_" + subdet_;
1263  if (v_ehits[depth] > eps)
1264  fill2D(strtmp, v_ehits[depth], v_ampl_c[depth]);
1265  }
1266 
1267  strtmp = "HcalDigiTask_amplitude_vs_simhits_profile_" + subdet_;
1268  if (v_ehits[0] > eps)
1269  fillPf(strtmp, v_ehits[0], v_ampl_c[0]);
1270  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
1271  strtmp = "HcalDigiTask_amplitude_vs_simhits_profile_depth" + str(depth) + "_" + subdet_;
1272  if (v_ehits[depth] > eps)
1273  fillPf(strtmp, v_ehits[depth], v_ampl_c[depth]);
1274  }
1275 
1276  strtmp = "HcalDigiTask_ratio_amplitude_vs_simhits_" + subdet_;
1277  if (v_ehits[0] > eps)
1278  fill1D(strtmp, v_ampl_c[0] / v_ehits[0]);
1279  for (int depth = 1; depth <= maxDepth_[isubdet]; depth++) {
1280  strtmp = "HcalDigiTask_amplitude_vs_simhits_profile_depth" + str(depth) + "_" + subdet_;
1281  if (v_ehits[depth] > eps)
1282  fillPf(strtmp, v_ehits[depth], v_ampl_c[depth]);
1283  strtmp = "HcalDigiTask_ratio_amplitude_vs_simhits_depth" + str(depth) + "_" + subdet_;
1284  if (v_ehits[depth] > eps)
1285  fill1D(strtmp, v_ampl_c[depth] / v_ehits[depth]);
1286  }
1287 
1288  } // end of if(mc_ == "yes")
1289 
1290  strtmp = "HcalDigiTask_Ndigis_" + subdet_;
1291  fill1D(strtmp, double(Ndig));
1292 
1293  } // end of if( subdet != 0 && noise_ == 0) { // signal only
1294 
1295 } //HcalDataFrameContainer
1296 
1298  if (!msm_->count(name))
1299  (*msm_)[name] = ib.book1D(name.c_str(), name.c_str(), n, min, max);
1300 }
1301 
1303  if (!msm_->count(name))
1304  (*msm_)[name] = ib.book1D(name.c_str(), name.c_str(), limX.n, limX.min, limX.max);
1305 }
1306 
1308  msm_->find(name)->second->Fill(X, weight);
1309 }
1310 
1312  if (!msm_->count(name))
1313  (*msm_)[name] = ib.book2D(name.c_str(), name.c_str(), limX.n, limX.min, limX.max, limY.n, limY.min, limY.max);
1314 }
1315 
1316 void HcalDigisValidation::fill2D(std::string name, double X, double Y, double weight) {
1317  msm_->find(name)->second->Fill(X, Y, weight);
1318 }
1319 
1321  if (!msm_->count(name))
1322  (*msm_)[name] = ib.bookProfile(name.c_str(), name.c_str(), limX.n, limX.min, limX.max, limY.n, limY.min, limY.max);
1323 }
1324 
1326  DQMStore::IBooker& ib, std::string name, const HistLim& limX, const HistLim& limY, const char* option) {
1327  if (!msm_->count(name))
1328  (*msm_)[name] =
1329  ib.bookProfile(name.c_str(), name.c_str(), limX.n, limX.min, limX.max, limY.n, limY.min, limY.max, option);
1330 }
1331 
1332 void HcalDigisValidation::fillPf(std::string name, double X, double Y) { msm_->find(name)->second->Fill(X, Y); }
1333 
1335  if (!msm_->count(name))
1336  return nullptr;
1337  else
1338  return msm_->find(name)->second;
1339 }
1340 
1342  std::stringstream out;
1343  out << x;
1344  return out.str();
1345 }
1346 
1347 //define this as a plug-in
HcalDigisValidation::~HcalDigisValidation
~HcalDigisValidation() override
Definition: HcalDigisValidation.cc:80
dqm::impl::MonitorElement
Definition: MonitorElement.h:98
mps_fire.i
i
Definition: mps_fire.py:428
edm::SortedCollection::const_iterator
std::vector< T >::const_iterator const_iterator
Definition: SortedCollection.h:80
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
HcalDbService::getGainWidth
const HcalGainWidth * getGainWidth(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:312
HcalDataFrameContainer
Definition: HcalDigiCollections.h:35
edm::Handle::product
T const * product() const
Definition: Handle.h:70
HcalGainWidth::getValue
float getValue(int fCapId) const
get value for capId = 0..3
Definition: HcalGainWidth.h:20
edm::DataFrameContainer::const_iterator
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
Definition: DataFrameContainer.h:61
HcalGenericDetId
Definition: HcalGenericDetId.h:15
HcalDigisValidation::htopology
const HcalTopology * htopology
Definition: HcalDigisValidation.h:158
HcalDigisValidation::hcons
const HcalDDDRecConstants * hcons
Definition: HcalDigisValidation.h:157
HcalDigisParam_cfi.emulTPs
emulTPs
Definition: HcalDigisParam_cfi.py:14
HcalDetId::iphi
constexpr int iphi() const
get the cell iphi
Definition: HcalDetId.h:157
X
#define X(str)
Definition: MuonsGrabber.cc:38
edm::Run
Definition: Run.h:45
CaloSamples::size
int size() const
get the size
Definition: CaloSamples.h:24
min
T min(T a, T b)
Definition: MathUtil.h:58
edm::EDGetTokenT
Definition: EDGetToken.h:33
HcalDigisValidation::HcalDigisValidation
HcalDigisValidation(const edm::ParameterSet &)
Definition: HcalDigisValidation.cc:23
HcalDigisValidation::tok_emulTPs_
edm::EDGetTokenT< HcalTrigPrimDigiCollection > tok_emulTPs_
Definition: HcalDigisValidation.h:131
HcalTopology
Definition: HcalTopology.h:26
DetId::Hcal
Definition: DetId.h:28
HcalDigisValidation::nevtot
int nevtot
Definition: HcalDigisValidation.h:155
HcalDigisValidation::hep17_
bool hep17_
Definition: HcalDigisValidation.h:122
HcalDbService::getPedestal
const HcalPedestal * getPedestal(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:277
HcalDigisValidation::msm_
std::map< std::string, MonitorElement * > * msm_
Definition: HcalDigisValidation.h:75
CaloGeometry::getSubdetectorGeometry
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:34
timingPdfMaker.histo
histo
Definition: timingPdfMaker.py:279
HcalDbService::getGain
const HcalGain * getGain(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:305
edm::SortedCollection
Definition: SortedCollection.h:49
AlignmentProducer_cff.calibrations
calibrations
Definition: AlignmentProducer_cff.py:59
HcalDetId::depth
constexpr int depth() const
get the tower depth
Definition: HcalDetId.h:164
HcalDigisValidation::nevent3
int nevent3
Definition: HcalDigisValidation.h:153
HcalCoderDb::adc2fC
void adc2fC(const HBHEDataFrame &df, CaloSamples &lf) const override
Definition: HcalCoderDb.cc:73
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
DDAxes::x
HcalDigisValidation::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: HcalDigisValidation.cc:416
HcalDigisValidation::book2D
void book2D(DQMStore::IBooker &ib, std::string name, const HistLim &limX, const HistLim &limY)
Definition: HcalDigisValidation.cc:1311
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
HcalBarrel
Definition: HcalAssistant.h:33
HcalDigisValidation::HEPhase1_
bool HEPhase1_
Definition: HcalDigisValidation.h:123
HcalDigisValidation::book1D
void book1D(DQMStore::IBooker &ib, std::string name, int n, double min, double max)
Definition: HcalDigisValidation.cc:1297
edm::Handle
Definition: AssociativeIterator.h:50
HcalDigisValidation::dirName_
std::string dirName_
Definition: HcalDigisValidation.h:111
fileinputsource_cfi.option
option
Definition: fileinputsource_cfi.py:87
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
HcalDigisValidation::fill2D
void fill2D(std::string name, double X, double Y, double weight=1)
Definition: HcalDigisValidation.cc:1316
HcalDbService::getHcalShape
const HcalQIEShape * getHcalShape(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:326
HcalDbService::getHcalCalibrations
const HcalCalibrations & getHcalCalibrations(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:65
LEDCalibrationChannels.iphi
iphi
Definition: LEDCalibrationChannels.py:64
ecalLiteDTU::adc
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
Definition: EcalLiteDTUSample.h:12
HcalDbService::getHcalCoder
const HcalQIECoder * getHcalCoder(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:319
HcalDigisValidation::nevent4
int nevent4
Definition: HcalDigisValidation.h:154
MakerMacros.h
CaloGeometry
Definition: CaloGeometry.h:21
HcalDigisValidation::booking
void booking(DQMStore::IBooker &ib, std::string subdetopt, int bnoise, int bmc)
Definition: HcalDigisValidation.cc:177
HcalDbService::getPedestalWidth
const HcalPedestalWidth * getPedestalWidth(const HcalGenericDetId &fId) const
Definition: HcalDbService.cc:284
DivergingColor.frac
float frac
Definition: DivergingColor.py:175
HcalDigisValidation::noise_
int noise_
Definition: HcalDigisValidation.h:120
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
HcalDigisValidation::subdet_
std::string subdet_
Definition: HcalDigisValidation.h:109
HcalDigisValidation::HistLim::max
double max
Definition: HcalDigisValidation.h:70
HcalOuter
Definition: HcalAssistant.h:35
HcalDigisValidation::tok_TPGeom_
edm::ESGetToken< HcalTrigTowerGeometry, CaloGeometryRecord > tok_TPGeom_
Definition: HcalDigisValidation.h:140
HcalDigisValidation::mode_
std::string mode_
Definition: HcalDigisValidation.h:118
HcalDigisValidation::tok_Geom_
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_Geom_
Definition: HcalDigisValidation.h:138
HcalPedestal
Definition: HcalPedestal.h:15
HcalDigisValidation::HistLim::n
int n
Definition: HcalDigisValidation.h:68
HcalCalibrations
Definition: HcalCalibrations.h:9
HcalDigisValidation::monitor
MonitorElement * monitor(std::string name)
Definition: HcalDigisValidation.cc:1334
LEDCalibrationChannels.depth
depth
Definition: LEDCalibrationChannels.py:65
HcalDigisValidation::tok_qie11_hbhe_
edm::EDGetTokenT< QIE11DigiCollection > tok_qie11_hbhe_
Definition: HcalDigisValidation.h:135
HcalDigisValidation::QIE10inputTag_
edm::InputTag QIE10inputTag_
Definition: HcalDigisValidation.h:114
HcalDigisValidation::inputTag_
edm::InputTag inputTag_
Definition: HcalDigisValidation.h:113
particleFlowDisplacedVertex_cfi.ratio
ratio
Definition: particleFlowDisplacedVertex_cfi.py:93
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HcalDigisValidation::emulTPsTag_
edm::InputTag emulTPsTag_
Definition: HcalDigisValidation.h:116
HcalGain
Definition: HcalGain.h:16
HcalDigisValidation::tok_mc_
edm::EDGetTokenT< edm::PCaloHitContainer > tok_mc_
Definition: HcalDigisValidation.h:127
edm::ParameterSet::exists
bool exists(std::string const &parameterName) const
checks if a parameter exists
Definition: ParameterSet.cc:681
HcalDigisValidation::tok_qie10_hf_
edm::EDGetTokenT< QIE10DigiCollection > tok_qie10_hf_
Definition: HcalDigisValidation.h:134
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
HcalDigisValidation::tok_hf_
edm::EDGetTokenT< HFDigiCollection > tok_hf_
Definition: HcalDigisValidation.h:130
HcalDetId::ieta
constexpr int ieta() const
get the cell ieta
Definition: HcalDetId.h:155
HLTBitAnalyser_cfi.simhits
simhits
SIM objects.
Definition: HLTBitAnalyser_cfi.py:21
edm::ParameterSet
Definition: ParameterSet.h:47
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
HcalDigisValidation::dataTPsTag_
edm::InputTag dataTPsTag_
Definition: HcalDigisValidation.h:117
HcalHitRelabeller.h
HcalDigisValidation::tok_Cond_
edm::ESGetToken< HcalDbService, HcalDbRecord > tok_Cond_
Definition: HcalDigisValidation.h:142
HcalDetId::subdet
constexpr HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:138
HcalDetId
Definition: HcalDetId.h:12
iEvent
int iEvent
Definition: GenABIO.cc:224
cuy.ib
ib
Definition: cuy.py:662
HcalDigisValidation::tok_HRNDC_
edm::ESGetToken< HcalDDDRecConstants, HcalRecNumberingRecord > tok_HRNDC_
Definition: HcalDigisValidation.h:137
apvshotsanalyzer_cfi.digiCollection
digiCollection
Definition: apvshotsanalyzer_cfi.py:4
EcalCondDBWriter_cfi.pedestal
pedestal
Definition: EcalCondDBWriter_cfi.py:49
edm::EventSetup
Definition: EventSetup.h:57
CaloSamples
Definition: CaloSamples.h:14
HcalDigisValidation::Plot_TP_ver_
bool Plot_TP_ver_
Definition: HcalDigisValidation.h:125
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
itr
std::vector< std::pair< float, float > >::iterator itr
Definition: HGCDigitizer.cc:29
HcalDigisValidation::tok_Topo_
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > tok_Topo_
Definition: HcalDigisValidation.h:141
HcalQIECoder
Definition: HcalQIECoder.h:20
HcalDigisValidation::nChannels_
int nChannels_[5]
Definition: HcalDigisValidation.h:161
HcalDigisValidation::tok_dataTPs_
edm::EDGetTokenT< HcalTrigPrimDigiCollection > tok_dataTPs_
Definition: HcalDigisValidation.h:132
HcalDigisValidation::tok_Decoder_
edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecord > tok_Decoder_
Definition: HcalDigisValidation.h:139
HcalDigisValidation::HistLim::min
double min
Definition: HcalDigisValidation.h:69
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:120
HcalDigisValidation::nevent2
int nevent2
Definition: HcalDigisValidation.h:152
HcalDigisValidation::QIE11inputTag_
edm::InputTag QIE11inputTag_
Definition: HcalDigisValidation.h:115
PedestalClient_cfi.gain
gain
Definition: PedestalClient_cfi.py:37
HcalSubdetector
HcalSubdetector
Definition: HcalAssistant.h:31
HcalForward
Definition: HcalAssistant.h:36
HcalHitRelabeller::relabel
DetId relabel(const uint32_t testId) const
Definition: HcalHitRelabeller.cc:49
HcalDigisValidation::maxDepth_
int maxDepth_[5]
Definition: HcalDigisValidation.h:160
HcalDigisValidation
Definition: HcalDigisValidation.h:56
heppy_batch.val
val
Definition: heppy_batch.py:351
HcalDigisValidation::HBPhase1_
bool HBPhase1_
Definition: HcalDigisValidation.h:124
writedatasetfile.run
run
Definition: writedatasetfile.py:27
HcalDigisValidation::testNumber_
bool testNumber_
Definition: HcalDigisValidation.h:121
HcalDigisValidation.h
HcalEndcap
Definition: HcalAssistant.h:34
CaloSamples::presamples
int presamples() const
access presample information
Definition: CaloSamples.h:36
HcalDigisValidation::outputFile_
std::string outputFile_
Definition: HcalDigisValidation.h:108
HcalDigisValidation::dqmBeginRun
void dqmBeginRun(const edm::Run &run, const edm::EventSetup &c) override
Definition: HcalDigisValidation.cc:82
QIE11DataFrame
Definition: QIE11DataFrame.h:11
genVertex_cff.x
x
Definition: genVertex_cff.py:12
ZMuMuCategoriesSequences_cff.nbin
nbin
Definition: ZMuMuCategoriesSequences_cff.py:25
HcalGeometry::getHxSize
unsigned int getHxSize(const int type) const
Definition: HcalGeometry.cc:321
edm::PCaloHitContainer
std::vector< PCaloHit > PCaloHitContainer
Definition: PCaloHitContainer.h:8
HcalPedestalWidth::getWidth
float getWidth(int fCapId) const
get width (sqrt(sigma_i_i)) for capId = 0..3
Definition: HcalPedestalWidth.cc:31
HcalDigisValidation::mc_
std::string mc_
Definition: HcalDigisValidation.h:119
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
HcalDigisValidation::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: HcalDigisValidation.cc:110
BeamSpotPI::Y
Definition: BeamSpotPayloadInspectorHelper.h:31
HcalQIEShape
Definition: HcalQIEShape.h:17
HcalDigisValidation::reco
void reco(const edm::Event &iEvent, const edm::EventSetup &iSetup, const edm::EDGetTokenT< edm::SortedCollection< Digi > > &tok)
Definition: HcalDigisValidation.cc:606
dqm::implementation::IBooker
Definition: DQMStore.h:43
HcalCoderDb
Definition: HcalCoderDb.h:15
HcalDDDRecConstants::getMaxDepth
int getMaxDepth(const int &type) const
Definition: HcalDDDRecConstants.h:88
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
HcalDigisValidation::nevent1
int nevent1
Definition: HcalDigisValidation.h:151
HcalDigisValidation::fill1D
void fill1D(std::string name, double X, double weight=1)
Definition: HcalDigisValidation.cc:1307
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
HcalDigisValidation::HistLim
Definition: HcalDigisValidation.h:66
HcalPedestalWidth
Definition: HcalPedestalWidth.h:15
HcalDigisValidation::tok_ho_
edm::EDGetTokenT< HODigiCollection > tok_ho_
Definition: HcalDigisValidation.h:129
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
HcalDigisValidation::conditions
edm::ESHandle< HcalDbService > conditions
Definition: HcalDigisValidation.h:145
HcalDigisValidation::htopo
edm::ESHandle< HcalTopology > htopo
Definition: HcalDigisValidation.h:148
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
ntuplemaker.time
time
Definition: ntuplemaker.py:310
HcalDigisValidation::fillPf
void fillPf(std::string name, double X, double Y)
Definition: HcalDigisValidation.cc:1332
edm::Event
Definition: Event.h:73
edm::Log
Definition: MessageLogger.h:70
HcalDigisValidation::str
std::string str(int x)
Definition: HcalDigisValidation.cc:1341
HcalGeometry
Definition: HcalGeometry.h:17
cuy.ii
ii
Definition: cuy.py:590
HcalDigisValidation::bookPf
void bookPf(DQMStore::IBooker &ib, std::string name, const HistLim &limX, const HistLim &limY)
Definition: HcalDigisValidation.cc:1320
edm::InputTag
Definition: InputTag.h:15
HcalDigisValidation::skipDataTPs
bool skipDataTPs
Definition: HcalDigisValidation.h:163
weight
Definition: weight.py:1
HcalGainWidth
Definition: HcalGainWidth.h:15
HcalDigisValidation::tok_hbhe_
edm::EDGetTokenT< HBHEDigiCollection > tok_hbhe_
Definition: HcalDigisValidation.h:128
HcalDigisParam_cfi.dataTPs
dataTPs
Definition: HcalDigisParam_cfi.py:15