CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
HcalRecHitMonitor.cc
Go to the documentation of this file.
6 
14 #include <cmath>
15 
17 {
18  // Common Base Class parameters
19  Online_ = ps.getUntrackedParameter<bool>("online",false);
20  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
21  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
22  debug_ = ps.getUntrackedParameter<int>("debug",0);
23  prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
24  if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
25  prefixME_.append("/");
26  subdir_ = ps.getUntrackedParameter<std::string>("TaskFolder","RecHitMonitor_Hcal/");
27  if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
28  subdir_.append("/");
29  subdir_=prefixME_+subdir_;
30  AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
31  skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",false);
32  NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
33  makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
34 
35  hbheRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hbheRechitLabel");
36  hoRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hoRechitLabel");
37  hfRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hfRechitLabel");
38  l1gtLabel_ = ps.getUntrackedParameter<edm::InputTag>("L1GTLabel"); // should be l1GtUnpack
39 
40  hltresultsLabel_ = ps.getUntrackedParameter<edm::InputTag>("HLTResultsLabel");
41  HcalHLTBits_ = ps.getUntrackedParameter<std::vector<std::string> >("HcalHLTBits");
42  MinBiasHLTBits_ = ps.getUntrackedParameter<std::vector<std::string> >("MinBiasHLTBits");
43 
44  // energy/ET threshold plots also require that at least one MinBias trigger bit fires
45  energyThreshold_ = ps.getUntrackedParameter<double>("energyThreshold",2);
46  HBenergyThreshold_ = ps.getUntrackedParameter<double>("HB_energyThreshold",energyThreshold_);
47  HEenergyThreshold_ = ps.getUntrackedParameter<double>("HE_energyThreshold",energyThreshold_);
48  HOenergyThreshold_ = ps.getUntrackedParameter<double>("HO_energyThreshold",energyThreshold_);
49  HFenergyThreshold_ = ps.getUntrackedParameter<double>("HF_energyThreshold",energyThreshold_);
50 
51  ETThreshold_ = ps.getUntrackedParameter<double>("ETThreshold",0);
52  HBETThreshold_ = ps.getUntrackedParameter<double>("HB_ETThreshold",ETThreshold_);
53  HEETThreshold_ = ps.getUntrackedParameter<double>("HE_ETThreshold",ETThreshold_);
54  HOETThreshold_ = ps.getUntrackedParameter<double>("HO_ETThreshold",ETThreshold_);
55  HFETThreshold_ = ps.getUntrackedParameter<double>("HF_ETThreshold",ETThreshold_);
56 
57  timediffThresh_ = ps.getUntrackedParameter<double>("collisiontimediffThresh",10.);
58  setupDone_ = false;
59  needLogicalMap_ = true;
60 
61  // register for data access
62  tok_hbhe_ = consumes<HBHERecHitCollection>(hbheRechitLabel_);
63  tok_ho_ = consumes<HORecHitCollection>(hoRechitLabel_);
64  tok_hf_ = consumes<HFRecHitCollection>(hfRechitLabel_);
65  tok_trigger_ = consumes<edm::TriggerResults>(hltresultsLabel_);
66 
67 } //constructor
68 
70 {
71 } //destructor
72 
73 
74 /* ------------------------------------ */
75 
76 
78 {
79 
80  if (setupDone_)
81  {
82  // Always do a zeroing/resetting so that empty histograms/counter
83  // will always appear.
84 
85  // clear all counters, reset histograms
86  this->zeroCounters();
87  this->reset();
88  return;
89  }
90  else
91  setupDone_=true;
92 
94 
95 
96  if (debug_>0)
97  std::cout <<"<HcalRecHitMonitor::setup> Setting up histograms"<<std::endl;
98 
99  // RecHit Monitor - specific cfg variables
100 
101  if (debug_>1)
102  std::cout <<"<HcalRecHitMonitor::setup> Creating Histograms"<<std::endl;
103 
105  h_TriggeredEvents=ib.book1D("EventTriggers","EventTriggers",3,-0.5,2.5);
106  h_TriggeredEvents->setBinLabel(1,"AllEvents");
107  h_TriggeredEvents->setBinLabel(2,"HLT_Minbias");
108  h_TriggeredEvents->setBinLabel(3,"HLT_Hcal");
109 
110  ib.setCurrentFolder(subdir_+"rechit_parameters");
111  MonitorElement* THR;
112  ib.setCurrentFolder(subdir_+"rechit_parameters/thresholds");
113  THR=ib.bookFloat("HB_Rechit_Energy_Threshold");
114  THR->Fill(HBenergyThreshold_);
115  THR=ib.bookFloat("HE_Rechit_Energy_Threshold");
116  THR->Fill(HEenergyThreshold_);
117  THR=ib.bookFloat("HO_Rechit_Energy_Threshold");
118  THR->Fill(HOenergyThreshold_);
119  THR=ib.bookFloat("HF_Rechit_Energy_Threshold");
120  THR->Fill(HFenergyThreshold_);
121  THR=ib.bookFloat("HB_Rechit_ET_Threshold");
122  THR->Fill(HBETThreshold_);
123  THR=ib.bookFloat("HE_Rechit_ET_Threshold");
124  THR->Fill(HEETThreshold_);
125  THR=ib.bookFloat("HO_Rechit_ET_Threshold");
126  THR->Fill(HOETThreshold_);
127  THR=ib.bookFloat("HF_Rechit_ET_Threshold");
128  THR->Fill(HFETThreshold_);
129  THR=ib.bookFloat("Maximum_HFM_HFP_time_difference_for_luminosityplots");
130  THR->Fill(timediffThresh_);
131 
132 
133  // Set up histograms that are filled by all rechits
134  ib.setCurrentFolder(subdir_+"Distributions_AllRecHits");
135  SetupEtaPhiHists(ib,OccupancyByDepth,"RecHit Occupancy","");
136  h_rechitieta = ib.book1D("HcalRecHitIeta",
137  "Hcal RecHit ieta",
138  83,-41.5,41.5);
139  h_rechitiphi = ib.book1D("HcalRecHitIphi",
140  "Hcal RecHit iphi",
141  72,0.5,72.5);
142 
143  h_rechitieta_05 = ib.book1D("HcalRecHitIeta05",
144  "Hcal RecHit ieta E>0.5 GeV",
145  83,-41.5,41.5);
146  h_rechitiphi_05 = ib.book1D("HcalRecHitIphi05",
147  "Hcal RecHit iphi E>0.5 GeV",
148  72,0.5,72.5);
149  h_rechitieta_10 = ib.book1D("HcalRecHitIeta10",
150  "Hcal RecHit ieta E>1.0 GeV",
151  83,-41.5,41.5);
152  h_rechitiphi_10 = ib.book1D("HcalRecHitIphi10",
153  "Hcal RecHit iphi E>1.0 GeV",
154  72,0.5,72.5);
155  h_rechitieta_25 = ib.book1D("HcalRecHitIeta25",
156  "Hcal RecHit ieta E>2.5 GeV",
157  83,-41.5,41.5);
158  h_rechitiphi_25 = ib.book1D("HcalRecHitIphi25",
159  "Hcal RecHit iphi E>2.5 GeV",
160  72,0.5,72.5);
161  h_rechitieta_100 = ib.book1D("HcalRecHitIeta100",
162  "Hcal RecHit ieta E>10.0 GeV",
163  83,-41.5,41.5);
164  h_rechitiphi_100 = ib.book1D("HcalRecHitIphi100",
165  "Hcal RecHit iphi E>10.0 GeV",
166  72,0.5,72.5);
167 
168 
169 
170  h_LumiPlot_LS_allevents = ib.book1D("AllEventsPerLS",
171  "LS # of all events",
172  NLumiBlocks_,0.5,NLumiBlocks_+0.5);
173  h_LumiPlot_BX_allevents = ib.book1D("BX_allevents",
174  "BX # of all events",
175  3600,0,3600);
176  h_LumiPlot_MinTime_vs_MinHT = ib.book2D("MinTime_vs_MinSumET",
177  "Energy-Weighted Time vs Min (HF+,HF-) Scalar Sum ET;min Sum ET(GeV);time(ns)",
178  100,0,10,80,-40,40);
179 
180  h_LumiPlot_timeHT_HFM = ib.book2D("HFM_Time_vs_SumET",
181  "Energy-Weighted Time vs HFMinus Scalar Sum ET;Sum ET(GeV);time(ns)",
182  100,0,10,80,-40,40);
183 
184  h_LumiPlot_timeHT_HFP = ib.book2D("HFP_Time_vs_SumET",
185  "Energy-Weighted Time vs HFPlus Scalar Sum ET;Sum ET(GeV);time(ns)",
186  100,0,10,80,-40,40);
187 
188 
189  ib.setCurrentFolder(subdir_+"Distributions_AllRecHits/sumplots");
190  SetupEtaPhiHists(ib,SumEnergyByDepth,"RecHit Summed Energy","GeV");
191  SetupEtaPhiHists(ib,SqrtSumEnergy2ByDepth,"RecHit Sqrt Summed Energy2","GeV");
192  SetupEtaPhiHists(ib,SumTimeByDepth,"RecHit Summed Time","nS");
193 
194  // Histograms for events that passed MinBias triggers
195  ib.setCurrentFolder(subdir_+"Distributions_PassedMinBias");
196 
197  h_HBP_weightedTime = ib.book1D("WeightedTime_HBP","Weighted Time for HBP",
198  300,-150,150);
199  h_HBM_weightedTime = ib.book1D("WeightedTime_HBM","Weighted Time for HBM",
200  300,-150,150);
201  h_HEP_weightedTime = ib.book1D("WeightedTime_HEP","Weighted Time for HEP",
202  300,-150,150);
203  h_HEM_weightedTime = ib.book1D("WeightedTime_HEM","Weighted Time for HEM",
204  300,-150,150);
205  h_HFP_weightedTime = ib.book1D("WeightedTime_HFP","Weighted Time for HFP",
206  300,-150,150);
207  h_HFM_weightedTime = ib.book1D("WeightedTime_HFM","Weighted Time for HFM",
208  300,-150,150);
209 
210  h_HFtimedifference = ib.book1D("HFweightedtimeDifference",
211  "Energy-Weighted time difference between HF+ and HF- passing MinBias (no HT cut)",
212  251,-250.5,250.5);
213  h_HEtimedifference = ib.book1D("HEweightedtimeDifference",
214  "Energy-Weighted time difference between HE+ and HE- passing MinBias (no HT cut)",
215  251,-250.5,250.5);
216 
217  HFP_HFM_Energy = ib.book2D("HFP_HFM_Energy",
218  "HFP VS HFM Energy; Total Energy in HFMinus (TeV); Total Energy in HFPlus (TeV)",
219  100,0,100, 100,0,100);
220 
221  // Would these work better as 2D plots?
222  h_HFenergydifference = ib.book1D("HFenergyDifference",
223  "Sum(E_HFPlus - E_HFMinus)/Sum(E_HFPlus + E_HFMinus)",
224  200,-1,1);
225  h_HEenergydifference = ib.book1D("HEenergyDifference",
226  "Sum(E_HEPlus - E_HEMinus)/Sum(E_HEPlus + E_HEMinus)",
227  200,-1,1);
228 
229  h_LumiPlot_LS_MinBiasEvents=ib.book1D("MinBiasEventsPerLS",
230  "Number of MinBias Events vs LS (HT cut and HFM-HFP time cut)",
231  NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
232  h_LumiPlot_LS_MinBiasEvents_notimecut=ib.book1D("MinBiasEventsPerLS_notimecut",
233  "Number of Events with MinBias vs LS (HFM,HFP HT>1,no time cut)",
234  NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
235 
236  h_LumiPlot_SumHT_HFPlus_vs_HFMinus = ib.book2D("SumHT_plus_minus",
237  "HF+ Sum HT vs HF- Sum HT",60,0,30,60,0,30);
238  h_LumiPlot_SumEnergy_HFPlus_vs_HFMinus = ib.book2D("SumEnergy_plus_minus",
239  "HF+ Sum Energy vs HF- Sum Energy",
240  60,0,150,60,0,150);
241  h_LumiPlot_timeHFPlus_vs_timeHFMinus = ib.book2D("timeHFplus_vs_timeHFminus",
242  "Energy-weighted time average of HF+ vs HF-",
243  60,-60,60,60,-60,60);
244  h_LumiPlot_BX_MinBiasEvents = ib.book1D("BX_MinBias_Events_TimeCut",
245  "BX # of MinBias events (HFM & HFP HT>1 & HFM-HFP time cut)",
246  3600,0,3600);
247  h_LumiPlot_BX_MinBiasEvents_notimecut = ib.book1D("BX_MinBias_Events_notimecut",
248  "BX # of MinBias events (HFM,HFP HT>1, no time cut)",
249  3600,0,3600);
250  // threshold plots must pass MinBias Trigger
251  SetupEtaPhiHists(ib,OccupancyThreshByDepth,"Above Threshold RecHit Occupancy","");
252  h_rechitieta_thresh = ib.book1D("HcalRecHitIeta_thresh",
253  "Hcal RecHit ieta above energy and ET threshold",
254  83,-41.5,41.5);
255  h_rechitiphi_thresh = ib.book1D("HcalRecHitIphi_thresh",
256  "Hcal RecHit iphi above energy and ET threshold",
257  72,0.5,72.5);
258 
259  ib.setCurrentFolder(subdir_+"Distributions_PassedMinBias/sumplots");
260  SetupEtaPhiHists(ib,SumEnergyThreshByDepth,"Above Threshold RecHit Summed Energy","GeV");
261  SetupEtaPhiHists(ib,SumTimeThreshByDepth,"Above Threshold RecHit Summed Time","nS");
262  SetupEtaPhiHists(ib,SqrtSumEnergy2ThreshByDepth,"Above Threshold RecHit Sqrt Summed Energy2","GeV");
263 
264  ib.setCurrentFolder(subdir_+"Distributions_PassedMinBias/rechit_1D_plots");
265  h_HBThreshTime=ib.book1D("HB_time_thresh",
266  "HB RecHit Time Above Threshold",
268  h_HBThreshOccupancy=ib.book1D("HB_occupancy_thresh",
269  "HB RecHit Occupancy Above Threshold",260,-0.5,2599.5);
270  h_HEThreshTime=ib.book1D("HE_time_thresh",
271  "HE RecHit Time Above Threshold",
273  h_HEThreshOccupancy=ib.book1D("HE_occupancy_thresh",
274  "HE RecHit Occupancy Above Threshold",260,-0.5,2599.5);
275  h_HOThreshTime=ib.book1D("HO_time_thresh",
276  "HO RecHit Time Above Threshold",
278  h_HOThreshOccupancy=ib.book1D("HO_occupancy_thresh",
279  "HO RecHit Occupancy Above Threshold",217,-0.5,2169.5);
280  h_HFThreshTime=ib.book1D("HF_time_thresh",
281  "HF RecHit Time Above Threshold",
283  h_HFThreshOccupancy=ib.book1D("HF_occupancy_thresh",
284  "HF RecHit Occupancy Above Threshold",
285  173,-0.5,1729.5);
286 
287  // Histograms for events that did passed Hcal-specfied HLT triggers
288  ib.setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers");
289 
290  h_LumiPlot_BX_HcalHLTEvents = ib.book1D("BX_HcalHLT_Events_TimeCut",
291  "BX # of HcalHLT events (HFM & HFP HT>1 & HFM-HFP time cut)",
292  3600,0,3600);
293  h_LumiPlot_BX_HcalHLTEvents_notimecut = ib.book1D("BX_HcalHLT_Events_notimecut",
294  "BX # of HcalHLT events (HFM,HFP HT>1, no time cut)",
295  3600,0,3600);
296  h_LumiPlot_LS_HcalHLTEvents=ib.book1D("HcalHLTEventsPerLS",
297  "Number of HcalHLT Events vs LS (HT cut and HFM-HFP time cut)",
298  NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
299  h_LumiPlot_LS_HcalHLTEvents_notimecut=ib.book1D("HcalHLTEventsPerLS_notimecut",
300  "Number of Events with HcalHLT vs LS (HFM,HFP HT>1,no time cut)",
301  NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
302 
303 
304  ib.setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers/");
305  h_HF_HcalHLT_weightedtimedifference = ib.book1D("HF_HcalHLT_weightedtimeDifference",
306  "Energy-Weighted time difference between HF+ and HF- Hcal HLT",
307  251,-250.5,250.5);
308  h_HE_HcalHLT_weightedtimedifference = ib.book1D("HE_HcalHLT_weightedtimeDifference",
309  "Energy-Weighted time difference between HE+ and HE- Hcal HLT",
310  251,-250.5,250.5);
311  h_HF_HcalHLT_energydifference = ib.book1D("HF_HcalHLT_energyDifference",
312  "Sum(E_HFPlus - E_HFMinus)/Sum(E_HFPlus + E_HFMinus)",
313  200,-1,1);
314  h_HE_HcalHLT_energydifference = ib.book1D("HE_HcalHLT_energyDifference",
315  "Sum(E_HEPlus - E_HEMinus)/Sum(E_HEPlus + E_HEMinus)",
316  200,-1,1);
317 
318  // Do we want separate directories for Minbias, other flags at some point?
319  ib.setCurrentFolder(subdir_+"AnomalousCellFlags");// HB Flag Histograms
320 
321 
322  h_HFLongShort_vs_LS=ib.book1D("HFLongShort_vs_LS",
323  "HFLongShort Flags vs Lumi Section",
324  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
325  h_HFDigiTime_vs_LS=ib.book1D("HFDigiTime_vs_LS",
326  "HFDigiTime Flags vs Lumi Section",
327  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
328  h_HBHEHPDMult_vs_LS=ib.book1D("HBHEHPDMult_vs_LS",
329  "HBHEHPDMult Flags vs Lumi Section",
330  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
331  h_HBHEPulseShape_vs_LS=ib.book1D("HBHEPulseShape_vs_LS",
332  "HBHEPulseShape Flags vs Lumi Section",
333  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
334 
335  h_HF_FlagCorr=ib.book2D("HF_FlagCorrelation",
336  "HF LongShort vs. DigiTime flags; DigiTime; LongShort",
337  2,-0.5,1.5,2,-0.5,1.5);
338  h_HF_FlagCorr->setBinLabel(1,"OFF",1);
339  h_HF_FlagCorr->setBinLabel(2,"ON",1);
340  h_HF_FlagCorr->setBinLabel(1,"OFF",2);
341  h_HF_FlagCorr->setBinLabel(2,"ON",2);
342 
343  h_HBHE_FlagCorr=ib.book2D("HBHE_FlagCorrelation",
344  "HBHE HpdHitMultiplicity vs. PulseShape flags; PulseShape; HpdHitMultiplicity",
345  2,-0.5,1.5,2,-0.5,1.5);
346  h_HBHE_FlagCorr->setBinLabel(1,"OFF",1);
347  h_HBHE_FlagCorr->setBinLabel(2,"ON",1);
348  h_HBHE_FlagCorr->setBinLabel(1,"OFF",2);
349  h_HBHE_FlagCorr->setBinLabel(2,"ON",2);
350 
351  h_FlagMap_HPDMULT=ib.book2D("FlagMap_HPDMULT",
352  "RBX Map of HBHEHpdHitMultiplicity Flags;RBX;RM",
353  72,-0.5,71.5,4,0.5,4.5);
354  h_FlagMap_PULSESHAPE=ib.book2D("FlagMap_PULSESHAPE",
355  "RBX Map of HBHEPulseShape Flags;RBX;RM",
356  72,-0.5,71.5,4,0.5,4.5);
357  h_FlagMap_DIGITIME=ib.book2D("FlagMap_DIGITIME",
358  "RBX Map of HFDigiTime Flags;RBX;RM",
359  24,131.5,155.5,4,0.5,4.5);
360  h_FlagMap_LONGSHORT=ib.book2D("FlagMap_LONGSHORT",
361  "RBX Map of HFLongShort Flags;RBX;RM",
362  24,131.5,155.5,4,0.5,4.5);
363 
364  h_FlagMap_TIMEADD=ib.book2D("FlagMap_TIMEADD",
365  "RBX Map of Timing Added Flags;RBX;RM",
366  156,-0.5,155.5,4,0.5,4.5);
367  h_FlagMap_TIMESUBTRACT=ib.book2D("FlagMap_TIMESUBTRACT",
368  "RBX Map of Timing Subtracted Flags;RBX;RM",
369  156,-0.5,155.5,4,0.5,4.5);
370  h_FlagMap_TIMEERROR=ib.book2D("FlagMap_TIMEERROR",
371  "RBX Map of Timing Error Flags;RBX;RM",
372  156,-0.5,155.5,4,0.5,4.5);
373 
374  h_HBflagcounter=ib.book1D("HBflags","HB flags",32,-0.5,31.5);
381  // 2-bit timing counter
384  //3-bit timing shape cut
388 
389  // common flags
395 
396  // HE Flag Histograms
397  h_HEflagcounter=ib.book1D("HEflags","HE flags",32,-0.5,31.5);
404  // 2-bit timing counter
407  //3-bit timing shape cut
416 
417  // HO Flag Histograms
418  h_HOflagcounter=ib.book1D("HOflags","HO flags",32,-0.5,31.5);
424 
425  // HF Flag Histograms
426  h_HFflagcounter=ib.book1D("HFflags","HF flags",32,-0.5,31.5);
435 
436  h_HBflagcounter->getTH1F()->LabelsOption("v");
437  h_HEflagcounter->getTH1F()->LabelsOption("v");
438  h_HOflagcounter->getTH1F()->LabelsOption("v");
439  h_HFflagcounter->getTH1F()->LabelsOption("v");
440 
441 
442  // Diagnostic plots are currently filled for all rechits (no trigger/threshold requirement)
443  // hb
444  ib.setCurrentFolder(subdir_+"diagnostics/hb");
445 
446  h_HBTimeVsEnergy=ib.book2D("HBTimeVsEnergy","HB Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
447 
448  h_HBsizeVsLS=ib.bookProfile("HBRecHitsVsLB","HB RecHits vs Luminosity Block",
449  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
450  100,0,10000);
451 
452  h_HBTime=ib.book1D("HB_time","HB RecHit Time",
454  h_HBOccupancy=ib.book1D("HB_occupancy",
455  "HB RecHit Occupancy",260,-0.5,2599.5);
456 
457  //he
458  ib.setCurrentFolder(subdir_+"diagnostics/he");
459 
460  h_HETimeVsEnergy=ib.book2D("HETimeVsEnergy","HE Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
461 
462  h_HEsizeVsLS=ib.bookProfile("HERecHitsVsLB","HE RecHits vs Luminosity Block",
463  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
464  100,0,10000);
465 
466  h_HETime=ib.book1D("HE_time","HE RecHit Time",
468  h_HEOccupancy=ib.book1D("HE_occupancy","HE RecHit Occupancy",260,-0.5,2599.5);
469 
470  // ho
471  ib.setCurrentFolder(subdir_+"diagnostics/ho");
472 
473  h_HOTimeVsEnergy=ib.book2D("HOTimeVsEnergy","HO Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
474 
475  h_HOsizeVsLS=ib.bookProfile("HORecHitsVsLB","HO RecHits vs Luminosity Block",
476  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
477  100,0,10000);
478  h_HOTime=ib.book1D("HO_time",
479  "HO RecHit Time",
481  h_HOOccupancy=ib.book1D("HO_occupancy",
482  "HO RecHit Occupancy",217,-0.5,2169.5);
483 
484  // hf
485  ib.setCurrentFolder(subdir_+"diagnostics/hf");
486 
487  h_HFTimeVsEnergy=ib.book2D("HFTimeVsEnergy","HF Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
488 
489  h_HFsizeVsLS=ib.bookProfile("HFRecHitsVsLB",
490  "HF RecHits vs Luminosity Block",
491  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
492  100, 0,10000);
493  h_HFTime=ib.book1D("HF_time","HF RecHit Time",
495  h_HFOccupancy=ib.book1D("HF_occupancy","HF RecHit Occupancy",173,-0.5,1729.5);
496 
497  return;
498 } //void HcalRecHitMonitor::setup(...)
499 
501 {
502 
503  if (debug_>0) std::cout <<"HcalRecHitMonitor::bookHistograms(): task = '"<<subdir_<<"'"<<std::endl;
505  if (tevt_==0) // create histograms, if they haven't been created already
506  this->setup(ib);
507  // Clear histograms at the start of each run if not merging runs
508  if (mergeRuns_==false)
509  this->reset();
510 
511  if (tevt_!=0) return;
512  // create histograms displaying trigger parameters? Specify names?
513  ib.setCurrentFolder(subdir_+"rechit_parameters");
514  std::string tnames="";
515  if (HcalHLTBits_.size()>0)
516  tnames=HcalHLTBits_[0];
517  for (unsigned int i=1;i<HcalHLTBits_.size();++i)
518  tnames=tnames + " OR " + HcalHLTBits_[i];
519  ib.bookString("HcalHLTriggerRequirements",tnames);
520  tnames="";
521  if (MinBiasHLTBits_.size()>0)
522  tnames=MinBiasHLTBits_[0];
523  for (unsigned int i=1;i<MinBiasHLTBits_.size();++i)
524  tnames=tnames + " OR " + MinBiasHLTBits_[i];
525  ib.bookString("MinBiasHLTriggerRequirements",tnames);
526  return;
527 
528 } //void HcalRecHitMonitor::bookHistograms(...)
529 
530 
532 {
533  if (debug_>0) std::cout <<"HcalRecHitMonitor::endRun(): task = '"<<subdir_<<"'"<<std::endl;
534 
535  //Any special fill calls needed? Shouldn't be necessary; last endLuminosityBlock should do necessary fills
536 } // void HcalRecHitMonitor::endrun(...)
537 
538 
539 /* --------------------------- */
540 
542 {
543  // REIMPLEMENT FUNCTIONALITY WITHOUT USING GETTER
544  /*std::vector<MonitorElement*> hists = dbe_->getAllContents(subdir_);
545  for (unsigned int i=0;i<hists.size();++i)
546  {
547  if (hists[i]->kind()==MonitorElement::DQM_KIND_TH1F ||
548  hists[i]->kind()==MonitorElement::DQM_KIND_TH2F ||
549  hists[i]->kind()==MonitorElement::DQM_KIND_TPROFILE)
550  hists[i]->Reset();
551  }*/
552 
553  h_rechitieta->Reset();
554  h_rechitiphi->Reset();
555 
564 
567 
568  h_HBsizeVsLS->Reset();
569  h_HEsizeVsLS->Reset();
570  h_HOsizeVsLS->Reset();
571  h_HFsizeVsLS->Reset();
572 
573  h_HBTime->Reset();
575  h_HBOccupancy->Reset();
577 
578  h_HETime->Reset();
580  h_HEOccupancy->Reset();
582 
583  h_HOTime->Reset();
585  h_HOOccupancy->Reset();
587 
588  h_HFTime->Reset();
590  h_HFOccupancy->Reset();
592 
597 
605 
610 
611  h_HF_FlagCorr->Reset();
613 
618 
623 
629 
632 
634 
640 
644 
652 
658 
659 
660 }
661 
663 {
664  if (!enableCleanup_) return;
666  this->cleanup();
667 }
668 
669 
670 /* --------------------------------- */
671 
672 /*void HcalRecHitMonitor::cleanup()
673 {
674  //Add code to clean out subdirectories
675  if (!enableCleanup_) return;
676  if (dbe_)
677  {
678  dbe_->setCurrentFolder(subdir_); dbe_->removeContents();
679  dbe_->setCurrentFolder(subdir_+"rechit_parameters"); dbe_->removeContents();
680  dbe_->setCurrentFolder(subdir_+"rechit_parameters/thresholds"); dbe_->removeContents();
681  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits"); dbe_->removeContents();
682  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits/sumplots"); dbe_->removeContents();
683  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias"); dbe_->removeContents();
684  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/sumplots"); dbe_->removeContents();
685  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers"); dbe_->removeContents();
686  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers/passedTechTriggers/"); dbe_->removeContents();
687 
688  dbe_->setCurrentFolder(subdir_+"AnomalousCellFlags"); dbe_->removeContents();
689  dbe_->setCurrentFolder(subdir_+"diagnostics/hb"); dbe_->removeContents();
690  dbe_->setCurrentFolder(subdir_+"diagnostics/he"); dbe_->removeContents();
691  dbe_->setCurrentFolder(subdir_+"diagnostics/ho"); dbe_->removeContents();
692  dbe_->setCurrentFolder(subdir_+"diagnostics/hf"); dbe_->removeContents();
693  }
694  return;
695 } */ // void HcalRecHitMonitor::cleanup()
696 
697 /* -------------------------------- */
698 
700 {
701  getLogicalMap(s);
702  if (debug_>0) std::cout <<"HcalRecHitMonitor::analyze; debug = "<<debug_<<std::endl;
703 
705  if (!IsAllowedCalibType()) return;
706  if (LumiInOrder(e.luminosityBlock())==false) return;
707 
708  // Get objects
712 
713  if (!(e.getByToken(tok_hbhe_,hbhe_rechit)))
714  {
715  edm::LogWarning("HcalHotCellMonitor")<< hbheRechitLabel_<<" hbhe_rechit not available";
716  return;
717  }
718 
719  if (!(e.getByToken(tok_hf_,hf_rechit)))
720  {
721  edm::LogWarning("HcalHotCellMonitor")<< hfRechitLabel_<<" hf_rechit not available";
722  return;
723  }
724 
725  if (!(e.getByToken(tok_ho_,ho_rechit)))
726  {
727  edm::LogWarning("HcalHotCellMonitor")<< hoRechitLabel_<<" ho_rechit not available";
728  return;
729  }
730 
731 
734  processEvent(*hbhe_rechit, *ho_rechit, *hf_rechit, e.bunchCrossing(), e);
735 
736 // HcalBaseDQMonitor::analyze(e,s);
737 } // void HcalRecHitMonitor::analyze()
738 
739 
741  const HORecHitCollection& hoHits,
742  const HFRecHitCollection& hfHits,
743  int BCN,
744  const edm::Event & iEvent
745  )
746 {
747 
748 
749  if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent> Processing event..."<<std::endl;
750 
751 
752  bool passedHcalHLT=false;
753  bool passedMinBiasHLT=false;
754 
756  if (!(iEvent.getByToken(tok_trigger_,hltRes)))
757  {
758  if (debug_>0) edm::LogWarning("HcalRecHitMonitor")<<" Could not get HLT results with tag "<<hltresultsLabel_<<std::endl;
759  }
760  else
761  {
762  const edm::TriggerNames & triggerNames = iEvent.triggerNames(*hltRes);
763  const unsigned int nTrig(triggerNames.size());
764  for (unsigned int i=0;i<nTrig;++i)
765  {
766  // trigger decision is based on 'OR' of any specified trigger names
767  for (unsigned int k=0;k<HcalHLTBits_.size();++k)
768  {
769  // if (triggerNames.triggerName(i)==HcalHLTBits_[k] && hltRes->accept(i))
770  if (triggerNames.triggerName(i).find(HcalHLTBits_[k])!=std::string::npos && hltRes->accept(i))
771  {
772  passedHcalHLT=true;
773  break;
774  }
775  }
776  // repeat for minbias triggers
777  for (unsigned int k=0;k<MinBiasHLTBits_.size();++k)
778  {
779  // if (triggerNames.triggerName(i)==MinBiasHLTBits_[k] && hltRes->accept(i))
780  if (triggerNames.triggerName(i).find(MinBiasHLTBits_[k])!=std::string::npos && hltRes->accept(i))
781  {
782  passedMinBiasHLT=true;
783  break;
784  }
785  }
786  }
787  } //else
788 
789  if (debug_>2 && passedHcalHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed Hcal HLT trigger "<<std::endl;
790  if (debug_>2 && passedMinBiasHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed MinBias HLT trigger "<<std::endl;
791 
792  h_TriggeredEvents->Fill(0); // all events
793  if (passedMinBiasHLT) h_TriggeredEvents->Fill(1); // Minbias;
794  if (passedHcalHLT) h_TriggeredEvents->Fill(2); // hcal HLT
795  processEvent_rechit(hbHits, hoHits, hfHits,passedHcalHLT,passedMinBiasHLT,BCN);
796 
797  return;
798 } // void HcalRecHitMonitor::processEvent(...)
799 
800 
801 /* --------------------------------------- */
802 
803 
805  const HORecHitCollection& hoHits,
806  const HFRecHitCollection& hfHits,
807  bool passedHcalHLT,
808  bool passedMinBiasHLT,
809  int BCN)
810 {
811  // Gather rechit info
812 
813  //const float area[]={0.111,0.175,0.175,0.175,0.175,0.175,0.174,0.178,0.172,0.175,0.178,0.346,0.604};
814 
815  if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent_rechitenergy> Processing rechits..."<<std::endl;
816 
817  // loop over HBHE
818 
819  int hbocc=0;
820  int heocc=0;
821  int hboccthresh=0;
822  int heoccthresh=0;
823 
824  double HtPlus =0, HtMinus=0;
825  double HFePlus=0, HFeMinus=0;
826  double HBePlus=0, HBeMinus=0;
827  double HEePlus=0, HEeMinus=0;
828  double HFtPlus=0, HFtMinus=0;
829  double HBtPlus=0, HBtMinus=0;
830  double HEtPlus=0, HEtMinus=0;
831 
832  int hbpocc=0, hbmocc=0, hepocc=0, hemocc=0, hfpocc=0, hfmocc=0;
833 
834  for (unsigned int i=0;i<4;++i)
835  {
836  OccupancyByDepth.depth[i]->update();
837  OccupancyThreshByDepth.depth[i]->update();
838  SumEnergyByDepth.depth[i]->update();
839  SqrtSumEnergy2ByDepth.depth[i]->update();
840  SumTimeByDepth.depth[i]->update();
841  }
842 
847 
848 
849  for (HBHERecHitCollection::const_iterator HBHEiter=hbheHits.begin(); HBHEiter!=hbheHits.end(); ++HBHEiter)
850  { // loop over all hits
851  float en = HBHEiter->energy();
852  float ti = HBHEiter->time();
853  HcalDetId id(HBHEiter->detid().rawId());
854  int ieta = id.ieta();
855  int iphi = id.iphi();
856  int depth = id.depth();
857 
858  if (en>0.5)
859  {
860  h_rechitieta_05->Fill(ieta);
861  h_rechitiphi_05->Fill(iphi);
862  if (en>1.)
863  {
864  h_rechitieta_10->Fill(ieta);
865  h_rechitiphi_10->Fill(iphi);
866  if (en>2.5)
867  {
868  h_rechitieta_25->Fill(ieta);
869  h_rechitiphi_25->Fill(iphi);
870  if (en>10.)
871  {
872  h_rechitieta_100->Fill(ieta);
873  h_rechitiphi_100->Fill(iphi);
874  }
875  }
876  }
877  }
878 
879 
880 
881  HcalSubdetector subdet = id.subdet();
882  double fEta=fabs(0.5*(theHBHEEtaBounds[abs(ieta)-1]+theHBHEEtaBounds[abs(ieta)]));
883 
884  int calcEta = CalcEtaBin(subdet,ieta,depth);
885  int rbxindex=logicalMap_->getHcalFrontEndId(HBHEiter->detid()).rbxIndex();
886  int rm= logicalMap_->getHcalFrontEndId(HBHEiter->detid()).rm();
887 
888  // Fill HBHE flag plots
890  HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity));
891 
892  if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity))
893  {
894  h_FlagMap_HPDMULT->Fill(rbxindex,rm);
896  }
897  if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEPulseShape))
898  {
899  h_FlagMap_PULSESHAPE->Fill(rbxindex,rm);
901  }
902  if (HBHEiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
903  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
904  else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
905  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
906  else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
907  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
908 
909  if (subdet==HcalBarrel)
910  {
911  if (en>HBenergyThreshold_)
912  h_HBTimeVsEnergy->Fill(en,ti);
913  //Looping over HB searching for flags --- cris
914  for (int f=0;f<32;f++)
915  {
916  // Let's display HSCP just to see if these bits are set
917  /*
918  if (f == HcalCaloFlagLabels::HSCP_R1R2) continue;
919  if (f == HcalCaloFlagLabels::HSCP_FracLeader) continue;
920  if (f == HcalCaloFlagLabels::HSCP_OuterEnergy) continue;
921  if (f == HcalCaloFlagLabels::HSCP_ExpFit) continue;
922  */
923  if (HBHEiter->flagField(f))
924  ++HBflagcounter_[f];
925  }
926  ++occupancy_[calcEta][iphi-1][depth-1];
927  energy_[calcEta][iphi-1][depth-1]+=en;
928  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
929  time_[calcEta][iphi-1][depth-1]+=ti;
930  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
931  h_HBTime->Fill(ti);
932  else
933  ++HBtime_[int(ti-RECHITMON_TIME_MIN)];
934  ++hbocc;
935 
936  // Threshold plots; require E> threshold and minbias trigger
937  if (
938  en>=HBenergyThreshold_ &&
939  en/cosh(fEta)>=HBETThreshold_
940  )
941  {
942  if (passedMinBiasHLT==true)
943  {
944  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
945  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
946  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
947  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
948 
949  ++hboccthresh;
950  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
951  h_HBThreshTime->Fill(ti);
952  else
954  }
955 
956  if (ieta>0)
957  {
958  HBePlus+=en;
959  HBtPlus+=ti*en;
960  hbpocc++;
961  }
962  else
963  {
964  HBeMinus+=en;
965  HBtMinus+=ti*en;
966  hbmocc++;
967  }
968  } // if (HB en>thresh, ET>thresh)
969  } // if (id.subdet()==HcalBarrel)
970 
971  else if (subdet==HcalEndcap)
972  {
973  if (en>HEenergyThreshold_)
974  h_HETimeVsEnergy->Fill(en,ti);
975  //Looping over HE searching for flags --- cris
976  for (int f=0;f<32;f++)
977  {
978  if (HBHEiter->flagField(f))
979  ++HEflagcounter_[f];
980  }
981 
982  ++occupancy_[calcEta][iphi-1][depth-1];
983  energy_[calcEta][iphi-1][depth-1]+=en;
984  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
985  time_[calcEta][iphi-1][depth-1]+=ti;
986 
987  ++heocc;
988  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
989  h_HETime->Fill(ti);
990  else
991  ++HEtime_[int(ti-RECHITMON_TIME_MIN)];
992 
993  // Threshold plots require e>E_thresh, ET>ET_thresh
994  if (en>=HEenergyThreshold_
995  && en/cosh(fEta)>=HEETThreshold_
996  )
997  {
998  // occupancy plots also require passedMinBiasHLT
999  if (passedMinBiasHLT==true)
1000  {
1001  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
1002  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
1003  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
1004  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
1005  ++heoccthresh;
1006  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1007  h_HEThreshTime->Fill(ti);
1008  else
1010  }
1011  // ePlus, tPlus calculated regardless of trigger
1012  if (ieta>0)
1013  {
1014  HEePlus+=en;
1015  HEtPlus+=ti*en;
1016  hepocc++;
1017  }
1018  else
1019  {
1020  HEeMinus+=en;
1021  HEtMinus+=ti*en;
1022  hemocc++;
1023  }
1024  } // if (en>=HEenergyThreshold_ && ET>threshold)
1025 
1026  } // else if (id.subdet()==HcalEndcap)
1027 
1028  } //for (HBHERecHitCollection::const_iterator HBHEiter=...)
1029 
1030  // Calculate normalized time
1031  HEePlus>0 ? HEtPlus/=HEePlus : HEtPlus=10000;
1032  HEeMinus>0 ? HEtMinus/=HEeMinus : HEtMinus=-10000;
1033  HBePlus>0 ? HBtPlus/=HBePlus : HBtPlus=10000;
1034  HBeMinus>0 ? HBtMinus/=HBeMinus : HBtMinus=-10000;
1035 
1036  ++HB_occupancy_[hbocc/10];
1037  ++HE_occupancy_[heocc/10];
1038  ++HB_occupancy_thresh_[hboccthresh/10];
1039  ++HE_occupancy_thresh_[heoccthresh/10];
1040  h_HBsizeVsLS->Fill(currentLS,hbocc);
1041  h_HEsizeVsLS->Fill(currentLS,heocc);
1042 
1043  // loop over HO
1044 
1045  h_HOsizeVsLS->Fill(currentLS,hoHits.size());
1046  int hoocc=0;
1047  int hooccthresh=0;
1048  for (HORecHitCollection::const_iterator HOiter=hoHits.begin(); HOiter!=hoHits.end(); ++HOiter)
1049  { // loop over all hits
1050  float en = HOiter->energy();
1051  float ti = HOiter->time();
1052  if (en>HOenergyThreshold_)
1053  h_HOTimeVsEnergy->Fill(en,ti);
1054 
1055  HcalDetId id(HOiter->detid().rawId());
1056  int ieta = id.ieta();
1057  int iphi = id.iphi();
1058  int depth = id.depth();
1059 
1060  if (en>0.5)
1061  {
1062  h_rechitieta_05->Fill(ieta);
1063  h_rechitiphi_05->Fill(iphi);
1064  if (en>1.)
1065  {
1066  h_rechitieta_10->Fill(ieta);
1067  h_rechitiphi_10->Fill(iphi);
1068  if (en>2.5)
1069  {
1070  h_rechitieta_25->Fill(ieta);
1071  h_rechitiphi_25->Fill(iphi);
1072  if (en>10.)
1073  {
1074  h_rechitieta_100->Fill(ieta);
1075  h_rechitiphi_100->Fill(iphi);
1076  }
1077  }
1078  }
1079  }
1080 
1081 
1082 
1083  int calcEta = CalcEtaBin(HcalOuter,ieta,depth);
1084  double fEta=fabs(0.5*(theHBHEEtaBounds[abs(ieta)-1]+theHBHEEtaBounds[abs(ieta)]));
1085 
1086  int rbxindex=logicalMap_->getHcalFrontEndId(HOiter->detid()).rbxIndex();
1087  int rm= logicalMap_->getHcalFrontEndId(HOiter->detid()).rm();
1088 
1089  if (HOiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
1090  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
1091  else if (HOiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
1092  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
1093  else if (HOiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
1094  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
1095 
1096 
1097  //Looping over HO searching for flags --- cris
1098  for (int f=0;f<32;f++)
1099  {
1100  if (HOiter->flagField(f))
1101  HOflagcounter_[f]++;
1102  }
1103 
1104  ++occupancy_[calcEta][iphi-1][depth-1];
1105  energy_[calcEta][iphi-1][depth-1]+=en;
1106  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
1107  time_[calcEta][iphi-1][depth-1]+=ti;
1108  ++hoocc;
1109  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1110  h_HOTime->Fill(ti);
1111  else
1112  ++HOtime_[int(ti-RECHITMON_TIME_MIN)];
1113 
1114  // We don't calculate HOplus/HOminus values (independent of trigger), so require min bias trigger
1115  // along with E, ET thresholds directly in this HO loop:
1116 
1117  if (en>=HOenergyThreshold_
1118  && en/cosh(fEta)>=HOETThreshold_
1119  && passedMinBiasHLT==true
1120  )
1121  {
1122  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
1123  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
1124  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
1125  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
1126 
1127  ++hooccthresh;
1128  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1129  h_HOThreshTime->Fill(ti);
1130  else
1132  }
1133  } // loop over all HO hits
1134 
1135  ++HO_occupancy_[hoocc/10];
1136  ++HO_occupancy_thresh_[hooccthresh/10];
1137 
1138  // loop over HF
1139  h_HFsizeVsLS->Fill(currentLS,hfHits.size());
1140 
1141  HtPlus=0; HtMinus=0;
1142 
1143  int hfocc=0;
1144  int hfoccthresh=0;
1145  for (HFRecHitCollection::const_iterator HFiter=hfHits.begin(); HFiter!=hfHits.end(); ++HFiter)
1146  { // loop over all hits
1147  float en = HFiter->energy();
1148  float ti = HFiter->time();
1149  if (en> HFenergyThreshold_)
1150  h_HFTimeVsEnergy->Fill(en,ti);
1151 
1152  HcalDetId id(HFiter->detid().rawId());
1153  int ieta = id.ieta();
1154  int iphi = id.iphi();
1155  int depth = id.depth();
1156 
1157  if (en>0.5)
1158  {
1159  h_rechitieta_05->Fill(ieta);
1160  h_rechitiphi_05->Fill(iphi);
1161  if (en>1.)
1162  {
1163  h_rechitieta_10->Fill(ieta);
1164  h_rechitiphi_10->Fill(iphi);
1165  if (en>2.5)
1166  {
1167  h_rechitieta_25->Fill(ieta);
1168  h_rechitiphi_25->Fill(iphi);
1169  if (en>10.)
1170  {
1171  h_rechitieta_100->Fill(ieta);
1172  h_rechitiphi_100->Fill(iphi);
1173  }
1174  }
1175  }
1176  }
1177 
1178  double fEta=fabs(0.5*(theHFEtaBounds[abs(ieta)-29]+theHFEtaBounds[abs(ieta)-28]));
1179  int calcEta = CalcEtaBin(HcalForward,ieta,depth);
1180 
1181  int rbxindex=logicalMap_->getHcalFrontEndId(HFiter->detid()).rbxIndex();
1182  int rm= logicalMap_->getHcalFrontEndId(HFiter->detid()).rm();
1183 
1184  h_HF_FlagCorr->Fill(HFiter->flagField(HcalCaloFlagLabels::HFDigiTime),HFiter->flagField(HcalCaloFlagLabels::HFLongShort));
1185  if (HFiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
1186  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
1187  else if (HFiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
1188  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
1189  else if (HFiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
1190  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
1191 
1192  if (HFiter->flagField(HcalCaloFlagLabels::HFDigiTime))
1193  {
1194  h_FlagMap_DIGITIME->Fill(rbxindex,rm);
1196  }
1197  if (HFiter->flagField(HcalCaloFlagLabels::HFLongShort))
1198  {
1199  h_FlagMap_LONGSHORT->Fill(rbxindex,rm);
1201  }
1202  //Looping over HF searching for flags --- cris
1203  for (int f=0;f<32;f++)
1204  {
1205  if (HFiter->flagField(f))
1206  HFflagcounter_[f]++;
1207  }
1208 
1209  // Occupancy plots, without threshold
1210  ++occupancy_[calcEta][iphi-1][depth-1];
1211  energy_[calcEta][iphi-1][depth-1]+=en;
1212  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
1213  time_[calcEta][iphi-1][depth-1]+=ti;
1214  ++hfocc;
1215  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1216  h_HFTime->Fill(ti);
1217  else
1218  ++HFtime_[int(ti-RECHITMON_TIME_MIN)];
1219 
1220  ieta>0 ? HtPlus+=en/cosh(fEta) : HtMinus+=en/cosh(fEta); // add energy from all cells, or only those > threshold?
1221 
1222  if (en>=HFenergyThreshold_ &&
1223  en/cosh(fEta)>=HFETThreshold_
1224  )
1225  {
1226  // Occupancy plots require min bias trigger, along with thresholds exceeded
1227  if (passedMinBiasHLT)
1228  {
1229  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
1230  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
1231  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
1232  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
1233 
1234  ++hfoccthresh;
1235  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1236  h_HFThreshTime->Fill(ti);
1237  else
1239  }
1240 
1241  if (ieta>0)
1242  {
1243  HFtPlus+=en*ti;
1244  HFePlus+=en;
1245  hfpocc++;
1246  }
1247  else if (ieta<0)
1248  {
1249  HFtMinus+=en*ti;
1250  HFeMinus+=en;
1251  hfmocc++;
1252  }
1253  } // if (en>thresh, ET>thresh)
1254  } // loop over all HF hits
1255 
1256  ++HF_occupancy_[hfocc/10];
1257  ++HF_occupancy_thresh_[hfoccthresh/10];
1258 
1259 
1260  // Form event-wide variables (time averages, etc.), and plot them
1261 
1262  // Calculate weighted times. (Set tPlus, tMinus to overflow in case where total energy < 0)
1263  HFePlus>0 ? HFtPlus/=HFePlus : HFtPlus = 10000;
1264  HFeMinus>0 ? HFtMinus/=HFeMinus : HFtMinus = -10000;
1265 
1266  double mintime=99; // used to be min(tPlus,tMinus);
1267  double minHT=std::min(HtMinus,HtPlus);
1268  minHT==HtMinus ? mintime=HFtMinus : mintime = HFtPlus;
1269  //mintime = min(HFtPlus,HFtMinus); // I think we might want to use this value for mintime?
1270 
1271 
1272  h_LumiPlot_MinTime_vs_MinHT->Fill(minHT, mintime);
1273  h_LumiPlot_timeHT_HFM->Fill(HtMinus,HFtMinus);
1274  h_LumiPlot_timeHT_HFP->Fill(HtPlus,HFtPlus);
1275 
1276  if (passedMinBiasHLT==true)
1277  {
1278  h_LumiPlot_SumHT_HFPlus_vs_HFMinus->Fill(HtMinus,HtPlus);
1279  // HtMinus, HtPlus require no energy cuts for their contributing cells
1280  // HFeMinus, HFePlus require that cells be > threshold cut
1281 
1282  if (HtMinus>1 && HtPlus > 1) // is this the condition we want, or do we want hfmocc>0 && hfpocc >0?
1283  {
1284  h_LumiPlot_SumEnergy_HFPlus_vs_HFMinus->Fill(HFeMinus,HFePlus);
1285  h_LumiPlot_timeHFPlus_vs_timeHFMinus->Fill(HFtMinus,HFtPlus);
1286 
1287  h_HFP_weightedTime->Fill(HFtPlus);
1288  h_HFM_weightedTime->Fill(HFtMinus);
1289  h_HBP_weightedTime->Fill(HBtPlus);
1290  h_HBM_weightedTime->Fill(HBtMinus);
1291 
1292  h_HEP_weightedTime->Fill(HEtPlus);
1293  h_HEM_weightedTime->Fill(HEtMinus);
1294 
1295  if (hepocc>0 && hemocc>0)
1296  {
1297  h_HEtimedifference->Fill(HEtPlus-HEtMinus);
1298  if (HEePlus-HEeMinus!=0) h_HEenergydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
1299  }
1300  if (hfpocc>0 && hfmocc>0) // which condition do we want?
1301  {
1302  h_HFtimedifference->Fill((HFtPlus)-(HFtMinus));
1303  if (HFePlus+HFeMinus!=0) h_HFenergydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
1304  }
1305 
1308  if (fabs(HFtPlus-HFtMinus)<timediffThresh_)
1309  {
1312  }
1313 
1314  HFP_HFM_Energy->Fill(HFeMinus/1000., HFePlus/1000.);
1315  }
1316 
1317  if (debug_>1) std::cout <<"\t<HcalRecHitMonitor:: HF averages> TPLUS = "<<HFtPlus<<" EPLUS = "<<HFePlus<<" TMINUS = "<<HFtMinus<<" EMINUS = "<<HFeMinus<<" Weighted Time Diff = "<<((HFtPlus)-(HFtMinus))<<std::endl;
1318 
1319 
1320  } // if (passedMinBiasHLT)
1321 
1322  if (passedHcalHLT && HtMinus>1 && HtPlus> 1 )
1323  {
1324  if (hfpocc>0 && hfmocc>0)
1325  {
1326  h_HF_HcalHLT_weightedtimedifference->Fill(HFtPlus-HFtMinus);
1327  if (HFePlus+HFeMinus!=0) h_HF_HcalHLT_energydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
1328  }
1329  if (hepocc>0 && hemocc>0)
1330  {
1331  h_HE_HcalHLT_weightedtimedifference->Fill(HEtPlus-HEtMinus);
1332  if (HEePlus-HEeMinus!=0) h_HE_HcalHLT_energydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
1333  }
1334 
1337  if (fabs(HFtPlus-HFtMinus)<timediffThresh_)
1338  {
1341  }
1342  } // passsed Hcal HLT
1343 
1344  return;
1345 } // void HcalRecHitMonitor::processEvent_rechitenergy
1346 
1347 /* --------------------------------------- */
1348 
1349 
1351  const edm::EventSetup& c)
1352 
1353 {
1354  // don't fill lumi block information if it's already been filled
1355  if (LumiInOrder(lumiSeg.luminosityBlock())==false) return;
1356  fill_Nevents();
1357  return;
1358 } //endLuminosityBlock
1359 
1360 
1362 {
1363  // looking at the contents of HbFlagcounters
1364  if (debug_>0)
1365  {
1366  for (int k = 0; k < 32; k++){
1367  std::cout << "<HcalRecHitMonitor::fill_Nevents> HF Flag counter: Bin #" << k+1 << " = "<< HFflagcounter_[k] << std::endl;
1368  }
1369  }
1370 
1371  for (int i=0;i<32;i++)
1372  {
1377  HBflagcounter_[i]=0;
1378  HEflagcounter_[i]=0;
1379  HOflagcounter_[i]=0;
1380  HFflagcounter_[i]=0;
1381  }
1382 
1383  // Fill Occupancy & Sum Energy, Time plots
1384  int myieta=-1;
1385  if (ievt_>0)
1386  {
1387  for (int mydepth=0;mydepth<4;++mydepth)
1388  {
1389  for (int eta=0;eta<OccupancyByDepth.depth[mydepth]->getNbinsX();++eta)
1390  {
1391  myieta=CalcIeta(eta,mydepth+1);
1392 
1393  for (int phi=0;phi<72;++phi)
1394  {
1395  if (occupancy_[eta][phi][mydepth]>0)
1396  {
1397  h_rechitieta->Fill(myieta,occupancy_[eta][phi][mydepth]);
1398  h_rechitiphi->Fill(phi+1,occupancy_[eta][phi][mydepth]);
1399  }
1400  if (occupancy_thresh_[eta][phi][mydepth]>0)
1401  {
1402  h_rechitieta_thresh->Fill(myieta,occupancy_thresh_[eta][phi][mydepth]);
1404  }
1405  OccupancyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_[eta][phi][mydepth]);
1406  SumEnergyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_[eta][phi][mydepth]);
1407  SqrtSumEnergy2ByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_[eta][phi][mydepth]));
1408  SumTimeByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_[eta][phi][mydepth]);
1409 
1410  OccupancyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_thresh_[eta][phi][mydepth]);
1411  SumEnergyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_thresh_[eta][phi][mydepth]);
1412  SqrtSumEnergy2ThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_thresh_[eta][phi][mydepth]));
1413  SumTimeThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_thresh_[eta][phi][mydepth]);
1414  } // for (int phi=0;phi<72;++phi)
1415  } // for (int eta=0;eta<OccupancyByDepth...;++eta)
1416  } // for (int mydepth=0;...)
1417 
1426 
1427  } // if (ievt_>0)
1428 
1429  // Fill subdet plots
1430 
1431  for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1432  {
1433  if (HBtime_[i]!=0)
1434  {
1436  }
1437  if (HBtime_thresh_[i]!=0)
1438  {
1440  }
1441  if (HEtime_[i]!=0)
1442  {
1443 
1445  }
1446  if (HEtime_thresh_[i]!=0)
1447  {
1449  }
1450  if (HOtime_[i]!=0)
1451  {
1453  }
1454  if (HOtime_thresh_[i]!=0)
1455  {
1457  }
1458  if (HFtime_[i]!=0)
1459  {
1461  }
1462  if (HFtime_thresh_[i]!=0)
1463  {
1465  }
1466  } // for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1467 
1468  for (int i=0;i<260;++i)
1469  {
1470  if (HB_occupancy_[i]>0)
1471  {
1473  }
1474  if (HB_occupancy_thresh_[i]>0)
1475  {
1477  }
1478  if (HE_occupancy_[i]>0)
1479  {
1481  }
1482  if (HE_occupancy_thresh_[i]>0)
1483  {
1485  }
1486  }//for (int i=0;i<260;++i)
1487 
1488  for (int i=0;i<217;++i)
1489  {
1490  if (HO_occupancy_[i]>0)
1491  {
1493  }
1494  if (HO_occupancy_thresh_[i]>0)
1495  {
1497  }
1498  }// for (int i=0;i<217;++i)
1499 
1500  for (int i=0;i<173;++i)
1501  {
1502  if (HF_occupancy_[i]>0)
1503  {
1505  }
1506  if (HF_occupancy_thresh_[i]>0)
1507  {
1509  }
1510  }// for (int i=0;i<173;++i)
1511 
1512  //zeroCounters();
1513 
1514  if (debug_>0)
1515  std::cout <<"<HcalRecHitMonitor::fill_Nevents> FILLED REC HIT CELL PLOTS"<<std::endl;
1516 
1517 } // void HcalRecHitMonitor::fill_Nevents(void)
1518 
1519 
1521 {
1522  // Set all histogram counters back to zero
1523 
1524  for (int i=0;i<32;++i)
1525  {
1526  HBflagcounter_[i]=0;
1527  HEflagcounter_[i]=0;
1528  HOflagcounter_[i]=0;
1529  HFflagcounter_[i]=0;
1530 
1531  }
1532  // TH2F counters
1533  for (int i=0;i<85;++i)
1534  {
1535  for (int j=0;j<72;++j)
1536  {
1537  for (int k=0;k<4;++k)
1538  {
1539  occupancy_[i][j][k]=0;
1540  occupancy_thresh_[i][j][k]=0;
1541  energy_[i][j][k]=0;
1542  energy2_[i][j][k]=0;
1543  energy_thresh_[i][j][k]=0;
1544  energy2_thresh_[i][j][k]=0;
1545  time_[i][j][k]=0;
1546  time_thresh_[i][j][k]=0;
1547  }
1548  } // for (int j=0;j<PHIBINS;++j)
1549  } // for (int i=0;i<87;++i)
1550 
1551  // TH1F counters
1552 
1553  for (int i=0;i<200;++i)
1554  {
1555  HFenergyLong_[i]=0;
1557  HFenergyShort_[i]=0;
1559  }
1560 
1561  // time
1562  for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1563  {
1564  HBtime_[i]=0;
1565  HBtime_thresh_[i]=0;
1566  HEtime_[i]=0;
1567  HEtime_thresh_[i]=0;
1568  HOtime_[i]=0;
1569  HOtime_thresh_[i]=0;
1570  HFtime_[i]=0;
1571  HFtime_thresh_[i]=0;
1572  HFtimeLong_[i]=0;
1573  HFtimeLong_thresh_[i]=0;
1574  HFtimeShort_[i]=0;
1576  }
1577 
1578  // occupancy
1579  for (int i=0;i<865;++i)
1580  {
1581  if (i<260)
1582  {
1583  HB_occupancy_[i]=0;
1584  HE_occupancy_[i]=0;
1587  }
1588  if (i<218)
1589  {
1590  HO_occupancy_[i]=0;
1592  }
1593  if (i<174)
1594  {
1595  HF_occupancy_[i]=0;
1597  }
1598 
1599  HFlong_occupancy_[i] =0;
1600  HFshort_occupancy_[i]=0;
1603  } // for (int i=0;i<865;++i)
1604 
1605  return;
1606 } //void HcalRecHitMonitor::zeroCounters(void)
1607 
double HFenergyShort_[200]
MonitorElement * h_rechitieta_100
double time_[85][72][4]
double HB_occupancy_[260]
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
MonitorElement * h_HOThreshTime
bool LumiInOrder(int lumisec)
MonitorElement * h_HFP_weightedTime
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:199
MonitorElement * h_HFLongShort_vs_LS
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * h_HFtimedifference
MonitorElement * h_LumiPlot_timeHT_HFP
MonitorElement * h_HBHE_FlagCorr
int ib
Definition: cuy.py:660
MonitorElement * h_HBsizeVsLS
MonitorElement * h_LumiPlot_MinTime_vs_MinHT
double HFshort_occupancy_[865]
EtaPhiHists OccupancyThreshByDepth
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
double HFtime_thresh_[250--250]
double HOtime_thresh_[250--250]
MonitorElement * h_HF_HcalHLT_weightedtimedifference
double HBtime_thresh_[250--250]
double HF_occupancy_thresh_[174]
MonitorElement * h_HBThreshTime
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
void processEvent(const HBHERecHitCollection &hbHits, const HORecHitCollection &hoHits, const HFRecHitCollection &hfHits, int BCN, const edm::Event &iEvent)
double HFenergyLong_[200]
MonitorElement * h_FlagMap_PULSESHAPE
double HFshort_occupancy_thresh_[865]
MonitorElement * h_HBHEPulseShape_vs_LS
MonitorElement * h_HF_FlagCorr
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:446
MonitorElement * h_HOflagcounter
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
MonitorElement * h_rechitiphi_05
std::vector< int > AllowedCalibTypes_
MonitorElement * h_rechitieta_10
double HO_occupancy_thresh_[218]
MonitorElement * h_LumiPlot_timeHFPlus_vs_timeHFMinus
MonitorElement * h_HFThreshTime
MonitorElement * h_rechitieta_25
virtual void cleanup(void)
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
std::vector< HBHERecHit >::const_iterator const_iterator
MonitorElement * h_rechitiphi_10
int bunchCrossing() const
Definition: EventBase.h:62
MonitorElement * bookString(Args &&...args)
Definition: DQMStore.h:97
MonitorElement * h_HFTime
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * h_HFThreshOccupancy
double HBtime_[250--250]
MonitorElement * h_FlagMap_TIMEADD
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
MonitorElement * h_LumiPlot_LS_MinBiasEvents
double HEtime_thresh_[250--250]
MonitorElement * h_rechitieta
MonitorElement * h_LumiPlot_SumEnergy_HFPlus_vs_HFMinus
double HF_occupancy_[174]
edm::InputTag l1gtLabel_
MonitorElement * h_HFflagcounter
Strings::size_type size() const
Definition: TriggerNames.cc:39
edm::EDGetTokenT< HFRecHitCollection > tok_hf_
MonitorElement * h_HFM_weightedTime
void update(void)
Mark the object updated.
MonitorElement * h_HBTimeVsEnergy
void getLogicalMap(const edm::EventSetup &c)
T eta() const
edm::InputTag hfRechitLabel_
MonitorElement * h_HEOccupancy
MonitorElement * h_LumiPlot_LS_allevents
MonitorElement * h_HEtimedifference
MonitorElement * h_HEM_weightedTime
MonitorElement * h_HE_HcalHLT_weightedtimedifference
double HFtimeShort_thresh_[250--250]
double HFtimeLong_[250--250]
MonitorElement * h_FlagMap_TIMEERROR
MonitorElement * h_HF_HcalHLT_energydifference
EtaPhiHists SumEnergyByDepth
MonitorElement * h_HOThreshOccupancy
void bookHistograms(DQMStore::IBooker &ib, const edm::Run &run, const edm::EventSetup &c)
double HE_occupancy_thresh_[260]
unsigned int occupancy_[85][72][4]
MonitorElement * h_rechitiphi_100
void Fill(long long x)
MonitorElement * h_HETime
MonitorElement * h_rechitieta_thresh
LuminosityBlockNumber_t luminosityBlock() const
EtaPhiHists OccupancyByDepth
MonitorElement * h_HOOccupancy
MonitorElement * h_HFenergydifference
double time_thresh_[85][72][4]
MonitorElement * h_HEsizeVsLS
MonitorElement * h_LumiPlot_BX_MinBiasEvents_notimecut
void SetupEtaPhiHists(DQMStore::IBooker &ib, EtaPhiHists &hh, std::string Name, std::string Units)
EtaPhiHists SumTimeThreshByDepth
MonitorElement * h_HOsizeVsLS
int iEvent
Definition: GenABIO.cc:230
std::vector< MonitorElement * > depth
int CalcIeta(int subdet, int eta, int depth)
MonitorElement * h_LumiPlot_BX_HcalHLTEvents_notimecut
EtaPhiHists SqrtSumEnergy2ThreshByDepth
EtaPhiHists SumTimeByDepth
void processEvent_rechit(const HBHERecHitCollection &hbheHits, const HORecHitCollection &hoHits, const HFRecHitCollection &hfHits, bool passedHcalHLT, bool passedMinBiasHLT, int BCN)
unsigned int occupancy_thresh_[85][72][4]
double HFtimeLong_thresh_[250--250]
T sqrt(T t)
Definition: SSEVec.h:48
HcalLogicalMap * logicalMap_
MonitorElement * h_HETimeVsEnergy
MonitorElement * h_HEenergydifference
string rm
Definition: submit.py:76
MonitorElement * h_HFTimeVsEnergy
int ieta() const
get the cell ieta
Definition: HcalDetId.h:36
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
HcalSubdetector
Definition: HcalAssistant.h:31
MonitorElement * h_LumiPlot_BX_HcalHLTEvents
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int j
Definition: DBlmapReader.cc:9
double HFlong_occupancy_thresh_[865]
void setup(DQMStore::IBooker &)
MonitorElement * h_HBM_weightedTime
double f[11][100]
std::vector< std::string > HcalHLTBits_
MonitorElement * h_HFsizeVsLS
EtaPhiHists SqrtSumEnergy2ByDepth
T min(T a, T b)
Definition: MathUtil.h:58
MonitorElement * h_HBOccupancy
MonitorElement * h_HFDigiTime_vs_LS
void analyze(const edm::Event &, const edm::EventSetup &)
MonitorElement * h_HBHEHPDMult_vs_LS
double energy2_[85][72][4]
double HFtime_[250--250]
double HFtimeShort_[250--250]
MonitorElement * h_HOTime
const_iterator end() const
MonitorElement * h_rechitiphi_25
MonitorElement * h_FlagMap_TIMESUBTRACT
const HcalFrontEndId getHcalFrontEndId(const DetId &)
double energy2_thresh_[85][72][4]
MonitorElement * h_HEP_weightedTime
MonitorElement * h_FlagMap_LONGSHORT
MonitorElement * h_LumiPlot_BX_allevents
edm::InputTag hltresultsLabel_
double HOtime_[250--250]
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
double energy_thresh_[85][72][4]
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
static const double theHFEtaBounds[]
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
std::vector< std::string > MinBiasHLTBits_
MonitorElement * h_HBThreshOccupancy
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:27
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
void endRun(const edm::Run &run, const edm::EventSetup &c)
edm::EDGetTokenT< HORecHitCollection > tok_ho_
TH1F * getTH1F(void) const
MonitorElement * h_HE_HcalHLT_energydifference
double HEtime_[250--250]
MonitorElement * h_rechitiphi
edm::EDGetTokenT< edm::TriggerResults > tok_trigger_
MonitorElement * h_LumiPlot_LS_MinBiasEvents_notimecut
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
MonitorElement * h_HFOccupancy
int CalcEtaBin(int subdet, int ieta, int depth)
MonitorElement * h_rechitieta_05
#define RECHITMON_TIME_MIN
MonitorElement * h_HEflagcounter
edm::InputTag hbheRechitLabel_
MonitorElement * h_HBTime
MonitorElement * h_rechitiphi_thresh
edm::InputTag hoRechitLabel_
size_type size() const
MonitorElement * h_HBP_weightedTime
double HB_occupancy_thresh_[260]
MonitorElement * h_LumiPlot_BX_MinBiasEvents
MonitorElement * h_FlagMap_HPDMULT
#define RECHITMON_TIME_MAX
MonitorElement * h_HOTimeVsEnergy
MonitorElement * h_HEThreshTime
HcalRecHitMonitor(const edm::ParameterSet &ps)
tuple cout
Definition: gather_cfg.py:121
EtaPhiHists SumEnergyThreshByDepth
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:109
MonitorElement * h_HEThreshOccupancy
double HE_occupancy_[260]
MonitorElement * h_LumiPlot_LS_HcalHLTEvents_notimecut
double HFlong_occupancy_[865]
MonitorElement * h_LumiPlot_LS_HcalHLTEvents
static const double theHBHEEtaBounds[]
void Reset(void)
reset ME (ie. contents, errors, etc)
virtual void setup(DQMStore::IBooker &)
MonitorElement * HFP_HFM_Energy
double HO_occupancy_[218]
MonitorElement * h_FlagMap_DIGITIME
MonitorElement * h_LumiPlot_timeHT_HFM
double HFenergyShort_thresh_[200]
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double HFenergyLong_thresh_[200]
MonitorElement * h_HBflagcounter
const_iterator begin() const
Definition: Run.h:41
MonitorElement * h_TriggeredEvents
MonitorElement * h_LumiPlot_SumHT_HFPlus_vs_HFMinus
double energy_[85][72][4]
Definition: DDAxes.h:10