CMS 3D CMS Logo

HcalRecHitsAnalyzer.cc
Go to the documentation of this file.
5 
7 
8  // DQM ROOT output
9  outputFile_ = conf.getUntrackedParameter<std::string>("outputFile", "myfile.root");
10 
11  if ( outputFile_.size() != 0 ) {
12  edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will be saved to '" << outputFile_.c_str() << "'";
13  } else {
14  edm::LogInfo("OutputInfo") << " Hcal RecHit Task histograms will NOT be saved";
15  }
16 
17  nevtot = 0;
18 
19  hcalselector_ = conf.getUntrackedParameter<std::string>("hcalselector", "all");
20  ecalselector_ = conf.getUntrackedParameter<std::string>("ecalselector", "yes");
21  eventype_ = conf.getUntrackedParameter<std::string>("eventype", "single");
22  sign_ = conf.getUntrackedParameter<std::string>("sign", "*");
23  //useAllHistos_ = conf.getUntrackedParameter<bool>("useAllHistos", false);
24 
25  //Collections
26  tok_hbhe_ = consumes<HBHERecHitCollection>(conf.getUntrackedParameter<edm::InputTag>("HBHERecHitCollectionLabel"));
27  tok_hf_ = consumes<HFRecHitCollection>(conf.getUntrackedParameter<edm::InputTag>("HFRecHitCollectionLabel"));
28  tok_ho_ = consumes<HORecHitCollection>(conf.getUntrackedParameter<edm::InputTag>("HORecHitCollectionLabel"));
29  tok_EB_ = consumes<EBRecHitCollection>(edm::InputTag("ecalRecHit","EcalRecHitsEB"));
30  tok_EE_ = consumes<EERecHitCollection>(edm::InputTag("ecalRecHit","EcalRecHitsEE"));
31 
32  subdet_ = 5;
33  if (hcalselector_ == "noise") subdet_ = 0;
34  if (hcalselector_ == "HB" ) subdet_ = 1;
35  if (hcalselector_ == "HE" ) subdet_ = 2;
36  if (hcalselector_ == "HO" ) subdet_ = 3;
37  if (hcalselector_ == "HF" ) subdet_ = 4;
38  if (hcalselector_ == "all" ) subdet_ = 5;
39  if (hcalselector_ == "ZS" ) subdet_ = 6;
40 
41  etype_ = 1;
42  if (eventype_ == "multi") etype_ = 2;
43 
44  iz = 1;
45  if(sign_ == "-") iz = -1;
46  if(sign_ == "*") iz = 0;
47 
48  imc = 0;
49 
50  }
51 
53 
55  es.get<HcalRecNumberingRecord>().get( pHRNDC );
56  hcons = &(*pHRNDC);
61 
63 
64  es.get<CaloGeometryRecord > ().get(geometry);
65 
66  const CaloGeometry* geo = geometry.product();
71 
72  nChannels_[1] = gHB->getHxSize(1);
73  nChannels_[2] = gHE->getHxSize(2);
74  nChannels_[3] = gHO->getHxSize(3);
75  nChannels_[4] = gHF->getHxSize(4);
76 
77  nChannels_[0] = nChannels_[1] + nChannels_[2] + nChannels_[3] + nChannels_[4];
78 
79  //std::cout << "Channels HB:" << nChannels_[1] << " HE:" << nChannels_[2] << " HO:" << nChannels_[3] << " HF:" << nChannels_[4] << std::endl;
80 
81  //We hardcode the HF depths because in the dual readout configuration, rechits are not defined for depths 3&4
82  maxDepthHF_ = (maxDepthHF_ > 2 ? 2 : maxDepthHF_); //We retain the dynamic possibility that HF might have 0 or 1 depths
83 
86 
87  //Get Phi segmentation from geometry, use the max phi number so that all iphi values are included.
88 
89  int NphiMax = hcons->getNPhi(0);
90 
91  NphiMax = (hcons->getNPhi(1) > NphiMax ? hcons->getNPhi(1) : NphiMax);
92  NphiMax = (hcons->getNPhi(2) > NphiMax ? hcons->getNPhi(2) : NphiMax);
93  NphiMax = (hcons->getNPhi(3) > NphiMax ? hcons->getNPhi(3) : NphiMax);
94 
95  //Center the iphi bins on the integers
96  iphi_min_ = 0.5;
97  iphi_max_ = NphiMax + 0.5;
99 
100  //Retain classic behavior, all plots have same ieta range.
101 
102  int iEtaMax = (hcons->getEtaRange(0).second > hcons->getEtaRange(1).second ? hcons->getEtaRange(0).second : hcons->getEtaRange(1).second);
103  iEtaMax = (iEtaMax > hcons->getEtaRange(2).second ? iEtaMax : hcons->getEtaRange(2).second);
104  iEtaMax = (iEtaMax > hcons->getEtaRange(3).second ? iEtaMax : hcons->getEtaRange(3).second);
105 
106  //Give an empty bin around the subdet ieta range to make it clear that all ieta rings have been included
107  ieta_min_ = -iEtaMax - 1.5;
108  ieta_max_ = iEtaMax + 1.5;
110 
111  }
112 
113  void HcalRecHitsAnalyzer::bookHistograms(DQMStore::IBooker & ibooker, edm::Run const & /* iRun*/, edm::EventSetup const & /* iSetup */)
114 
115 {
116 
117  Char_t histo[200];
118 
119  ibooker.setCurrentFolder("HcalRecHitsD/HcalRecHitTask");
120 
121  // General counters (drawn)
122 
123  //Produce both a total per subdetector, and number of rechits per subdetector depth
124  // The bins are 1 unit wide, and the range is determined by the number of channels per subdetector
125 
126  for(int depth = 0; depth <= maxDepthHB_; depth++){
127  if(depth == 0){ sprintf (histo, "N_HB" );}
128  else{ sprintf (histo, "N_HB_depth%d",depth );}
129  int NBins = (int) (nChannels_[1] * 1.1);
130  Nhb.push_back( ibooker.book1D(histo, histo, NBins, 0., (float)NBins) );
131  }
132  for(int depth = 0; depth <= maxDepthHE_; depth++){
133  if(depth == 0){ sprintf (histo, "N_HE" );}
134  else{ sprintf (histo, "N_HE_depth%d",depth );}
135  int NBins = (int) (nChannels_[2] * 1.1);
136  Nhe.push_back( ibooker.book1D(histo, histo, NBins,0., (float)NBins) );
137  }
138  for(int depth = 0; depth <= maxDepthHO_; depth++){
139  if(depth == 0){ sprintf (histo, "N_HO" );}
140  else{ sprintf (histo, "N_HO_depth%d",depth );}
141  int NBins = (int) (nChannels_[3] * 1.1);
142  Nho.push_back( ibooker.book1D(histo, histo, NBins,0., (float)NBins) );
143  }
144  for(int depth = 0; depth <= maxDepthHF_; depth++){
145  if(depth == 0){ sprintf (histo, "N_HF" );}
146  else{ sprintf (histo, "N_HF_depth%d",depth );}
147  int NBins = (int) (nChannels_[4] * 1.1);
148  Nhf.push_back( ibooker.book1D(histo, histo, NBins,0., (float)NBins) );
149  }
150 
151  // ZS
152  if(subdet_ == 6) {
153 
154  }
155 
156  // ALL others, except ZS
157  else {
158  for(int depth = 1; depth <= maxDepthAll_; depth++){
159  sprintf (histo, "emap_depth%d",depth );
160  emap.push_back( ibooker.book2D(histo, histo, 84, -42., 42., 72, 0., 72.) );
161  }
162 
163  //The mean energy histos are drawn, but not the RMS or emean seq
164 
165  for (int depth = 1; depth <= maxDepthHB_; depth++) {
166  sprintf (histo, "emean_vs_ieta_HB%d",depth );
167  emean_vs_ieta_HB.push_back( ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -10., 2000., " ") );
168 
169  sprintf (histo, "emean_vs_ieta_M0_HB%d",depth );
170  emean_vs_ieta_HBM0.push_back( ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -10., 2000., " ") );
171 
172  sprintf (histo, "emean_vs_ieta_M3_HB%d",depth );
173  emean_vs_ieta_HBM3.push_back( ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -10., 2000., " ") );
174  }
175  for (int depth = 1; depth <= maxDepthHE_; depth++) {
176  sprintf (histo, "emean_vs_ieta_HE%d",depth );
177  emean_vs_ieta_HE.push_back( ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -10., 2000., " ") );
178 
179  sprintf (histo, "emean_vs_ieta_M0_HE%d",depth );
180  emean_vs_ieta_HEM0.push_back( ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -10., 2000., " ") );
181 
182  sprintf (histo, "emean_vs_ieta_M3_HE%d",depth );
183  emean_vs_ieta_HEM3.push_back( ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -10., 2000., " ") );
184  }
185  for (int depth = 1; depth <= maxDepthHF_; depth++) {
186  sprintf (histo, "emean_vs_ieta_HF%d",depth );
187  emean_vs_ieta_HF.push_back( ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -10., 2000., " ") );
188  }
189  sprintf (histo, "emean_vs_ieta_HO" );
190  emean_vs_ieta_HO = ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -10., 2000., " " );
191 
192  //The only occupancy histos drawn are occupancy vs. ieta
193  //but the maps are needed because this is where the latter are filled from
194 
195  for (int depth = 1; depth <= maxDepthHB_; depth++) {
196  sprintf (histo, "occupancy_map_HB%d",depth );
197  occupancy_map_HB.push_back( ibooker.book2D(histo, histo, ieta_bins_, ieta_min_, ieta_max_, iphi_bins_, iphi_min_, iphi_max_) );
198  }
199 
200  for (int depth = 1; depth <= maxDepthHE_; depth++) {
201  sprintf (histo, "occupancy_map_HE%d",depth );
202  occupancy_map_HE.push_back( ibooker.book2D(histo, histo, ieta_bins_, ieta_min_, ieta_max_, iphi_bins_, iphi_min_, iphi_max_) );
203  }
204 
205  sprintf (histo, "occupancy_map_HO" );
207 
208  for (int depth = 1; depth <= maxDepthHF_; depth++) {
209  sprintf (histo, "occupancy_map_HF%d",depth );
210  occupancy_map_HF.push_back( ibooker.book2D(histo, histo, ieta_bins_, ieta_min_, ieta_max_, iphi_bins_, iphi_min_, iphi_max_) );
211  }
212 
213  //These are drawn
214 
215  for (int depth = 1; depth <= maxDepthHB_; depth++) {
216  sprintf (histo, "occupancy_vs_ieta_HB%d",depth );
217  occupancy_vs_ieta_HB.push_back( ibooker.book1D(histo, histo, ieta_bins_, ieta_min_, ieta_max_) );
218  }
219 
220  for (int depth = 1; depth <= maxDepthHE_; depth++) {
221  sprintf (histo, "occupancy_vs_ieta_HE%d",depth );
222  occupancy_vs_ieta_HE.push_back( ibooker.book1D(histo, histo, ieta_bins_, ieta_min_, ieta_max_) );
223  }
224 
225  sprintf (histo, "occupancy_vs_ieta_HO" );
226  occupancy_vs_ieta_HO = ibooker.book1D(histo, histo, ieta_bins_, ieta_min_, ieta_max_);
227 
228  for (int depth = 1; depth <= maxDepthHF_; depth++) {
229  sprintf (histo, "occupancy_vs_ieta_HF%d",depth );
230  occupancy_vs_ieta_HF.push_back( ibooker.book1D(histo, histo, ieta_bins_, ieta_min_, ieta_max_) );
231  }
232 
233 
234  //All status word histos except HF67 are drawn
235  sprintf (histo, "HcalRecHitTask_RecHit_StatusWord_HB" ) ;
236  RecHit_StatusWord_HB = ibooker.book1D(histo, histo, 32 , -0.5, 31.5);
237 
238  sprintf (histo, "HcalRecHitTask_RecHit_StatusWord_HE" ) ;
239  RecHit_StatusWord_HE = ibooker.book1D(histo, histo, 32 , -0.5, 31.5);
240 
241  sprintf (histo, "HcalRecHitTask_RecHit_StatusWord_HF" ) ;
242  RecHit_StatusWord_HF = ibooker.book1D(histo, histo, 32 , -0.5, 31.5);
243 
244  sprintf (histo, "HcalRecHitTask_RecHit_StatusWord_HO" ) ;
245  RecHit_StatusWord_HO = ibooker.book1D(histo, histo, 32 , -0.5, 31.5);
246 
247  //Aux status word histos
248  sprintf (histo, "HcalRecHitTask_RecHit_Aux_StatusWord_HB" ) ;
249  RecHit_Aux_StatusWord_HB = ibooker.book1D(histo, histo, 32 , -0.5, 31.5);
250 
251  sprintf (histo, "HcalRecHitTask_RecHit_Aux_StatusWord_HE" ) ;
252  RecHit_Aux_StatusWord_HE = ibooker.book1D(histo, histo, 32 , -0.5, 31.5);
253 
254  sprintf (histo, "HcalRecHitTask_RecHit_Aux_StatusWord_HF" ) ;
255  RecHit_Aux_StatusWord_HF = ibooker.book1D(histo, histo, 32 , -0.5, 31.5);
256 
257  sprintf (histo, "HcalRecHitTask_RecHit_Aux_StatusWord_HO" ) ;
258  RecHit_Aux_StatusWord_HO = ibooker.book1D(histo, histo, 32 , -0.5, 31.5);
259 
260  } // end-of (subdet_ =! 6)
261 
262  //Status word correlations
263  sprintf (histo, "HcalRecHitTask_RecHit_StatusWordCorr_HB");
264  RecHit_StatusWordCorr_HB = ibooker.book2D(histo, histo, 2, -0.5, 1.5, 2, -0.5, 1.5);
265 
266  sprintf (histo, "HcalRecHitTask_RecHit_StatusWordCorr_HE");
267  RecHit_StatusWordCorr_HE = ibooker.book2D(histo, histo, 2, -0.5, 1.5, 2, -0.5, 1.5);
268 
269 
270  //======================= Now various cases one by one ===================
271 
272  //Histograms drawn for single pion scan
273  if(subdet_ != 0 && imc != 0) { // just not for noise
274  sprintf (histo, "HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths");
275  meEnConeEtaProfile = ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -100., 2000., " ");
276 
277  sprintf (histo, "HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_E");
278  meEnConeEtaProfile_E = ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -100., 2000., " ");
279 
280  sprintf (histo, "HcalRecHitTask_En_rechits_cone_profile_vs_ieta_all_depths_EH");
281  meEnConeEtaProfile_EH = ibooker.bookProfile(histo, histo, ieta_bins_, ieta_min_, ieta_max_, -100., 2000., " ");
282  }
283 
284  // ************** HB **********************************
285  if (subdet_ == 1 || subdet_ == 5 ){
286 
287  //Only severity level, energy of rechits and overall HB timing histos are drawn
288 
289  sprintf(histo, "HcalRecHitTask_severityLevel_HB");
290  sevLvl_HB = ibooker.book1D(histo, histo, 25, -0.5, 24.5);
291 
292  sprintf (histo, "HcalRecHitTask_energy_of_rechits_HB" ) ;
293  meRecHitsEnergyHB = ibooker.book1D(histo, histo, 2010 , -10. , 2000.);
294 
295  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M0_HB" ) ;
296  meRecHitsEnergyHBM0 = ibooker.book1D(histo, histo, 2010 , -10. , 2000.);
297 
298  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M3_HB" ) ;
299  meRecHitsEnergyHBM3 = ibooker.book1D(histo, histo, 2010 , -10. , 2000.);
300 
301  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M2vM0_HB" ) ;
302  meRecHitsEnergyM2vM0HB = ibooker.book2D(histo, histo, 42 , -10. , 200., 42, -10., 200.);
303 
304  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M3vM0_HB" ) ;
305  meRecHitsEnergyM3vM0HB = ibooker.book2D(histo, histo, 42 , -10. , 200., 42, -10., 200.);
306 
307  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M3vM2_HB" ) ;
308  meRecHitsEnergyM3vM2HB = ibooker.book2D(histo, histo, 42 , -10. , 200., 42, -10., 200.);
309 
310  sprintf (histo, "HcalRecHitTask_M2Log10Chi2_of_rechits_HB" ) ;
311  meRecHitsM2Chi2HB = ibooker.book1D(histo, histo, 120 , -2. , 10.);
312 
313  sprintf (histo, "HcalRecHitTask_timing_HB" ) ;
314  meTimeHB = ibooker.book1D(histo, histo, 70, -48., 92.);
315 
316  //High, medium and low histograms to reduce RAM usage
317  sprintf (histo, "HcalRecHitTask_timing_vs_energy_Low_HB" ) ;
318  meTE_Low_HB = ibooker.book2D(histo, histo, 50, -5., 45., 70, -48., 92.);
319 
320  sprintf (histo, "HcalRecHitTask_timing_vs_energy_HB" ) ;
321  meTE_HB = ibooker.book2D(histo, histo, 150, -5., 295., 70, -48., 92.);
322 
323  sprintf (histo, "HcalRecHitTask_timing_vs_energy_High_HB" ) ;
324  meTE_High_HB = ibooker.book2D(histo, histo, 150, -5., 2995., 70, -48., 92.);
325 
326  sprintf (histo, "HcalRecHitTask_timing_vs_energy_profile_Low_HB" ) ;
327  meTEprofileHB_Low = ibooker.bookProfile(histo, histo, 50, -5., 45., -48., 92., " ");
328 
329  sprintf (histo, "HcalRecHitTask_timing_vs_energy_profile_HB" ) ;
330  meTEprofileHB = ibooker.bookProfile(histo, histo, 150, -5., 295., -48., 92., " ");
331 
332  sprintf (histo, "HcalRecHitTask_Log10Chi2_vs_energy_profile_HB" ) ;
333  meLog10Chi2profileHB = ibooker.bookProfile(histo, histo, 150, -5., 295., -2., 10., " ");
334 
335  sprintf (histo, "HcalRecHitTask_timing_vs_energy_profile_High_HB" ) ;
336  meTEprofileHB_High = ibooker.bookProfile(histo, histo, 150, -5., 2995., -48., 92., " ");
337 
338  }
339 
340  // ********************** HE ************************************
341  if ( subdet_ == 2 || subdet_ == 5 ){
342 
343 
344  //Only severity level, energy of rechits and overall HB timing histos are drawn
345  sprintf(histo, "HcalRecHitTask_severityLevel_HE");
346  sevLvl_HE = ibooker.book1D(histo, histo, 25, -0.5, 24.5);
347 
348  sprintf (histo, "HcalRecHitTask_energy_of_rechits_HE" ) ;
349  meRecHitsEnergyHE = ibooker.book1D(histo, histo, 2010, -10., 2000.);
350 
351  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M0_HE" ) ;
352  meRecHitsEnergyHEM0 = ibooker.book1D(histo, histo, 2010, -10., 2000.);
353 
354  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M3_HE" ) ;
355  meRecHitsEnergyHEM3 = ibooker.book1D(histo, histo, 2010, -10., 2000.);
356 
357  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M2vM0_HE" ) ;
358  meRecHitsEnergyM2vM0HE = ibooker.book2D(histo, histo, 42 , -10. , 200., 42, -10., 200.);
359 
360  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M3vM0_HE" ) ;
361  meRecHitsEnergyM3vM0HE = ibooker.book2D(histo, histo, 42 , -10. , 200., 42, -10., 200.);
362 
363  sprintf (histo, "HcalRecHitTask_energy_of_rechits_M2vM0_HE" ) ;
364  meRecHitsEnergyM3vM2HE = ibooker.book2D(histo, histo, 42 , -10. , 200., 42, -10., 200.);
365 
366  sprintf (histo, "HcalRecHitTask_M2Log10Chi2_of_rechits_HE" ) ;
367  meRecHitsM2Chi2HE = ibooker.book1D(histo, histo, 120 , -2. , 10.);
368 
369  sprintf (histo, "HcalRecHitTask_timing_HE" ) ;
370  meTimeHE = ibooker.book1D(histo, histo, 70, -48., 92.);
371 
372  sprintf (histo, "HcalRecHitTask_timing_vs_energy_Low_HE" ) ;
373  meTE_Low_HE = ibooker.book2D(histo, histo, 80, -5., 75., 70, -48., 92.);
374 
375  sprintf (histo, "HcalRecHitTask_timing_vs_energy_HE" ) ;
376  meTE_HE = ibooker.book2D(histo, histo, 200, -5., 395., 70, -48., 92.);
377 
378  sprintf (histo, "HcalRecHitTask_timing_vs_energy_profile_Low_HE" ) ;
379  meTEprofileHE_Low = ibooker.bookProfile(histo, histo, 80, -5., 75., -48., 92., " ");
380 
381  sprintf (histo, "HcalRecHitTask_timing_vs_energy_profile_HE" ) ;
382  meTEprofileHE = ibooker.bookProfile(histo, histo, 200, -5., 395., -48., 92., " ");
383 
384  sprintf (histo, "HcalRecHitTask_Log10Chi2_vs_energy_profile_HE" ) ;
385  meLog10Chi2profileHE = ibooker.bookProfile(histo, histo, 200, -5., 395., -2., 10., " ");
386 
387 
388  }
389 
390  // ************** HO ****************************************
391  if ( subdet_ == 3 || subdet_ == 5 ){
392 
393  //Only severity level, energy of rechits and overall HB timing histos are drawn
394 
395  sprintf(histo, "HcalRecHitTask_severityLevel_HO");
396  sevLvl_HO = ibooker.book1D(histo, histo, 25, -0.5, 24.5);
397 
398  sprintf (histo, "HcalRecHitTask_energy_of_rechits_HO" ) ;
399  meRecHitsEnergyHO = ibooker.book1D(histo, histo, 2010 , -10. , 2000.);
400 
401  sprintf (histo, "HcalRecHitTask_timing_HO" ) ;
402  meTimeHO = ibooker.book1D(histo, histo, 70, -48., 92.);
403 
404  sprintf (histo, "HcalRecHitTask_timing_vs_energy_HO" ) ;
405  meTE_HO= ibooker.book2D(histo, histo, 60, -5., 55., 70, -48., 92.);
406 
407  sprintf (histo, "HcalRecHitTask_timing_vs_energy_High_HO" ) ;
408  meTE_High_HO= ibooker.book2D(histo, histo, 100, -5., 995., 70, -48., 92.);
409 
410  sprintf (histo, "HcalRecHitTask_timing_vs_energy_profile_HO" ) ;
411  meTEprofileHO = ibooker.bookProfile(histo, histo, 60, -5., 55., -48., 92., " ");
412 
413  sprintf (histo, "HcalRecHitTask_timing_vs_energy_profile_High_HO" ) ;
414  meTEprofileHO_High = ibooker.bookProfile(histo, histo, 100, -5., 995., -48., 92., " ");
415 
416  }
417 
418  // ********************** HF ************************************
419  if ( subdet_ == 4 || subdet_ == 5 ){
420 
421  //Only severity level, energy of rechits and overall HB timing histos are drawn
422 
423  sprintf(histo, "HcalRecHitTask_severityLevel_HF");
424  sevLvl_HF = ibooker.book1D(histo, histo, 25, -0.5, 24.5);
425 
426  sprintf (histo, "HcalRecHitTask_energy_of_rechits_HF" ) ;
427  meRecHitsEnergyHF = ibooker.book1D(histo, histo, 2010 , -10. , 2000.);
428 
429  sprintf (histo, "HcalRecHitTask_timing_HF" ) ;
430  meTimeHF = ibooker.book1D(histo, histo, 70, -48., 92.);
431 
432  sprintf (histo, "HcalRecHitTask_timing_vs_energy_Low_HF" ) ;
433  meTE_Low_HF = ibooker.book2D(histo, histo, 100, -5., 195., 70, -48., 92.);
434 
435  sprintf (histo, "HcalRecHitTask_timing_vs_energy_HF" ) ;
436  meTE_HF = ibooker.book2D(histo, histo, 200, -5., 995., 70, -48., 92.);
437 
438  sprintf (histo, "HcalRecHitTask_timing_vs_energy_profile_Low_HF" ) ;
439  meTEprofileHF_Low = ibooker.bookProfile(histo, histo, 100, -5., 195., -48., 92., " ");
440 
441  sprintf (histo, "HcalRecHitTask_timing_vs_energy_profile_HF" ) ;
442  meTEprofileHF = ibooker.bookProfile(histo, histo, 200, -5., 995., -48., 92., " ");
443 
444  }
445 
446 }
447 
448 
450 
451  using namespace edm;
452 
453  // cuts for each subdet_ector mimiking "Scheme B"
454  // double cutHB = 0.9, cutHE = 1.4, cutHO = 1.1, cutHFL = 1.2, cutHFS = 1.8;
455 
456  // energy in HCAL
457  double eHcal = 0.;
458  // Total numbet of RecHits in HCAL, in the cone, above 1 GeV theshold
459  int nrechits = 0;
460  int nrechitsThresh = 0;
461 
462  // energy in ECAL
463  double eEcal = 0.;
464  double eEcalB = 0.;
465  double eEcalE = 0.;
466  double eEcalCone = 0.;
467 
468  // HCAL energy around MC eta-phi at all depths;
469  double partR = 0.3;
470 
471  // Single particle samples: actual eta-phi position of cluster around
472  // hottest cell
473  double etaHot = 99999.;
474  double phiHot = 99999.;
475 
476  // previously was: c.get<IdealGeometryRecord>().get (geometry);
477  c.get<CaloGeometryRecord>().get (geometry);
478 
479  // HCAL Topology **************************************************
481  c.get<HcalRecNumberingRecord>().get(topo);
482  theHcalTopology = topo.product();
483 
484  // HCAL channel status map ****************************************
486  c.get<HcalChannelQualityRcd>().get( "withTopo", hcalChStatus );
487  theHcalChStatus = hcalChStatus.product();
488 
489  // Assignment of severity levels **********************************
490  edm::ESHandle<HcalSeverityLevelComputer> hcalSevLvlComputerHndl;
491  c.get<HcalSeverityLevelComputerRcd>().get(hcalSevLvlComputerHndl);
492  theHcalSevLvlComputer = hcalSevLvlComputerHndl.product();
493 
494  // Fill working vectors of HCAL RecHits quantities (all of these are drawn)
495  fillRecHitsTmp(subdet_, ev);
496 
497  // HB
498  if( subdet_ ==5 || subdet_ == 1 ){
499  for(unsigned int iv=0; iv<hcalHBSevLvlVec.size(); iv++){
501  }
502  }
503  // HE
504  if( subdet_ ==5 || subdet_ == 2 ){
505  for(unsigned int iv=0; iv<hcalHESevLvlVec.size(); iv++){
507  }
508  }
509  // HO
510  if( subdet_ ==5 || subdet_ == 3 ){
511  for(unsigned int iv=0; iv<hcalHOSevLvlVec.size(); iv++){
513  }
514  }
515  // HF
516  if( subdet_ ==5 || subdet_ == 4 ){
517  for(unsigned int iv=0; iv<hcalHFSevLvlVec.size(); iv++){
519  }
520  }
521 
522  //===========================================================================
523  // IN ALL other CASES : ieta-iphi maps
524  //===========================================================================
525 
526  // ECAL
527  if(ecalselector_ == "yes" && (subdet_ == 1 || subdet_ == 2 || subdet_ == 5)) {
529 
530 
531  ev.getByToken(tok_EB_, rhitEB);
532 
533  EcalRecHitCollection::const_iterator RecHit = rhitEB.product()->begin();
534  EcalRecHitCollection::const_iterator RecHitEnd = rhitEB.product()->end();
535 
536  for (; RecHit != RecHitEnd ; ++RecHit) {
537 
538  double en = RecHit->energy();
539  eEcal += en;
540  eEcalB += en;
541 
542 
543  }
544 
545 
547 
548  ev.getByToken(tok_EE_, rhitEE);
549 
550  RecHit = rhitEE.product()->begin();
551  RecHitEnd = rhitEE.product()->end();
552 
553  for (; RecHit != RecHitEnd ; ++RecHit) {
554 
555  double en = RecHit->energy();
556  eEcal += en;
557  eEcalE += en;
558 
559 
560  }
561  } // end of ECAL selection
562 
563  // Counting, including ZS items
564  // Filling HCAL maps ----------------------------------------------------
565  // double maxE = -99999.;
566 
567  // element 0: any depth. element 1,2,..: depth 1,2
568  std::vector<int> nhb_v(maxDepthHB_+1,0);
569  std::vector<int> nhe_v(maxDepthHE_+1,0);
570  std::vector<int> nho_v(maxDepthHO_+1,0);
571  std::vector<int> nhf_v(maxDepthHF_+1,0);
572 
573  for (unsigned int i = 0; i < cen.size(); i++) {
574 
575  int sub = csub[i];
576  int depth = cdepth[i];
577  int ieta = cieta[i];
578  int iphi = ciphi[i];
579  double en = cen[i];
580  double enM0 = cenM0[i];
581  double enM3 = cenM3[i];
582  // double eta = ceta[i];
583  // double phi = cphi[i];
584  uint32_t stwd = cstwd[i];
585  uint32_t auxstwd = cauxstwd[i];
586  // double z = cz[i];
587 
588  //Make sure that an invalid depth won't cause an error. We should probably report the problem as well.
589  if( depth < 1 ) continue;
590  if( sub == 1 && depth > maxDepthHB_ ) continue;
591  if( sub == 2 && depth > maxDepthHE_ ) continue;
592  if( sub == 3 && depth > maxDepthHO_ ) continue;
593  if( sub == 4 && depth > maxDepthHF_ ) continue;
594 
595  if( sub ==1 ){ nhb_v[depth]++; nhb_v[0]++;} // element 0: any depth, element 1,2,..: depth 1,2,...
596  if( sub ==2 ){ nhe_v[depth]++; nhe_v[0]++;} //
597  if( sub ==3 ){ nho_v[depth]++; nho_v[0]++;} //
598  if( sub ==4 ){ nhf_v[depth]++; nhf_v[0]++;} //
599 
600  if( subdet_ == 6) { // ZS specific
601  }
602 
603  if( subdet_ != 6) {
604  int ieta2 = ieta;
605  int depth2 = depth;
606  if(sub == 4){
607  if (ieta2 < 0) ieta2--;
608  else ieta2++;
609  }
610  if(sub == 3) depth2 = maxDepthAll_ - maxDepthHO_ + depth; //This will use the last depths for HO
611  emap[depth2-1]->Fill(double(ieta2),double(iphi),en);
612 
613  // to distinguish HE and HF
614  if( depth == 1 || depth == 2 ) {
615  int ieta1 = ieta;
616  if(sub == 4) {
617  if (ieta1 < 0) ieta1--;
618  else ieta1++;
619  }
620  }
621 
622  if ( sub == 1){
623  emean_vs_ieta_HB[depth-1]->Fill(double(ieta), en);
624  emean_vs_ieta_HBM0[depth-1]->Fill(double(ieta), enM0);
625  emean_vs_ieta_HBM3[depth-1]->Fill(double(ieta), enM3);
626  occupancy_map_HB[depth-1]->Fill(double(ieta),double(iphi));
627  }
628  if ( sub == 2){
629  emean_vs_ieta_HE[depth-1]->Fill(double(ieta), en);
630  emean_vs_ieta_HEM0[depth-1]->Fill(double(ieta), enM0);
631  emean_vs_ieta_HEM3[depth-1]->Fill(double(ieta), enM3);
632  occupancy_map_HE[depth-1]->Fill(double(ieta),double(iphi));
633  }
634  if ( sub == 3){
635  emean_vs_ieta_HO->Fill(double(ieta), en);
636  occupancy_map_HO->Fill(double(ieta),double(iphi));
637  }
638  if ( sub == 4){
639  emean_vs_ieta_HF[depth-1]->Fill(double(ieta), en);
640  occupancy_map_HF[depth-1]->Fill(double(ieta),double(iphi));
641  }
642  }
643 
644 
645 
646  //32-bit status word
647  uint32_t statadd;
648  unsigned int isw67 = 0;
649 
650  //Statusword correlation
651  unsigned int sw27 = 27;
652  unsigned int sw13 = 13;
653 
654  uint32_t statadd27 = 0x1<<sw27;
655  uint32_t statadd13 = 0x1<<sw13;
656 
657  float status27 = 0;
658  float status13 = 0;
659 
660  if(stwd & statadd27) status27 = 1;
661  if(stwd & statadd13) status13 = 1;
662 
663  if (sub == 1){
664  RecHit_StatusWordCorr_HB->Fill(status13, status27);
665  } else if (sub == 2){
666  RecHit_StatusWordCorr_HE->Fill(status13, status27);
667  }
668 
669 
670  for (unsigned int isw = 0; isw < 32; isw++){
671  statadd = 0x1<<(isw);
672  if (stwd & statadd){
673  if (sub == 1) RecHit_StatusWord_HB->Fill(isw);
674  else if (sub == 2) RecHit_StatusWord_HE->Fill(isw);
675  else if (sub == 3) RecHit_StatusWord_HO->Fill(isw);
676  else if (sub == 4){
678  if (isw == 6) isw67 += 1;
679  if (isw == 7) isw67 += 2;
680  }
681  }
682  }
683 
684  for (unsigned int isw =0; isw < 32; isw++){
685  statadd = 0x1<<(isw);
686  if( auxstwd & statadd ){
687  if (sub == 1) RecHit_Aux_StatusWord_HB->Fill(isw);
688  else if (sub == 2) RecHit_Aux_StatusWord_HE->Fill(isw);
689  else if (sub == 3) RecHit_Aux_StatusWord_HO->Fill(isw);
690  else if (sub == 4) RecHit_Aux_StatusWord_HF->Fill(isw);
691  }
692 
693  }
694 
695  }
696 
697  for(int depth = 0; depth <= maxDepthHB_; depth++) Nhb[depth]->Fill(double(nhb_v[depth]));
698  for(int depth = 0; depth <= maxDepthHE_; depth++) Nhe[depth]->Fill(double(nhe_v[depth]));
699  for(int depth = 0; depth <= maxDepthHO_; depth++) Nho[depth]->Fill(double(nho_v[depth]));
700  for(int depth = 0; depth <= maxDepthHF_; depth++) Nhf[depth]->Fill(double(nhf_v[depth]));
701 
702  //===========================================================================
703  // SUBSYSTEMS,
704  //===========================================================================
705 
706  if ((subdet_ != 6) && (subdet_ != 0)) {
707 
708  double clusEta = 999.;
709  double clusPhi = 999.;
710  double clusEn = 0.;
711 
712  double HcalCone = 0.;
713 
714  int ietaMax = 9999;
715  // double enMax1 = -9999.;
716  // double enMax2 = -9999.;
717  // double enMax3 = -9999.;
718  // double enMax4 = -9999.;
719  // double enMax = -9999.;
720  // double etaMax = 9999.;
721 
722  // CYCLE over cells ====================================================
723 
724  for (unsigned int i = 0; i < cen.size(); i++) {
725  int sub = csub[i];
726  double eta = ceta[i];
727  double phi = cphi[i];
728  double en = cen[i];
729  double enM0 = cenM0[i];
730  double enM3 = cenM3[i];
731  double chi2 = cchi2[i];
732  double t = ctime[i];
733 // int ieta = cieta[i];
734 
735  double rhot = dR(etaHot, phiHot, eta, phi);
736  if(rhot < partR && en > 1.) {
737  clusEta = (clusEta * clusEn + eta * en)/(clusEn + en);
738  clusPhi = phi12(clusPhi, clusEn, phi, en);
739  clusEn += en;
740  }
741 
742  nrechits++;
743  eHcal += en;
744 
745  if(en > 1. ) nrechitsThresh++;
746 
747  //The energy and overall timing histos are drawn while
748  //the ones split by depth are not
749  if(sub == 1 && (subdet_ == 1 || subdet_ == 5)) {
750  meTimeHB->Fill(t);
751  meRecHitsEnergyHB->Fill(en);
752  meRecHitsEnergyHBM0->Fill(enM0);
753  meRecHitsEnergyHBM3->Fill(enM3);
754 
755  meRecHitsEnergyM2vM0HB->Fill(enM0,en);
756  meRecHitsEnergyM3vM0HB->Fill(enM0,enM3);
757  meRecHitsEnergyM3vM2HB->Fill(en,enM3);
758 
759  meRecHitsM2Chi2HB->Fill(log10(chi2));
760  meLog10Chi2profileHB->Fill(en,log10(chi2));
761 
762  meTE_Low_HB->Fill( en, t);
763  meTE_HB->Fill( en, t);
764  meTE_High_HB->Fill( en, t);
765  meTEprofileHB_Low->Fill(en, t);
766  meTEprofileHB->Fill(en, t);
767  meTEprofileHB_High->Fill(en, t);
768  }
769  if(sub == 2 && (subdet_ == 2 || subdet_ == 5)) {
770  meTimeHE->Fill(t);
771  meRecHitsEnergyHE->Fill(en);
772  meRecHitsEnergyHEM0->Fill(enM0);
773  meRecHitsEnergyHEM3->Fill(enM3);
774 
775  meRecHitsEnergyM2vM0HE->Fill(enM0,en);
776  meRecHitsEnergyM3vM0HE->Fill(enM0,enM3);
777  meRecHitsEnergyM3vM2HE->Fill(en,enM3);
778 
779  meRecHitsM2Chi2HE->Fill(log10(chi2));
780  meLog10Chi2profileHE->Fill(en,log10(chi2));
781 
782  meTE_Low_HE->Fill( en, t);
783  meTE_HE->Fill( en, t);
784  meTEprofileHE_Low->Fill(en, t);
785  meTEprofileHE->Fill(en, t);
786  }
787  if(sub == 4 && (subdet_ == 4 || subdet_ == 5)) {
788  meTimeHF->Fill(t);
789  meRecHitsEnergyHF->Fill(en);
790 
791  meTE_Low_HF->Fill(en, t);
792  meTE_HF->Fill(en, t);
793  meTEprofileHF_Low->Fill(en, t);
794  meTEprofileHF->Fill(en, t);
795 
796  }
797  if(sub == 3 && (subdet_ == 3 || subdet_ == 5)) {
798  meTimeHO->Fill(t);
799  meRecHitsEnergyHO->Fill(en);
800 
801  meTE_HO->Fill( en, t);
802  meTE_High_HO->Fill( en, t);
803  meTEprofileHO->Fill(en, t);
804  meTEprofileHO_High->Fill(en, t);
805  }
806  }
807 
808  if(imc != 0) {
809  //Cone by depth are not drawn, the others are used for pion scan
810  meEnConeEtaProfile ->Fill(double(ietaMax), HcalCone); //
811  meEnConeEtaProfile_E ->Fill(double(ietaMax), eEcalCone);
812  meEnConeEtaProfile_EH ->Fill(double(ietaMax), HcalCone+eEcalCone);
813  }
814 
815  // Single particle samples ONLY ! ======================================
816  // Fill up some histos for "integrated" subsustems.
817  // These are not drawn
818  }
819 
820  nevtot++;
821 }
822 
823 
826 
827  using namespace edm;
828 
829 
830  // initialize data vectors
831  csub.clear();
832  cen.clear();
833  cenM0.clear();
834  cenM3.clear();
835  cchi2.clear();
836  ceta.clear();
837  cphi.clear();
838  ctime.clear();
839  cieta.clear();
840  ciphi.clear();
841  cdepth.clear();
842  cz.clear();
843  cstwd.clear();
844  cauxstwd.clear();
845  hcalHBSevLvlVec.clear();
846  hcalHESevLvlVec.clear();
847  hcalHFSevLvlVec.clear();
848  hcalHOSevLvlVec.clear();
849 
850  if( subdet_ == 1 || subdet_ == 2 || subdet_ == 5 || subdet_ == 6 || subdet_ == 0) {
851 
852  //HBHE
854  ev.getByToken(tok_hbhe_, hbhecoll);
855 
856  for (HBHERecHitCollection::const_iterator j=hbhecoll->begin(); j != hbhecoll->end(); j++) {
857  HcalDetId cell(j->id());
858  const HcalGeometry* cellGeometry =
859  (HcalGeometry*)(geometry->getSubdetectorGeometry(cell));
860  double eta = cellGeometry->getPosition(cell).eta () ;
861  double phi = cellGeometry->getPosition(cell).phi () ;
862  double zc = cellGeometry->getPosition(cell).z ();
863  int sub = cell.subdet();
864  int depth = cell.depth();
865  int inteta = cell.ieta();
866  int intphi = cell.iphi();
867  double en = j->energy();
868  double enM0 = j->eraw();
869  double enM3 = j->eaux();
870  double chi2 = j->chi2();
871  double t = j->time();
872  int stwd = j->flags();
873  int auxstwd = j->aux();
874 
875  int severityLevel = hcalSevLvl( (CaloRecHit*) &*j );
876  if( cell.subdet()==HcalBarrel ){
877  hcalHBSevLvlVec.push_back(severityLevel);
878  }else if (cell.subdet()==HcalEndcap ){
879  hcalHESevLvlVec.push_back(severityLevel);
880  }
881 
882  if((iz > 0 && eta > 0.) || (iz < 0 && eta <0.) || iz == 0) {
883 
884  csub.push_back(sub);
885  cen.push_back(en);
886  cenM0.push_back(enM0);
887  cenM3.push_back(enM3);
888  cchi2.push_back(chi2);
889  ceta.push_back(eta);
890  cphi.push_back(phi);
891  ctime.push_back(t);
892  cieta.push_back(inteta);
893  ciphi.push_back(intphi);
894  cdepth.push_back(depth);
895  cz.push_back(zc);
896  cstwd.push_back(stwd);
897  cauxstwd.push_back(auxstwd);
898  }
899  }
900 
901  }
902 
903  if( subdet_ == 4 || subdet_ == 5 || subdet_ == 6 || subdet_ == 0) {
904 
905  //HF
907  ev.getByToken(tok_hf_, hfcoll);
908 
909  for (HFRecHitCollection::const_iterator j = hfcoll->begin(); j != hfcoll->end(); j++) {
910  HcalDetId cell(j->id());
911  const CaloCellGeometry* cellGeometry =
912  geometry->getSubdetectorGeometry (cell)->getGeometry (cell) ;
913  double eta = cellGeometry->getPosition().eta () ;
914  double phi = cellGeometry->getPosition().phi () ;
915  double zc = cellGeometry->getPosition().z ();
916  int sub = cell.subdet();
917  int depth = cell.depth();
918  int inteta = cell.ieta();
919  int intphi = cell.iphi();
920  double en = j->energy();
921  double enM0 = 0.;
922  double enM3 = 0.;
923  double chi2 = 0.;
924  double t = j->time();
925  int stwd = j->flags();
926  int auxstwd = j->aux();
927 
928  int severityLevel = hcalSevLvl( (CaloRecHit*) &*j );
929  if( cell.subdet()==HcalForward ){
930  hcalHFSevLvlVec.push_back(severityLevel);
931  }
932 
933  if((iz > 0 && eta > 0.) || (iz < 0 && eta <0.) || iz == 0) {
934 
935  csub.push_back(sub);
936  cen.push_back(en);
937  cenM0.push_back(enM0);
938  cenM3.push_back(enM3);
939  cchi2.push_back(chi2);
940  ceta.push_back(eta);
941  cphi.push_back(phi);
942  ctime.push_back(t);
943  cieta.push_back(inteta);
944  ciphi.push_back(intphi);
945  cdepth.push_back(depth);
946  cz.push_back(zc);
947  cstwd.push_back(stwd);
948  cauxstwd.push_back(auxstwd);
949  }
950  }
951  }
952 
953  //HO
954  if( subdet_ == 3 || subdet_ == 5 || subdet_ == 6 || subdet_ == 0) {
955 
957  ev.getByToken(tok_ho_, hocoll);
958 
959  for (HORecHitCollection::const_iterator j = hocoll->begin(); j != hocoll->end(); j++) {
960  HcalDetId cell(j->id());
961  const CaloCellGeometry* cellGeometry =
962  geometry->getSubdetectorGeometry (cell)->getGeometry (cell) ;
963  double eta = cellGeometry->getPosition().eta () ;
964  double phi = cellGeometry->getPosition().phi () ;
965  double zc = cellGeometry->getPosition().z ();
966  int sub = cell.subdet();
967  int depth = cell.depth();
968  int inteta = cell.ieta();
969  int intphi = cell.iphi();
970  double t = j->time();
971  double en = j->energy();
972  double enM0 = 0.;
973  double enM3 = 0.;
974  double chi2 = 0.;
975  int stwd = j->flags();
976  int auxstwd = j->aux();
977 
978  int severityLevel = hcalSevLvl( (CaloRecHit*) &*j );
979  if( cell.subdet()==HcalOuter ){
980  hcalHOSevLvlVec.push_back(severityLevel);
981  }
982 
983  if((iz > 0 && eta > 0.) || (iz < 0 && eta <0.) || iz == 0) {
984  csub.push_back(sub);
985  cen.push_back(en);
986  cenM0.push_back(enM0);
987  cenM3.push_back(enM3);
988  cchi2.push_back(chi2);
989  ceta.push_back(eta);
990  cphi.push_back(phi);
991  ctime.push_back(t);
992  cieta.push_back(inteta);
993  ciphi.push_back(intphi);
994  cdepth.push_back(depth);
995  cz.push_back(zc);
996  cstwd.push_back(stwd);
997  cauxstwd.push_back(auxstwd);
998  }
999  }
1000  }
1001 }
1002 
1003 double HcalRecHitsAnalyzer::dR(double eta1, double phi1, double eta2, double phi2) {
1004  double PI = 3.1415926535898;
1005  double deltaphi= phi1 - phi2;
1006  if( phi2 > phi1 ) { deltaphi= phi2 - phi1;}
1007  if(deltaphi > PI) { deltaphi = 2.*PI - deltaphi;}
1008  double deltaeta = eta2 - eta1;
1009  double tmp = sqrt(deltaeta* deltaeta + deltaphi*deltaphi);
1010  return tmp;
1011 }
1012 
1013 double HcalRecHitsAnalyzer::phi12(double phi1, double en1, double phi2, double en2) {
1014  // weighted mean value of phi1 and phi2
1015 
1016  double tmp;
1017  double PI = 3.1415926535898;
1018  double a1 = phi1; double a2 = phi2;
1019 
1020  if( a1 > 0.5*PI && a2 < 0.) a2 += 2*PI;
1021  if( a2 > 0.5*PI && a1 < 0.) a1 += 2*PI;
1022  tmp = (a1 * en1 + a2 * en2)/(en1 + en2);
1023  if(tmp > PI) tmp -= 2.*PI;
1024 
1025  return tmp;
1026 
1027 }
1028 
1029 double HcalRecHitsAnalyzer::dPhiWsign(double phi1, double phi2) {
1030  // clockwise phi2 w.r.t phi1 means "+" phi distance
1031  // anti-clockwise phi2 w.r.t phi1 means "-" phi distance
1032 
1033  double PI = 3.1415926535898;
1034  double a1 = phi1; double a2 = phi2;
1035  double tmp = a2 - a1;
1036  if( a1*a2 < 0.) {
1037  if(a1 > 0.5 * PI) tmp += 2.*PI;
1038  if(a2 > 0.5 * PI) tmp -= 2.*PI;
1039  }
1040  return tmp;
1041 
1042 }
1043 
1045 
1046  HcalDetId id = hit->detid();
1047  if (theHcalTopology->withSpecialRBXHBHE() && id.subdet() == HcalEndcap) {
1048  id = theHcalTopology->idFront(id);
1049  }
1050 
1051  const uint32_t recHitFlag = hit->flags();
1052  const uint32_t dbStatusFlag = theHcalChStatus->getValues(id)->getValue();
1053 
1054  int severityLevel = theHcalSevLvlComputer->getSeverityLevel(id, recHitFlag, dbStatusFlag);
1055 
1056  return severityLevel;
1057 
1058 }
1059 
1061 
int getNPhi(const int type) const
MonitorElement * sevLvl_HF
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
Definition: CaloGeometry.cc:45
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * meTEprofileHB_High
MonitorElement * RecHit_StatusWord_HE
int i
Definition: DBlmapReader.cc:9
std::vector< int > csub
MonitorElement * meRecHitsM2Chi2HB
MonitorElement * meTimeHF
std::vector< double > cphi
std::vector< int > hcalHOSevLvlVec
double dR(double eta1, double phi1, double eta2, double phi2)
MonitorElement * RecHit_StatusWord_HF
MonitorElement * meRecHitsEnergyM3vM2HE
MonitorElement * sevLvl_HE
MonitorElement * RecHit_Aux_StatusWord_HO
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
unsigned int getHxSize(const int type) const
double dPhiWsign(double phi1, double phi2)
const DetId & detid() const
Definition: CaloRecHit.h:21
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
MonitorElement * meTE_Low_HE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
std::vector< MonitorElement * > Nhb
MonitorElement * meRecHitsEnergyHEM3
std::vector< int > cdepth
const HcalTopology * theHcalTopology
int hcalSevLvl(const CaloRecHit *hit)
std::vector< EcalRecHit >::const_iterator const_iterator
std::vector< int > hcalHBSevLvlVec
std::vector< MonitorElement * > emap
bool ev
MonitorElement * occupancy_map_HO
const Item * getValues(DetId fId, bool throwOnFail=true) const
std::vector< MonitorElement * > emean_vs_ieta_HBM3
std::vector< double > ceta
edm::EDGetTokenT< EBRecHitCollection > tok_EB_
MonitorElement * meEnConeEtaProfile_EH
std::vector< MonitorElement * > emean_vs_ieta_HBM0
std::vector< MonitorElement * > emean_vs_ieta_HF
std::vector< int > hcalHESevLvlVec
double phi12(double phi1, double en1, double phi2, double en2)
MonitorElement * meRecHitsEnergyM3vM0HE
MonitorElement * meTE_Low_HB
MonitorElement * meTEprofileHF_Low
const HcalSeverityLevelComputer * theHcalSevLvlComputer
MonitorElement * meTE_HB
MonitorElement * meRecHitsEnergyM2vM0HB
void Fill(long long x)
MonitorElement * sevLvl_HO
virtual void fillRecHitsTmp(int subdet_, edm::Event const &ev)
int getMaxDepth(const int type) const
std::vector< MonitorElement * > Nhe
std::vector< MonitorElement * > emean_vs_ieta_HEM0
MonitorElement * meRecHitsEnergyM2vM0HE
MonitorElement * meTE_HO
std::vector< MonitorElement * > occupancy_vs_ieta_HF
const HcalChannelQuality * theHcalChStatus
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * meEnConeEtaProfile_E
T sqrt(T t)
Definition: SSEVec.h:18
MonitorElement * meTEprofileHO
MonitorElement * meTEprofileHB
edm::EDGetTokenT< HORecHitCollection > tok_ho_
uint32_t flags() const
Definition: CaloRecHit.h:22
std::vector< double > cchi2
MonitorElement * meLog10Chi2profileHE
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
MonitorElement * meRecHitsEnergyHBM0
MonitorElement * meTE_High_HO
MonitorElement * meRecHitsEnergyHO
int j
Definition: DBlmapReader.cc:9
MonitorElement * meRecHitsM2Chi2HE
MonitorElement * meTE_HF
std::vector< uint32_t > cauxstwd
MonitorElement * meRecHitsEnergyHEM0
MonitorElement * occupancy_vs_ieta_HO
MonitorElement * meTEprofileHE_Low
MonitorElement * RecHit_StatusWord_HO
MonitorElement * meRecHitsEnergyHB
std::vector< int > ciphi
MonitorElement * emean_vs_ieta_HO
MonitorElement * sevLvl_HB
#define PI
Definition: QcdUeDQM.h:36
std::vector< double > cz
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
std::vector< MonitorElement * > occupancy_vs_ieta_HB
const_iterator end() const
MonitorElement * meTimeHE
std::vector< int > cieta
MonitorElement * meTimeHO
MonitorElement * meRecHitsEnergyHF
std::vector< MonitorElement * > emean_vs_ieta_HB
std::vector< double > cenM3
HcalRecHitsAnalyzer(edm::ParameterSet const &conf)
MonitorElement * meEnConeEtaProfile
MonitorElement * meTEprofileHE
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
std::vector< uint32_t > cstwd
std::vector< MonitorElement * > Nho
std::vector< MonitorElement * > occupancy_map_HE
T const * product() const
Definition: Handle.h:81
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
MonitorElement * RecHit_Aux_StatusWord_HB
virtual void analyze(edm::Event const &ev, edm::EventSetup const &c) override
virtual void dqmBeginRun(const edm::Run &run, const edm::EventSetup &c) override
const T & get() const
Definition: EventSetup.h:56
MonitorElement * meRecHitsEnergyM3vM2HB
int getSeverityLevel(const DetId &myid, const uint32_t &myflag, const uint32_t &mystatus) const
edm::EDGetTokenT< HFRecHitCollection > tok_hf_
MonitorElement * meLog10Chi2profileHB
std::pair< int, int > getEtaRange(const int i) const
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
MonitorElement * meTE_High_HB
std::vector< int > hcalHFSevLvlVec
MonitorElement * RecHit_StatusWord_HB
HLT enums.
MonitorElement * meTEprofileHO_High
std::vector< MonitorElement * > emean_vs_ieta_HEM3
const HcalDDDRecConstants * hcons
MonitorElement * meTEprofileHB_Low
edm::EDGetTokenT< EERecHitCollection > tok_EE_
std::vector< double > ctime
std::vector< double > cen
MonitorElement * meRecHitsEnergyM3vM0HB
HcalDetId idFront(const HcalDetId &id) const
Definition: HcalTopology.h:170
MonitorElement * meRecHitsEnergyHBM3
std::vector< double > cenM0
MonitorElement * RecHit_StatusWordCorr_HE
std::vector< MonitorElement * > occupancy_map_HF
MonitorElement * meTimeHB
std::vector< MonitorElement * > occupancy_map_HB
MonitorElement * meTEprofileHF
MonitorElement * RecHit_Aux_StatusWord_HF
MonitorElement * RecHit_Aux_StatusWord_HE
uint32_t getValue() const
bool withSpecialRBXHBHE() const
Definition: HcalTopology.h:162
T const * product() const
Definition: ESHandle.h:86
MonitorElement * RecHit_StatusWordCorr_HB
std::vector< MonitorElement * > Nhf
std::vector< MonitorElement * > occupancy_vs_ieta_HE
edm::ESHandle< CaloGeometry > geometry
const_iterator begin() const
Definition: Run.h:42
MonitorElement * meTE_HE
std::vector< MonitorElement * > emean_vs_ieta_HE
MonitorElement * meRecHitsEnergyHE
MonitorElement * meTE_Low_HF