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  getLogicalMap(s);
701  if (debug_>0) std::cout <<"HcalRecHitMonitor::analyze; debug = "<<debug_<<std::endl;
702 
704  if (!IsAllowedCalibType()) return;
705  if (LumiInOrder(e.luminosityBlock())==false) return;
706 
707  // Get objects
711 
712  if (!(e.getByToken(tok_hbhe_,hbhe_rechit))) {
713  edm::LogWarning("HcalHotCellMonitor")<< hbheRechitLabel_<<" hbhe_rechit not available";
714  return;
715  }
716 
717  if (!(e.getByToken(tok_hf_,hf_rechit))) {
718  edm::LogWarning("HcalHotCellMonitor")<< hfRechitLabel_<<" hf_rechit not available";
719  return;
720  }
721 
722  if (!(e.getByToken(tok_ho_,ho_rechit))) {
723  edm::LogWarning("HcalHotCellMonitor")<< hoRechitLabel_<<" ho_rechit not available";
724  return;
725  }
726 
727 
730 
732  s.get<HcalRecNumberingRecord>().get(topo);
733 
734  processEvent(*hbhe_rechit, *ho_rechit, *hf_rechit, e.bunchCrossing(), e, *topo);
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  const HcalTopology& topology) {
746 
747 
748  if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent> Processing event..."<<std::endl;
749 
750 
751  bool passedHcalHLT=false;
752  bool passedMinBiasHLT=false;
753 
755  if (!(iEvent.getByToken(tok_trigger_,hltRes))) {
756  if (debug_>0) edm::LogWarning("HcalRecHitMonitor")<<" Could not get HLT results with tag "<<hltresultsLabel_<<std::endl;
757  } else {
758  const edm::TriggerNames & triggerNames = iEvent.triggerNames(*hltRes);
759  const unsigned int nTrig(triggerNames.size());
760  for (unsigned int i=0;i<nTrig;++i) {
761  // trigger decision is based on 'OR' of any specified trigger names
762  for (unsigned int k=0;k<HcalHLTBits_.size();++k) {
763  // if (triggerNames.triggerName(i)==HcalHLTBits_[k] && hltRes->accept(i))
764  if (triggerNames.triggerName(i).find(HcalHLTBits_[k])!=std::string::npos && hltRes->accept(i)) {
765  passedHcalHLT=true;
766  break;
767  }
768  }
769  // repeat for minbias triggers
770  for (unsigned int k=0;k<MinBiasHLTBits_.size();++k) {
771  // if (triggerNames.triggerName(i)==MinBiasHLTBits_[k] && hltRes->accept(i))
772  if (triggerNames.triggerName(i).find(MinBiasHLTBits_[k])!=std::string::npos && hltRes->accept(i)) {
773  passedMinBiasHLT=true;
774  break;
775  }
776  }
777  }
778  } //else
779 
780  if (debug_>2 && passedHcalHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed Hcal HLT trigger "<<std::endl;
781  if (debug_>2 && passedMinBiasHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed MinBias HLT trigger "<<std::endl;
782 
783  h_TriggeredEvents->Fill(0); // all events
784  if (passedMinBiasHLT) h_TriggeredEvents->Fill(1); // Minbias;
785  if (passedHcalHLT) h_TriggeredEvents->Fill(2); // hcal HLT
786  processEvent_rechit(hbHits, hoHits, hfHits,passedHcalHLT,passedMinBiasHLT,BCN,topology);
787 
788  return;
789 } // void HcalRecHitMonitor::processEvent(...)
790 
791 
792 /* --------------------------------------- */
793 
794 
796  const HORecHitCollection& hoHits,
797  const HFRecHitCollection& hfHits,
798  bool passedHcalHLT,
799  bool passedMinBiasHLT,
800  int BCN,
801  const HcalTopology& topology) {
802  // Gather rechit info
803 
804  //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};
805 
806  if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent_rechitenergy> Processing rechits..."<<std::endl;
807 
808  // loop over HBHE
809 
810  int hbocc=0;
811  int heocc=0;
812  int hboccthresh=0;
813  int heoccthresh=0;
814 
815  double HtPlus =0, HtMinus=0;
816  double HFePlus=0, HFeMinus=0;
817  double HBePlus=0, HBeMinus=0;
818  double HEePlus=0, HEeMinus=0;
819  double HFtPlus=0, HFtMinus=0;
820  double HBtPlus=0, HBtMinus=0;
821  double HEtPlus=0, HEtMinus=0;
822 
823  int hbpocc=0, hbmocc=0, hepocc=0, hemocc=0, hfpocc=0, hfmocc=0;
824 
825  for (unsigned int i=0;i<4;++i) {
826  OccupancyByDepth.depth[i]->update();
827  OccupancyThreshByDepth.depth[i]->update();
828  SumEnergyByDepth.depth[i]->update();
829  SqrtSumEnergy2ByDepth.depth[i]->update();
830  SumTimeByDepth.depth[i]->update();
831  }
832 
837 
838 
839  for (HBHERecHitCollection::const_iterator HBHEiter=hbheHits.begin(); HBHEiter!=hbheHits.end(); ++HBHEiter) { // loop over all hits
840  float en = HBHEiter->energy();
841  float ti = HBHEiter->time();
842  HcalDetId id(HBHEiter->detid().rawId());
843  int ieta = id.ieta();
844  int iphi = id.iphi();
845  int depth = id.depth();
846 
847  if (en>0.5) {
848  h_rechitieta_05->Fill(ieta);
849  h_rechitiphi_05->Fill(iphi);
850  if (en>1.) {
851  h_rechitieta_10->Fill(ieta);
852  h_rechitiphi_10->Fill(iphi);
853  if (en>2.5) {
854  h_rechitieta_25->Fill(ieta);
855  h_rechitiphi_25->Fill(iphi);
856  if (en>10.) {
857  h_rechitieta_100->Fill(ieta);
858  h_rechitiphi_100->Fill(iphi);
859  }
860  }
861  }
862  }
863 
864 
865 
866  HcalSubdetector subdet = id.subdet();
867  std::pair<double,double> etas = topology.etaRange(subdet,abs(ieta));
868  double fEta=fabs(0.5*(etas.first+etas.second));
869 
870  int calcEta = CalcEtaBin(subdet,ieta,depth);
871  int rbxindex=logicalMap_->getHcalFrontEndId(HBHEiter->detid()).rbxIndex();
872  int rm= logicalMap_->getHcalFrontEndId(HBHEiter->detid()).rm();
873 
874  // Fill HBHE flag plots
876  HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity));
877 
878  if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity)) {
879  h_FlagMap_HPDMULT->Fill(rbxindex,rm);
881  }
882  if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEPulseShape)) {
883  h_FlagMap_PULSESHAPE->Fill(rbxindex,rm);
885  }
886  if (HBHEiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
887  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
888  else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
889  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
890  else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
891  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
892 
893  if (subdet==HcalBarrel) {
894  if (en>HBenergyThreshold_)
895  h_HBTimeVsEnergy->Fill(en,ti);
896  //Looping over HB searching for flags --- cris
897  for (int f=0;f<32;f++) {
898  // Let's display HSCP just to see if these bits are set
899  /*
900  if (f == HcalCaloFlagLabels::HSCP_R1R2) continue;
901  if (f == HcalCaloFlagLabels::HSCP_FracLeader) continue;
902  if (f == HcalCaloFlagLabels::HSCP_OuterEnergy) continue;
903  if (f == HcalCaloFlagLabels::HSCP_ExpFit) continue;
904  */
905  if (HBHEiter->flagField(f))
906  ++HBflagcounter_[f];
907  }
908  ++occupancy_[calcEta][iphi-1][depth-1];
909  energy_[calcEta][iphi-1][depth-1]+=en;
910  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
911  time_[calcEta][iphi-1][depth-1]+=ti;
912  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
913  h_HBTime->Fill(ti);
914  else
915  ++HBtime_[int(ti-RECHITMON_TIME_MIN)];
916  ++hbocc;
917 
918  // Threshold plots; require E> threshold and minbias trigger
919  if (en>=HBenergyThreshold_ && en/cosh(fEta)>=HBETThreshold_ ) {
920  if (passedMinBiasHLT==true) {
921  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
922  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
923  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
924  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
925 
926  ++hboccthresh;
927  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
928  h_HBThreshTime->Fill(ti);
929  else
931  }
932 
933  if (ieta>0) {
934  HBePlus+=en;
935  HBtPlus+=ti*en;
936  hbpocc++;
937  } else {
938  HBeMinus+=en;
939  HBtMinus+=ti*en;
940  hbmocc++;
941  }
942  } // if (HB en>thresh, ET>thresh)
943  } // if (id.subdet()==HcalBarrel)
944 
945  else if (subdet==HcalEndcap) {
946  if (en>HEenergyThreshold_)
947  h_HETimeVsEnergy->Fill(en,ti);
948  //Looping over HE searching for flags --- cris
949  for (int f=0;f<32;f++) {
950  if (HBHEiter->flagField(f))
951  ++HEflagcounter_[f];
952  }
953 
954  ++occupancy_[calcEta][iphi-1][depth-1];
955  energy_[calcEta][iphi-1][depth-1]+=en;
956  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
957  time_[calcEta][iphi-1][depth-1]+=ti;
958 
959  ++heocc;
960  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
961  h_HETime->Fill(ti);
962  else
963  ++HEtime_[int(ti-RECHITMON_TIME_MIN)];
964 
965  // Threshold plots require e>E_thresh, ET>ET_thresh
966  if (en>=HEenergyThreshold_ && en/cosh(fEta)>=HEETThreshold_ ) {
967  // occupancy plots also require passedMinBiasHLT
968  if (passedMinBiasHLT==true) {
969  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
970  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
971  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
972  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
973  ++heoccthresh;
974  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
975  h_HEThreshTime->Fill(ti);
976  else
978  }
979  // ePlus, tPlus calculated regardless of trigger
980  if (ieta>0) {
981  HEePlus+=en;
982  HEtPlus+=ti*en;
983  hepocc++;
984  } else {
985  HEeMinus+=en;
986  HEtMinus+=ti*en;
987  hemocc++;
988  }
989  } // if (en>=HEenergyThreshold_ && ET>threshold)
990 
991  } // else if (id.subdet()==HcalEndcap)
992 
993  } //for (HBHERecHitCollection::const_iterator HBHEiter=...)
994 
995  // Calculate normalized time
996  HEePlus>0 ? HEtPlus/=HEePlus : HEtPlus=10000;
997  HEeMinus>0 ? HEtMinus/=HEeMinus : HEtMinus=-10000;
998  HBePlus>0 ? HBtPlus/=HBePlus : HBtPlus=10000;
999  HBeMinus>0 ? HBtMinus/=HBeMinus : HBtMinus=-10000;
1000 
1001  ++HB_occupancy_[hbocc/10];
1002  ++HE_occupancy_[heocc/10];
1003  ++HB_occupancy_thresh_[hboccthresh/10];
1004  ++HE_occupancy_thresh_[heoccthresh/10];
1005  h_HBsizeVsLS->Fill(currentLS,hbocc);
1006  h_HEsizeVsLS->Fill(currentLS,heocc);
1007 
1008  // loop over HO
1009 
1010  h_HOsizeVsLS->Fill(currentLS,hoHits.size());
1011  int hoocc=0;
1012  int hooccthresh=0;
1013  for (HORecHitCollection::const_iterator HOiter=hoHits.begin(); HOiter!=hoHits.end(); ++HOiter) { // loop over all hits
1014  float en = HOiter->energy();
1015  float ti = HOiter->time();
1016  if (en>HOenergyThreshold_)
1017  h_HOTimeVsEnergy->Fill(en,ti);
1018 
1019  HcalDetId id(HOiter->detid().rawId());
1020  int ieta = id.ieta();
1021  int iphi = id.iphi();
1022  int depth = id.depth();
1023 
1024  if (en>0.5) {
1025  h_rechitieta_05->Fill(ieta);
1026  h_rechitiphi_05->Fill(iphi);
1027  if (en>1.) {
1028  h_rechitieta_10->Fill(ieta);
1029  h_rechitiphi_10->Fill(iphi);
1030  if (en>2.5) {
1031  h_rechitieta_25->Fill(ieta);
1032  h_rechitiphi_25->Fill(iphi);
1033  if (en>10.) {
1034  h_rechitieta_100->Fill(ieta);
1035  h_rechitiphi_100->Fill(iphi);
1036  }
1037  }
1038  }
1039  }
1040 
1041 
1042 
1043  int calcEta = CalcEtaBin(HcalOuter,ieta,depth);
1044  std::pair<double,double> etas = topology.etaRange(HcalOuter,abs(ieta));
1045  double fEta=fabs(0.5*(etas.first+etas.second));
1046 
1047  int rbxindex=logicalMap_->getHcalFrontEndId(HOiter->detid()).rbxIndex();
1048  int rm= logicalMap_->getHcalFrontEndId(HOiter->detid()).rm();
1049 
1050  if (HOiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
1051  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
1052  else if (HOiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
1053  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
1054  else if (HOiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
1055  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
1056 
1057 
1058  //Looping over HO searching for flags --- cris
1059  for (int f=0;f<32;f++) {
1060  if (HOiter->flagField(f))
1061  HOflagcounter_[f]++;
1062  }
1063 
1064  ++occupancy_[calcEta][iphi-1][depth-1];
1065  energy_[calcEta][iphi-1][depth-1]+=en;
1066  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
1067  time_[calcEta][iphi-1][depth-1]+=ti;
1068  ++hoocc;
1069  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1070  h_HOTime->Fill(ti);
1071  else
1072  ++HOtime_[int(ti-RECHITMON_TIME_MIN)];
1073 
1074  // We don't calculate HOplus/HOminus values (independent of trigger), so require min bias trigger
1075  // along with E, ET thresholds directly in this HO loop:
1076 
1077  if (en>=HOenergyThreshold_ && en/cosh(fEta)>=HOETThreshold_ && passedMinBiasHLT==true) {
1078  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
1079  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
1080  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
1081  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
1082 
1083  ++hooccthresh;
1084  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1085  h_HOThreshTime->Fill(ti);
1086  else
1088  }
1089  } // loop over all HO hits
1090 
1091  ++HO_occupancy_[hoocc/10];
1092  ++HO_occupancy_thresh_[hooccthresh/10];
1093 
1094  // loop over HF
1095  h_HFsizeVsLS->Fill(currentLS,hfHits.size());
1096 
1097  HtPlus=0; HtMinus=0;
1098 
1099  int hfocc=0;
1100  int hfoccthresh=0;
1101  for (HFRecHitCollection::const_iterator HFiter=hfHits.begin(); HFiter!=hfHits.end(); ++HFiter) { // loop over all hits
1102  float en = HFiter->energy();
1103  float ti = HFiter->time();
1104  if (en> HFenergyThreshold_)
1105  h_HFTimeVsEnergy->Fill(en,ti);
1106 
1107  HcalDetId id(HFiter->detid().rawId());
1108  int ieta = id.ieta();
1109  int iphi = id.iphi();
1110  int depth = id.depth();
1111 
1112  if (en>0.5) {
1113  h_rechitieta_05->Fill(ieta);
1114  h_rechitiphi_05->Fill(iphi);
1115  if (en>1.) {
1116  h_rechitieta_10->Fill(ieta);
1117  h_rechitiphi_10->Fill(iphi);
1118  if (en>2.5) {
1119  h_rechitieta_25->Fill(ieta);
1120  h_rechitiphi_25->Fill(iphi);
1121  if (en>10.) {
1122  h_rechitieta_100->Fill(ieta);
1123  h_rechitiphi_100->Fill(iphi);
1124  }
1125  }
1126  }
1127  }
1128 
1129  std::pair<double,double> etas = topology.etaRange(HcalForward,abs(ieta));
1130  double fEta=fabs(0.5*(etas.first+etas.second));
1131  int calcEta = CalcEtaBin(HcalForward,ieta,depth);
1132 
1133  int rbxindex=logicalMap_->getHcalFrontEndId(HFiter->detid()).rbxIndex();
1134  int rm= logicalMap_->getHcalFrontEndId(HFiter->detid()).rm();
1135 
1136  h_HF_FlagCorr->Fill(HFiter->flagField(HcalCaloFlagLabels::HFDigiTime),HFiter->flagField(HcalCaloFlagLabels::HFLongShort));
1137  if (HFiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
1138  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
1139  else if (HFiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
1140  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
1141  else if (HFiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
1142  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
1143 
1144  if (HFiter->flagField(HcalCaloFlagLabels::HFDigiTime)) {
1145  h_FlagMap_DIGITIME->Fill(rbxindex,rm);
1147  }
1148  if (HFiter->flagField(HcalCaloFlagLabels::HFLongShort)) {
1149  h_FlagMap_LONGSHORT->Fill(rbxindex,rm);
1151  }
1152  //Looping over HF searching for flags --- cris
1153  for (int f=0;f<32;f++) {
1154  if (HFiter->flagField(f))
1155  HFflagcounter_[f]++;
1156  }
1157 
1158  // Occupancy plots, without threshold
1159  ++occupancy_[calcEta][iphi-1][depth-1];
1160  energy_[calcEta][iphi-1][depth-1]+=en;
1161  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
1162  time_[calcEta][iphi-1][depth-1]+=ti;
1163  ++hfocc;
1164  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1165  h_HFTime->Fill(ti);
1166  else
1167  ++HFtime_[int(ti-RECHITMON_TIME_MIN)];
1168 
1169  ieta>0 ? HtPlus+=en/cosh(fEta) : HtMinus+=en/cosh(fEta); // add energy from all cells, or only those > threshold?
1170 
1171  if (en>=HFenergyThreshold_ && en/cosh(fEta)>=HFETThreshold_ ) {
1172  // Occupancy plots require min bias trigger, along with thresholds exceeded
1173  if (passedMinBiasHLT) {
1174  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
1175  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
1176  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
1177  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
1178 
1179  ++hfoccthresh;
1180  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1181  h_HFThreshTime->Fill(ti);
1182  else
1184  }
1185 
1186  if (ieta>0) {
1187  HFtPlus+=en*ti;
1188  HFePlus+=en;
1189  hfpocc++;
1190  } else if (ieta<0) {
1191  HFtMinus+=en*ti;
1192  HFeMinus+=en;
1193  hfmocc++;
1194  }
1195  } // if (en>thresh, ET>thresh)
1196  } // loop over all HF hits
1197 
1198  ++HF_occupancy_[hfocc/10];
1199  ++HF_occupancy_thresh_[hfoccthresh/10];
1200 
1201 
1202  // Form event-wide variables (time averages, etc.), and plot them
1203 
1204  // Calculate weighted times. (Set tPlus, tMinus to overflow in case where total energy < 0)
1205  HFePlus>0 ? HFtPlus/=HFePlus : HFtPlus = 10000;
1206  HFeMinus>0 ? HFtMinus/=HFeMinus : HFtMinus = -10000;
1207 
1208  double mintime=99; // used to be min(tPlus,tMinus);
1209  double minHT=std::min(HtMinus,HtPlus);
1210  minHT==HtMinus ? mintime=HFtMinus : mintime = HFtPlus;
1211  //mintime = min(HFtPlus,HFtMinus); // I think we might want to use this value for mintime?
1212 
1213 
1214  h_LumiPlot_MinTime_vs_MinHT->Fill(minHT, mintime);
1215  h_LumiPlot_timeHT_HFM->Fill(HtMinus,HFtMinus);
1216  h_LumiPlot_timeHT_HFP->Fill(HtPlus,HFtPlus);
1217 
1218  if (passedMinBiasHLT==true) {
1219  h_LumiPlot_SumHT_HFPlus_vs_HFMinus->Fill(HtMinus,HtPlus);
1220  // HtMinus, HtPlus require no energy cuts for their contributing cells
1221  // HFeMinus, HFePlus require that cells be > threshold cut
1222 
1223  if (HtMinus>1 && HtPlus > 1) { // is this the condition we want, or do we want hfmocc>0 && hfpocc >0?
1224  h_LumiPlot_SumEnergy_HFPlus_vs_HFMinus->Fill(HFeMinus,HFePlus);
1225  h_LumiPlot_timeHFPlus_vs_timeHFMinus->Fill(HFtMinus,HFtPlus);
1226 
1227  h_HFP_weightedTime->Fill(HFtPlus);
1228  h_HFM_weightedTime->Fill(HFtMinus);
1229  h_HBP_weightedTime->Fill(HBtPlus);
1230  h_HBM_weightedTime->Fill(HBtMinus);
1231 
1232  h_HEP_weightedTime->Fill(HEtPlus);
1233  h_HEM_weightedTime->Fill(HEtMinus);
1234 
1235  if (hepocc>0 && hemocc>0) {
1236  h_HEtimedifference->Fill(HEtPlus-HEtMinus);
1237  if (HEePlus-HEeMinus!=0) h_HEenergydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
1238  }
1239  if (hfpocc>0 && hfmocc>0) { // which condition do we want?
1240  h_HFtimedifference->Fill((HFtPlus)-(HFtMinus));
1241  if (HFePlus+HFeMinus!=0) h_HFenergydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
1242  }
1243 
1246  if (fabs(HFtPlus-HFtMinus)<timediffThresh_) {
1249  }
1250 
1251  HFP_HFM_Energy->Fill(HFeMinus/1000., HFePlus/1000.);
1252  }
1253 
1254  if (debug_>1) std::cout <<"\t<HcalRecHitMonitor:: HF averages> TPLUS = "<<HFtPlus<<" EPLUS = "<<HFePlus<<" TMINUS = "<<HFtMinus<<" EMINUS = "<<HFeMinus<<" Weighted Time Diff = "<<((HFtPlus)-(HFtMinus))<<std::endl;
1255 
1256 
1257  } // if (passedMinBiasHLT)
1258 
1259  if (passedHcalHLT && HtMinus>1 && HtPlus> 1 ) {
1260  if (hfpocc>0 && hfmocc>0) {
1261  h_HF_HcalHLT_weightedtimedifference->Fill(HFtPlus-HFtMinus);
1262  if (HFePlus+HFeMinus!=0) h_HF_HcalHLT_energydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
1263  }
1264  if (hepocc>0 && hemocc>0){
1265  h_HE_HcalHLT_weightedtimedifference->Fill(HEtPlus-HEtMinus);
1266  if (HEePlus-HEeMinus!=0) h_HE_HcalHLT_energydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
1267  }
1268 
1271  if (fabs(HFtPlus-HFtMinus)<timediffThresh_) {
1274  }
1275  } // passsed Hcal HLT
1276 
1277  return;
1278 } // void HcalRecHitMonitor::processEvent_rechitenergy
1279 
1280 /* --------------------------------------- */
1281 
1282 
1284  const edm::EventSetup& c)
1285 
1286 {
1287  // don't fill lumi block information if it's already been filled
1288  if (LumiInOrder(lumiSeg.luminosityBlock())==false) return;
1289  fill_Nevents();
1290  return;
1291 } //endLuminosityBlock
1292 
1293 
1295 {
1296  // looking at the contents of HbFlagcounters
1297  if (debug_>0)
1298  {
1299  for (int k = 0; k < 32; k++){
1300  std::cout << "<HcalRecHitMonitor::fill_Nevents> HF Flag counter: Bin #" << k+1 << " = "<< HFflagcounter_[k] << std::endl;
1301  }
1302  }
1303 
1304  for (int i=0;i<32;i++)
1305  {
1310  HBflagcounter_[i]=0;
1311  HEflagcounter_[i]=0;
1312  HOflagcounter_[i]=0;
1313  HFflagcounter_[i]=0;
1314  }
1315 
1316  // Fill Occupancy & Sum Energy, Time plots
1317  int myieta=-1;
1318  if (ievt_>0)
1319  {
1320  for (int mydepth=0;mydepth<4;++mydepth)
1321  {
1322  for (int eta=0;eta<OccupancyByDepth.depth[mydepth]->getNbinsX();++eta)
1323  {
1324  myieta=CalcIeta(eta,mydepth+1);
1325 
1326  for (int phi=0;phi<72;++phi)
1327  {
1328  if (occupancy_[eta][phi][mydepth]>0)
1329  {
1330  h_rechitieta->Fill(myieta,occupancy_[eta][phi][mydepth]);
1331  h_rechitiphi->Fill(phi+1,occupancy_[eta][phi][mydepth]);
1332  }
1333  if (occupancy_thresh_[eta][phi][mydepth]>0)
1334  {
1335  h_rechitieta_thresh->Fill(myieta,occupancy_thresh_[eta][phi][mydepth]);
1337  }
1338  OccupancyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_[eta][phi][mydepth]);
1339  SumEnergyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_[eta][phi][mydepth]);
1340  SqrtSumEnergy2ByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_[eta][phi][mydepth]));
1341  SumTimeByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_[eta][phi][mydepth]);
1342 
1343  OccupancyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_thresh_[eta][phi][mydepth]);
1344  SumEnergyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_thresh_[eta][phi][mydepth]);
1345  SqrtSumEnergy2ThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_thresh_[eta][phi][mydepth]));
1346  SumTimeThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_thresh_[eta][phi][mydepth]);
1347  } // for (int phi=0;phi<72;++phi)
1348  } // for (int eta=0;eta<OccupancyByDepth...;++eta)
1349  } // for (int mydepth=0;...)
1350 
1359 
1360  } // if (ievt_>0)
1361 
1362  // Fill subdet plots
1363 
1364  for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1365  {
1366  if (HBtime_[i]!=0)
1367  {
1369  }
1370  if (HBtime_thresh_[i]!=0)
1371  {
1373  }
1374  if (HEtime_[i]!=0)
1375  {
1376 
1378  }
1379  if (HEtime_thresh_[i]!=0)
1380  {
1382  }
1383  if (HOtime_[i]!=0)
1384  {
1386  }
1387  if (HOtime_thresh_[i]!=0)
1388  {
1390  }
1391  if (HFtime_[i]!=0)
1392  {
1394  }
1395  if (HFtime_thresh_[i]!=0)
1396  {
1398  }
1399  } // for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1400 
1401  for (int i=0;i<260;++i)
1402  {
1403  if (HB_occupancy_[i]>0)
1404  {
1406  }
1407  if (HB_occupancy_thresh_[i]>0)
1408  {
1410  }
1411  if (HE_occupancy_[i]>0)
1412  {
1414  }
1415  if (HE_occupancy_thresh_[i]>0)
1416  {
1418  }
1419  }//for (int i=0;i<260;++i)
1420 
1421  for (int i=0;i<217;++i)
1422  {
1423  if (HO_occupancy_[i]>0)
1424  {
1426  }
1427  if (HO_occupancy_thresh_[i]>0)
1428  {
1430  }
1431  }// for (int i=0;i<217;++i)
1432 
1433  for (int i=0;i<173;++i)
1434  {
1435  if (HF_occupancy_[i]>0)
1436  {
1438  }
1439  if (HF_occupancy_thresh_[i]>0)
1440  {
1442  }
1443  }// for (int i=0;i<173;++i)
1444 
1445  //zeroCounters();
1446 
1447  if (debug_>0)
1448  std::cout <<"<HcalRecHitMonitor::fill_Nevents> FILLED REC HIT CELL PLOTS"<<std::endl;
1449 
1450 } // void HcalRecHitMonitor::fill_Nevents(void)
1451 
1452 
1454 {
1455  // Set all histogram counters back to zero
1456 
1457  for (int i=0;i<32;++i)
1458  {
1459  HBflagcounter_[i]=0;
1460  HEflagcounter_[i]=0;
1461  HOflagcounter_[i]=0;
1462  HFflagcounter_[i]=0;
1463 
1464  }
1465  // TH2F counters
1466  for (int i=0;i<85;++i)
1467  {
1468  for (int j=0;j<72;++j)
1469  {
1470  for (int k=0;k<4;++k)
1471  {
1472  occupancy_[i][j][k]=0;
1473  occupancy_thresh_[i][j][k]=0;
1474  energy_[i][j][k]=0;
1475  energy2_[i][j][k]=0;
1476  energy_thresh_[i][j][k]=0;
1477  energy2_thresh_[i][j][k]=0;
1478  time_[i][j][k]=0;
1479  time_thresh_[i][j][k]=0;
1480  }
1481  } // for (int j=0;j<PHIBINS;++j)
1482  } // for (int i=0;i<87;++i)
1483 
1484  // TH1F counters
1485 
1486  for (int i=0;i<200;++i)
1487  {
1488  HFenergyLong_[i]=0;
1490  HFenergyShort_[i]=0;
1492  }
1493 
1494  // time
1495  for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1496  {
1497  HBtime_[i]=0;
1498  HBtime_thresh_[i]=0;
1499  HEtime_[i]=0;
1500  HEtime_thresh_[i]=0;
1501  HOtime_[i]=0;
1502  HOtime_thresh_[i]=0;
1503  HFtime_[i]=0;
1504  HFtime_thresh_[i]=0;
1505  HFtimeLong_[i]=0;
1506  HFtimeLong_thresh_[i]=0;
1507  HFtimeShort_[i]=0;
1509  }
1510 
1511  // occupancy
1512  for (int i=0;i<865;++i)
1513  {
1514  if (i<260)
1515  {
1516  HB_occupancy_[i]=0;
1517  HE_occupancy_[i]=0;
1520  }
1521  if (i<218)
1522  {
1523  HO_occupancy_[i]=0;
1525  }
1526  if (i<174)
1527  {
1528  HF_occupancy_[i]=0;
1530  }
1531 
1532  HFlong_occupancy_[i] =0;
1533  HFshort_occupancy_[i]=0;
1536  } // for (int i=0;i<865;++i)
1537 
1538  return;
1539 } //void HcalRecHitMonitor::zeroCounters(void)
1540 
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:220
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]
CaloTopology const * topology(0)
double HF_occupancy_thresh_[174]
MonitorElement * h_HBThreshTime
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
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:464
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:66
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:63
MonitorElement * h_LumiPlot_LS_MinBiasEvents
void processEvent(const HBHERecHitCollection &hbHits, const HORecHitCollection &hoHits, const HFRecHitCollection &hfHits, int BCN, const edm::Event &iEvent, const HcalTopology &topology)
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)
edm::InputTag hfRechitLabel_
MonitorElement * h_HEOccupancy
MonitorElement * h_LumiPlot_LS_allevents
void processEvent_rechit(const HBHERecHitCollection &hbheHits, const HORecHitCollection &hoHits, const HFRecHitCollection &hfHits, bool passedHcalHLT, bool passedMinBiasHLT, int BCN, const HcalTopology &topology)
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
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:51
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
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)
const T & get() const
Definition: EventSetup.h:56
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_
std::pair< double, double > etaRange(HcalSubdetector subdet, int ieta) const
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
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:43
MonitorElement * h_TriggeredEvents
MonitorElement * h_LumiPlot_SumHT_HFPlus_vs_HFMinus
double energy_[85][72][4]