CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EBOccupancyTask.cc
Go to the documentation of this file.
1 /*
2  * \file EBOccupancyTask.cc
3  *
4  * \author G. Della Ricca
5  * \author G. Franzoni
6  *
7 */
8 
9 #include <iostream>
10 #include <fstream>
11 
15 
17 
19 
27 
30 
32 
34 
36 
37  init_ = false;
38 
40 
41  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
42 
43  subfolder_ = ps.getUntrackedParameter<std::string>("subfolder", "");
44 
45  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);
46 
47  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);
48 
49  EcalRawDataCollection_ = consumes<EcalRawDataCollection>(ps.getParameter<edm::InputTag>("EcalRawDataCollection"));
50  EBDigiCollection_ = consumes<EBDigiCollection>(ps.getParameter<edm::InputTag>("EBDigiCollection"));
51  EcalPnDiodeDigiCollection_ = consumes<EcalPnDiodeDigiCollection>(ps.getParameter<edm::InputTag>("EcalPnDiodeDigiCollection"));
52  EcalRecHitCollection_ = consumes<EcalRecHitCollection>(ps.getParameter<edm::InputTag>("EcalRecHitCollection"));
53  EcalTrigPrimDigiCollection_ = consumes<EcalTrigPrimDigiCollection>(ps.getParameter<edm::InputTag>("EcalTrigPrimDigiCollection"));
54 
55  for (int i = 0; i < 36; i++) {
56  meOccupancy_[i] = 0;
57  meOccupancyMem_[i] = 0;
58  meEBRecHitEnergy_[i] = 0;
59  meSpectrum_[i] = 0;
60  }
61 
63 
67 
71 
75 
79 
83 
87 
88  recHitEnergyMin_ = 0.300; // GeV
89  trigPrimEtMin_ = 4.; // 4 ADCs == 1 GeV
90 
91 }
92 
94 
95 }
96 
98 
99  ievt_ = 0;
100 
101  if ( dqmStore_ ) {
102  dqmStore_->setCurrentFolder(prefixME_ + "/EBOccupancyTask");
103  if(subfolder_.size())
104  dqmStore_->setCurrentFolder(prefixME_ + "/EBOccupancyTask/" + subfolder_);
105  dqmStore_->rmdir(prefixME_ + "/EBOccupancyTask");
106  }
107 
108 }
109 
111 
112  Numbers::initGeometry(c, false);
113 
114  if ( ! mergeRuns_ ) this->reset();
115 
116 }
117 
119 
120 }
121 
123 
124  for (int i = 0; i < 36; i++) {
125  if ( meOccupancy_[i] ) meOccupancy_[i]->Reset();
126  if ( meOccupancyMem_[i] ) meOccupancyMem_[i]->Reset();
128  if ( meSpectrum_[i] ) meSpectrum_[i]->Reset();
129  }
130 
132 
136 
140 
144 
148 
152 
156 
157 }
158 
160 
161  init_ = true;
162 
164 
165  if ( dqmStore_ ) {
166  dqmStore_->setCurrentFolder(prefixME_ + "/EBOccupancyTask");
167  if(subfolder_.size())
168  dqmStore_->setCurrentFolder(prefixME_ + "/EBOccupancyTask/" + subfolder_);
169 
170  for (int i = 0; i < 36; i++) {
171  name = "EBOT digi occupancy " + Numbers::sEB(i+1);
172  meOccupancy_[i] = dqmStore_->book2D(name, name, 85, 0., 85., 20, 0., 20.);
173  meOccupancy_[i]->setAxisTitle("ieta", 1);
174  meOccupancy_[i]->setAxisTitle("iphi", 2);
175  dqmStore_->tag(meOccupancy_[i], i+1);
176 
177  name = "EBOT MEM digi occupancy " + Numbers::sEB(i+1);
178  meOccupancyMem_[i] = dqmStore_->book2D(name, name, 10, 0., 10., 5, 0., 5.);
179  meOccupancyMem_[i]->setAxisTitle("pseudo-strip", 1);
180  meOccupancyMem_[i]->setAxisTitle("channel", 2);
181  dqmStore_->tag(meOccupancyMem_[i], i+1);
182 
183  name = "EBOT rec hit energy " + Numbers::sEB(i+1);
184  meEBRecHitEnergy_[i] = dqmStore_->bookProfile2D(name, name, 85, 0., 85., 20, 0., 20., 100, 0., 100., "s");
185  meEBRecHitEnergy_[i]->setAxisTitle("ieta", 1);
186  meEBRecHitEnergy_[i]->setAxisTitle("iphi", 2);
187  meEBRecHitEnergy_[i]->setAxisTitle("energy (GeV)", 3);
188  dqmStore_->tag(meEBRecHitEnergy_[i], i+1);
189 
190  name = "EBOT energy spectrum " + Numbers::sEB(i+1);
191  meSpectrum_[i] = dqmStore_->book1D(name, name, 100, 0., 1.5);
192  meSpectrum_[i]->setAxisTitle("energy (GeV)", 1);
193  dqmStore_->tag(meSpectrum_[i], i+1);
194  }
195 
196  name = "EBOT rec hit spectrum";
197  meEBRecHitSpectrum_ = dqmStore_->book1D(name, name, 100, 0., 10.);
198  meEBRecHitSpectrum_->setAxisTitle("energy (GeV)", 1);
199 
200  name = "EBOT digi occupancy";
201  meEBDigiOccupancy_ = dqmStore_->book2D(name, name, 72, 0., 360., 34, -85., 85.);
202  meEBDigiOccupancy_->setAxisTitle("jphi", 1);
203  meEBDigiOccupancy_->setAxisTitle("jeta", 2);
204  name = "EBOT digi occupancy projection eta";
205  meEBDigiOccupancyProjEta_ = dqmStore_->book1DD(name, name, 34, -85., 85.);
207  meEBDigiOccupancyProjEta_->setAxisTitle("number of digis", 2);
208  name = "EBOT digi occupancy projection phi";
209  meEBDigiOccupancyProjPhi_ = dqmStore_->book1DD(name, name, 72, 0., 360.);
211  meEBDigiOccupancyProjPhi_->setAxisTitle("number of digis", 2);
212 
213  name = "EBOT rec hit occupancy";
214  meEBRecHitOccupancy_ = dqmStore_->book2D(name, name, 72, 0., 360., 34, -85., 85.);
217  name = "EBOT rec hit occupancy projection eta";
218  meEBRecHitOccupancyProjEta_ = dqmStore_->book1DD(name, name, 34, -85., 85.);
220  meEBRecHitOccupancyProjEta_->setAxisTitle("number of hits", 2);
221  name = "EBOT rec hit occupancy projection phi";
222  meEBRecHitOccupancyProjPhi_ = dqmStore_->book1DD(name, name, 72, 0., 360.);
224  meEBRecHitOccupancyProjPhi_->setAxisTitle("number of hits", 2);
225 
226  name = "EBOT rec hit thr occupancy";
227  meEBRecHitOccupancyThr_ = dqmStore_->book2D(name, name, 72, 0., 360., 34, -85., 85.);
230  name = "EBOT rec hit thr occupancy projection eta";
231  meEBRecHitOccupancyProjEtaThr_ = dqmStore_->book1DD(name, name, 34, -85., 85.);
233  meEBRecHitOccupancyProjEtaThr_->setAxisTitle("number of hits", 2);
234  name = "EBOT rec hit thr occupancy projection phi";
235  meEBRecHitOccupancyProjPhiThr_ = dqmStore_->book1DD(name, name, 72, 0., 360.);
237  meEBRecHitOccupancyProjPhiThr_->setAxisTitle("number of hits", 2);
238 
239  name = "EBOT TP digi occupancy";
240  meEBTrigPrimDigiOccupancy_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
243  name = "EBOT TP digi occupancy projection eta";
244  meEBTrigPrimDigiOccupancyProjEta_ = dqmStore_->book1DD(name, name, 34, -17., 17.);
246  meEBTrigPrimDigiOccupancyProjEta_->setAxisTitle("number of TP digis", 2);
247  name = "EBOT TP digi occupancy projection phi";
248  meEBTrigPrimDigiOccupancyProjPhi_ = dqmStore_->book1DD(name, name, 72, 0., 72.);
250  meEBTrigPrimDigiOccupancyProjPhi_->setAxisTitle("number of TP digis", 2);
251 
252  name = "EBOT TP digi thr occupancy";
253  meEBTrigPrimDigiOccupancyThr_ = dqmStore_->book2D(name, name, 72, 0., 72., 34, -17., 17.);
256  name = "EBOT TP digi thr occupancy projection eta";
257  meEBTrigPrimDigiOccupancyProjEtaThr_ = dqmStore_->book1DD(name, name, 34, -17., 17.);
259  meEBTrigPrimDigiOccupancyProjEtaThr_->setAxisTitle("number of TP digis", 2);
260  name = "EBOT TP digi thr occupancy projection phi";
261  meEBTrigPrimDigiOccupancyProjPhiThr_ = dqmStore_->book1DD(name, name, 72, 0., 72.);
263  meEBTrigPrimDigiOccupancyProjPhiThr_->setAxisTitle("number of TP digis", 2);
264 
265  name = "EBOT test pulse digi occupancy";
266  meEBTestPulseDigiOccupancy_ = dqmStore_->book2D(name, name, 72, 0., 360., 34, -85., 85.);
269 
270  name = "EBOT laser digi occupancy";
271  meEBLaserDigiOccupancy_ = dqmStore_->book2D(name, name, 72, 0., 360., 34, -85., 85.);
274 
275  name = "EBOT pedestal digi occupancy";
276  meEBPedestalDigiOccupancy_ = dqmStore_->book2D(name, name, 72, 0., 360., 34, -85., 85.);
279 
280  }
281 
282 }
283 
285 
286  if ( ! init_ ) return;
287 
288  if ( dqmStore_ ) {
289  dqmStore_->setCurrentFolder(prefixME_ + "/EBOccupancyTask");
290  if(subfolder_.size())
291  dqmStore_->setCurrentFolder(prefixME_ + "/EBOccupancyTask/" + subfolder_);
292 
293  for (int i = 0; i < 36; i++) {
294  if ( meOccupancy_[i] ) dqmStore_->removeElement( meOccupancy_[i]->getName() );
295  meOccupancy_[i] = 0;
296  if ( meOccupancyMem_[i] ) dqmStore_->removeElement( meOccupancyMem_[i]->getName() );
297  meOccupancyMem_[i] = 0;
298  if ( meEBRecHitEnergy_[i] ) dqmStore_->removeElement( meEBRecHitEnergy_[i]->getName() );
299  meEBRecHitEnergy_[i] = 0;
300  if ( meSpectrum_[i] ) dqmStore_->removeElement( meSpectrum_[i]->getName() );
301  meSpectrum_[i] = 0;
302  }
303 
306 
308  meEBDigiOccupancy_ = 0;
313 
320 
327 
334 
341 
344 
347 
350 
351  }
352 
353  init_ = false;
354 
355 }
356 
358 
359  edm::LogInfo("EBOccupancyTask") << "analyzed " << ievt_ << " events";
360 
361  if ( enableCleanup_ ) this->cleanup();
362 
363 }
364 
366 
367  if ( ! init_ ) this->setup();
368 
369  ievt_++;
370 
371  int runType[36] = { notdata };
372 
374 
375  if ( e.getByToken(EcalRawDataCollection_, dcchs) ) {
376 
377  for ( EcalRawDataCollection::const_iterator dcchItr = dcchs->begin(); dcchItr != dcchs->end(); ++dcchItr ) {
378 
379  if ( Numbers::subDet( *dcchItr ) != EcalBarrel ) continue;
380 
381  int ism = Numbers::iSM( *dcchItr, EcalBarrel );
382 
383  int runtype = dcchItr->getRunType();
384 
385  if ( runtype == EcalDCCHeaderBlock::COSMIC ||
386  runtype == EcalDCCHeaderBlock::MTCC ||
390  runtype == EcalDCCHeaderBlock::PHYSICS_LOCAL ) runType[ism-1] = physics;
391  if ( runtype == EcalDCCHeaderBlock::TESTPULSE_MGPA ||
392  runtype == EcalDCCHeaderBlock::TESTPULSE_GAP ) runType[ism-1] = testpulse;
393  if ( runtype == EcalDCCHeaderBlock::LASER_STD ||
394  runtype == EcalDCCHeaderBlock::LASER_GAP ) runType[ism-1] = laser;
395  if ( runtype == EcalDCCHeaderBlock::PEDESTAL_STD ||
396  runtype == EcalDCCHeaderBlock::PEDESTAL_GAP ) runType[ism-1] = pedestal;
397 
398  }
399 
400  } else {
401  edm::LogWarning("EBOccupancyTask") << "EcalRawDataCollection not available";
402  }
403 
405 
406  if ( e.getByToken(EBDigiCollection_, digis) ) {
407 
408  int nebd = digis->size();
409  LogDebug("EBOccupancyTask") << "event " << ievt_ << " digi collection size " << nebd;
410 
411  for ( EBDigiCollection::const_iterator digiItr = digis->begin(); digiItr != digis->end(); ++digiItr ) {
412 
413  EBDetId id = digiItr->id();
414 
415  int ic = id.ic();
416  int ie = (ic-1)/20 + 1;
417  int ip = (ic-1)%20 + 1;
418 
419  int ism = Numbers::iSM( id );
420 
421  float xie = ie - 0.5;
422  float xip = ip - 0.5;
423 
424  if ( xie <= 0. || xie >= 85. || xip <= 0. || xip >= 20. ) {
425  edm::LogWarning("EBOccupancyTask") << " det id = " << id;
426  edm::LogWarning("EBOccupancyTask") << " sm, ieta, iphi " << ism << " " << ie << " " << ip;
427  edm::LogWarning("EBOccupancyTask") << " xie, xip " << xie << " " << xip;
428  }
429 
430  if ( meOccupancy_[ism-1] ) meOccupancy_[ism-1]->Fill(xie, xip);
431 
432  int ebeta = id.ieta();
433  int ebphi = id.iphi();
434 
435  float xebeta = ebeta - 0.5*id.zside();
436  float xebphi = ebphi - 0.5;
437 
438  if ( runType[ism-1] == physics || runType[ism-1] == notdata ) {
439 
440  if ( meEBDigiOccupancy_ ) meEBDigiOccupancy_->Fill( xebphi, xebeta );
443 
444  }
445 
446  if ( runType[ism-1] == testpulse ) {
447 
449 
450  }
451 
452  if ( runType[ism-1] == laser ) {
453 
454  if ( meEBLaserDigiOccupancy_ ) meEBLaserDigiOccupancy_->Fill( xebphi, xebeta );
455 
456  }
457 
458  if ( runType[ism-1] == pedestal ) {
459 
461 
462  }
463 
464  }
465 
466  } else {
467 
468  edm::LogWarning("EBOccupancyTask") << "EBDigiCollection not available";
469 
470  }
471 
473 
474  if ( e.getByToken(EcalPnDiodeDigiCollection_, PNs) ) {
475 
476  // filling mem occupancy only for the 5 channels belonging
477  // to a fully reconstructed PN's
478 
479  for ( EcalPnDiodeDigiCollection::const_iterator pnItr = PNs->begin(); pnItr != PNs->end(); ++pnItr ) {
480 
481  if ( Numbers::subDet( pnItr->id() ) != EcalBarrel ) continue;
482 
483  int ism = Numbers::iSM( pnItr->id() );
484 
485  float PnId = pnItr->id().iPnId();
486 
487  PnId = PnId - 0.5;
488  float st = 0.0;
489 
490  for (int chInStrip = 1; chInStrip <= 5; chInStrip++){
491  if ( meOccupancyMem_[ism-1] ) {
492  st = chInStrip - 0.5;
493  meOccupancyMem_[ism-1]->Fill(PnId, st);
494  }
495  }
496 
497  }
498 
499  } else {
500 
501  edm::LogWarning("EBOccupancyTask") << "EcalPnDiodeDigiCollection not available";
502 
503  }
504 
506  c.get<EcalSeverityLevelAlgoRcd>().get(sevlv);
507 
509 
510  if ( e.getByToken(EcalRecHitCollection_, rechits) ) {
511 
512  int nebrh = rechits->size();
513  LogDebug("EBOccupancyTask") << "event " << ievt_ << " rec hits collection size " << nebrh;
514 
515  for ( EcalRecHitCollection::const_iterator rechitItr = rechits->begin(); rechitItr != rechits->end(); ++rechitItr ) {
516 
517  EBDetId id = rechitItr->id();
518 
519  // global coordinates
520  int ebeta = id.ieta();
521  int ebphi = id.iphi();
522 
523  float xebeta = ebeta - 0.5*id.zside();
524  float xebphi = ebphi - 0.5;
525 
526  int ism = Numbers::iSM( id );
527 
528  // local coordinates
529  int ic = id.ic();
530  int ie = (ic-1)/20 + 1;
531  int ip = (ic-1)%20 + 1;
532 
533  float xie = ie - 0.5;
534  float xip = ip - 0.5;
535 
536  if ( runType[ism-1] == physics || runType[ism-1] == notdata ) {
537 
538  if ( meEBRecHitOccupancy_ ) meEBRecHitOccupancy_->Fill( xebphi, xebeta );
541 
542  uint32_t flag = rechitItr->recoFlag();
543 
544  uint32_t sev = sevlv->severityLevel( id, *rechits);
545 
546  if ( rechitItr->energy() > recHitEnergyMin_ && flag == EcalRecHit::kGood && sev == EcalSeverityLevel::kGood ) {
547 
548  if ( meEBRecHitOccupancyThr_ ) meEBRecHitOccupancyThr_->Fill( xebphi, xebeta );
551 
552  }
553 
554  if ( flag == EcalRecHit::kGood && sev == EcalSeverityLevel::kGood ) {
555  if ( meEBRecHitEnergy_[ism-1] ) meEBRecHitEnergy_[ism-1]->Fill( xie, xip, rechitItr->energy() );
556  if ( meSpectrum_[ism-1] ) meSpectrum_[ism-1]->Fill( rechitItr->energy() );
557  if ( meEBRecHitSpectrum_ ) meEBRecHitSpectrum_->Fill( rechitItr->energy() );
558  }
559 
560  }
561  }
562 
563  } else {
564 
565  edm::LogWarning("EBOccupancyTask") << "EcalRecHitCollection not available";
566 
567  }
568 
570 
571  if ( e.getByToken(EcalTrigPrimDigiCollection_, trigPrimDigis) ) {
572 
573  int nebtpg = trigPrimDigis->size();
574  LogDebug("EBOccupancyTask") << "event " << ievt_ << " trigger primitives digis collection size " << nebtpg;
575 
576  for ( EcalTrigPrimDigiCollection::const_iterator tpdigiItr = trigPrimDigis->begin(); tpdigiItr != trigPrimDigis->end(); ++tpdigiItr ) {
577 
578  if ( Numbers::subDet( tpdigiItr->id() ) != EcalBarrel ) continue;
579 
580  int ebeta = tpdigiItr->id().ieta();
581  int ebphi = tpdigiItr->id().iphi();
582 
583  // phi_tower: change the range from global to SM-local
584  // phi==0 is in the middle of a SM
585  ebphi = ebphi + 2;
586  if ( ebphi > 72 ) ebphi = ebphi - 72;
587 
588  float xebeta = ebeta-0.5*tpdigiItr->id().zside();
589  float xebphi = ebphi-0.5;
590 
591  int ism = Numbers::iSM( tpdigiItr->id() );
592 
593  if ( runType[ism-1] == physics || runType[ism-1] == notdata ) {
594 
598 
599  if ( tpdigiItr->compressedEt() > trigPrimEtMin_ ) {
600 
604 
605  }
606  }
607  }
608 
609  } else {
610 
611  edm::LogWarning("EBOccupancyTask") << "EcalTrigPrimDigiCollection not available";
612 
613  }
614 
615 }
#define LogDebug(id)
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
virtual ~EBOccupancyTask()
Destructor.
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
const std::string & getName(void) const
get name of ME
int i
Definition: DBlmapReader.cc:9
MonitorElement * meEBTestPulseDigiOccupancy_
MonitorElement * meEBTrigPrimDigiOccupancyProjEtaThr_
MonitorElement * meEBTrigPrimDigiOccupancy_
MonitorElement * meEBRecHitOccupancyProjEta_
edm::EDGetTokenT< EcalRecHitCollection > EcalRecHitCollection_
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
MonitorElement * meOccupancy_[36]
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:872
std::string prefixME_
void rmdir(const std::string &fullpath)
Definition: DQMStore.cc:2730
MonitorElement * meEBTrigPrimDigiOccupancyProjPhi_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
Some &quot;id&quot; conversions.
void beginJob(void)
BeginJob.
MonitorElement * meEBDigiOccupancy_
static std::string sEB(const unsigned ism)
Definition: Numbers.cc:91
edm::EDGetTokenT< EcalRawDataCollection > EcalRawDataCollection_
std::vector< EcalDCCHeaderBlock >::const_iterator const_iterator
DQMStore * dqmStore_
MonitorElement * meEBLaserDigiOccupancy_
MonitorElement * book1DD(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1S histogram.
Definition: DQMStore.cc:904
MonitorElement * meEBRecHitOccupancyThr_
MonitorElement * meEBRecHitEnergy_[36]
MonitorElement * meEBRecHitSpectrum_
MonitorElement * meOccupancyMem_[36]
MonitorElement * meEBTrigPrimDigiOccupancyProjEta_
MonitorElement * meEBTrigPrimDigiOccupancyThr_
void Fill(long long x)
void tag(MonitorElement *me, unsigned int myTag)
Definition: DQMStore.cc:1509
void reset(void)
Reset.
void cleanup(void)
Cleanup.
edm::EDGetTokenT< EBDigiCollection > EBDigiCollection_
MonitorElement * meEBRecHitOccupancyProjPhi_
std::string subfolder_
void removeElement(const std::string &name)
Definition: DQMStore.cc:2772
edm::EDGetTokenT< EcalTrigPrimDigiCollection > EcalTrigPrimDigiCollection_
MonitorElement * meSpectrum_[36]
int ieta() const
get the crystal ieta
Definition: EBDetId.h:51
MonitorElement * meEBRecHitOccupancyProjPhiThr_
void endRun(const edm::Run &r, const edm::EventSetup &c)
EndRun.
int ic() const
get ECAL/crystal number inside SM
Definition: EBDetId.cc:46
MonitorElement * meEBDigiOccupancyProjEta_
static void initGeometry(const edm::EventSetup &setup, bool verbose=false)
Definition: Numbers.cc:47
MonitorElement * meEBPedestalDigiOccupancy_
edm::EDGetTokenT< EcalPnDiodeDigiCollection > EcalPnDiodeDigiCollection_
MonitorElement * meEBDigiOccupancyProjPhi_
const T & get() const
Definition: EventSetup.h:55
MonitorElement * meEBTrigPrimDigiOccupancyProjPhiThr_
static unsigned iSM(const unsigned ism, const EcalSubdetector subdet)
Definition: Numbers.cc:243
MonitorElement * meEBRecHitOccupancyProjEtaThr_
static EcalSubdetector subDet(const EBDetId &id)
Definition: Numbers.cc:142
void endJob(void)
EndJob.
EBOccupancyTask(const edm::ParameterSet &ps)
Constructor.
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:1000
int ism(int ieta, int iphi)
Definition: EcalPyUtils.cc:56
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
MonitorElement * meEBRecHitOccupancy_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:584
Definition: Run.h:41
void beginRun(const edm::Run &r, const edm::EventSetup &c)
BeginRun.
void setup(void)
Setup.
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")
Definition: DQMStore.cc:1330