CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ZDCDigiStudy.cc
Go to the documentation of this file.
1 // Package: ZDCDigiStudy
3 // Class: ZDCDigiStudy
4 //
5 /*
6  Description:
7  This code has been developed to be a check for the ZDC sim. In 2009, it was found that the ZDC Simulation was unrealistic and needed repair. The aim of this code is to show the user the input and output of a ZDC MinBias simulation.
8 
9  Implementation:
10  First a MinBias simulation should be run, it could be pythia,hijin,or hydjet. This will output a .root file which should have information about recoGenParticles, hcalunsuppresseddigis. Use this .root file as the input into the cfg.py which is found in the main directory of this package. This output will be another .root file which is meant to be viewed in a TBrowser
11 
12 */
13 //
14 // Original Author: Jaime Gomez (U. of Maryland) with SIGNIFICANT assistance of Dr. Jefferey Temple (U. of Maryland)
15 //
16 //
17 // Created: Summer 2012
19 
22 
24 #include "CLHEP/Units/GlobalSystemOfUnits.h"
25 
27  zdcHits = ps.getUntrackedParameter<std::string>("HitCollection", "ZdcHits");
28  outFile_ = ps.getUntrackedParameter<std::string>("outputFile", "zdcHitStudy.root");
29  verbose_ = ps.getUntrackedParameter<bool>("Verbose", false);
30  checkHit_ = true;
31 
32  tok_zdc_ = consumes<ZDCDigiCollection>(edm::InputTag("simHcalUnsuppressedDigis"));
33 
34  edm::LogInfo("ZDCDigiStudy")
35  //std::cout
36  << " Hits: " << zdcHits << " / " << checkHit_ << " Output: " << outFile_;
37 }
38 
40 
42  ib.setCurrentFolder("ZDCDigiValidation");
43  // run histos only since there is dqmEndRun processing.
44  ib.setScope(MonitorElementData::Scope::RUN);
45 
46  //Histograms for Hits
48  //# Below we are filling the histograms made in the .h file. The syntax is as follows: #
49  //# plot_code_name = dbe_->TypeofPlot[(1,2,3)-D,(F,I,D)]("Name as it will appear","Title",axis options); #
50  //# They will be stored in the TFile subdirectory set by : dbe_->setCurrentFolder("FolderIwant") #
51  //# axis options are like (#ofbins,min,max) #
53 
54  if (checkHit_) {
56 
58  ib.setCurrentFolder("ZDCDigiValidation/ZDC_Digis/1D_fC");
59  meZdcfCPHAD = ib.book1D("PHAD_TotalfC", "PZDC_HAD_TotalfC", 1000, -50, 10000);
60  meZdcfCPHAD->setAxisTitle("Counts", 2);
61  meZdcfCPHAD->setAxisTitle("fC", 1);
63  meZdcfCPTOT = ib.book1D("PZDC_TotalfC", "PZDC_TotalfC", 1000, -50, 20000);
64  meZdcfCPTOT->setAxisTitle("Counts", 2);
65  meZdcfCPTOT->setAxisTitle("fC", 1);
67  meZdcfCNHAD = ib.book1D("NHAD_TotalfC", "NZDC_HAD_TotalfC", 1000, -50, 10000);
68  meZdcfCNHAD->setAxisTitle("Counts", 2);
69  meZdcfCNHAD->setAxisTitle("fC", 1);
71  meZdcfCNTOT = ib.book1D("NZDC_TotalfC", "NZDC_TotalfC", 1000, -50, 20000);
72  meZdcfCNTOT->setAxisTitle("Counts", 2);
73  meZdcfCNTOT->setAxisTitle("fC", 1);
75 
77  ib.setCurrentFolder("ZDCDigiValidation/ZDC_Digis/fCvsTS/PZDC");
78 
80  meZdcPEM1fCvsTS = ib.book1D("PEM1_fCvsTS", "P-EM1_AveragefC_vsTS", 10, 0, 9);
81  meZdcPEM1fCvsTS->setAxisTitle("fC", 2);
82  meZdcPEM1fCvsTS->setAxisTitle("TS", 1);
85  meZdcPEM2fCvsTS = ib.book1D("PEM2_fCvsTS", "P-EM2_AveragefC_vsTS", 10, 0, 9);
86  meZdcPEM2fCvsTS->setAxisTitle("fC", 2);
87  meZdcPEM2fCvsTS->setAxisTitle("TS", 1);
90  meZdcPEM3fCvsTS = ib.book1D("PEM3_fCvsTS", "P-EM3_AveragefC_vsTS", 10, 0, 9);
91  meZdcPEM3fCvsTS->setAxisTitle("fC", 2);
92  meZdcPEM3fCvsTS->setAxisTitle("TS", 1);
95  meZdcPEM4fCvsTS = ib.book1D("PEM4_fCvsTS", "P-EM4_AveragefC_vsTS", 10, 0, 9);
96  meZdcPEM4fCvsTS->setAxisTitle("fC", 2);
97  meZdcPEM4fCvsTS->setAxisTitle("TS", 1);
100  meZdcPEM5fCvsTS = ib.book1D("PEM5_fCvsTS", "P-EM5_AveragefC_vsTS", 10, 0, 9);
101  meZdcPEM5fCvsTS->setAxisTitle("fC", 2);
102  meZdcPEM5fCvsTS->setAxisTitle("TS", 1);
105  meZdcPHAD1fCvsTS = ib.book1D("PHAD1_fCvsTS", "P-HAD1_AveragefC_vsTS", 10, 0, 9);
106  meZdcPHAD1fCvsTS->setAxisTitle("fC", 2);
107  meZdcPHAD1fCvsTS->setAxisTitle("TS", 1);
110  meZdcPHAD2fCvsTS = ib.book1D("PHAD2_fCvsTS", "P-HAD2_AveragefC_vsTS", 10, 0, 9);
111  meZdcPHAD2fCvsTS->setAxisTitle("fC", 2);
112  meZdcPHAD2fCvsTS->setAxisTitle("TS", 1);
115  meZdcPHAD3fCvsTS = ib.book1D("PHAD3_fCvsTS", "P-HAD3_AveragefC_vsTS", 10, 0, 9);
116  meZdcPHAD3fCvsTS->setAxisTitle("fC", 2);
117  meZdcPHAD3fCvsTS->setAxisTitle("TS", 1);
120  meZdcPHAD4fCvsTS = ib.book1D("PHAD4_fCvsTS", "P-HAD4_AveragefC_vsTS", 10, 0, 9);
121  meZdcPHAD4fCvsTS->setAxisTitle("fC", 2);
122  meZdcPHAD4fCvsTS->setAxisTitle("TS", 1);
124  ib.setCurrentFolder("ZDCDigiValidation/ZDC_Digis/fCvsTS/NZDC");
125 
127  meZdcNEM1fCvsTS = ib.book1D("NEM1_fCvsTS", "N-EM1_AveragefC_vsTS", 10, 0, 9);
128  meZdcNEM1fCvsTS->setAxisTitle("fC", 2);
129  meZdcNEM1fCvsTS->setAxisTitle("TS", 1);
132  meZdcNEM2fCvsTS = ib.book1D("NEM2_fCvsTS", "N-EM2_AveragefC_vsTS", 10, 0, 9);
133  meZdcNEM2fCvsTS->setAxisTitle("fC", 2);
134  meZdcNEM2fCvsTS->setAxisTitle("TS", 1);
137  meZdcNEM3fCvsTS = ib.book1D("NEM3_fCvsTS", "N-EM3_AveragefC_vsTS", 10, 0, 9);
138  meZdcNEM3fCvsTS->setAxisTitle("fC", 2);
139  meZdcNEM3fCvsTS->setAxisTitle("TS", 1);
142  meZdcNEM4fCvsTS = ib.book1D("NEM4_fCvsTS", "N-EM4_AveragefC_vsTS", 10, 0, 9);
143  meZdcNEM4fCvsTS->setAxisTitle("fC", 2);
144  meZdcNEM4fCvsTS->setAxisTitle("TS", 1);
147  meZdcNEM5fCvsTS = ib.book1D("NEM5_fCvsTS", "N-EM5_AveragefC_vsTS", 10, 0, 9);
148  meZdcNEM5fCvsTS->setAxisTitle("fC", 2);
149  meZdcNEM5fCvsTS->setAxisTitle("TS", 1);
152  meZdcNHAD1fCvsTS = ib.book1D("NHAD1_fCvsTS", "N-HAD1_AveragefC_vsTS", 10, 0, 9);
153  meZdcNHAD1fCvsTS->setAxisTitle("fC", 2);
154  meZdcNHAD1fCvsTS->setAxisTitle("TS", 1);
157  meZdcNHAD2fCvsTS = ib.book1D("NHAD2_fCvsTS", "N-HAD2_AveragefC_vsTS", 10, 0, 9);
158  meZdcNHAD2fCvsTS->setAxisTitle("fC", 2);
159  meZdcNHAD2fCvsTS->setAxisTitle("TS", 1);
162  meZdcNHAD3fCvsTS = ib.book1D("NHAD3_fCvsTS", "N-HAD3_AveragefC_vsTS", 10, 0, 9);
163  meZdcNHAD3fCvsTS->setAxisTitle("fC", 2);
164  meZdcNHAD3fCvsTS->setAxisTitle("TS", 1);
167  meZdcNHAD4fCvsTS = ib.book1D("NHAD4_fCvsTS", "N-HAD4_AveragefC_vsTS", 10, 0, 9);
168  meZdcNHAD4fCvsTS->setAxisTitle("fC", 2);
169  meZdcNHAD4fCvsTS->setAxisTitle("TS", 1);
171 
173  ib.setCurrentFolder("ZDCDigiValidation/ZDC_Digis/2D_EMvHAD");
176  meZdcfCPEMvHAD = ib.book2D("PEMvPHAD", "PZDC_EMvHAD", 200, -25, 12000, 200, -25, 15000);
177  meZdcfCPEMvHAD->setAxisTitle("SumEM_fC", 2);
178  meZdcfCPEMvHAD->setAxisTitle("SumHAD_fC", 1);
179  meZdcfCPEMvHAD->setOption("colz");
181  meZdcfCNEMvHAD = ib.book2D("NEMvNHAD", "NZDC_EMvHAD", 1000, -25, 12000, 1000, -25, 15000);
182  meZdcfCNEMvHAD->setAxisTitle("SumEM_fC", 2);
183  meZdcfCNEMvHAD->setAxisTitle("SumHAD_fC", 1);
184  meZdcfCNEMvHAD->setOption("colz");
186  }
187 }
188 
189 /*void ZDCDigiStudy::endJob() {
190  if (dbe_ && outFile_.size() > 0) dbe_->save(outFile_);
191  }*/
192 
193 //void ZDCDigiStudy::analyze(const edm::Event& e, const edm::EventSetup& ) {
196 
197  using namespace edm;
198  bool gotZDCDigis = true;
199 
200  Handle<ZDCDigiCollection> zdchandle;
201  if (!(iEvent.getByToken(tok_zdc_, zdchandle))) {
202  gotZDCDigis = false; //this is a boolean set up to check if there are ZDCDigis in the input root file
203  }
204  if (!(zdchandle.isValid())) {
205  gotZDCDigis = false; //if it is not there, leave it false
206  }
207 
208  double totalPHADCharge = 0;
209  double totalNHADCharge = 0;
210  double totalPEMCharge = 0;
211  double totalNEMCharge = 0;
212  double totalPCharge = 0;
213  double totalNCharge = 0;
214 
216  if (gotZDCDigis == true) {
217  for (ZDCDigiCollection::const_iterator zdc = zdchandle->begin(); zdc != zdchandle->end(); ++zdc) {
218  const ZDCDataFrame digi = (const ZDCDataFrame)(*zdc);
219  //std::cout <<"CHANNEL = "<<zdc->id().channel()<<std::endl;
220 
222 
223  if (digi.id().section() == 2) { // require HAD
224  if (digi.id().zside() == 1) { // require POS
225  for (int i = 0; i < digi.size(); ++i) // loop over all 10 TS because each digi has 10 entries
226  {
227  if (digi.id().channel() == 1) { //here i specify PHAD1
229  i, digi.sample(i).nominal_fC()); //filling the plot name with the nominal fC value for each TS
230  if (i == 0)
231  meZdcPHAD1fCvsTS->Fill(-1, 1); // on first iteration of loop, increment underflow bin
232  } //NEW AVERAGE Thingy
233  if (digi.id().channel() == 2) {
235  if (i == 0)
236  meZdcPHAD2fCvsTS->Fill(-1, 1);
237  }
238  if (digi.id().channel() == 3) {
240  if (i == 0)
241  meZdcPHAD3fCvsTS->Fill(-1, 1);
242  }
243  if (digi.id().channel() == 4) {
245  if (i == 0)
246  meZdcPHAD4fCvsTS->Fill(-1, 1);
247  }
248  if (i == 4 || i == 5 || i == 6)
249  totalPHADCharge += digi.sample(i).nominal_fC();
250  } // loop over all (10) TS for the given digi
251  } else {
252  for (int i = 0; i < digi.size(); ++i) {
253  if (digi.id().channel() == 1) {
255  if (i == 0)
256  meZdcNHAD1fCvsTS->Fill(-1, 1);
257  }
258  if (digi.id().channel() == 2) {
260  if (i == 0)
261  meZdcNHAD2fCvsTS->Fill(-1, 1);
262  }
263  if (digi.id().channel() == 3) {
265  if (i == 0)
266  meZdcNHAD3fCvsTS->Fill(-1, 1);
267  }
268  if (digi.id().channel() == 4) {
270  if (i == 0)
271  meZdcNHAD4fCvsTS->Fill(-1, 1);
272  }
273  if (i == 4 || i == 5 || i == 6)
274  totalNHADCharge += digi.sample(i).nominal_fC();
275  } //loop over all 10 TS
276  } //Requires NHAd
277  } //Requires HAD sections
279  if (digi.id().section() ==
280  1) { //require EM....here i do the smae thing that i did above but now for P/N EM sections
281  if (digi.id().zside() == 1) { //require pos
282  for (int i = 0; i < digi.size(); ++i) {
283  if (digi.id().channel() == 1) {
285  if (i == 0)
286  meZdcPEM1fCvsTS->Fill(-1, 1);
287  }
288  if (digi.id().channel() == 2) {
290  if (i == 0)
291  meZdcPEM2fCvsTS->Fill(-1, 1);
292  }
293  if (digi.id().channel() == 3) {
295  if (i == 0)
296  meZdcPEM3fCvsTS->Fill(-1, 1);
297  }
298  if (digi.id().channel() == 4) {
300  if (i == 0)
301  meZdcPEM4fCvsTS->Fill(-1, 1);
302  }
303  if (digi.id().channel() == 5) {
305  if (i == 0)
306  meZdcPEM5fCvsTS->Fill(-1, 1);
307  }
308  if (i == 4 || i == 5 || i == 6)
309  totalPEMCharge += digi.sample(i).nominal_fC();
310  }
311  } else {
312  for (int i = 0; i < digi.size(); ++i) {
313  if (digi.id().channel() == 1) {
315  if (i == 0)
316  meZdcNEM1fCvsTS->Fill(-1, 1);
317  }
318  if (digi.id().channel() == 2) {
320  if (i == 0)
321  meZdcNEM2fCvsTS->Fill(-1, 1);
322  }
323  if (digi.id().channel() == 3) {
325  if (i == 0)
326  meZdcNEM3fCvsTS->Fill(-1, 1);
327  }
328  if (digi.id().channel() == 4) {
330  if (i == 0)
331  meZdcNEM4fCvsTS->Fill(-1, 1);
332  }
333  if (digi.id().channel() == 5) {
335  if (i == 0)
336  meZdcNEM5fCvsTS->Fill(-1, 1);
337  }
338  if (i == 4 || i == 5 || i == 6)
339  totalNEMCharge += digi.sample(i).nominal_fC();
340  }
341  }
342  }
343 
344  totalPCharge = totalPHADCharge + (0.1) * totalPEMCharge;
345  totalNCharge = totalNHADCharge + (0.1) * totalNEMCharge;
346 
347  /* std::cout <<"CHANNEL = "<<digi.id().channel()<<std::endl;
348  for (int i=0;i<digi.size();++i)
349  std::cout <<"SAMPLE = "<<i<<" ADC = "<<digi.sample(i).adc()<<" fC = "<<digi.sample(i).nominal_fC()<<std::endl;
350  */
351  // digi[i] should be the sample as digi.sample(i), I think
352  } // loop on all (22) ZDC digis
353  }
355 
356  // Now fill total charge histogram
357  meZdcfCPEMvHAD->Fill(totalPCharge, totalPEMCharge);
358  meZdcfCNEMvHAD->Fill(totalNCharge, totalNEMCharge);
359  meZdcfCPHAD->Fill(totalPHADCharge);
360  meZdcfCNHAD->Fill(totalNHADCharge);
361  meZdcfCNTOT->Fill(totalNCharge);
362  meZdcfCPTOT->Fill(totalPCharge);
363 }
364 
366 
368  int nevents =
370  ->GetBinContent(
371  0); //grab the number of digis that were read in and stored in the underflow bin, and call them Nevents
373  ->Scale(
374  1. /
375  nevents); // divide histogram by nevents thereby creating an average..it was done this way so that in DQM when everything is done in parallel and added at the end then the average will add appropriately
376 
377  int nevents1 = (meZdcPHAD2fCvsTS->getTH1F())->GetBinContent(0);
378  (meZdcPHAD2fCvsTS->getTH1F())->Scale(1. / nevents1);
379 
380  int nevents2 = (meZdcPHAD3fCvsTS->getTH1F())->GetBinContent(0);
381  (meZdcPHAD3fCvsTS->getTH1F())->Scale(1. / nevents2);
382 
383  int nevents3 = (meZdcPHAD4fCvsTS->getTH1F())->GetBinContent(0);
384  (meZdcPHAD4fCvsTS->getTH1F())->Scale(1. / nevents3);
385 
386  int nevents4 = (meZdcNHAD1fCvsTS->getTH1F())->GetBinContent(0);
387  (meZdcNHAD1fCvsTS->getTH1F())->Scale(1. / nevents4);
388 
389  int nevents5 = (meZdcNHAD2fCvsTS->getTH1F())->GetBinContent(0);
390  (meZdcNHAD2fCvsTS->getTH1F())->Scale(1. / nevents5);
391 
392  int nevents6 = (meZdcNHAD3fCvsTS->getTH1F())->GetBinContent(0);
393  (meZdcNHAD3fCvsTS->getTH1F())->Scale(1. / nevents6);
394 
395  int nevents7 = (meZdcNHAD4fCvsTS->getTH1F())->GetBinContent(0);
396  (meZdcNHAD4fCvsTS->getTH1F())->Scale(1. / nevents7);
397 
398  int nevents8 = (meZdcPEM1fCvsTS->getTH1F())->GetBinContent(0);
399  (meZdcPEM1fCvsTS->getTH1F())->Scale(1. / nevents8);
400 
401  int nevents9 = (meZdcPEM2fCvsTS->getTH1F())->GetBinContent(0);
402  (meZdcPEM2fCvsTS->getTH1F())->Scale(1. / nevents9);
403 
404  int nevents10 = (meZdcPEM3fCvsTS->getTH1F())->GetBinContent(0);
405  (meZdcPEM3fCvsTS->getTH1F())->Scale(1. / nevents10);
406 
407  int nevents11 = (meZdcPEM4fCvsTS->getTH1F())->GetBinContent(0);
408  (meZdcPEM4fCvsTS->getTH1F())->Scale(1. / nevents11);
409 
410  int nevents12 = (meZdcPEM5fCvsTS->getTH1F())->GetBinContent(0);
411  (meZdcPEM5fCvsTS->getTH1F())->Scale(1. / nevents12);
412 
413  int nevents13 = (meZdcNEM1fCvsTS->getTH1F())->GetBinContent(0);
414  (meZdcNEM1fCvsTS->getTH1F())->Scale(1. / nevents13);
415 
416  int nevents14 = (meZdcNEM2fCvsTS->getTH1F())->GetBinContent(0);
417  (meZdcNEM2fCvsTS->getTH1F())->Scale(1. / nevents14);
418 
419  int nevents15 = (meZdcNEM3fCvsTS->getTH1F())->GetBinContent(0);
420  (meZdcNEM3fCvsTS->getTH1F())->Scale(1. / nevents15);
421 
422  int nevents16 = (meZdcNEM4fCvsTS->getTH1F())->GetBinContent(0);
423  (meZdcNEM4fCvsTS->getTH1F())->Scale(1. / nevents16);
424 
425  int nevents17 = (meZdcNEM5fCvsTS->getTH1F())->GetBinContent(0);
426  (meZdcNEM5fCvsTS->getTH1F())->Scale(1. / nevents17);
427 }
428 
429 //define this as a plug-in
T getUntrackedParameter(std::string const &, T const &) const
const edm::EventSetup & c
int ib
Definition: cuy.py:661
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
std::string zdcHits
Definition: ZDCDigiStudy.h:64
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
virtual void setOption(const char *option)
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: ZDCDigiStudy.cc:41
int zside() const
get the z-side of the cell (1/-1)
Definition: HcalZDCDetId.h:39
virtual MonitorElementData::Scope setScope(MonitorElementData::Scope newscope)
Definition: DQMStore.cc:46
std::vector< T >::const_iterator const_iterator
MonitorElement * meZdcfCPTOT
Definition: ZDCDigiStudy.h:73
MonitorElement * meZdcPEM1fCvsTS
Definition: ZDCDigiStudy.h:78
MonitorElement * meZdcfCPEMvHAD
Definition: ZDCDigiStudy.h:76
void dqmEndRun(const edm::Run &run, const edm::EventSetup &c) override
MonitorElement * meZdcPHAD2fCvsTS
Definition: ZDCDigiStudy.h:84
MonitorElement * meZdcfCNTOT
Definition: ZDCDigiStudy.h:75
MonitorElement * meZdcPHAD3fCvsTS
Definition: ZDCDigiStudy.h:85
MonitorElement * meZdcfCPHAD
Definition: ZDCDigiStudy.h:72
void Fill(long long x)
~ZDCDigiStudy() override
Definition: ZDCDigiStudy.cc:39
MonitorElement * meZdcNHAD2fCvsTS
Definition: ZDCDigiStudy.h:93
void analyze(const edm::Event &e, const edm::EventSetup &c) override
int iEvent
Definition: GenABIO.cc:224
MonitorElement * meZdcPEM3fCvsTS
Definition: ZDCDigiStudy.h:80
const HcalQIESample & sample(int i) const
access a sample
Definition: ZDCDataFrame.h:39
std::string outFile_
Definition: ZDCDigiStudy.h:64
MonitorElement * meZdcNHAD3fCvsTS
Definition: ZDCDigiStudy.h:94
MonitorElement * meZdcPEM2fCvsTS
Definition: ZDCDigiStudy.h:79
MonitorElement * meZdcNEM2fCvsTS
Definition: ZDCDigiStudy.h:88
MonitorElement * meZdcNEM4fCvsTS
Definition: ZDCDigiStudy.h:90
MonitorElement * meZdcNEM3fCvsTS
Definition: ZDCDigiStudy.h:89
constexpr double nominal_fC() const
get the nominal FC (no calibrations applied)
Definition: HcalQIESample.h:45
MonitorElement * meZdcPHAD1fCvsTS
Definition: ZDCDigiStudy.h:83
MonitorElement * meZdcNHAD4fCvsTS
Definition: ZDCDigiStudy.h:95
const HcalZDCDetId & id() const
Definition: ZDCDataFrame.h:22
Log< level::Info, false > LogInfo
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
int channel() const
get the channel
Definition: HcalZDCDetId.cc:63
int size() const
total number of samples in the digi
Definition: ZDCDataFrame.h:26
MonitorElement * meZdcNHAD1fCvsTS
Definition: ZDCDigiStudy.h:92
Section section() const
get the section
Definition: HcalZDCDetId.cc:44
MonitorElement * meZdcfCNHAD
Definition: ZDCDigiStudy.h:74
MonitorElement * meZdcfCNEMvHAD
Definition: ZDCDigiStudy.h:77
MonitorElement * meZdcPHAD4fCvsTS
Definition: ZDCDigiStudy.h:86
ZDCDigiStudy(const edm::ParameterSet &ps)
Definition: ZDCDigiStudy.cc:26
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * meZdcPEM4fCvsTS
Definition: ZDCDigiStudy.h:81
edm::EDGetTokenT< ZDCDigiCollection > tok_zdc_
Definition: ZDCDigiStudy.h:67
MonitorElement * meZdcPEM5fCvsTS
Definition: ZDCDigiStudy.h:82
MonitorElement * meZdcNEM1fCvsTS
Definition: ZDCDigiStudy.h:87
Definition: Run.h:45
MonitorElement * meZdcNEM5fCvsTS
Definition: ZDCDigiStudy.h:91
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)