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 
59 } //constructor
60 
62 {
63 } //destructor
64 
65 
66 /* ------------------------------------ */
67 
68 
70 {
72 
73 
74  if (debug_>0)
75  std::cout <<"<HcalRecHitMonitor::setup> Setting up histograms"<<std::endl;
76 
77  // Can we include this just in the setup, or do we need to get a new logical map with every run?
80 
81  // RecHit Monitor - specific cfg variables
82 
83  if (debug_>1)
84  std::cout <<"<HcalRecHitMonitor::setup> Creating Histograms"<<std::endl;
85 
87  h_TriggeredEvents=dbe_->book1D("EventTriggers","EventTriggers",3,-0.5,2.5);
88  h_TriggeredEvents->setBinLabel(1,"AllEvents");
89  h_TriggeredEvents->setBinLabel(2,"HLT_Minbias");
90  h_TriggeredEvents->setBinLabel(3,"HLT_Hcal");
91 
92  dbe_->setCurrentFolder(subdir_+"rechit_parameters");
93  MonitorElement* THR;
94  dbe_->setCurrentFolder(subdir_+"rechit_parameters/thresholds");
95  THR=dbe_->bookFloat("HB_Rechit_Energy_Threshold");
97  THR=dbe_->bookFloat("HE_Rechit_Energy_Threshold");
99  THR=dbe_->bookFloat("HO_Rechit_Energy_Threshold");
100  THR->Fill(HOenergyThreshold_);
101  THR=dbe_->bookFloat("HF_Rechit_Energy_Threshold");
102  THR->Fill(HFenergyThreshold_);
103  THR=dbe_->bookFloat("HB_Rechit_ET_Threshold");
104  THR->Fill(HBETThreshold_);
105  THR=dbe_->bookFloat("HE_Rechit_ET_Threshold");
106  THR->Fill(HEETThreshold_);
107  THR=dbe_->bookFloat("HO_Rechit_ET_Threshold");
108  THR->Fill(HOETThreshold_);
109  THR=dbe_->bookFloat("HF_Rechit_ET_Threshold");
110  THR->Fill(HFETThreshold_);
111  THR=dbe_->bookFloat("Maximum_HFM_HFP_time_difference_for_luminosityplots");
112  THR->Fill(timediffThresh_);
113 
114 
115  // Set up histograms that are filled by all rechits
116  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits");
117  SetupEtaPhiHists(OccupancyByDepth,"RecHit Occupancy","");
118  h_rechitieta = dbe_->book1D("HcalRecHitIeta",
119  "Hcal RecHit ieta",
120  83,-41.5,41.5);
121  h_rechitiphi = dbe_->book1D("HcalRecHitIphi",
122  "Hcal RecHit iphi",
123  72,0.5,72.5);
124 
125  h_rechitieta_05 = dbe_->book1D("HcalRecHitIeta05",
126  "Hcal RecHit ieta E>0.5 GeV",
127  83,-41.5,41.5);
128  h_rechitiphi_05 = dbe_->book1D("HcalRecHitIphi05",
129  "Hcal RecHit iphi E>0.5 GeV",
130  72,0.5,72.5);
131  h_rechitieta_10 = dbe_->book1D("HcalRecHitIeta10",
132  "Hcal RecHit ieta E>1.0 GeV",
133  83,-41.5,41.5);
134  h_rechitiphi_10 = dbe_->book1D("HcalRecHitIphi10",
135  "Hcal RecHit iphi E>1.0 GeV",
136  72,0.5,72.5);
137  h_rechitieta_25 = dbe_->book1D("HcalRecHitIeta25",
138  "Hcal RecHit ieta E>2.5 GeV",
139  83,-41.5,41.5);
140  h_rechitiphi_25 = dbe_->book1D("HcalRecHitIphi25",
141  "Hcal RecHit iphi E>2.5 GeV",
142  72,0.5,72.5);
143  h_rechitieta_100 = dbe_->book1D("HcalRecHitIeta100",
144  "Hcal RecHit ieta E>10.0 GeV",
145  83,-41.5,41.5);
146  h_rechitiphi_100 = dbe_->book1D("HcalRecHitIphi100",
147  "Hcal RecHit iphi E>10.0 GeV",
148  72,0.5,72.5);
149 
150 
151 
152  h_LumiPlot_LS_allevents = dbe_->book1D("AllEventsPerLS",
153  "LS # of all events",
154  NLumiBlocks_,0.5,NLumiBlocks_+0.5);
155  h_LumiPlot_BX_allevents = dbe_->book1D("BX_allevents",
156  "BX # of all events",
157  3600,0,3600);
158  h_LumiPlot_MinTime_vs_MinHT = dbe_->book2D("MinTime_vs_MinSumET",
159  "Energy-Weighted Time vs Min (HF+,HF-) Scalar Sum ET;min Sum ET(GeV);time(ns)",
160  100,0,10,80,-40,40);
161 
162  h_LumiPlot_timeHT_HFM = dbe_->book2D("HFM_Time_vs_SumET",
163  "Energy-Weighted Time vs HFMinus Scalar Sum ET;Sum ET(GeV);time(ns)",
164  100,0,10,80,-40,40);
165 
166  h_LumiPlot_timeHT_HFP = dbe_->book2D("HFP_Time_vs_SumET",
167  "Energy-Weighted Time vs HFPlus Scalar Sum ET;Sum ET(GeV);time(ns)",
168  100,0,10,80,-40,40);
169 
170 
171  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits/sumplots");
172  SetupEtaPhiHists(SumEnergyByDepth,"RecHit Summed Energy","GeV");
173  SetupEtaPhiHists(SqrtSumEnergy2ByDepth,"RecHit Sqrt Summed Energy2","GeV");
174  SetupEtaPhiHists(SumTimeByDepth,"RecHit Summed Time","nS");
175 
176  // Histograms for events that passed MinBias triggers
177  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias");
178 
179  h_HBP_weightedTime = dbe_->book1D("WeightedTime_HBP","Weighted Time for HBP",
180  300,-150,150);
181  h_HBM_weightedTime = dbe_->book1D("WeightedTime_HBM","Weighted Time for HBM",
182  300,-150,150);
183  h_HEP_weightedTime = dbe_->book1D("WeightedTime_HEP","Weighted Time for HEP",
184  300,-150,150);
185  h_HEM_weightedTime = dbe_->book1D("WeightedTime_HEM","Weighted Time for HEM",
186  300,-150,150);
187  h_HFP_weightedTime = dbe_->book1D("WeightedTime_HFP","Weighted Time for HFP",
188  300,-150,150);
189  h_HFM_weightedTime = dbe_->book1D("WeightedTime_HFM","Weighted Time for HFM",
190  300,-150,150);
191 
192  h_HFtimedifference = dbe_->book1D("HFweightedtimeDifference",
193  "Energy-Weighted time difference between HF+ and HF- passing MinBias (no HT cut)",
194  251,-250.5,250.5);
195  h_HEtimedifference = dbe_->book1D("HEweightedtimeDifference",
196  "Energy-Weighted time difference between HE+ and HE- passing MinBias (no HT cut)",
197  251,-250.5,250.5);
198 
199  HFP_HFM_Energy = dbe_->book2D("HFP_HFM_Energy",
200  "HFP VS HFM Energy; Total Energy in HFMinus (TeV); Total Energy in HFPlus (TeV)",
201  100,0,100, 100,0,100);
202 
203  // Would these work better as 2D plots?
204  h_HFenergydifference = dbe_->book1D("HFenergyDifference",
205  "Sum(E_HFPlus - E_HFMinus)/Sum(E_HFPlus + E_HFMinus)",
206  200,-1,1);
207  h_HEenergydifference = dbe_->book1D("HEenergyDifference",
208  "Sum(E_HEPlus - E_HEMinus)/Sum(E_HEPlus + E_HEMinus)",
209  200,-1,1);
210 
211  h_LumiPlot_LS_MinBiasEvents=dbe_->book1D("MinBiasEventsPerLS",
212  "Number of MinBias Events vs LS (HT cut and HFM-HFP time cut)",
213  NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
214  h_LumiPlot_LS_MinBiasEvents_notimecut=dbe_->book1D("MinBiasEventsPerLS_notimecut",
215  "Number of Events with MinBias vs LS (HFM,HFP HT>1,no time cut)",
216  NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
217 
218  h_LumiPlot_SumHT_HFPlus_vs_HFMinus = dbe_->book2D("SumHT_plus_minus",
219  "HF+ Sum HT vs HF- Sum HT",60,0,30,60,0,30);
220  h_LumiPlot_SumEnergy_HFPlus_vs_HFMinus = dbe_->book2D("SumEnergy_plus_minus",
221  "HF+ Sum Energy vs HF- Sum Energy",
222  60,0,150,60,0,150);
223  h_LumiPlot_timeHFPlus_vs_timeHFMinus = dbe_->book2D("timeHFplus_vs_timeHFminus",
224  "Energy-weighted time average of HF+ vs HF-",
225  60,-60,60,60,-60,60);
226  h_LumiPlot_BX_MinBiasEvents = dbe_->book1D("BX_MinBias_Events_TimeCut",
227  "BX # of MinBias events (HFM & HFP HT>1 & HFM-HFP time cut)",
228  3600,0,3600);
229  h_LumiPlot_BX_MinBiasEvents_notimecut = dbe_->book1D("BX_MinBias_Events_notimecut",
230  "BX # of MinBias events (HFM,HFP HT>1, no time cut)",
231  3600,0,3600);
232  // threshold plots must pass MinBias Trigger
233  SetupEtaPhiHists(OccupancyThreshByDepth,"Above Threshold RecHit Occupancy","");
234  h_rechitieta_thresh = dbe_->book1D("HcalRecHitIeta_thresh",
235  "Hcal RecHit ieta above energy and ET threshold",
236  83,-41.5,41.5);
237  h_rechitiphi_thresh = dbe_->book1D("HcalRecHitIphi_thresh",
238  "Hcal RecHit iphi above energy and ET threshold",
239  72,0.5,72.5);
240 
241  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/sumplots");
242  SetupEtaPhiHists(SumEnergyThreshByDepth,"Above Threshold RecHit Summed Energy","GeV");
243  SetupEtaPhiHists(SumTimeThreshByDepth,"Above Threshold RecHit Summed Time","nS");
244  SetupEtaPhiHists(SqrtSumEnergy2ThreshByDepth,"Above Threshold RecHit Sqrt Summed Energy2","GeV");
245 
246  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/rechit_1D_plots");
247  h_HBThreshTime=dbe_->book1D("HB_time_thresh",
248  "HB RecHit Time Above Threshold",
250  h_HBThreshOccupancy=dbe_->book1D("HB_occupancy_thresh",
251  "HB RecHit Occupancy Above Threshold",260,-0.5,2599.5);
252  h_HEThreshTime=dbe_->book1D("HE_time_thresh",
253  "HE RecHit Time Above Threshold",
255  h_HEThreshOccupancy=dbe_->book1D("HE_occupancy_thresh",
256  "HE RecHit Occupancy Above Threshold",260,-0.5,2599.5);
257  h_HOThreshTime=dbe_->book1D("HO_time_thresh",
258  "HO RecHit Time Above Threshold",
260  h_HOThreshOccupancy=dbe_->book1D("HO_occupancy_thresh",
261  "HO RecHit Occupancy Above Threshold",217,-0.5,2169.5);
262  h_HFThreshTime=dbe_->book1D("HF_time_thresh",
263  "HF RecHit Time Above Threshold",
265  h_HFThreshOccupancy=dbe_->book1D("HF_occupancy_thresh",
266  "HF RecHit Occupancy Above Threshold",
267  173,-0.5,1729.5);
268 
269  // Histograms for events that did passed Hcal-specfied HLT triggers
270  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers");
271 
272  h_LumiPlot_BX_HcalHLTEvents = dbe_->book1D("BX_HcalHLT_Events_TimeCut",
273  "BX # of HcalHLT events (HFM & HFP HT>1 & HFM-HFP time cut)",
274  3600,0,3600);
275  h_LumiPlot_BX_HcalHLTEvents_notimecut = dbe_->book1D("BX_HcalHLT_Events_notimecut",
276  "BX # of HcalHLT events (HFM,HFP HT>1, no time cut)",
277  3600,0,3600);
278  h_LumiPlot_LS_HcalHLTEvents=dbe_->book1D("HcalHLTEventsPerLS",
279  "Number of HcalHLT Events vs LS (HT cut and HFM-HFP time cut)",
280  NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
281  h_LumiPlot_LS_HcalHLTEvents_notimecut=dbe_->book1D("HcalHLTEventsPerLS_notimecut",
282  "Number of Events with HcalHLT vs LS (HFM,HFP HT>1,no time cut)",
283  NLumiBlocks_/10,0.5,NLumiBlocks_+0.5);
284 
285 
286  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers/");
287  h_HF_HcalHLT_weightedtimedifference = dbe_->book1D("HF_HcalHLT_weightedtimeDifference",
288  "Energy-Weighted time difference between HF+ and HF- Hcal HLT",
289  251,-250.5,250.5);
290  h_HE_HcalHLT_weightedtimedifference = dbe_->book1D("HE_HcalHLT_weightedtimeDifference",
291  "Energy-Weighted time difference between HE+ and HE- Hcal HLT",
292  251,-250.5,250.5);
293  h_HF_HcalHLT_energydifference = dbe_->book1D("HF_HcalHLT_energyDifference",
294  "Sum(E_HFPlus - E_HFMinus)/Sum(E_HFPlus + E_HFMinus)",
295  200,-1,1);
296  h_HE_HcalHLT_energydifference = dbe_->book1D("HE_HcalHLT_energyDifference",
297  "Sum(E_HEPlus - E_HEMinus)/Sum(E_HEPlus + E_HEMinus)",
298  200,-1,1);
299 
300  // Do we want separate directories for Minbias, other flags at some point?
301  dbe_->setCurrentFolder(subdir_+"AnomalousCellFlags");// HB Flag Histograms
302 
303 
304  h_HFLongShort_vs_LS=dbe_->book1D("HFLongShort_vs_LS",
305  "HFLongShort Flags vs Lumi Section",
306  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
307  h_HFDigiTime_vs_LS=dbe_->book1D("HFDigiTime_vs_LS",
308  "HFDigiTime Flags vs Lumi Section",
309  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
310  h_HBHEHPDMult_vs_LS=dbe_->book1D("HBHEHPDMult_vs_LS",
311  "HBHEHPDMult Flags vs Lumi Section",
312  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
313  h_HBHEPulseShape_vs_LS=dbe_->book1D("HBHEPulseShape_vs_LS",
314  "HBHEPulseShape Flags vs Lumi Section",
315  NLumiBlocks_/10,0.5,0.5+NLumiBlocks_);
316 
317  h_HF_FlagCorr=dbe_->book2D("HF_FlagCorrelation",
318  "HF LongShort vs. DigiTime flags; DigiTime; LongShort",
319  2,-0.5,1.5,2,-0.5,1.5);
320  h_HF_FlagCorr->setBinLabel(1,"OFF",1);
321  h_HF_FlagCorr->setBinLabel(2,"ON",1);
322  h_HF_FlagCorr->setBinLabel(1,"OFF",2);
323  h_HF_FlagCorr->setBinLabel(2,"ON",2);
324 
325  h_HBHE_FlagCorr=dbe_->book2D("HBHE_FlagCorrelation",
326  "HBHE HpdHitMultiplicity vs. PulseShape flags; PulseShape; HpdHitMultiplicity",
327  2,-0.5,1.5,2,-0.5,1.5);
328  h_HBHE_FlagCorr->setBinLabel(1,"OFF",1);
329  h_HBHE_FlagCorr->setBinLabel(2,"ON",1);
330  h_HBHE_FlagCorr->setBinLabel(1,"OFF",2);
331  h_HBHE_FlagCorr->setBinLabel(2,"ON",2);
332 
333  h_FlagMap_HPDMULT=dbe_->book2D("FlagMap_HPDMULT",
334  "RBX Map of HBHEHpdHitMultiplicity Flags;RBX;RM",
335  72,-0.5,71.5,4,0.5,4.5);
336  h_FlagMap_PULSESHAPE=dbe_->book2D("FlagMap_PULSESHAPE",
337  "RBX Map of HBHEPulseShape Flags;RBX;RM",
338  72,-0.5,71.5,4,0.5,4.5);
339  h_FlagMap_DIGITIME=dbe_->book2D("FlagMap_DIGITIME",
340  "RBX Map of HFDigiTime Flags;RBX;RM",
341  24,131.5,155.5,4,0.5,4.5);
342  h_FlagMap_LONGSHORT=dbe_->book2D("FlagMap_LONGSHORT",
343  "RBX Map of HFLongShort Flags;RBX;RM",
344  24,131.5,155.5,4,0.5,4.5);
345 
346  h_FlagMap_TIMEADD=dbe_->book2D("FlagMap_TIMEADD",
347  "RBX Map of Timing Added Flags;RBX;RM",
348  156,-0.5,155.5,4,0.5,4.5);
349  h_FlagMap_TIMESUBTRACT=dbe_->book2D("FlagMap_TIMESUBTRACT",
350  "RBX Map of Timing Subtracted Flags;RBX;RM",
351  156,-0.5,155.5,4,0.5,4.5);
352  h_FlagMap_TIMEERROR=dbe_->book2D("FlagMap_TIMEERROR",
353  "RBX Map of Timing Error Flags;RBX;RM",
354  156,-0.5,155.5,4,0.5,4.5);
355 
356  h_HBflagcounter=dbe_->book1D("HBflags","HB flags",32,-0.5,31.5);
363  // 2-bit timing counter
366  //3-bit timing shape cut
370 
371  // common flags
377 
378  // HE Flag Histograms
379  h_HEflagcounter=dbe_->book1D("HEflags","HE flags",32,-0.5,31.5);
386  // 2-bit timing counter
389  //3-bit timing shape cut
398 
399  // HO Flag Histograms
400  h_HOflagcounter=dbe_->book1D("HOflags","HO flags",32,-0.5,31.5);
406 
407  // HF Flag Histograms
408  h_HFflagcounter=dbe_->book1D("HFflags","HF flags",32,-0.5,31.5);
417 
418  h_HBflagcounter->getTH1F()->LabelsOption("v");
419  h_HEflagcounter->getTH1F()->LabelsOption("v");
420  h_HOflagcounter->getTH1F()->LabelsOption("v");
421  h_HFflagcounter->getTH1F()->LabelsOption("v");
422 
423 
424  // Diagnostic plots are currently filled for all rechits (no trigger/threshold requirement)
425  // hb
426  dbe_->setCurrentFolder(subdir_+"diagnostics/hb");
427 
428  h_HBTimeVsEnergy=dbe_->book2D("HBTimeVsEnergy","HB Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
429 
430  h_HBsizeVsLS=dbe_->bookProfile("HBRecHitsVsLB","HB RecHits vs Luminosity Block",
431  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
432  100,0,10000);
433 
434  h_HBTime=dbe_->book1D("HB_time","HB RecHit Time",
436  h_HBOccupancy=dbe_->book1D("HB_occupancy",
437  "HB RecHit Occupancy",260,-0.5,2599.5);
438 
439  //he
440  dbe_->setCurrentFolder(subdir_+"diagnostics/he");
441 
442  h_HETimeVsEnergy=dbe_->book2D("HETimeVsEnergy","HE Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
443 
444  h_HEsizeVsLS=dbe_->bookProfile("HERecHitsVsLB","HE RecHits vs Luminosity Block",
445  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
446  100,0,10000);
447 
448  h_HETime=dbe_->book1D("HE_time","HE RecHit Time",
450  h_HEOccupancy=dbe_->book1D("HE_occupancy","HE RecHit Occupancy",260,-0.5,2599.5);
451 
452  // ho
453  dbe_->setCurrentFolder(subdir_+"diagnostics/ho");
454 
455  h_HOTimeVsEnergy=dbe_->book2D("HOTimeVsEnergy","HO Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
456 
457  h_HOsizeVsLS=dbe_->bookProfile("HORecHitsVsLB","HO RecHits vs Luminosity Block",
458  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
459  100,0,10000);
460  h_HOTime=dbe_->book1D("HO_time",
461  "HO RecHit Time",
463  h_HOOccupancy=dbe_->book1D("HO_occupancy",
464  "HO RecHit Occupancy",217,-0.5,2169.5);
465 
466  // hf
467  dbe_->setCurrentFolder(subdir_+"diagnostics/hf");
468 
469  h_HFTimeVsEnergy=dbe_->book2D("HFTimeVsEnergy","HF Time Vs Energy (All RecHits);Energy (GeV); time(nS)",100,0,500,40,-100,100);
470 
471  h_HFsizeVsLS=dbe_->bookProfile("HFRecHitsVsLB",
472  "HF RecHits vs Luminosity Block",
473  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
474  100, 0,10000);
475  h_HFTime=dbe_->book1D("HF_time","HF RecHit Time",
477  h_HFOccupancy=dbe_->book1D("HF_occupancy","HF RecHit Occupancy",173,-0.5,1729.5);
478 
479  // clear all counters, reset histograms
480  this->zeroCounters();
481  this->reset();
482 
483  return;
484 } //void HcalRecHitMonitor::setup(...)
485 
487 {
488 
489  if (debug_>0) std::cout <<"HcalRecHitMonitor::beginRun(): task = '"<<subdir_<<"'"<<std::endl;
491  if (tevt_==0) // create histograms, if they haven't been created already
492  this->setup();
493  // Clear histograms at the start of each run if not merging runs
494  if (mergeRuns_==false)
495  this->reset();
496 
497  if (tevt_!=0) return;
498  // create histograms displaying trigger parameters? Specify names?
499  dbe_->setCurrentFolder(subdir_+"rechit_parameters");
500  std::string tnames="";
501  if (HcalHLTBits_.size()>0)
502  tnames=HcalHLTBits_[0];
503  for (unsigned int i=1;i<HcalHLTBits_.size();++i)
504  tnames=tnames + " OR " + HcalHLTBits_[i];
505  dbe_->bookString("HcalHLTriggerRequirements",tnames);
506  tnames="";
507  if (MinBiasHLTBits_.size()>0)
508  tnames=MinBiasHLTBits_[0];
509  for (unsigned int i=1;i<MinBiasHLTBits_.size();++i)
510  tnames=tnames + " OR " + MinBiasHLTBits_[i];
511  dbe_->bookString("MinBiasHLTriggerRequirements",tnames);
512  return;
513 
514 } //void HcalRecHitMonitor::beginRun(...)
515 
516 
518 {
519  if (debug_>0) std::cout <<"HcalRecHitMonitor::endRun(): task = '"<<subdir_<<"'"<<std::endl;
520 
521  //Any special fill calls needed? Shouldn't be necessary; last endLuminosityBlock should do necessary fills
522 } // void HcalRecHitMonitor::endrun(...)
523 
524 
525 /* --------------------------- */
526 
528 {
529  std::vector<MonitorElement*> hists = dbe_->getAllContents(subdir_);
530  for (unsigned int i=0;i<hists.size();++i)
531  {
532  if (hists[i]->kind()==MonitorElement::DQM_KIND_TH1F ||
533  hists[i]->kind()==MonitorElement::DQM_KIND_TH2F ||
534  hists[i]->kind()==MonitorElement::DQM_KIND_TPROFILE)
535  hists[i]->Reset();
536  }
537 }
538 
540 {
541  if (!enableCleanup_) return;
543  this->cleanup();
544 }
545 
546 
547 /* --------------------------------- */
548 
550 {
551  //Add code to clean out subdirectories
552  if (!enableCleanup_) return;
553  if (dbe_)
554  {
556  dbe_->setCurrentFolder(subdir_+"rechit_parameters"); dbe_->removeContents();
557  dbe_->setCurrentFolder(subdir_+"rechit_parameters/thresholds"); dbe_->removeContents();
558  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits"); dbe_->removeContents();
559  dbe_->setCurrentFolder(subdir_+"Distributions_AllRecHits/sumplots"); dbe_->removeContents();
560  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias"); dbe_->removeContents();
561  dbe_->setCurrentFolder(subdir_+"Distributions_PassedMinBias/sumplots"); dbe_->removeContents();
562  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers"); dbe_->removeContents();
563  dbe_->setCurrentFolder(subdir_+"Distributions_PassedHcalHLTriggers/passedTechTriggers/"); dbe_->removeContents();
564 
565  dbe_->setCurrentFolder(subdir_+"AnomalousCellFlags"); dbe_->removeContents();
566  dbe_->setCurrentFolder(subdir_+"diagnostics/hb"); dbe_->removeContents();
567  dbe_->setCurrentFolder(subdir_+"diagnostics/he"); dbe_->removeContents();
568  dbe_->setCurrentFolder(subdir_+"diagnostics/ho"); dbe_->removeContents();
569  dbe_->setCurrentFolder(subdir_+"diagnostics/hf"); dbe_->removeContents();
570  }
571  return;
572 } // void HcalRecHitMonitor::cleanup()
573 
574 /* -------------------------------- */
575 
577 {
578  if (debug_>0) std::cout <<"HcalRecHitMonitor::analyze; debug = "<<debug_<<std::endl;
579 
580  if (!IsAllowedCalibType()) return;
581  if (LumiInOrder(e.luminosityBlock())==false) return;
582 
583  // Get objects
587 
588  if (!(e.getByLabel(hbheRechitLabel_,hbhe_rechit)))
589  {
590  edm::LogWarning("HcalHotCellMonitor")<< hbheRechitLabel_<<" hbhe_rechit not available";
591  return;
592  }
593 
594  if (!(e.getByLabel(hfRechitLabel_,hf_rechit)))
595  {
596  edm::LogWarning("HcalHotCellMonitor")<< hfRechitLabel_<<" hf_rechit not available";
597  return;
598  }
599 
600  if (!(e.getByLabel(hoRechitLabel_,ho_rechit)))
601  {
602  edm::LogWarning("HcalHotCellMonitor")<< hoRechitLabel_<<" ho_rechit not available";
603  return;
604  }
605 
606 
609  processEvent(*hbhe_rechit, *ho_rechit, *hf_rechit, e.bunchCrossing(), e);
610 
612 } // void HcalRecHitMonitor::analyze()
613 
614 
616  const HORecHitCollection& hoHits,
617  const HFRecHitCollection& hfHits,
618  int BCN,
619  const edm::Event & iEvent
620  )
621 {
622 
623 
624  if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent> Processing event..."<<std::endl;
625 
626 
627  bool passedHcalHLT=false;
628  bool passedMinBiasHLT=false;
629 
631  if (!(iEvent.getByLabel(hltresultsLabel_,hltRes)))
632  {
633  if (debug_>0) edm::LogWarning("HcalRecHitMonitor")<<" Could not get HLT results with tag "<<hltresultsLabel_<<std::endl;
634  }
635  else
636  {
637  const edm::TriggerNames & triggerNames = iEvent.triggerNames(*hltRes);
638  const unsigned int nTrig(triggerNames.size());
639  for (unsigned int i=0;i<nTrig;++i)
640  {
641  // trigger decision is based on 'OR' of any specified trigger names
642  for (unsigned int k=0;k<HcalHLTBits_.size();++k)
643  {
644  // if (triggerNames.triggerName(i)==HcalHLTBits_[k] && hltRes->accept(i))
645  if (triggerNames.triggerName(i).find(HcalHLTBits_[k])!=std::string::npos && hltRes->accept(i))
646  {
647  passedHcalHLT=true;
648  break;
649  }
650  }
651  // repeat for minbias triggers
652  for (unsigned int k=0;k<MinBiasHLTBits_.size();++k)
653  {
654  // if (triggerNames.triggerName(i)==MinBiasHLTBits_[k] && hltRes->accept(i))
655  if (triggerNames.triggerName(i).find(MinBiasHLTBits_[k])!=std::string::npos && hltRes->accept(i))
656  {
657  passedMinBiasHLT=true;
658  break;
659  }
660  }
661  }
662  } //else
663 
664  if (debug_>2 && passedHcalHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed Hcal HLT trigger "<<std::endl;
665  if (debug_>2 && passedMinBiasHLT) std::cout <<"\t<HcalRecHitMonitor::processEvent> Passed MinBias HLT trigger "<<std::endl;
666 
667  h_TriggeredEvents->Fill(0); // all events
668  if (passedMinBiasHLT) h_TriggeredEvents->Fill(1); // Minbias;
669  if (passedHcalHLT) h_TriggeredEvents->Fill(2); // hcal HLT
670  processEvent_rechit(hbHits, hoHits, hfHits,passedHcalHLT,passedMinBiasHLT,BCN);
671 
672  return;
673 } // void HcalRecHitMonitor::processEvent(...)
674 
675 
676 /* --------------------------------------- */
677 
678 
680  const HORecHitCollection& hoHits,
681  const HFRecHitCollection& hfHits,
682  bool passedHcalHLT,
683  bool passedMinBiasHLT,
684  int BCN)
685 {
686  // Gather rechit info
687 
688  //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};
689 
690  if (debug_>1) std::cout <<"<HcalRecHitMonitor::processEvent_rechitenergy> Processing rechits..."<<std::endl;
691 
692  // loop over HBHE
693 
694  int hbocc=0;
695  int heocc=0;
696  int hboccthresh=0;
697  int heoccthresh=0;
698 
699  double HtPlus =0, HtMinus=0;
700  double HFePlus=0, HFeMinus=0;
701  double HBePlus=0, HBeMinus=0;
702  double HEePlus=0, HEeMinus=0;
703  double HFtPlus=0, HFtMinus=0;
704  double HBtPlus=0, HBtMinus=0;
705  double HEtPlus=0, HEtMinus=0;
706 
707  int hbpocc=0, hbmocc=0, hepocc=0, hemocc=0, hfpocc=0, hfmocc=0;
708 
709  for (unsigned int i=0;i<4;++i)
710  {
711  OccupancyByDepth.depth[i]->update();
712  OccupancyThreshByDepth.depth[i]->update();
713  SumEnergyByDepth.depth[i]->update();
714  SqrtSumEnergy2ByDepth.depth[i]->update();
715  SumTimeByDepth.depth[i]->update();
716  }
717 
722 
723 
724  for (HBHERecHitCollection::const_iterator HBHEiter=hbheHits.begin(); HBHEiter!=hbheHits.end(); ++HBHEiter)
725  { // loop over all hits
726  float en = HBHEiter->energy();
727  float ti = HBHEiter->time();
728  HcalDetId id(HBHEiter->detid().rawId());
729  int ieta = id.ieta();
730  int iphi = id.iphi();
731  int depth = id.depth();
732 
733  if (en>0.5)
734  {
735  h_rechitieta_05->Fill(ieta);
736  h_rechitiphi_05->Fill(iphi);
737  if (en>1.)
738  {
739  h_rechitieta_10->Fill(ieta);
740  h_rechitiphi_10->Fill(iphi);
741  if (en>2.5)
742  {
743  h_rechitieta_25->Fill(ieta);
744  h_rechitiphi_25->Fill(iphi);
745  if (en>10.)
746  {
747  h_rechitieta_100->Fill(ieta);
748  h_rechitiphi_100->Fill(iphi);
749  }
750  }
751  }
752  }
753 
754 
755 
756  HcalSubdetector subdet = id.subdet();
757  double fEta=fabs(0.5*(theHBHEEtaBounds[abs(ieta)-1]+theHBHEEtaBounds[abs(ieta)]));
758 
759  int calcEta = CalcEtaBin(subdet,ieta,depth);
760  int rbxindex=logicalMap->getHcalFrontEndId(HBHEiter->detid()).rbxIndex();
761  int rm= logicalMap->getHcalFrontEndId(HBHEiter->detid()).rm();
762 
763  // Fill HBHE flag plots
765  HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity));
766 
767  if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEHpdHitMultiplicity))
768  {
769  h_FlagMap_HPDMULT->Fill(rbxindex,rm);
771  }
772  if (HBHEiter->flagField(HcalCaloFlagLabels::HBHEPulseShape))
773  {
774  h_FlagMap_PULSESHAPE->Fill(rbxindex,rm);
776  }
777  if (HBHEiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
778  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
779  else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
780  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
781  else if (HBHEiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
782  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
783 
784  if (subdet==HcalBarrel)
785  {
786  if (en>HBenergyThreshold_)
787  h_HBTimeVsEnergy->Fill(en,ti);
788  //Looping over HB searching for flags --- cris
789  for (int f=0;f<32;f++)
790  {
791  // Let's display HSCP just to see if these bits are set
792  /*
793  if (f == HcalCaloFlagLabels::HSCP_R1R2) continue;
794  if (f == HcalCaloFlagLabels::HSCP_FracLeader) continue;
795  if (f == HcalCaloFlagLabels::HSCP_OuterEnergy) continue;
796  if (f == HcalCaloFlagLabels::HSCP_ExpFit) continue;
797  */
798  if (HBHEiter->flagField(f))
799  ++HBflagcounter_[f];
800  }
801  ++occupancy_[calcEta][iphi-1][depth-1];
802  energy_[calcEta][iphi-1][depth-1]+=en;
803  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
804  time_[calcEta][iphi-1][depth-1]+=ti;
805  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
806  h_HBTime->Fill(ti);
807  else
808  ++HBtime_[int(ti-RECHITMON_TIME_MIN)];
809  ++hbocc;
810 
811  // Threshold plots; require E> threshold and minbias trigger
812  if (
813  en>=HBenergyThreshold_ &&
814  en/cosh(fEta)>=HBETThreshold_
815  )
816  {
817  if (passedMinBiasHLT==true)
818  {
819  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
820  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
821  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
822  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
823 
824  ++hboccthresh;
825  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
826  h_HBThreshTime->Fill(ti);
827  else
829  }
830 
831  if (ieta>0)
832  {
833  HBePlus+=en;
834  HBtPlus+=ti*en;
835  hbpocc++;
836  }
837  else
838  {
839  HBeMinus+=en;
840  HBtMinus+=ti*en;
841  hbmocc++;
842  }
843  } // if (HB en>thresh, ET>thresh)
844  } // if (id.subdet()==HcalBarrel)
845 
846  else if (subdet==HcalEndcap)
847  {
848  if (en>HEenergyThreshold_)
849  h_HETimeVsEnergy->Fill(en,ti);
850  //Looping over HE searching for flags --- cris
851  for (int f=0;f<32;f++)
852  {
853  if (HBHEiter->flagField(f))
854  ++HEflagcounter_[f];
855  }
856 
857  ++occupancy_[calcEta][iphi-1][depth-1];
858  energy_[calcEta][iphi-1][depth-1]+=en;
859  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
860  time_[calcEta][iphi-1][depth-1]+=ti;
861 
862  ++heocc;
863  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
864  h_HETime->Fill(ti);
865  else
866  ++HEtime_[int(ti-RECHITMON_TIME_MIN)];
867 
868  // Threshold plots require e>E_thresh, ET>ET_thresh
869  if (en>=HEenergyThreshold_
870  && en/cosh(fEta)>=HEETThreshold_
871  )
872  {
873  // occupancy plots also require passedMinBiasHLT
874  if (passedMinBiasHLT==true)
875  {
876  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
877  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
878  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
879  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
880  ++heoccthresh;
881  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
882  h_HEThreshTime->Fill(ti);
883  else
885  }
886  // ePlus, tPlus calculated regardless of trigger
887  if (ieta>0)
888  {
889  HEePlus+=en;
890  HEtPlus+=ti*en;
891  hepocc++;
892  }
893  else
894  {
895  HEeMinus+=en;
896  HEtMinus+=ti*en;
897  hemocc++;
898  }
899  } // if (en>=HEenergyThreshold_ && ET>threshold)
900 
901  } // else if (id.subdet()==HcalEndcap)
902 
903  } //for (HBHERecHitCollection::const_iterator HBHEiter=...)
904 
905  // Calculate normalized time
906  HEePlus>0 ? HEtPlus/=HEePlus : HEtPlus=10000;
907  HEeMinus>0 ? HEtMinus/=HEeMinus : HEtMinus=-10000;
908  HBePlus>0 ? HBtPlus/=HBePlus : HBtPlus=10000;
909  HBeMinus>0 ? HBtMinus/=HBeMinus : HBtMinus=-10000;
910 
911  ++HB_occupancy_[hbocc/10];
912  ++HE_occupancy_[heocc/10];
913  ++HB_occupancy_thresh_[hboccthresh/10];
914  ++HE_occupancy_thresh_[heoccthresh/10];
915  h_HBsizeVsLS->Fill(currentLS,hbocc);
916  h_HEsizeVsLS->Fill(currentLS,heocc);
917 
918  // loop over HO
919 
920  h_HOsizeVsLS->Fill(currentLS,hoHits.size());
921  int hoocc=0;
922  int hooccthresh=0;
923  for (HORecHitCollection::const_iterator HOiter=hoHits.begin(); HOiter!=hoHits.end(); ++HOiter)
924  { // loop over all hits
925  float en = HOiter->energy();
926  float ti = HOiter->time();
927  if (en>HOenergyThreshold_)
928  h_HOTimeVsEnergy->Fill(en,ti);
929 
930  HcalDetId id(HOiter->detid().rawId());
931  int ieta = id.ieta();
932  int iphi = id.iphi();
933  int depth = id.depth();
934 
935  if (en>0.5)
936  {
937  h_rechitieta_05->Fill(ieta);
938  h_rechitiphi_05->Fill(iphi);
939  if (en>1.)
940  {
941  h_rechitieta_10->Fill(ieta);
942  h_rechitiphi_10->Fill(iphi);
943  if (en>2.5)
944  {
945  h_rechitieta_25->Fill(ieta);
946  h_rechitiphi_25->Fill(iphi);
947  if (en>10.)
948  {
949  h_rechitieta_100->Fill(ieta);
950  h_rechitiphi_100->Fill(iphi);
951  }
952  }
953  }
954  }
955 
956 
957 
958  int calcEta = CalcEtaBin(HcalOuter,ieta,depth);
959  double fEta=fabs(0.5*(theHBHEEtaBounds[abs(ieta)-1]+theHBHEEtaBounds[abs(ieta)]));
960 
961  int rbxindex=logicalMap->getHcalFrontEndId(HOiter->detid()).rbxIndex();
962  int rm= logicalMap->getHcalFrontEndId(HOiter->detid()).rm();
963 
964  if (HOiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
965  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
966  else if (HOiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
967  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
968  else if (HOiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
969  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
970 
971 
972  //Looping over HO searching for flags --- cris
973  for (int f=0;f<32;f++)
974  {
975  if (HOiter->flagField(f))
976  HOflagcounter_[f]++;
977  }
978 
979  ++occupancy_[calcEta][iphi-1][depth-1];
980  energy_[calcEta][iphi-1][depth-1]+=en;
981  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
982  time_[calcEta][iphi-1][depth-1]+=ti;
983  ++hoocc;
984  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
985  h_HOTime->Fill(ti);
986  else
987  ++HOtime_[int(ti-RECHITMON_TIME_MIN)];
988 
989  // We don't calculate HOplus/HOminus values (independent of trigger), so require min bias trigger
990  // along with E, ET thresholds directly in this HO loop:
991 
992  if (en>=HOenergyThreshold_
993  && en/cosh(fEta)>=HOETThreshold_
994  && passedMinBiasHLT==true
995  )
996  {
997  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
998  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
999  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
1000  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
1001 
1002  ++hooccthresh;
1003  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1004  h_HOThreshTime->Fill(ti);
1005  else
1007  }
1008  } // loop over all HO hits
1009 
1010  ++HO_occupancy_[hoocc/10];
1011  ++HO_occupancy_thresh_[hooccthresh/10];
1012 
1013  // loop over HF
1014  h_HFsizeVsLS->Fill(currentLS,hfHits.size());
1015 
1016  HtPlus=0; HtMinus=0;
1017 
1018  int hfocc=0;
1019  int hfoccthresh=0;
1020  for (HFRecHitCollection::const_iterator HFiter=hfHits.begin(); HFiter!=hfHits.end(); ++HFiter)
1021  { // loop over all hits
1022  float en = HFiter->energy();
1023  float ti = HFiter->time();
1024  if (en> HFenergyThreshold_)
1025  h_HFTimeVsEnergy->Fill(en,ti);
1026 
1027  HcalDetId id(HFiter->detid().rawId());
1028  int ieta = id.ieta();
1029  int iphi = id.iphi();
1030  int depth = id.depth();
1031 
1032  if (en>0.5)
1033  {
1034  h_rechitieta_05->Fill(ieta);
1035  h_rechitiphi_05->Fill(iphi);
1036  if (en>1.)
1037  {
1038  h_rechitieta_10->Fill(ieta);
1039  h_rechitiphi_10->Fill(iphi);
1040  if (en>2.5)
1041  {
1042  h_rechitieta_25->Fill(ieta);
1043  h_rechitiphi_25->Fill(iphi);
1044  if (en>10.)
1045  {
1046  h_rechitieta_100->Fill(ieta);
1047  h_rechitiphi_100->Fill(iphi);
1048  }
1049  }
1050  }
1051  }
1052 
1053  double fEta=fabs(0.5*(theHFEtaBounds[abs(ieta)-29]+theHFEtaBounds[abs(ieta)-28]));
1054  int calcEta = CalcEtaBin(HcalForward,ieta,depth);
1055 
1056  int rbxindex=logicalMap->getHcalFrontEndId(HFiter->detid()).rbxIndex();
1057  int rm= logicalMap->getHcalFrontEndId(HFiter->detid()).rm();
1058 
1059  h_HF_FlagCorr->Fill(HFiter->flagField(HcalCaloFlagLabels::HFDigiTime),HFiter->flagField(HcalCaloFlagLabels::HFLongShort));
1060  if (HFiter->flagField(HcalCaloFlagLabels::TimingSubtractedBit))
1061  h_FlagMap_TIMESUBTRACT->Fill(rbxindex,rm);
1062  else if (HFiter->flagField(HcalCaloFlagLabels::TimingAddedBit))
1063  h_FlagMap_TIMEADD->Fill(rbxindex,rm);
1064  else if (HFiter->flagField(HcalCaloFlagLabels::TimingErrorBit))
1065  h_FlagMap_TIMEERROR->Fill(rbxindex,rm);
1066 
1067  if (HFiter->flagField(HcalCaloFlagLabels::HFDigiTime))
1068  {
1069  h_FlagMap_DIGITIME->Fill(rbxindex,rm);
1071  }
1072  if (HFiter->flagField(HcalCaloFlagLabels::HFLongShort))
1073  {
1074  h_FlagMap_LONGSHORT->Fill(rbxindex,rm);
1076  }
1077  //Looping over HF searching for flags --- cris
1078  for (int f=0;f<32;f++)
1079  {
1080  if (HFiter->flagField(f))
1081  HFflagcounter_[f]++;
1082  }
1083 
1084  // Occupancy plots, without threshold
1085  ++occupancy_[calcEta][iphi-1][depth-1];
1086  energy_[calcEta][iphi-1][depth-1]+=en;
1087  energy2_[calcEta][iphi-1][depth-1]+=pow(en,2);
1088  time_[calcEta][iphi-1][depth-1]+=ti;
1089  ++hfocc;
1090  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1091  h_HFTime->Fill(ti);
1092  else
1093  ++HFtime_[int(ti-RECHITMON_TIME_MIN)];
1094 
1095  ieta>0 ? HtPlus+=en/cosh(fEta) : HtMinus+=en/cosh(fEta); // add energy from all cells, or only those > threshold?
1096 
1097  if (en>=HFenergyThreshold_ &&
1098  en/cosh(fEta)>=HFETThreshold_
1099  )
1100  {
1101  // Occupancy plots require min bias trigger, along with thresholds exceeded
1102  if (passedMinBiasHLT)
1103  {
1104  ++occupancy_thresh_[calcEta][iphi-1][depth-1];
1105  energy_thresh_[calcEta][iphi-1][depth-1]+=en;
1106  energy2_thresh_[calcEta][iphi-1][depth-1]+=pow(en,2);
1107  time_thresh_[calcEta][iphi-1][depth-1]+=ti;
1108 
1109  ++hfoccthresh;
1110  if (ti<RECHITMON_TIME_MIN || ti>RECHITMON_TIME_MAX)
1111  h_HFThreshTime->Fill(ti);
1112  else
1114  }
1115 
1116  if (ieta>0)
1117  {
1118  HFtPlus+=en*ti;
1119  HFePlus+=en;
1120  hfpocc++;
1121  }
1122  else if (ieta<0)
1123  {
1124  HFtMinus+=en*ti;
1125  HFeMinus+=en;
1126  hfmocc++;
1127  }
1128  } // if (en>thresh, ET>thresh)
1129  } // loop over all HF hits
1130 
1131  ++HF_occupancy_[hfocc/10];
1132  ++HF_occupancy_thresh_[hfoccthresh/10];
1133 
1134 
1135  // Form event-wide variables (time averages, etc.), and plot them
1136 
1137  // Calculate weighted times. (Set tPlus, tMinus to overflow in case where total energy < 0)
1138  HFePlus>0 ? HFtPlus/=HFePlus : HFtPlus = 10000;
1139  HFeMinus>0 ? HFtMinus/=HFeMinus : HFtMinus = -10000;
1140 
1141  double mintime=99; // used to be min(tPlus,tMinus);
1142  double minHT=std::min(HtMinus,HtPlus);
1143  minHT==HtMinus ? mintime=HFtMinus : mintime = HFtPlus;
1144  //mintime = min(HFtPlus,HFtMinus); // I think we might want to use this value for mintime?
1145 
1146 
1147  h_LumiPlot_MinTime_vs_MinHT->Fill(minHT, mintime);
1148  h_LumiPlot_timeHT_HFM->Fill(HtMinus,HFtMinus);
1149  h_LumiPlot_timeHT_HFP->Fill(HtPlus,HFtPlus);
1150 
1151  if (passedMinBiasHLT==true)
1152  {
1153  h_LumiPlot_SumHT_HFPlus_vs_HFMinus->Fill(HtMinus,HtPlus);
1154  // HtMinus, HtPlus require no energy cuts for their contributing cells
1155  // HFeMinus, HFePlus require that cells be > threshold cut
1156 
1157  if (HtMinus>1 && HtPlus > 1) // is this the condition we want, or do we want hfmocc>0 && hfpocc >0?
1158  {
1159  h_LumiPlot_SumEnergy_HFPlus_vs_HFMinus->Fill(HFeMinus,HFePlus);
1160  h_LumiPlot_timeHFPlus_vs_timeHFMinus->Fill(HFtMinus,HFtPlus);
1161 
1162  h_HFP_weightedTime->Fill(HFtPlus);
1163  h_HFM_weightedTime->Fill(HFtMinus);
1164  h_HBP_weightedTime->Fill(HBtPlus);
1165  h_HBM_weightedTime->Fill(HBtMinus);
1166 
1167  h_HEP_weightedTime->Fill(HEtPlus);
1168  h_HEM_weightedTime->Fill(HEtMinus);
1169 
1170  if (hepocc>0 && hemocc>0)
1171  {
1172  h_HEtimedifference->Fill(HEtPlus-HEtMinus);
1173  if (HEePlus-HEeMinus!=0) h_HEenergydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
1174  }
1175  if (hfpocc>0 && hfmocc>0) // which condition do we want?
1176  {
1177  h_HFtimedifference->Fill((HFtPlus)-(HFtMinus));
1178  if (HFePlus+HFeMinus!=0) h_HFenergydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
1179  }
1180 
1183  if (fabs(HFtPlus-HFtMinus)<timediffThresh_)
1184  {
1187  }
1188 
1189  HFP_HFM_Energy->Fill(HFeMinus/1000., HFePlus/1000.);
1190  }
1191 
1192  if (debug_>1) std::cout <<"\t<HcalRecHitMonitor:: HF averages> TPLUS = "<<HFtPlus<<" EPLUS = "<<HFePlus<<" TMINUS = "<<HFtMinus<<" EMINUS = "<<HFeMinus<<" Weighted Time Diff = "<<((HFtPlus)-(HFtMinus))<<std::endl;
1193 
1194 
1195  } // if (passedMinBiasHLT)
1196 
1197  if (passedHcalHLT && HtMinus>1 && HtPlus> 1 )
1198  {
1199  if (hfpocc>0 && hfmocc>0)
1200  {
1201  h_HF_HcalHLT_weightedtimedifference->Fill(HFtPlus-HFtMinus);
1202  if (HFePlus+HFeMinus!=0) h_HF_HcalHLT_energydifference->Fill((HFePlus-HFeMinus)/(HFePlus+HFeMinus));
1203  }
1204  if (hepocc>0 && hemocc>0)
1205  {
1206  h_HE_HcalHLT_weightedtimedifference->Fill(HEtPlus-HEtMinus);
1207  if (HEePlus-HEeMinus!=0) h_HE_HcalHLT_energydifference->Fill((HEePlus-HEeMinus)/(HEePlus+HEeMinus));
1208  }
1209 
1212  if (fabs(HFtPlus-HFtMinus)<timediffThresh_)
1213  {
1216  }
1217  } // passsed Hcal HLT
1218 
1219  return;
1220 } // void HcalRecHitMonitor::processEvent_rechitenergy
1221 
1222 /* --------------------------------------- */
1223 
1224 
1226  const edm::EventSetup& c)
1227 
1228 {
1229  // don't fill lumi block information if it's already been filled
1230  if (LumiInOrder(lumiSeg.luminosityBlock())==false) return;
1231  fill_Nevents();
1232  return;
1233 } //endLuminosityBlock
1234 
1235 
1237 {
1238  // looking at the contents of HbFlagcounters
1239  if (debug_>0)
1240  {
1241  for (int k = 0; k < 32; k++){
1242  std::cout << "<HcalRecHitMonitor::fill_Nevents> HF Flag counter: Bin #" << k+1 << " = "<< HFflagcounter_[k] << std::endl;
1243  }
1244  }
1245 
1246  for (int i=0;i<32;i++)
1247  {
1252  HBflagcounter_[i]=0;
1253  HEflagcounter_[i]=0;
1254  HOflagcounter_[i]=0;
1255  HFflagcounter_[i]=0;
1256  }
1257 
1258  // Fill Occupancy & Sum Energy, Time plots
1259  int myieta=-1;
1260  if (ievt_>0)
1261  {
1262  for (int mydepth=0;mydepth<4;++mydepth)
1263  {
1264  for (int eta=0;eta<OccupancyByDepth.depth[mydepth]->getNbinsX();++eta)
1265  {
1266  myieta=CalcIeta(eta,mydepth+1);
1267 
1268  for (int phi=0;phi<72;++phi)
1269  {
1270  if (occupancy_[eta][phi][mydepth]>0)
1271  {
1272  h_rechitieta->Fill(myieta,occupancy_[eta][phi][mydepth]);
1273  h_rechitiphi->Fill(phi+1,occupancy_[eta][phi][mydepth]);
1274  }
1275  if (occupancy_thresh_[eta][phi][mydepth]>0)
1276  {
1277  h_rechitieta_thresh->Fill(myieta,occupancy_thresh_[eta][phi][mydepth]);
1279  }
1280  OccupancyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_[eta][phi][mydepth]);
1281  SumEnergyByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_[eta][phi][mydepth]);
1282  SqrtSumEnergy2ByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_[eta][phi][mydepth]));
1283  SumTimeByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_[eta][phi][mydepth]);
1284 
1285  OccupancyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,occupancy_thresh_[eta][phi][mydepth]);
1286  SumEnergyThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,energy_thresh_[eta][phi][mydepth]);
1287  SqrtSumEnergy2ThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,sqrt(energy2_thresh_[eta][phi][mydepth]));
1288  SumTimeThreshByDepth.depth[mydepth]->setBinContent(eta+1,phi+1,time_thresh_[eta][phi][mydepth]);
1289  } // for (int phi=0;phi<72;++phi)
1290  } // for (int eta=0;eta<OccupancyByDepth...;++eta)
1291  } // for (int mydepth=0;...)
1292 
1301 
1302  } // if (ievt_>0)
1303 
1304  // Fill subdet plots
1305 
1306  for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1307  {
1308  if (HBtime_[i]!=0)
1309  {
1311  }
1312  if (HBtime_thresh_[i]!=0)
1313  {
1315  }
1316  if (HEtime_[i]!=0)
1317  {
1318 
1320  }
1321  if (HEtime_thresh_[i]!=0)
1322  {
1324  }
1325  if (HOtime_[i]!=0)
1326  {
1328  }
1329  if (HOtime_thresh_[i]!=0)
1330  {
1332  }
1333  if (HFtime_[i]!=0)
1334  {
1336  }
1337  if (HFtime_thresh_[i]!=0)
1338  {
1340  }
1341  } // for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1342 
1343  for (int i=0;i<260;++i)
1344  {
1345  if (HB_occupancy_[i]>0)
1346  {
1348  }
1349  if (HB_occupancy_thresh_[i]>0)
1350  {
1352  }
1353  if (HE_occupancy_[i]>0)
1354  {
1356  }
1357  if (HE_occupancy_thresh_[i]>0)
1358  {
1360  }
1361  }//for (int i=0;i<260;++i)
1362 
1363  for (int i=0;i<217;++i)
1364  {
1365  if (HO_occupancy_[i]>0)
1366  {
1368  }
1369  if (HO_occupancy_thresh_[i]>0)
1370  {
1372  }
1373  }// for (int i=0;i<217;++i)
1374 
1375  for (int i=0;i<173;++i)
1376  {
1377  if (HF_occupancy_[i]>0)
1378  {
1380  }
1381  if (HF_occupancy_thresh_[i]>0)
1382  {
1384  }
1385  }// for (int i=0;i<173;++i)
1386 
1387  //zeroCounters();
1388 
1389  if (debug_>0)
1390  std::cout <<"<HcalRecHitMonitor::fill_Nevents> FILLED REC HIT CELL PLOTS"<<std::endl;
1391 
1392 } // void HcalRecHitMonitor::fill_Nevents(void)
1393 
1394 
1396 {
1397  // Set all histogram counters back to zero
1398 
1399  for (int i=0;i<32;++i)
1400  {
1401  HBflagcounter_[i]=0;
1402  HEflagcounter_[i]=0;
1403  HOflagcounter_[i]=0;
1404  HFflagcounter_[i]=0;
1405 
1406  }
1407  // TH2F counters
1408  for (int i=0;i<85;++i)
1409  {
1410  for (int j=0;j<72;++j)
1411  {
1412  for (int k=0;k<4;++k)
1413  {
1414  occupancy_[i][j][k]=0;
1415  occupancy_thresh_[i][j][k]=0;
1416  energy_[i][j][k]=0;
1417  energy2_[i][j][k]=0;
1418  energy_thresh_[i][j][k]=0;
1419  energy2_thresh_[i][j][k]=0;
1420  time_[i][j][k]=0;
1421  time_thresh_[i][j][k]=0;
1422  }
1423  } // for (int j=0;j<PHIBINS;++j)
1424  } // for (int i=0;i<87;++i)
1425 
1426  // TH1F counters
1427 
1428  for (int i=0;i<200;++i)
1429  {
1430  HFenergyLong_[i]=0;
1432  HFenergyShort_[i]=0;
1434  }
1435 
1436  // time
1437  for (int i=0;i<(RECHITMON_TIME_MAX-RECHITMON_TIME_MIN);++i)
1438  {
1439  HBtime_[i]=0;
1440  HBtime_thresh_[i]=0;
1441  HEtime_[i]=0;
1442  HEtime_thresh_[i]=0;
1443  HOtime_[i]=0;
1444  HOtime_thresh_[i]=0;
1445  HFtime_[i]=0;
1446  HFtime_thresh_[i]=0;
1447  HFtimeLong_[i]=0;
1448  HFtimeLong_thresh_[i]=0;
1449  HFtimeShort_[i]=0;
1451  }
1452 
1453  // occupancy
1454  for (int i=0;i<865;++i)
1455  {
1456  if (i<260)
1457  {
1458  HB_occupancy_[i]=0;
1459  HE_occupancy_[i]=0;
1462  }
1463  if (i<218)
1464  {
1465  HO_occupancy_[i]=0;
1467  }
1468  if (i<174)
1469  {
1470  HF_occupancy_[i]=0;
1472  }
1473 
1474  HFlong_occupancy_[i] =0;
1475  HFshort_occupancy_[i]=0;
1478  } // for (int i=0;i<865;++i)
1479 
1480  return;
1481 } //void HcalRecHitMonitor::zeroCounters(void)
1482 
double HFenergyShort_[200]
MonitorElement * h_rechitieta_100
double time_[85][72][4]
double HB_occupancy_[260]
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
MonitorElement * h_HOThreshTime
bool LumiInOrder(int lumisec)
MonitorElement * h_HFP_weightedTime
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:199
MonitorElement * h_HFLongShort_vs_LS
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * h_HFtimedifference
MonitorElement * h_LumiPlot_timeHT_HFP
MonitorElement * h_HBHE_FlagCorr
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:717
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
MonitorElement * h_HOflagcounter
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
HcalLogicalMap createMap(unsigned int mapIOV=5)
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< T >::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
#define abs(x)
Definition: mlp_lapack.h:159
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]
#define min(a, b)
Definition: mlp_lapack.h:161
edm::InputTag l1gtLabel_
MonitorElement * h_HFflagcounter
Strings::size_type size() const
Definition: TriggerNames.cc:39
MonitorElement * h_HFM_weightedTime
void update(void)
Mark the object updated.
MonitorElement * h_HBTimeVsEnergy
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:654
unsigned int occupancy_[85][72][4]
std::vector< MonitorElement * > getAllContents(const std::string &path) const
Definition: DQMStore.cc:1672
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
int iEvent
Definition: GenABIO.cc:243
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:2564
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:683
unsigned int occupancy_thresh_[85][72][4]
double HFtimeLong_thresh_[250--250]
T sqrt(T t)
Definition: SSEVec.h:46
MonitorElement * h_HETimeVsEnergy
MonitorElement * h_HEenergydifference
string rm
Definition: submit.py:76
MonitorElement * h_HFTimeVsEnergy
HcalSubdetector
Definition: HcalAssistant.h:32
MonitorElement * h_LumiPlot_BX_HcalHLTEvents
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:1031
EtaPhiHists SqrtSumEnergy2ByDepth
MonitorElement * h_HBOccupancy
MonitorElement * h_HFDigiTime_vs_LS
void analyze(const edm::Event &, const edm::EventSetup &)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
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
void endRun(const edm::Run &run, const edm::EventSetup &c)
TH1F * getTH1F(void) const
MonitorElement * h_HE_HcalHLT_energydifference
double HEtime_[250--250]
MonitorElement * h_rechitiphi
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:845
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:429
const_iterator begin() const
Definition: Run.h:33
MonitorElement * h_TriggeredEvents
MonitorElement * h_LumiPlot_SumHT_HFPlus_vs_HFMinus
HcalLogicalMap * logicalMap
double energy_[85][72][4]
Definition: DDAxes.h:10