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=dbe_->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  dbe_->setCurrentFolder(subdir_+"rechit_parameters");
111  MonitorElement* THR;
112  dbe_->setCurrentFolder(subdir_+"rechit_parameters/thresholds");
113  THR=dbe_->bookFloat("HB_Rechit_Energy_Threshold");
114  THR->Fill(HBenergyThreshold_);
115  THR=dbe_->bookFloat("HE_Rechit_Energy_Threshold");
116  THR->Fill(HEenergyThreshold_);
117  THR=dbe_->bookFloat("HO_Rechit_Energy_Threshold");
118  THR->Fill(HOenergyThreshold_);
119  THR=dbe_->bookFloat("HF_Rechit_Energy_Threshold");
120  THR->Fill(HFenergyThreshold_);
121  THR=dbe_->bookFloat("HB_Rechit_ET_Threshold");
122  THR->Fill(HBETThreshold_);
123  THR=dbe_->bookFloat("HE_Rechit_ET_Threshold");
124  THR->Fill(HEETThreshold_);
125  THR=dbe_->bookFloat("HO_Rechit_ET_Threshold");
126  THR->Fill(HOETThreshold_);
127  THR=dbe_->bookFloat("HF_Rechit_ET_Threshold");
128  THR->Fill(HFETThreshold_);
129  THR=dbe_->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  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits");
135  SetupEtaPhiHists(OccupancyByDepth,"RecHit Occupancy","");
136  h_rechitieta = dbe_->book1D("HcalRecHitIeta",
137  "Hcal RecHit ieta",
138  83,-41.5,41.5);
139  h_rechitiphi = dbe_->book1D("HcalRecHitIphi",
140  "Hcal RecHit iphi",
141  72,0.5,72.5);
142 
143  h_rechitieta_05 = dbe_->book1D("HcalRecHitIeta05",
144  "Hcal RecHit ieta E>0.5 GeV",
145  83,-41.5,41.5);
146  h_rechitiphi_05 = dbe_->book1D("HcalRecHitIphi05",
147  "Hcal RecHit iphi E>0.5 GeV",
148  72,0.5,72.5);
149  h_rechitieta_10 = dbe_->book1D("HcalRecHitIeta10",
150  "Hcal RecHit ieta E>1.0 GeV",
151  83,-41.5,41.5);
152  h_rechitiphi_10 = dbe_->book1D("HcalRecHitIphi10",
153  "Hcal RecHit iphi E>1.0 GeV",
154  72,0.5,72.5);
155  h_rechitieta_25 = dbe_->book1D("HcalRecHitIeta25",
156  "Hcal RecHit ieta E>2.5 GeV",
157  83,-41.5,41.5);
158  h_rechitiphi_25 = dbe_->book1D("HcalRecHitIphi25",
159  "Hcal RecHit iphi E>2.5 GeV",
160  72,0.5,72.5);
161  h_rechitieta_100 = dbe_->book1D("HcalRecHitIeta100",
162  "Hcal RecHit ieta E>10.0 GeV",
163  83,-41.5,41.5);
164  h_rechitiphi_100 = dbe_->book1D("HcalRecHitIphi100",
165  "Hcal RecHit iphi E>10.0 GeV",
166  72,0.5,72.5);
167 
168 
169 
170  h_LumiPlot_LS_allevents = dbe_->book1D("AllEventsPerLS",
171  "LS # of all events",
172  NLumiBlocks_,0.5,NLumiBlocks_+0.5);
173  h_LumiPlot_BX_allevents = dbe_->book1D("BX_allevents",
174  "BX # of all events",
175  3600,0,3600);
176  h_LumiPlot_MinTime_vs_MinHT = dbe_->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 = dbe_->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 = dbe_->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  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits/sumplots");
190  SetupEtaPhiHists(SumEnergyByDepth,"RecHit Summed Energy","GeV");
191  SetupEtaPhiHists(SqrtSumEnergy2ByDepth,"RecHit Sqrt Summed Energy2","GeV");
192  SetupEtaPhiHists(SumTimeByDepth,"RecHit Summed Time","nS");
193 
194  // Histograms for events that passed MinBias triggers
195  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias");
196 
197  h_HBP_weightedTime = dbe_->book1D("WeightedTime_HBP","Weighted Time for HBP",
198  300,-150,150);
199  h_HBM_weightedTime = dbe_->book1D("WeightedTime_HBM","Weighted Time for HBM",
200  300,-150,150);
201  h_HEP_weightedTime = dbe_->book1D("WeightedTime_HEP","Weighted Time for HEP",
202  300,-150,150);
203  h_HEM_weightedTime = dbe_->book1D("WeightedTime_HEM","Weighted Time for HEM",
204  300,-150,150);
205  h_HFP_weightedTime = dbe_->book1D("WeightedTime_HFP","Weighted Time for HFP",
206  300,-150,150);
207  h_HFM_weightedTime = dbe_->book1D("WeightedTime_HFM","Weighted Time for HFM",
208  300,-150,150);
209 
210  h_HFtimedifference = dbe_->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 = dbe_->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 = dbe_->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 = dbe_->book1D("HFenergyDifference",
223  "Sum(E_HFPlus - E_HFMinus)/Sum(E_HFPlus + E_HFMinus)",
224  200,-1,1);
225  h_HEenergydifference = dbe_->book1D("HEenergyDifference",
226  "Sum(E_HEPlus - E_HEMinus)/Sum(E_HEPlus + E_HEMinus)",
227  200,-1,1);
228 
229  h_LumiPlot_LS_MinBiasEvents=dbe_->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=dbe_->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 = dbe_->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 = dbe_->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 = dbe_->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 = dbe_->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 = dbe_->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(OccupancyThreshByDepth,"Above Threshold RecHit Occupancy","");
252  h_rechitieta_thresh = dbe_->book1D("HcalRecHitIeta_thresh",
253  "Hcal RecHit ieta above energy and ET threshold",
254  83,-41.5,41.5);
255  h_rechitiphi_thresh = dbe_->book1D("HcalRecHitIphi_thresh",
256  "Hcal RecHit iphi above energy and ET threshold",
257  72,0.5,72.5);
258 
259  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/sumplots");
260  SetupEtaPhiHists(SumEnergyThreshByDepth,"Above Threshold RecHit Summed Energy","GeV");
261  SetupEtaPhiHists(SumTimeThreshByDepth,"Above Threshold RecHit Summed Time","nS");
262  SetupEtaPhiHists(SqrtSumEnergy2ThreshByDepth,"Above Threshold RecHit Sqrt Summed Energy2","GeV");
263 
264  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/rechit_1D_plots");
265  h_HBThreshTime=dbe_->book1D("HB_time_thresh",
266  "HB RecHit Time Above Threshold",
268  h_HBThreshOccupancy=dbe_->book1D("HB_occupancy_thresh",
269  "HB RecHit Occupancy Above Threshold",260,-0.5,2599.5);
270  h_HEThreshTime=dbe_->book1D("HE_time_thresh",
271  "HE RecHit Time Above Threshold",
273  h_HEThreshOccupancy=dbe_->book1D("HE_occupancy_thresh",
274  "HE RecHit Occupancy Above Threshold",260,-0.5,2599.5);
275  h_HOThreshTime=dbe_->book1D("HO_time_thresh",
276  "HO RecHit Time Above Threshold",
278  h_HOThreshOccupancy=dbe_->book1D("HO_occupancy_thresh",
279  "HO RecHit Occupancy Above Threshold",217,-0.5,2169.5);
280  h_HFThreshTime=dbe_->book1D("HF_time_thresh",
281  "HF RecHit Time Above Threshold",
283  h_HFThreshOccupancy=dbe_->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  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers");
289 
290  h_LumiPlot_BX_HcalHLTEvents = dbe_->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 = dbe_->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=dbe_->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=dbe_->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  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers/");
305  h_HF_HcalHLT_weightedtimedifference = dbe_->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 = dbe_->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 = dbe_->book1D("HF_HcalHLT_energyDifference",
312  "Sum(E_HFPlus - E_HFMinus)/Sum(E_HFPlus + E_HFMinus)",
313  200,-1,1);
314  h_HE_HcalHLT_energydifference = dbe_->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  dbe_->setCurrentFolder(subdir_+"AnomalousCellFlags");// HB Flag Histograms
320 
321 
322  h_HFLongShort_vs_LS=dbe_->book1D("HFLongShort_vs_LS",
323  "HFLongShort Flags vs Lumi Section",
324  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
325  h_HFDigiTime_vs_LS=dbe_->book1D("HFDigiTime_vs_LS",
326  "HFDigiTime Flags vs Lumi Section",
327  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
328  h_HBHEHPDMult_vs_LS=dbe_->book1D("HBHEHPDMult_vs_LS",
329  "HBHEHPDMult Flags vs Lumi Section",
330  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
331  h_HBHEPulseShape_vs_LS=dbe_->book1D("HBHEPulseShape_vs_LS",
332  "HBHEPulseShape Flags vs Lumi Section",
333  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
334 
335  h_HF_FlagCorr=dbe_->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=dbe_->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=dbe_->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=dbe_->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=dbe_->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=dbe_->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=dbe_->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=dbe_->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=dbe_->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=dbe_->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=dbe_->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=dbe_->book1D("HOflags","HO flags",32,-0.5,31.5);
424 
425  // HF Flag Histograms
426  h_HFflagcounter=dbe_->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  dbe_->setCurrentFolder(subdir_+"diagnostics/hb");
445 
446  h_HBTimeVsEnergy=dbe_->book2D("HBTimeVsEnergy","HB Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
447 
448  h_HBsizeVsLS=dbe_->bookProfile("HBRecHitsVsLB","HB RecHits vs Luminosity Block",
449  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
450  100,0,10000);
451 
452  h_HBTime=dbe_->book1D("HB_time","HB RecHit Time",
454  h_HBOccupancy=dbe_->book1D("HB_occupancy",
455  "HB RecHit Occupancy",260,-0.5,2599.5);
456 
457  //he
458  dbe_->setCurrentFolder(subdir_+"diagnostics/he");
459 
460  h_HETimeVsEnergy=dbe_->book2D("HETimeVsEnergy","HE Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
461 
462  h_HEsizeVsLS=dbe_->bookProfile("HERecHitsVsLB","HE RecHits vs Luminosity Block",
463  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
464  100,0,10000);
465 
466  h_HETime=dbe_->book1D("HE_time","HE RecHit Time",
468  h_HEOccupancy=dbe_->book1D("HE_occupancy","HE RecHit Occupancy",260,-0.5,2599.5);
469 
470  // ho
471  dbe_->setCurrentFolder(subdir_+"diagnostics/ho");
472 
473  h_HOTimeVsEnergy=dbe_->book2D("HOTimeVsEnergy","HO Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
474 
475  h_HOsizeVsLS=dbe_->bookProfile("HORecHitsVsLB","HO RecHits vs Luminosity Block",
476  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
477  100,0,10000);
478  h_HOTime=dbe_->book1D("HO_time",
479  "HO RecHit Time",
481  h_HOOccupancy=dbe_->book1D("HO_occupancy",
482  "HO RecHit Occupancy",217,-0.5,2169.5);
483 
484  // hf
485  dbe_->setCurrentFolder(subdir_+"diagnostics/hf");
486 
487  h_HFTimeVsEnergy=dbe_->book2D("HFTimeVsEnergy","HF Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
488 
489  h_HFsizeVsLS=dbe_->bookProfile("HFRecHitsVsLB",
490  "HF RecHits vs Luminosity Block",
491  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
492  100, 0,10000);
493  h_HFTime=dbe_->book1D("HF_time","HF RecHit Time",
495  h_HFOccupancy=dbe_->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::beginRun(): task = '"<<subdir_<<"'"<<std::endl;
505  if (tevt_==0) // create histograms, if they haven't been created already
506  this->setup();
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  dbe_->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  dbe_->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  dbe_->bookString("MinBiasHLTriggerRequirements",tnames);
526  return;
527 
528 } //void HcalRecHitMonitor::beginRun(...)
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  std::vector<MonitorElement*> hists = dbe_->getAllContents(subdir_);
544  for (unsigned int i=0;i<hists.size();++i)
545  {
546  if (hists[i]->kind()==MonitorElement::DQM_KIND_TH1F ||
547  hists[i]->kind()==MonitorElement::DQM_KIND_TH2F ||
548  hists[i]->kind()==MonitorElement::DQM_KIND_TPROFILE)
549  hists[i]->Reset();
550  }
551 }
552 
554 {
555  if (!enableCleanup_) return;
557  this->cleanup();
558 }
559 
560 
561 /* --------------------------------- */
562 
564 {
565  //Add code to clean out subdirectories
566  if (!enableCleanup_) return;
567  if (dbe_)
568  {
570  dbe_->setCurrentFolder(subdir_+"rechit_parameters"); dbe_->removeContents();
571  dbe_->setCurrentFolder(subdir_+"rechit_parameters/thresholds"); dbe_->removeContents();
572  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits"); dbe_->removeContents();
573  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits/sumplots"); dbe_->removeContents();
574  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias"); dbe_->removeContents();
575  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/sumplots"); dbe_->removeContents();
576  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers"); dbe_->removeContents();
577  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers/passedTechTriggers/"); dbe_->removeContents();
578 
579  dbe_->setCurrentFolder(subdir_+"AnomalousCellFlags"); dbe_->removeContents();
580  dbe_->setCurrentFolder(subdir_+"diagnostics/hb"); dbe_->removeContents();
581  dbe_->setCurrentFolder(subdir_+"diagnostics/he"); dbe_->removeContents();
582  dbe_->setCurrentFolder(subdir_+"diagnostics/ho"); dbe_->removeContents();
583  dbe_->setCurrentFolder(subdir_+"diagnostics/hf"); dbe_->removeContents();
584  }
585  return;
586 } // void HcalRecHitMonitor::cleanup()
587 
588 /* -------------------------------- */
589 
591 {
592  getLogicalMap(s);
593  if (debug_>0) std::cout <<"HcalRecHitMonitor::analyze; debug = "<<debug_<<std::endl;
594 
595  if (!IsAllowedCalibType()) return;
596  if (LumiInOrder(e.luminosityBlock())==false) return;
597 
598  // Get objects
602 
603  if (!(e.getByToken(tok_hbhe_,hbhe_rechit)))
604  {
605  edm::LogWarning("HcalHotCellMonitor")<< hbheRechitLabel_<<" hbhe_rechit not available";
606  return;
607  }
608 
609  if (!(e.getByToken(tok_hf_,hf_rechit)))
610  {
611  edm::LogWarning("HcalHotCellMonitor")<< hfRechitLabel_<<" hf_rechit not available";
612  return;
613  }
614 
615  if (!(e.getByToken(tok_ho_,ho_rechit)))
616  {
617  edm::LogWarning("HcalHotCellMonitor")<< hoRechitLabel_<<" ho_rechit not available";
618  return;
619  }
620 
621 
624  processEvent(*hbhe_rechit, *ho_rechit, *hf_rechit, e.bunchCrossing(), e);
625 
627 } // void HcalRecHitMonitor::analyze()
628 
629 
631  const HORecHitCollection& hoHits,
632  const HFRecHitCollection& hfHits,
633  int BCN,
634  const edm::Event & iEvent
635  )
636 {
637 
638 
639  if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent> Processing event..."<<std::endl;
640 
641 
642  bool passedHcalHLT=false;
643  bool passedMinBiasHLT=false;
644 
646  if (!(iEvent.getByToken(tok_trigger_,hltRes)))
647  {
648  if (debug_>0) edm::LogWarning("HcalRecHitMonitor")<<" Could not get HLT results with tag "<<hltresultsLabel_<<std::endl;
649  }
650  else
651  {
652  const edm::TriggerNames & triggerNames = iEvent.triggerNames(*hltRes);
653  const unsigned int nTrig(triggerNames.size());
654  for (unsigned int i=0;i<nTrig;++i)
655  {
656  // trigger decision is based on 'OR' of any specified trigger names
657  for (unsigned int k=0;k<HcalHLTBits_.size();++k)
658  {
659  // if (triggerNames.triggerName(i)==HcalHLTBits_[k] && hltRes->accept(i))
660  if (triggerNames.triggerName(i).find(HcalHLTBits_[k])!=std::string::npos && hltRes->accept(i))
661  {
662  passedHcalHLT=true;
663  break;
664  }
665  }
666  // repeat for minbias triggers
667  for (unsigned int k=0;k<MinBiasHLTBits_.size();++k)
668  {
669  // if (triggerNames.triggerName(i)==MinBiasHLTBits_[k] && hltRes->accept(i))
670  if (triggerNames.triggerName(i).find(MinBiasHLTBits_[k])!=std::string::npos && hltRes->accept(i))
671  {
672  passedMinBiasHLT=true;
673  break;
674  }
675  }
676  }
677  } //else
678 
679  if (debug_>2 && passedHcalHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed Hcal HLT trigger "<<std::endl;
680  if (debug_>2 && passedMinBiasHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed MinBias HLT trigger "<<std::endl;
681 
682  h_TriggeredEvents->Fill(0); // all events
683  if (passedMinBiasHLT) h_TriggeredEvents->Fill(1); // Minbias;
684  if (passedHcalHLT) h_TriggeredEvents->Fill(2); // hcal HLT
685  processEvent_rechit(hbHits, hoHits, hfHits,passedHcalHLT,passedMinBiasHLT,BCN);
686 
687  return;
688 } // void HcalRecHitMonitor::processEvent(...)
689 
690 
691 /* --------------------------------------- */
692 
693 
695  const HORecHitCollection& hoHits,
696  const HFRecHitCollection& hfHits,
697  bool passedHcalHLT,
698  bool passedMinBiasHLT,
699  int BCN)
700 {
701  // Gather rechit info
702 
703  //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};
704 
705  if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent_rechitenergy> Processing rechits..."<<std::endl;
706 
707  // loop over HBHE
708 
709  int hbocc=0;
710  int heocc=0;
711  int hboccthresh=0;
712  int heoccthresh=0;
713 
714  double HtPlus =0, HtMinus=0;
715  double HFePlus=0, HFeMinus=0;
716  double HBePlus=0, HBeMinus=0;
717  double HEePlus=0, HEeMinus=0;
718  double HFtPlus=0, HFtMinus=0;
719  double HBtPlus=0, HBtMinus=0;
720  double HEtPlus=0, HEtMinus=0;
721 
722  int hbpocc=0, hbmocc=0, hepocc=0, hemocc=0, hfpocc=0, hfmocc=0;
723 
724  for (unsigned int i=0;i<4;++i)
725  {
726  OccupancyByDepth.depth[i]->update();
727  OccupancyThreshByDepth.depth[i]->update();
728  SumEnergyByDepth.depth[i]->update();
729  SqrtSumEnergy2ByDepth.depth[i]->update();
730  SumTimeByDepth.depth[i]->update();
731  }
732 
737 
738 
739  for (HBHERecHitCollection::const_iterator HBHEiter=hbheHits.begin(); HBHEiter!=hbheHits.end(); ++HBHEiter)
740  { // loop over all hits
741  float en = HBHEiter->energy();
742  float ti = HBHEiter->time();
743  HcalDetId id(HBHEiter->detid().rawId());
744  int ieta = id.ieta();
745  int iphi = id.iphi();
746  int depth = id.depth();
747 
748  if (en>0.5)
749  {
750  h_rechitieta_05->Fill(ieta);
751  h_rechitiphi_05->Fill(iphi);
752  if (en>1.)
753  {
754  h_rechitieta_10->Fill(ieta);
755  h_rechitiphi_10->Fill(iphi);
756  if (en>2.5)
757  {
758  h_rechitieta_25->Fill(ieta);
759  h_rechitiphi_25->Fill(iphi);
760  if (en>10.)
761  {
762  h_rechitieta_100->Fill(ieta);
763  h_rechitiphi_100->Fill(iphi);
764  }
765  }
766  }
767  }
768 
769 
770 
771  HcalSubdetector subdet = id.subdet();
772  double fEta=fabs(0.5*(theHBHEEtaBounds[abs(ieta)-1]+theHBHEEtaBounds[abs(ieta)]));
773 
774  int calcEta = CalcEtaBin(subdet,ieta,depth);
775  int rbxindex=logicalMap_->getHcalFrontEndId(HBHEiter->detid()).rbxIndex();
776  int rm= logicalMap_->getHcalFrontEndId(HBHEiter->detid()).rm();
777 
778  // Fill HBHE flag plots
780  HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity));
781 
782  if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity))
783  {
784  h_FlagMap_HPDMULT->Fill(rbxindex,rm);
786  }
787  if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEPulseShape))
788  {
789  h_FlagMap_PULSESHAPE->Fill(rbxindex,rm);
791  }
792  if (HBHEiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
793  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
794  else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
795  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
796  else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
797  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
798 
799  if (subdet==HcalBarrel)
800  {
801  if (en>HBenergyThreshold_)
802  h_HBTimeVsEnergy->Fill(en,ti);
803  //Looping over HB searching for flags --- cris
804  for (int f=0;f<32;f++)
805  {
806  // Let's display HSCP just to see if these bits are set
807  /*
808  if (f == HcalCaloFlagLabels::HSCP_R1R2) continue;
809  if (f == HcalCaloFlagLabels::HSCP_FracLeader) continue;
810  if (f == HcalCaloFlagLabels::HSCP_OuterEnergy) continue;
811  if (f == HcalCaloFlagLabels::HSCP_ExpFit) continue;
812  */
813  if (HBHEiter->flagField(f))
814  ++HBflagcounter_[f];
815  }
816  ++occupancy_[calcEta][iphi-1][depth-1];
817  energy_[calcEta][iphi-1][depth-1]+=en;
818  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
819  time_[calcEta][iphi-1][depth-1]+=ti;
820  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
821  h_HBTime->Fill(ti);
822  else
823  ++HBtime_[int(ti-RECHITMON_TIME_MIN)];
824  ++hbocc;
825 
826  // Threshold plots; require E> threshold and minbias trigger
827  if (
828  en>=HBenergyThreshold_ &&
829  en/cosh(fEta)>=HBETThreshold_
830  )
831  {
832  if (passedMinBiasHLT==true)
833  {
834  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
835  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
836  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
837  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
838 
839  ++hboccthresh;
840  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
841  h_HBThreshTime->Fill(ti);
842  else
844  }
845 
846  if (ieta>0)
847  {
848  HBePlus+=en;
849  HBtPlus+=ti*en;
850  hbpocc++;
851  }
852  else
853  {
854  HBeMinus+=en;
855  HBtMinus+=ti*en;
856  hbmocc++;
857  }
858  } // if (HB en>thresh, ET>thresh)
859  } // if (id.subdet()==HcalBarrel)
860 
861  else if (subdet==HcalEndcap)
862  {
863  if (en>HEenergyThreshold_)
864  h_HETimeVsEnergy->Fill(en,ti);
865  //Looping over HE searching for flags --- cris
866  for (int f=0;f<32;f++)
867  {
868  if (HBHEiter->flagField(f))
869  ++HEflagcounter_[f];
870  }
871 
872  ++occupancy_[calcEta][iphi-1][depth-1];
873  energy_[calcEta][iphi-1][depth-1]+=en;
874  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
875  time_[calcEta][iphi-1][depth-1]+=ti;
876 
877  ++heocc;
878  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
879  h_HETime->Fill(ti);
880  else
881  ++HEtime_[int(ti-RECHITMON_TIME_MIN)];
882 
883  // Threshold plots require e>E_thresh, ET>ET_thresh
884  if (en>=HEenergyThreshold_
885  && en/cosh(fEta)>=HEETThreshold_
886  )
887  {
888  // occupancy plots also require passedMinBiasHLT
889  if (passedMinBiasHLT==true)
890  {
891  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
892  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
893  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
894  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
895  ++heoccthresh;
896  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
897  h_HEThreshTime->Fill(ti);
898  else
900  }
901  // ePlus, tPlus calculated regardless of trigger
902  if (ieta>0)
903  {
904  HEePlus+=en;
905  HEtPlus+=ti*en;
906  hepocc++;
907  }
908  else
909  {
910  HEeMinus+=en;
911  HEtMinus+=ti*en;
912  hemocc++;
913  }
914  } // if (en>=HEenergyThreshold_ && ET>threshold)
915 
916  } // else if (id.subdet()==HcalEndcap)
917 
918  } //for (HBHERecHitCollection::const_iterator HBHEiter=...)
919 
920  // Calculate normalized time
921  HEePlus>0 ? HEtPlus/=HEePlus : HEtPlus=10000;
922  HEeMinus>0 ? HEtMinus/=HEeMinus : HEtMinus=-10000;
923  HBePlus>0 ? HBtPlus/=HBePlus : HBtPlus=10000;
924  HBeMinus>0 ? HBtMinus/=HBeMinus : HBtMinus=-10000;
925 
926  ++HB_occupancy_[hbocc/10];
927  ++HE_occupancy_[heocc/10];
928  ++HB_occupancy_thresh_[hboccthresh/10];
929  ++HE_occupancy_thresh_[heoccthresh/10];
930  h_HBsizeVsLS->Fill(currentLS,hbocc);
931  h_HEsizeVsLS->Fill(currentLS,heocc);
932 
933  // loop over HO
934 
935  h_HOsizeVsLS->Fill(currentLS,hoHits.size());
936  int hoocc=0;
937  int hooccthresh=0;
938  for (HORecHitCollection::const_iterator HOiter=hoHits.begin(); HOiter!=hoHits.end(); ++HOiter)
939  { // loop over all hits
940  float en = HOiter->energy();
941  float ti = HOiter->time();
942  if (en>HOenergyThreshold_)
943  h_HOTimeVsEnergy->Fill(en,ti);
944 
945  HcalDetId id(HOiter->detid().rawId());
946  int ieta = id.ieta();
947  int iphi = id.iphi();
948  int depth = id.depth();
949 
950  if (en>0.5)
951  {
952  h_rechitieta_05->Fill(ieta);
953  h_rechitiphi_05->Fill(iphi);
954  if (en>1.)
955  {
956  h_rechitieta_10->Fill(ieta);
957  h_rechitiphi_10->Fill(iphi);
958  if (en>2.5)
959  {
960  h_rechitieta_25->Fill(ieta);
961  h_rechitiphi_25->Fill(iphi);
962  if (en>10.)
963  {
964  h_rechitieta_100->Fill(ieta);
965  h_rechitiphi_100->Fill(iphi);
966  }
967  }
968  }
969  }
970 
971 
972 
973  int calcEta = CalcEtaBin(HcalOuter,ieta,depth);
974  double fEta=fabs(0.5*(theHBHEEtaBounds[abs(ieta)-1]+theHBHEEtaBounds[abs(ieta)]));
975 
976  int rbxindex=logicalMap_->getHcalFrontEndId(HOiter->detid()).rbxIndex();
977  int rm= logicalMap_->getHcalFrontEndId(HOiter->detid()).rm();
978 
979  if (HOiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
980  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
981  else if (HOiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
982  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
983  else if (HOiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
984  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
985 
986 
987  //Looping over HO searching for flags --- cris
988  for (int f=0;f<32;f++)
989  {
990  if (HOiter->flagField(f))
991  HOflagcounter_[f]++;
992  }
993 
994  ++occupancy_[calcEta][iphi-1][depth-1];
995  energy_[calcEta][iphi-1][depth-1]+=en;
996  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
997  time_[calcEta][iphi-1][depth-1]+=ti;
998  ++hoocc;
999  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1000  h_HOTime->Fill(ti);
1001  else
1002  ++HOtime_[int(ti-RECHITMON_TIME_MIN)];
1003 
1004  // We don't calculate HOplus/HOminus values (independent of trigger), so require min bias trigger
1005  // along with E, ET thresholds directly in this HO loop:
1006 
1007  if (en>=HOenergyThreshold_
1008  && en/cosh(fEta)>=HOETThreshold_
1009  && passedMinBiasHLT==true
1010  )
1011  {
1012  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
1013  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
1014  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
1015  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
1016 
1017  ++hooccthresh;
1018  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1019  h_HOThreshTime->Fill(ti);
1020  else
1022  }
1023  } // loop over all HO hits
1024 
1025  ++HO_occupancy_[hoocc/10];
1026  ++HO_occupancy_thresh_[hooccthresh/10];
1027 
1028  // loop over HF
1029  h_HFsizeVsLS->Fill(currentLS,hfHits.size());
1030 
1031  HtPlus=0; HtMinus=0;
1032 
1033  int hfocc=0;
1034  int hfoccthresh=0;
1035  for (HFRecHitCollection::const_iterator HFiter=hfHits.begin(); HFiter!=hfHits.end(); ++HFiter)
1036  { // loop over all hits
1037  float en = HFiter->energy();
1038  float ti = HFiter->time();
1039  if (en> HFenergyThreshold_)
1040  h_HFTimeVsEnergy->Fill(en,ti);
1041 
1042  HcalDetId id(HFiter->detid().rawId());
1043  int ieta = id.ieta();
1044  int iphi = id.iphi();
1045  int depth = id.depth();
1046 
1047  if (en>0.5)
1048  {
1049  h_rechitieta_05->Fill(ieta);
1050  h_rechitiphi_05->Fill(iphi);
1051  if (en>1.)
1052  {
1053  h_rechitieta_10->Fill(ieta);
1054  h_rechitiphi_10->Fill(iphi);
1055  if (en>2.5)
1056  {
1057  h_rechitieta_25->Fill(ieta);
1058  h_rechitiphi_25->Fill(iphi);
1059  if (en>10.)
1060  {
1061  h_rechitieta_100->Fill(ieta);
1062  h_rechitiphi_100->Fill(iphi);
1063  }
1064  }
1065  }
1066  }
1067 
1068  double fEta=fabs(0.5*(theHFEtaBounds[abs(ieta)-29]+theHFEtaBounds[abs(ieta)-28]));
1069  int calcEta = CalcEtaBin(HcalForward,ieta,depth);
1070 
1071  int rbxindex=logicalMap_->getHcalFrontEndId(HFiter->detid()).rbxIndex();
1072  int rm= logicalMap_->getHcalFrontEndId(HFiter->detid()).rm();
1073 
1074  h_HF_FlagCorr->Fill(HFiter->flagField(HcalCaloFlagLabels::HFDigiTime),HFiter->flagField(HcalCaloFlagLabels::HFLongShort));
1075  if (HFiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
1076  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
1077  else if (HFiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
1078  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
1079  else if (HFiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
1080  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
1081 
1082  if (HFiter->flagField(HcalCaloFlagLabels::HFDigiTime))
1083  {
1084  h_FlagMap_DIGITIME->Fill(rbxindex,rm);
1086  }
1087  if (HFiter->flagField(HcalCaloFlagLabels::HFLongShort))
1088  {
1089  h_FlagMap_LONGSHORT->Fill(rbxindex,rm);
1091  }
1092  //Looping over HF searching for flags --- cris
1093  for (int f=0;f<32;f++)
1094  {
1095  if (HFiter->flagField(f))
1096  HFflagcounter_[f]++;
1097  }
1098 
1099  // Occupancy plots, without threshold
1100  ++occupancy_[calcEta][iphi-1][depth-1];
1101  energy_[calcEta][iphi-1][depth-1]+=en;
1102  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
1103  time_[calcEta][iphi-1][depth-1]+=ti;
1104  ++hfocc;
1105  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1106  h_HFTime->Fill(ti);
1107  else
1108  ++HFtime_[int(ti-RECHITMON_TIME_MIN)];
1109 
1110  ieta>0 ? HtPlus+=en/cosh(fEta) : HtMinus+=en/cosh(fEta); // add energy from all cells, or only those > threshold?
1111 
1112  if (en>=HFenergyThreshold_ &&
1113  en/cosh(fEta)>=HFETThreshold_
1114  )
1115  {
1116  // Occupancy plots require min bias trigger, along with thresholds exceeded
1117  if (passedMinBiasHLT)
1118  {
1119  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
1120  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
1121  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
1122  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
1123 
1124  ++hfoccthresh;
1125  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1126  h_HFThreshTime->Fill(ti);
1127  else
1129  }
1130 
1131  if (ieta>0)
1132  {
1133  HFtPlus+=en*ti;
1134  HFePlus+=en;
1135  hfpocc++;
1136  }
1137  else if (ieta<0)
1138  {
1139  HFtMinus+=en*ti;
1140  HFeMinus+=en;
1141  hfmocc++;
1142  }
1143  } // if (en>thresh, ET>thresh)
1144  } // loop over all HF hits
1145 
1146  ++HF_occupancy_[hfocc/10];
1147  ++HF_occupancy_thresh_[hfoccthresh/10];
1148 
1149 
1150  // Form event-wide variables (time averages, etc.), and plot them
1151 
1152  // Calculate weighted times. (Set tPlus, tMinus to overflow in case where total energy < 0)
1153  HFePlus>0 ? HFtPlus/=HFePlus : HFtPlus = 10000;
1154  HFeMinus>0 ? HFtMinus/=HFeMinus : HFtMinus = -10000;
1155 
1156  double mintime=99; // used to be min(tPlus,tMinus);
1157  double minHT=std::min(HtMinus,HtPlus);
1158  minHT==HtMinus ? mintime=HFtMinus : mintime = HFtPlus;
1159  //mintime = min(HFtPlus,HFtMinus); // I think we might want to use this value for mintime?
1160 
1161 
1162  h_LumiPlot_MinTime_vs_MinHT->Fill(minHT, mintime);
1163  h_LumiPlot_timeHT_HFM->Fill(HtMinus,HFtMinus);
1164  h_LumiPlot_timeHT_HFP->Fill(HtPlus,HFtPlus);
1165 
1166  if (passedMinBiasHLT==true)
1167  {
1168  h_LumiPlot_SumHT_HFPlus_vs_HFMinus->Fill(HtMinus,HtPlus);
1169  // HtMinus, HtPlus require no energy cuts for their contributing cells
1170  // HFeMinus, HFePlus require that cells be > threshold cut
1171 
1172  if (HtMinus>1 && HtPlus > 1) // is this the condition we want, or do we want hfmocc>0 && hfpocc >0?
1173  {
1174  h_LumiPlot_SumEnergy_HFPlus_vs_HFMinus->Fill(HFeMinus,HFePlus);
1175  h_LumiPlot_timeHFPlus_vs_timeHFMinus->Fill(HFtMinus,HFtPlus);
1176 
1177  h_HFP_weightedTime->Fill(HFtPlus);
1178  h_HFM_weightedTime->Fill(HFtMinus);
1179  h_HBP_weightedTime->Fill(HBtPlus);
1180  h_HBM_weightedTime->Fill(HBtMinus);
1181 
1182  h_HEP_weightedTime->Fill(HEtPlus);
1183  h_HEM_weightedTime->Fill(HEtMinus);
1184 
1185  if (hepocc>0 && hemocc>0)
1186  {
1187  h_HEtimedifference->Fill(HEtPlus-HEtMinus);
1188  if (HEePlus-HEeMinus!=0) h_HEenergydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
1189  }
1190  if (hfpocc>0 && hfmocc>0) // which condition do we want?
1191  {
1192  h_HFtimedifference->Fill((HFtPlus)-(HFtMinus));
1193  if (HFePlus+HFeMinus!=0) h_HFenergydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
1194  }
1195 
1198  if (fabs(HFtPlus-HFtMinus)<timediffThresh_)
1199  {
1202  }
1203 
1204  HFP_HFM_Energy->Fill(HFeMinus/1000., HFePlus/1000.);
1205  }
1206 
1207  if (debug_>1) std::cout <<"\t<HcalRecHitMonitor:: HF averages> TPLUS = "<<HFtPlus<<" EPLUS = "<<HFePlus<<" TMINUS = "<<HFtMinus<<" EMINUS = "<<HFeMinus<<" Weighted Time Diff = "<<((HFtPlus)-(HFtMinus))<<std::endl;
1208 
1209 
1210  } // if (passedMinBiasHLT)
1211 
1212  if (passedHcalHLT && HtMinus>1 && HtPlus> 1 )
1213  {
1214  if (hfpocc>0 && hfmocc>0)
1215  {
1216  h_HF_HcalHLT_weightedtimedifference->Fill(HFtPlus-HFtMinus);
1217  if (HFePlus+HFeMinus!=0) h_HF_HcalHLT_energydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
1218  }
1219  if (hepocc>0 && hemocc>0)
1220  {
1221  h_HE_HcalHLT_weightedtimedifference->Fill(HEtPlus-HEtMinus);
1222  if (HEePlus-HEeMinus!=0) h_HE_HcalHLT_energydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
1223  }
1224 
1227  if (fabs(HFtPlus-HFtMinus)<timediffThresh_)
1228  {
1231  }
1232  } // passsed Hcal HLT
1233 
1234  return;
1235 } // void HcalRecHitMonitor::processEvent_rechitenergy
1236 
1237 /* --------------------------------------- */
1238 
1239 
1241  const edm::EventSetup& c)
1242 
1243 {
1244  // don't fill lumi block information if it's already been filled
1245  if (LumiInOrder(lumiSeg.luminosityBlock())==false) return;
1246  fill_Nevents();
1247  return;
1248 } //endLuminosityBlock
1249 
1250 
1252 {
1253  // looking at the contents of HbFlagcounters
1254  if (debug_>0)
1255  {
1256  for (int k = 0; k < 32; k++){
1257  std::cout << "<HcalRecHitMonitor::fill_Nevents> HF Flag counter: Bin #" << k+1 << " = "<< HFflagcounter_[k] << std::endl;
1258  }
1259  }
1260 
1261  for (int i=0;i<32;i++)
1262  {
1267  HBflagcounter_[i]=0;
1268  HEflagcounter_[i]=0;
1269  HOflagcounter_[i]=0;
1270  HFflagcounter_[i]=0;
1271  }
1272 
1273  // Fill Occupancy & Sum Energy, Time plots
1274  int myieta=-1;
1275  if (ievt_>0)
1276  {
1277  for (int mydepth=0;mydepth<4;++mydepth)
1278  {
1279  for (int eta=0;eta<OccupancyByDepth.depth[mydepth]->getNbinsX();++eta)
1280  {
1281  myieta=CalcIeta(eta,mydepth+1);
1282 
1283  for (int phi=0;phi<72;++phi)
1284  {
1285  if (occupancy_[eta][phi][mydepth]>0)
1286  {
1287  h_rechitieta->Fill(myieta,occupancy_[eta][phi][mydepth]);
1288  h_rechitiphi->Fill(phi+1,occupancy_[eta][phi][mydepth]);
1289  }
1290  if (occupancy_thresh_[eta][phi][mydepth]>0)
1291  {
1292  h_rechitieta_thresh->Fill(myieta,occupancy_thresh_[eta][phi][mydepth]);
1294  }
1295  OccupancyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_[eta][phi][mydepth]);
1296  SumEnergyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_[eta][phi][mydepth]);
1297  SqrtSumEnergy2ByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_[eta][phi][mydepth]));
1298  SumTimeByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_[eta][phi][mydepth]);
1299 
1300  OccupancyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_thresh_[eta][phi][mydepth]);
1301  SumEnergyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_thresh_[eta][phi][mydepth]);
1302  SqrtSumEnergy2ThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_thresh_[eta][phi][mydepth]));
1303  SumTimeThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_thresh_[eta][phi][mydepth]);
1304  } // for (int phi=0;phi<72;++phi)
1305  } // for (int eta=0;eta<OccupancyByDepth...;++eta)
1306  } // for (int mydepth=0;...)
1307 
1316 
1317  } // if (ievt_>0)
1318 
1319  // Fill subdet plots
1320 
1321  for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1322  {
1323  if (HBtime_[i]!=0)
1324  {
1326  }
1327  if (HBtime_thresh_[i]!=0)
1328  {
1330  }
1331  if (HEtime_[i]!=0)
1332  {
1333 
1335  }
1336  if (HEtime_thresh_[i]!=0)
1337  {
1339  }
1340  if (HOtime_[i]!=0)
1341  {
1343  }
1344  if (HOtime_thresh_[i]!=0)
1345  {
1347  }
1348  if (HFtime_[i]!=0)
1349  {
1351  }
1352  if (HFtime_thresh_[i]!=0)
1353  {
1355  }
1356  } // for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1357 
1358  for (int i=0;i<260;++i)
1359  {
1360  if (HB_occupancy_[i]>0)
1361  {
1363  }
1364  if (HB_occupancy_thresh_[i]>0)
1365  {
1367  }
1368  if (HE_occupancy_[i]>0)
1369  {
1371  }
1372  if (HE_occupancy_thresh_[i]>0)
1373  {
1375  }
1376  }//for (int i=0;i<260;++i)
1377 
1378  for (int i=0;i<217;++i)
1379  {
1380  if (HO_occupancy_[i]>0)
1381  {
1383  }
1384  if (HO_occupancy_thresh_[i]>0)
1385  {
1387  }
1388  }// for (int i=0;i<217;++i)
1389 
1390  for (int i=0;i<173;++i)
1391  {
1392  if (HF_occupancy_[i]>0)
1393  {
1395  }
1396  if (HF_occupancy_thresh_[i]>0)
1397  {
1399  }
1400  }// for (int i=0;i<173;++i)
1401 
1402  //zeroCounters();
1403 
1404  if (debug_>0)
1405  std::cout <<"<HcalRecHitMonitor::fill_Nevents> FILLED REC HIT CELL PLOTS"<<std::endl;
1406 
1407 } // void HcalRecHitMonitor::fill_Nevents(void)
1408 
1409 
1411 {
1412  // Set all histogram counters back to zero
1413 
1414  for (int i=0;i<32;++i)
1415  {
1416  HBflagcounter_[i]=0;
1417  HEflagcounter_[i]=0;
1418  HOflagcounter_[i]=0;
1419  HFflagcounter_[i]=0;
1420 
1421  }
1422  // TH2F counters
1423  for (int i=0;i<85;++i)
1424  {
1425  for (int j=0;j<72;++j)
1426  {
1427  for (int k=0;k<4;++k)
1428  {
1429  occupancy_[i][j][k]=0;
1430  occupancy_thresh_[i][j][k]=0;
1431  energy_[i][j][k]=0;
1432  energy2_[i][j][k]=0;
1433  energy_thresh_[i][j][k]=0;
1434  energy2_thresh_[i][j][k]=0;
1435  time_[i][j][k]=0;
1436  time_thresh_[i][j][k]=0;
1437  }
1438  } // for (int j=0;j<PHIBINS;++j)
1439  } // for (int i=0;i<87;++i)
1440 
1441  // TH1F counters
1442 
1443  for (int i=0;i<200;++i)
1444  {
1445  HFenergyLong_[i]=0;
1447  HFenergyShort_[i]=0;
1449  }
1450 
1451  // time
1452  for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1453  {
1454  HBtime_[i]=0;
1455  HBtime_thresh_[i]=0;
1456  HEtime_[i]=0;
1457  HEtime_thresh_[i]=0;
1458  HOtime_[i]=0;
1459  HOtime_thresh_[i]=0;
1460  HFtime_[i]=0;
1461  HFtime_thresh_[i]=0;
1462  HFtimeLong_[i]=0;
1463  HFtimeLong_thresh_[i]=0;
1464  HFtimeShort_[i]=0;
1466  }
1467 
1468  // occupancy
1469  for (int i=0;i<865;++i)
1470  {
1471  if (i<260)
1472  {
1473  HB_occupancy_[i]=0;
1474  HE_occupancy_[i]=0;
1477  }
1478  if (i<218)
1479  {
1480  HO_occupancy_[i]=0;
1482  }
1483  if (i<174)
1484  {
1485  HF_occupancy_[i]=0;
1487  }
1488 
1489  HFlong_occupancy_[i] =0;
1490  HFshort_occupancy_[i]=0;
1493  } // for (int i=0;i<865;++i)
1494 
1495  return;
1496 } //void HcalRecHitMonitor::zeroCounters(void)
1497 
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:204
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
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]
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:954
double HOtime_thresh_[250--250]
MonitorElement * h_HF_HcalHLT_weightedtimedifference
double HBtime_thresh_[250--250]
double HF_occupancy_thresh_[174]
MonitorElement * h_HBThreshTime
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:434
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]
void beginRun(const edm::Run &run, const edm::EventSetup &c)
MonitorElement * h_LumiPlot_timeHFPlus_vs_timeHFMinus
MonitorElement * h_HFThreshTime
MonitorElement * h_rechitieta_25
virtual void cleanup(void)
std::vector< HBHERecHit >::const_iterator const_iterator
MonitorElement * h_rechitiphi_10
int bunchCrossing() const
Definition: EventBase.h:62
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
double HE_occupancy_thresh_[260]
MonitorElement * bookFloat(const char *name)
Book float.
Definition: DQMStore.cc:891
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
EtaPhiHists SumTimeThreshByDepth
MonitorElement * h_HOsizeVsLS
std::vector< MonitorElement * > getAllContents(const std::string &path, uint32_t runNumber=0, uint32_t lumi=0) const
Definition: DQMStore.cc:1921
int iEvent
Definition: GenABIO.cc:230
std::vector< MonitorElement * > depth
virtual void beginRun(const edm::Run &run, const edm::EventSetup &c)
int CalcIeta(int subdet, int eta, int depth)
void removeContents(void)
erase all monitoring elements in current directory (not including subfolders);
Definition: DQMStore.cc:3135
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)
MonitorElement * bookString(const char *name, const char *value)
Book string.
Definition: DQMStore.cc:920
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
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]
MonitorElement * h_HBM_weightedTime
double f[11][100]
std::vector< std::string > HcalHLTBits_
MonitorElement * h_HFsizeVsLS
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:1268
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
int k[5][pyjets_maxn]
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]
static const double theHFEtaBounds[]
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
void SetupEtaPhiHists(EtaPhiHists &hh, std::string Name, std::string Units)
#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
void Reset(std::vector< TH2F > &depth)
MonitorElement * h_HEThreshOccupancy
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:1082
virtual void setup(void)
double HE_occupancy_[260]
MonitorElement * h_LumiPlot_LS_HcalHLTEvents_notimecut
double HFlong_occupancy_[865]
MonitorElement * h_LumiPlot_LS_HcalHLTEvents
static const double theHBHEEtaBounds[]
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
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:667
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