48 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask]: Constructor" << endl;
51 dtDigiToken_ = consumes<DTDigiCollection>(
58 subtractT0 = ps.
getParameter<
bool>(
"performPerWireT0Calibration");
67 ltcDigiCollectionToken_ = consumes<LTCDigiCollection>(
77 inTimeHitsLowerBound = ps.
getParameter<
int>(
"inTimeHitsLowerBound");
78 inTimeHitsUpperBound = ps.
getParameter<
int>(
"inTimeHitsUpperBound");
111 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"DTDigiTask: analyzed " << nevents <<
" events" << endl;
118 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask]: begin run" << endl;
141 if(doStaticBooking) {
144 nEventMonitor = ibooker.
bookFloat(tpMode ?
"nProcessedEventsDigiTP" :
"nProcessedEventsDigi" );
146 for(
int wh = -2; wh <= 2; ++wh) {
147 if(doAllHitsOccupancies)
bookHistos(ibooker, wh,
string(
"Occupancies"),
"OccupancyAllHits");
149 if(doNoiseOccupancies)
bookHistos(ibooker, wh,
string(
"Occupancies"),
"OccupancyNoise");
150 if(doInTimeOccupancies)
bookHistos(ibooker, wh,
string(
"Occupancies"),
"OccupancyInTimeHits");
152 if(lookForSyncNoise || filterSyncNoise) {
153 bookHistos(ibooker, wh,
string(
"SynchNoise"),
"SyncNoiseEvents");
154 bookHistos(ibooker, wh,
string(
"SynchNoise"),
"SyncNoiseChambs");
157 for(
int st = 1; st <= 4; ++st) {
158 for(
int sect = 1; sect <= 14; ++sect) {
159 if((sect == 13 || sect == 14) && st != 4)
continue;
164 if (doAllHitsOccupancies) {
165 bookHistos(ibooker, dtChId,
string(
"Occupancies"),
"OccupancyAllHits_perCh");
167 channelsMap(dtChId,
"OccupancyAllHits_perCh");
169 if(doNoiseOccupancies)
170 bookHistos(ibooker, dtChId,
string(
"Occupancies"),
"OccupancyNoise_perCh");
171 if(doInTimeOccupancies)
172 bookHistos(ibooker, dtChId,
string(
"Occupancies"),
"OccupancyInTimeHits_perCh");
174 for(
int sl = 1; sl <= 3; ++sl) {
175 if(st == 4 && sl == 2)
continue;
178 bookHistos(ibooker, dtSLId,
string(
"TimeBoxes"),
"TimeBox");
181 bookHistos(ibooker, dtSLId,
string(
"TimeBoxes"),
"TimeBoxDTonly");
182 bookHistos(ibooker, dtSLId,
string(
"TimeBoxes"),
"TimeBoxNoDT");
183 bookHistos(ibooker, dtSLId,
string(
"TimeBoxes"),
"TimeBoxDTalso");
195 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask]: Begin of LS transition" << endl;
199 if(lumiBlock % resetCycle == 0) {
201 <<
"[DTDigiTask]: Reset at the LS transition : " 202 << lumiBlock << endl;
204 map<string,map<uint32_t,MonitorElement*> >::const_iterator histosIt = digiHistos.begin();
205 map<string,map<uint32_t,MonitorElement*> >::const_iterator histosEnd = digiHistos.end();
206 for(;histosIt != histosEnd ; ++histosIt) {
207 map<uint32_t,MonitorElement*>::const_iterator histoIt = (*histosIt).second.begin();
208 map<uint32_t,MonitorElement*>::const_iterator histoEnd = (*histosIt).second.end();
209 for(;histoIt != histoEnd; ++histoIt) { (*histoIt).second->Reset(); }
213 for(
int wh=-2; wh<=2; wh++) {
214 for(
int sect=1; sect<=14; sect++) {
215 for(
int st=1; st<=4; st++) {
216 if( (sect == 13 || sect == 14) && st != 4 ) {
continue;}
218 channelsMap(dtChId,
"OccupancyAllHits_perCh");
224 map<string,map<int,MonitorElement*> >::const_iterator whHistosIt = wheelHistos.begin();
225 map<string,map<int,MonitorElement*> >::const_iterator whHistosEnd = wheelHistos.end();
226 for(; whHistosIt != whHistosEnd ; ++whHistosIt) {
227 if ((*whHistosIt).first.find(
"Sync") == string::npos) {
228 map<int,MonitorElement*>::const_iterator histoIt = (*whHistosIt).second.begin();
229 map<int,MonitorElement*>::const_iterator histoEnd = (*whHistosIt).second.end();
230 for(;histoIt != histoEnd; ++histoIt) { (*histoIt).second->Reset(); }
243 stringstream sector; sector << dtSL.
sector();
244 stringstream superLayer; superLayer << dtSL.
superlayer();
246 "/Sector" + sector.str() +
247 "/Station" + station.str());
250 string histoName = histoTag
252 +
"_St" + station.str()
253 +
"_Sec" + sector.str()
254 +
"_SL" + superLayer.str();
256 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask")
257 <<
"[DTDigiTask]: booking SL histo:" << histoName
258 <<
" (tag: " << histoTag
259 <<
") folder: " << topFolder() +
"Wheel" + wheel.str() +
260 "/Station" + station.str() +
261 "/Sector" + sector.str() +
"/" +
folder << endl;
267 else tTrig = defaultTTrig;
270 if (
folder ==
"TimeBoxes") {
271 string histoTitle = histoName +
" (TDC Counts)";
274 (digiHistos[histoTag])[dtSL.
rawId()] =
275 ibooker.
book1D(histoName,histoTitle, maxTTMounts/timeBoxGranularity, 0, maxTTMounts);
276 if(doLayerTimeBoxes) {
277 for(
int layer = 1; layer != 5; ++layer) {
279 stringstream layerHistoName; layerHistoName << histoName <<
"_L" << layer;
280 (digiHistos[histoTag])[layerId.
rawId()] =
281 ibooker.
book1D(layerHistoName.str(),layerHistoName.str(), maxTTMounts/timeBoxGranularity, 0, maxTTMounts);
286 (digiHistos[histoTag])[dtSL.
rawId()] =
287 ibooker.
book1D(histoName,histoTitle, 3*tMax/timeBoxGranularity, tTrig-tMax, tTrig+2*tMax);
288 if(doLayerTimeBoxes) {
290 for(
int layer = 1; layer != 5; ++layer) {
292 stringstream layerHistoName; layerHistoName << histoName <<
"_L" << layer;
293 (digiHistos[histoTag])[layerId.
rawId()] =
294 ibooker.
book1D(layerHistoName.str(),layerHistoName.str(), 3*tMax/timeBoxGranularity, tTrig-tMax, tTrig+2*tMax);
300 if (
folder ==
"CathodPhotoPeaks" ) {
302 "/Sector" + sector.str() +
303 "/Station" + station.str() +
"/" +
folder);
304 (digiHistos[histoTag])[dtSL.
rawId()] = ibooker.
book1D(histoName,histoName,500,0,1000);
314 stringstream sector; sector << dtCh.
sector();
316 "/Sector" + sector.str() +
317 "/Station" + station.str());
320 string histoName = histoTag
322 +
"_St" + station.str()
323 +
"_Sec" + sector.str();
326 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask")
327 <<
"[DTDigiTask]: booking chamber histo:" 328 <<
" (tag: " << histoTag
329 <<
") folder: " << topFolder() +
"Wheel" + wheel.str() +
330 "/Station" + station.str() +
331 "/Sector" + sector.str() << endl;
334 if (
folder ==
"Occupancies") {
336 const DTChamber* dtchamber = muonGeom->chamber(dtCh);
337 const std::vector<const DTSuperLayer*>& dtSupLylist = dtchamber->
superLayers();
338 std::vector<const DTSuperLayer*>::const_iterator suly = dtSupLylist.begin();
339 std::vector<const DTSuperLayer*>::const_iterator sulyend = dtSupLylist.end();
345 while(suly != sulyend) {
346 const std::vector<const DTLayer*> dtLyList = (*suly)->layers();
347 std::vector<const DTLayer*>::const_iterator ly = dtLyList.begin();
348 std::vector<const DTLayer*>::const_iterator lyend = dtLyList.end();
349 stringstream superLayer; superLayer << (*suly)->id().superlayer();
352 nWires = muonGeom->layer((*ly)->id())->specificTopology().channels();
353 firstWire = muonGeom->layer((*ly)->id())->specificTopology().firstChannel();
354 stringstream layer; layer << (*ly)->id().layer();
355 string histoName_layer = histoName +
"_SL" + superLayer.str() +
"_L" + layer.str();
356 if(histoTag ==
"OccupancyAllHits_perL" 357 || histoTag ==
"OccupancyNoise_perL" 358 || histoTag ==
"OccupancyInTimeHits_perL")
359 (digiHistos[histoTag])[(*ly)->id().rawId()] = ibooker.
book1D(histoName_layer,histoName_layer,nWires,firstWire,nWires+firstWire);
361 if((nWires+firstWire) > nWires_max) nWires_max = (nWires+firstWire);
367 if(histoTag !=
"OccupancyAllHits_perL" 368 && histoTag !=
"OccupancyNoise_perL" 369 && histoTag !=
"OccupancyInTimeHits_perL"){
371 string histoTitle = histoName;
372 if(!readTTrigDB && histoTag ==
"OccupancyInTimeHits_perCh") {
374 int inTimeHitsLowerBoundCorr =
int(round(defaultTTrig)) - inTimeHitsLowerBound;
375 int inTimeHitsUpperBoundCorr =
int(round(defaultTTrig)) + defaultTmax + inTimeHitsUpperBound;
376 title <<
"Occ. digis in time [" << inTimeHitsLowerBoundCorr <<
", " 377 << inTimeHitsUpperBoundCorr <<
"] (TDC counts)";
378 histoTitle = title.str();
380 (digiHistos[histoTag])[dtCh.
rawId()] = ibooker.
book2D(histoName,histoTitle,nWires_max,1,nWires_max+1,12,0,12);
382 for(
int i=1;
i<=12;
i++) {
388 string label=
"SL1: L"+layer_name;
389 (digiHistos[histoTag])[dtCh.
rawId()]->setBinLabel(i,label,2);
396 string label=
"SL2: L"+layer_name;
397 (digiHistos[histoTag])[dtCh.
rawId()]->setBinLabel(
i,label,2);
399 else if(
i>8 &&
i<13){
404 string label=
"SL3: L"+layer_name;
405 (digiHistos[histoTag])[dtCh.
rawId()]->setBinLabel(
i,label,2);
414 stringstream
wheel; wheel << wheelId;
418 string histoName = histoTag +
"_W" + wheel.str();
421 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask")
422 <<
"[DTDigiTask]: booking wheel histo:" << histoName
423 <<
" (tag: " << histoTag
424 <<
") folder: " << topFolder() +
"Wheel" + wheel.str() +
"/" <<endl;
426 if(
folder ==
"Occupancies") {
428 string histoTitle =
"# of digis per chamber WHEEL: "+wheel.str();
429 (wheelHistos[histoTag])[wheelId] = ibooker.
book2D(histoName,histoTitle,12,1,13,4,1,5);
430 (wheelHistos[histoTag])[wheelId]->setBinLabel(1,
"MB1",2);
431 (wheelHistos[histoTag])[wheelId]->setBinLabel(2,
"MB2",2);
432 (wheelHistos[histoTag])[wheelId]->setBinLabel(3,
"MB3",2);
433 (wheelHistos[histoTag])[wheelId]->setBinLabel(4,
"MB4",2);
434 (wheelHistos[histoTag])[wheelId]->setAxisTitle(
"sector",1);
435 }
else if(
folder ==
"SynchNoise") {
437 if (histoTag==
"SyncNoiseEvents") {
438 string histoTitle =
"# of Syncronous-noise events WHEEL: "+wheel.str();
439 (wheelHistos[histoTag])[wheelId] = ibooker.
book2D(histoName,histoTitle,12,1,13,4,1,5);
440 (wheelHistos[histoTag])[wheelId]->setBinLabel(1,
"MB1",2);
441 (wheelHistos[histoTag])[wheelId]->setBinLabel(2,
"MB2",2);
442 (wheelHistos[histoTag])[wheelId]->setBinLabel(3,
"MB3",2);
443 (wheelHistos[histoTag])[wheelId]->setBinLabel(4,
"MB4",2);
444 (wheelHistos[histoTag])[wheelId]->setAxisTitle(
"sector",1);
445 }
else if (histoTag==
"SyncNoiseChambs") {
446 string histoTitle =
"# of Synchornous-noise chamb per evt. WHEEL: "+wheel.str();
447 (wheelHistos[histoTag])[wheelId] = ibooker.
book1D(histoName,histoTitle,50,0.5,50.5);
448 (wheelHistos[histoTag])[wheelId]->setAxisTitle(
"# of noisy chambs.",1);
449 (wheelHistos[histoTag])[wheelId]->setAxisTitle(
"# of evts.",2);
457 nEventMonitor->Fill(nevents);
458 if (nevents%1000 == 0) {
459 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask] Analyze #Run: " <<
event.id().run()
460 <<
" #Event: " <<
event.id().event() << endl;
467 event.getByToken(dtDigiToken_, dtdigis);
470 if (!isLocalRun)
event.getByToken(ltcDigiCollectionToken_, ltcdigis);
474 if(checkNoisyChannels) {
482 if(dtdigis->begin() == dtdigis->end()) {
483 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"Event " << nevents <<
" empty." << endl;
486 if (lookForSyncNoise || filterSyncNoise) {
489 for (dtLayerId_It=dtdigis->begin(); dtLayerId_It!=dtdigis->end(); dtLayerId_It++) {
490 DTChamberId chId = ((*dtLayerId_It).first).chamberId();
491 if(hitMap.find(chId) == hitMap.end()) {
494 hitMap[chId] += (((*dtLayerId_It).second).
second - ((*dtLayerId_It).second).first);
500 map<DTChamberId,int>::const_iterator hitMapIt = hitMap.begin();
501 map<DTChamberId,int>::const_iterator hitMapEnd = hitMap.end();
505 for (; hitMapIt != hitMapEnd; ++hitMapIt) {
506 if((hitMapIt->second) > maxTDCHits) {
509 int wh = chId.
wheel();
511 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask] Synch noise in chamber: " << chId
512 <<
" with # digis: " << hitMapIt->second << endl;
514 if(chMap.find(wh) == chMap.end()) { chMap[wh] = 0; }
517 syncNoisyChambers.insert(chId);
519 wheelHistos[
"SyncNoiseEvents"][wh]->Fill(chId.
sector(),chId.
station());
525 map<int,int>::const_iterator chMapIt = chMap.begin();
526 map<int,int>::const_iterator chMapEnd = chMap.end();
527 for (; chMapIt != chMapEnd; ++chMapIt) {
528 wheelHistos[
"SyncNoiseChambs"][(*chMapIt).first]->Fill((*chMapIt).second);
534 if (!syncNoisyChambers.empty()) {
535 LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask] Synch Noise in event: " << nevents;
536 if(filterSyncNoise)
LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"\tnoisy time-boxes and occupancy will not be filled!" << endl;
542 if (syncNoisyChambers.size() > 3) {
543 time_t eventTime = time_t(event.
time().
value()>>32);
545 LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask|DTSynchNoise")
546 <<
"[DTDigiTask] At least 4 Synch Noisy chambers in Run : " <<
event.id().run()
547 <<
" Lumi : " <<
event.id().luminosityBlock()
548 <<
" Event : " <<
event.id().event()
549 <<
" at time : " << ctime(&eventTime) << endl;
551 set<DTChamberId>::const_iterator chIt = syncNoisyChambers.begin();
552 set<DTChamberId>::const_iterator chEnd = syncNoisyChambers.end();
554 stringstream synchNoisyCh;
555 for (;chIt!=chEnd;++chIt) { synchNoisyCh <<
" " << (*chIt); }
556 LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask|DTSynchNoise") <<
557 "[DTDigiTask] Chamber List :" << synchNoisyCh.str() << endl;
560 if (nevents%1000 == 0) {
561 LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask") << (syncNumTot*100./nevents) <<
"% sync noise events since the beginning \n" 562 << (syncNum*0.1) <<
"% sync noise events in the last 1000 events " << endl;
567 bool isSyncNoisy =
false;
570 for (dtLayerId_It=dtdigis->begin(); dtLayerId_It!=dtdigis->end(); ++dtLayerId_It) {
573 if (filterSyncNoise) {
574 DTChamberId chId = ((*dtLayerId_It).first).chamberId();
575 if(syncNoisyChambers.find(chId) != syncNoisyChambers.end()) {
581 digiIt!=((*dtLayerId_It).second).
second; ++digiIt) {
583 bool isNoisy =
false;
584 bool isFEMasked =
false;
585 bool isTDCMasked =
false;
586 bool isTrigMask =
false;
589 if(checkNoisyChannels) {
590 const DTWireId wireId(((*dtLayerId_It).first), (*digiIt).wire());
591 statusMap->
cellStatus(wireId, isNoisy, isFEMasked, isTDCMasked, isTrigMask, isDead, isNohv);
595 const DTSuperLayerId dtSLId = ((*dtLayerId_It).first).superlayerId();
596 uint32_t indexSL = dtSLId.
rawId();
598 uint32_t indexCh = dtChId.
rawId();
599 int layer_number=((*dtLayerId_It).first).layer();
605 tTrigMap->get( ((*dtLayerId_It).first).superlayerId(),
607 else tTrig = defaultTTrig;
609 int inTimeHitsLowerBoundCorr =
int(round(tTrig)) - inTimeHitsLowerBound;
610 int inTimeHitsUpperBoundCorr =
int(round(tTrig)) + tMax + inTimeHitsUpperBound;
612 float t0;
float t0RMS;
613 int tdcTime = (*digiIt).countsTDC();
616 const DTWireId dtWireId(((*dtLayerId_It).first), (*digiIt).wire());
619 tdcTime +=
int(round(t0));
624 tdcTime -= tdcPedestal;
631 if (( !isNoisy ) && (!isSyncNoisy)) {
633 histoTag =
"TimeBox" + triggerSource();
635 (digiHistos.find(histoTag)->second).
find(indexSL)->second->Fill(tdcTime);
637 (digiHistos.find(histoTag)->second).
find((*dtLayerId_It).first.rawId())->
second->Fill(tdcTime);
643 if (doAllHitsOccupancies) {
645 histoTag =
"OccupancyAllHits_perCh";
646 map<uint32_t, MonitorElement*>::const_iterator mappedHisto =
647 digiHistos[histoTag].find(indexCh);
656 mappedHisto->second->Fill((*digiIt).wire(),(layer_number+(superlayer_number-1)*4)-1);
660 histoTag =
"OccupancyAllHits";
661 map<int, MonitorElement*>::const_iterator histoPerWheel =
662 wheelHistos[histoTag].find(dtChId.
wheel());
664 histoPerWheel->second->Fill(dtChId.
sector(),dtChId.
station());
667 if(doNoiseOccupancies) {
668 if (tdcTime < inTimeHitsLowerBoundCorr ) {
673 histoTag =
"OccupancyNoise_perCh";
674 map<uint32_t, MonitorElement*>::const_iterator mappedHisto =
675 digiHistos[histoTag].find(indexCh);
677 mappedHisto->second->Fill((*digiIt).wire(),
678 (layer_number+(superlayer_number-1)*4)-1);
682 histoTag =
"OccupancyNoise";
683 map<int, MonitorElement*>::const_iterator histoPerWheel =
684 wheelHistos[histoTag].find(dtChId.
wheel());
686 histoPerWheel->second->Fill(dtChId.
sector(),dtChId.
station());
690 if(doInTimeOccupancies) {
691 if (tdcTime > inTimeHitsLowerBoundCorr && tdcTime < inTimeHitsUpperBoundCorr) {
695 histoTag =
"OccupancyInTimeHits_perCh";
696 map<uint32_t, MonitorElement*>::const_iterator mappedHisto =
697 digiHistos[histoTag].find(indexCh);
699 mappedHisto->second->Fill((*digiIt).wire(),
700 (layer_number+(superlayer_number-1)*4)-1);
703 histoTag =
"OccupancyInTimeHits";
704 map<int, MonitorElement*>::const_iterator histoPerWheel =
705 wheelHistos[histoTag].find(dtChId.
wheel());
707 histoPerWheel->second->Fill(dtChId.
sector(),dtChId.
station());
715 syncNoisyChambers.clear();
725 for (std::vector<LTCDigi>::const_iterator ltc_it = ltcdigis->begin(); ltc_it != ltcdigis->end(); ltc_it++){
726 size_t otherTriggerSum=0;
727 for (
size_t i = 1;
i < 6;
i++)
728 otherTriggerSum +=
size_t((*ltc_it).HasTriggered(
i));
730 if ((*ltc_it).HasTriggered(0) && otherTriggerSum == 0)
731 l1ASource =
"DTonly";
732 else if (!(*ltc_it).HasTriggered(0))
734 else if ((*ltc_it).HasTriggered(0) && otherTriggerSum > 0)
735 l1ASource =
"DTalso";
745 if(tpMode)
return string(
"DT/10-TestPulses/");
746 else if(sliceTestMode)
return string(
"DT/01-SliceTestDigi/");
747 return string(
"DT/01-Digi/");
758 int nWires_max = (digiHistos[histoTag])[dtCh.
rawId()] -> getNbinsX();
761 for(
int sl=1; sl<=3; sl++) {
762 for(
int ly=1; ly<=4; ly++) {
763 for(
int ch=1; ch<=nWires_max; ch++) {
765 int dduId = -1, rosId = -1, robId = -1, tdcId = -1, channelId = -1;
766 int realCh =
mapping->geometryToReadOut(dtCh.
wheel(),dtCh.
station(),dtCh.
sector(),sl,ly,ch,dduId,rosId,robId,tdcId,channelId);
771 int lybin = (4*sl - 4) + ly;
772 (digiHistos[histoTag])[dtCh.
rawId()] -> setBinContent(ch,lybin,-1.);
LuminosityBlockID id() const
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
void channelsMap(const DTChamberId &dtCh, std::string histoTag)
To map real channels.
DTChamberId chamberId() const
Return the corresponding ChamberId.
std::string topFolder() const
constexpr uint32_t rawId() const
get the raw id
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
DTDigiTask(const edm::ParameterSet &ps)
Constructor.
U second(std::pair< T, U > const &p)
void setCurrentFolder(std::string const &fullpath)
const std::vector< const DTSuperLayer * > & superLayers() const
Return the superlayers in the chamber.
MonitorElement * book1D(Args &&...args)
int superlayer() const
Return the superlayer number (deprecated method name)
MonitorElement * book2D(Args &&...args)
void bookHistos(DQMStore::IBooker &ibooker, const DTSuperLayerId &dtSL, std::string folder, std::string histoTag)
Book the ME.
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
LuminosityBlockNumber_t luminosityBlock() const
std::vector< DigiType >::const_iterator const_iterator
int cellStatus(int wheelId, int stationId, int sectorId, int slId, int layerId, int cellId, bool &noiseFlag, bool &feMask, bool &tdcMask, bool &trigMask, bool &deadFlag, bool &nohvFlag) const
get content
~DTDigiTask() override
Destructor.
void beginLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context) override
To reset the MEs.
MonitorElement * bookFloat(Args &&...args)
int station() const
Return the station number.
int wheel() const
Return the wheel number.
std::string triggerSource()
get the L1A source
TimeValue_t value() const
edm::Timestamp time() const
void analyze(const edm::Event &e, const edm::EventSetup &c) override
Analyze.