51 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask]: Constructor" << endl;
60 subtractT0 = ps.
getParameter<
bool>(
"performPerWireT0Calibration");
73 inTimeHitsLowerBound = ps.
getParameter<
int>(
"inTimeHitsLowerBound");
74 inTimeHitsUpperBound = ps.
getParameter<
int>(
"inTimeHitsUpperBound");
103 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"DTDigiTask: analyzed " <<
nevents <<
" events" << endl;
111 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask] endjob called!"<<endl;
119 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask]: BeginJob"<<endl;
126 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask]: begin run" << endl;
141 if(doStaticBooking) {
143 dbe->setCurrentFolder(topFolder());
144 nEventMonitor = dbe->bookFloat(
"nProcessedEvents");
145 for(
int wh = -2; wh <= 2; ++wh) {
146 if(doAllHitsOccupancies)
bookHistos(wh,
string(
"Occupancies"),
"OccupancyAllHits");
147 if(doNoiseOccupancies)
bookHistos(wh,
string(
"Occupancies"),
"OccupancyNoiseHits");
148 if(doInTimeOccupancies)
bookHistos(wh,
string(
"Occupancies"),
"OccupancyInTimeHits");
150 if(lookForSyncNoise || filterSyncNoise) {
151 bookHistos(wh,
string(
"SynchNoise"),
"SyncNoiseEvents");
152 bookHistos(wh,
string(
"SynchNoise"),
"SyncNoiseChambs");
155 for(
int st = 1; st <= 4; ++st) {
156 for(
int sect = 1; sect <= 14; ++sect) {
157 if((sect == 13 || sect == 14) && st != 4)
continue;
162 if (doAllHitsOccupancies)
163 bookHistos(dtChId,
string(
"Occupancies"),
"OccupancyAllHits_perCh");
164 if(doNoiseOccupancies)
165 bookHistos(dtChId,
string(
"Occupancies"),
"OccupancyNoise_perCh");
166 if(doInTimeOccupancies)
167 bookHistos(dtChId,
string(
"Occupancies"),
"OccupancyInTimeHits_perCh");
172 for(
int sl = 1; sl <= 3; ++sl) {
173 if(st == 4 && sl == 2)
continue;
176 bookHistos(dtSLId,
string(
"TimeBoxes"),
"TimeBox");
179 bookHistos(dtSLId,
string(
"TimeBoxes"),
"TimeBoxDTonly");
180 bookHistos(dtSLId,
string(
"TimeBoxes"),
"TimeBoxNoDT");
181 bookHistos(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 map<string,map<int,MonitorElement*> >::const_iterator whHistosIt = wheelHistos.begin();
214 map<string,map<int,MonitorElement*> >::const_iterator whHistosEnd = wheelHistos.end();
215 for(; whHistosIt != whHistosEnd ; ++whHistosIt) {
216 if ((*whHistosIt).first.find(
"Sync") == string::npos) {
217 map<int,MonitorElement*>::const_iterator histoIt = (*whHistosIt).second.begin();
218 map<int,MonitorElement*>::const_iterator histoEnd = (*whHistosIt).second.end();
219 for(;histoIt != histoEnd; ++histoIt) { (*histoIt).second->Reset(); }
231 stringstream wheel; wheel << dtSL.
wheel();
233 stringstream sector; sector << dtSL.
sector();
234 stringstream superLayer; superLayer << dtSL.
superlayer();
235 dbe->setCurrentFolder(topFolder() +
"Wheel" + wheel.str() +
236 "/Sector" + sector.str() +
237 "/Station" + station.str());
240 string histoName = histoTag
242 +
"_St" + station.str()
243 +
"_Sec" + sector.str()
244 +
"_SL" + superLayer.str();
246 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask")
247 <<
"[DTDigiTask]: booking SL histo:" << histoName
248 <<
" (tag: " << histoTag
249 <<
") folder: " << topFolder() +
"Wheel" + wheel.str() +
250 "/Station" + station.str() +
251 "/Sector" + sector.str() +
"/" + folder << endl;
257 else tTrig = defaultTTrig;
260 if ( folder ==
"TimeBoxes") {
261 string histoTitle = histoName +
" (TDC Counts)";
264 (digiHistos[histoTag])[dtSL.
rawId()] =
265 dbe->book1D(histoName,histoTitle, maxTDCCounts/timeBoxGranularity, 0, maxTDCCounts);
266 if(doLayerTimeBoxes) {
267 for(
int layer = 1; layer != 5; ++layer) {
269 stringstream layerHistoName; layerHistoName << histoName <<
"_L" << layer;
270 (digiHistos[histoTag])[layerId.rawId()] =
271 dbe->book1D(layerHistoName.str(),layerHistoName.str(), maxTDCCounts/timeBoxGranularity, 0, maxTDCCounts);
276 (digiHistos[histoTag])[dtSL.
rawId()] =
277 dbe->book1D(histoName,histoTitle, 3*tMax/timeBoxGranularity, tTrig-tMax, tTrig+2*tMax);
278 if(doLayerTimeBoxes) {
280 for(
int layer = 1; layer != 5; ++layer) {
282 stringstream layerHistoName; layerHistoName << histoName <<
"_L" << layer;
283 (digiHistos[histoTag])[layerId.rawId()] =
284 dbe->book1D(layerHistoName.str(),layerHistoName.str(), 3*tMax/timeBoxGranularity, tTrig-tMax, tTrig+2*tMax);
290 if ( folder ==
"CathodPhotoPeaks" ) {
291 dbe->setCurrentFolder(topFolder() +
"Wheel" + wheel.str() +
292 "/Sector" + sector.str() +
293 "/Station" + station.str() +
"/" + folder);
294 (digiHistos[histoTag])[dtSL.
rawId()] = dbe->book1D(histoName,histoName,500,0,1000);
304 stringstream wheel; wheel << dtCh.
wheel();
306 stringstream sector; sector << dtCh.
sector();
307 dbe->setCurrentFolder(topFolder() +
"Wheel" + wheel.str() +
308 "/Sector" + sector.str() +
309 "/Station" + station.str());
312 string histoName = histoTag
314 +
"_St" + station.str()
315 +
"_Sec" + sector.str();
318 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask")
319 <<
"[DTDigiTask]: booking chamber histo:"
320 <<
" (tag: " << histoTag
321 <<
") folder: " << topFolder() +
"Wheel" + wheel.str() +
322 "/Station" + station.str() +
323 "/Sector" + sector.str() << endl;
326 if (folder ==
"Occupancies") {
328 const DTChamber* dtchamber = muonGeom->chamber(dtCh);
329 const std::vector<const DTSuperLayer*> dtSupLylist = dtchamber->
superLayers();
330 std::vector<const DTSuperLayer*>::const_iterator suly = dtSupLylist.begin();
331 std::vector<const DTSuperLayer*>::const_iterator sulyend = dtSupLylist.end();
337 while(suly != sulyend) {
338 const std::vector<const DTLayer*> dtLyList = (*suly)->layers();
339 std::vector<const DTLayer*>::const_iterator ly = dtLyList.begin();
340 std::vector<const DTLayer*>::const_iterator lyend = dtLyList.end();
341 stringstream superLayer; superLayer << (*suly)->id().superlayer();
344 nWires = muonGeom->layer((*ly)->id())->specificTopology().channels();
345 firstWire = muonGeom->layer((*ly)->id())->specificTopology().firstChannel();
346 stringstream layer; layer << (*ly)->id().layer();
347 string histoName_layer = histoName +
"_SL" + superLayer.str() +
"_L" + layer.str();
348 if(histoTag ==
"OccupancyAllHits_perL"
349 || histoTag ==
"OccupancyNoise_perL"
350 || histoTag ==
"OccupancyInTimeHits_perL")
351 (digiHistos[histoTag])[(*ly)->id().rawId()] = dbe->book1D(histoName_layer,histoName_layer,nWires,firstWire,nWires+firstWire);
353 if((nWires+firstWire) > nWires_max) nWires_max = (nWires+firstWire);
359 if(histoTag !=
"OccupancyAllHits_perL"
360 && histoTag !=
"OccupancyNoise_perL"
361 && histoTag !=
"OccupancyInTimeHits_perL"){
363 string histoTitle = histoName;
364 if(!readTTrigDB && histoTag ==
"OccupancyInTimeHits_perCh") {
366 int inTimeHitsLowerBoundCorr = int(round(defaultTTrig)) - inTimeHitsLowerBound;
367 int inTimeHitsUpperBoundCorr = int(round(defaultTTrig)) + defaultTmax + inTimeHitsUpperBound;
368 title <<
"Occ. digis in time [" << inTimeHitsLowerBoundCorr <<
", "
369 << inTimeHitsUpperBoundCorr <<
"] (TDC counts)";
370 histoTitle = title.str();
372 (digiHistos[histoTag])[dtCh.
rawId()] = dbe->book2D(histoName,histoTitle,nWires_max,1,nWires_max+1,12,0,12);
374 for(
int i=1;
i<=12;
i++) {
380 string label=
"SL1: L"+layer_name;
381 (digiHistos[histoTag])[dtCh.
rawId()]->setBinLabel(i,label,2);
388 string label=
"SL2: L"+layer_name;
389 (digiHistos[histoTag])[dtCh.
rawId()]->setBinLabel(i,label,2);
391 else if(i>8 && i<13){
396 string label=
"SL3: L"+layer_name;
397 (digiHistos[histoTag])[dtCh.
rawId()]->setBinLabel(i,label,2);
409 stringstream wheel; wheel << wheelId;
413 string histoName = histoTag +
"_W" + wheel.str();
416 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask")
417 <<
"[DTDigiTask]: booking wheel histo:" << histoName
418 <<
" (tag: " << histoTag
419 <<
") folder: " << topFolder() +
"Wheel" + wheel.str() +
"/" <<endl;
421 if(folder ==
"Occupancies") {
422 dbe->setCurrentFolder(topFolder() +
"Wheel" + wheel.str());
423 string histoTitle =
"# of digis per chamber WHEEL: "+wheel.str();
424 (wheelHistos[histoTag])[wheelId] = dbe->book2D(histoName,histoTitle,12,1,13,4,1,5);
425 (wheelHistos[histoTag])[wheelId]->setBinLabel(1,
"MB1",2);
426 (wheelHistos[histoTag])[wheelId]->setBinLabel(2,
"MB2",2);
427 (wheelHistos[histoTag])[wheelId]->setBinLabel(3,
"MB3",2);
428 (wheelHistos[histoTag])[wheelId]->setBinLabel(4,
"MB4",2);
429 (wheelHistos[histoTag])[wheelId]->setAxisTitle(
"sector",1);
430 }
else if(folder ==
"SynchNoise") {
431 dbe->setCurrentFolder(
"DT/05-Noise/SynchNoise");
432 if (histoTag==
"SyncNoiseEvents") {
433 string histoTitle =
"# of Syncronous-noise events WHEEL: "+wheel.str();
434 (wheelHistos[histoTag])[wheelId] = dbe->book2D(histoName,histoTitle,12,1,13,4,1,5);
435 (wheelHistos[histoTag])[wheelId]->setBinLabel(1,
"MB1",2);
436 (wheelHistos[histoTag])[wheelId]->setBinLabel(2,
"MB2",2);
437 (wheelHistos[histoTag])[wheelId]->setBinLabel(3,
"MB3",2);
438 (wheelHistos[histoTag])[wheelId]->setBinLabel(4,
"MB4",2);
439 (wheelHistos[histoTag])[wheelId]->setAxisTitle(
"sector",1);
440 }
else if (histoTag==
"SyncNoiseChambs") {
441 string histoTitle =
"# of Synchornous-noise chamb per evt. WHEEL: "+wheel.str();
442 (wheelHistos[histoTag])[wheelId] = dbe->book1D(histoName,histoTitle,50,0.5,50.5);
443 (wheelHistos[histoTag])[wheelId]->setAxisTitle(
"# of noisy chambs.",1);
444 (wheelHistos[histoTag])[wheelId]->setAxisTitle(
"# of evts.",2);
457 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask] Analyze #Run: " <<
event.id().run()
458 <<
" #Event: " <<
event.id().event() << endl;
468 if (!isLocalRun)
event.getByType(ltcdigis);
481 if(dtdigis->begin() == dtdigis->end()) {
482 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"Event " <<
nevents <<
" empty." << endl;
485 if (lookForSyncNoise || filterSyncNoise) {
488 for (dtLayerId_It=dtdigis->begin(); dtLayerId_It!=dtdigis->end(); dtLayerId_It++) {
489 DTChamberId chId = ((*dtLayerId_It).first).chamberId();
490 if(hitMap.find(chId) == hitMap.end()) {
493 hitMap[chId] += (((*dtLayerId_It).second).
second - ((*dtLayerId_It).second).first);
499 map<DTChamberId,int>::const_iterator hitMapIt = hitMap.begin();
500 map<DTChamberId,int>::const_iterator hitMapEnd = hitMap.end();
504 for (; hitMapIt != hitMapEnd; ++hitMapIt) {
505 if((hitMapIt->second) > maxTDCHits) {
508 int wh = chId.
wheel();
510 LogTrace(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask] Synch noise in chamber: " << chId
511 <<
" with # digis: " << hitMapIt->second << endl;
513 if(chMap.find(wh) == chMap.end()) { chMap[wh] = 0; }
516 syncNoisyChambers.insert(chId);
518 wheelHistos[
"SyncNoiseEvents"][wh]->Fill(chId.
sector(),chId.
station());
531 map<int,int>::const_iterator chMapIt = chMap.begin();
532 map<int,int>::const_iterator chMapEnd = chMap.end();
533 for (; chMapIt != chMapEnd; ++chMapIt) {
534 wheelHistos[
"SyncNoiseChambs"][(*chMapIt).first]->Fill((*chMapIt).second);
540 if (syncNoisyChambers.size() != 0) {
541 LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"[DTDigiTask] Synch Noise in event: " <<
nevents;
542 if(filterSyncNoise)
LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask") <<
"\tnoisy time-boxes and occupancy will not be filled!" << endl;
548 if (syncNoisyChambers.size() > 3) {
549 time_t eventTime = time_t(event.
time().
value()>>32);
551 LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask|DTSynchNoise")
552 <<
"[DTDigiTask] At least 4 Synch Noisy chambers in Run : " <<
event.id().run()
553 <<
" Lumi : " <<
event.id().luminosityBlock()
554 <<
" Event : " <<
event.id().event()
555 <<
" at time : " << ctime(&eventTime) << endl;
557 set<DTChamberId>::const_iterator chIt = syncNoisyChambers.begin();
558 set<DTChamberId>::const_iterator chEnd = syncNoisyChambers.end();
560 stringstream synchNoisyCh;
561 for (;chIt!=chEnd;++chIt) { synchNoisyCh <<
" " << (*chIt); }
562 LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask|DTSynchNoise") <<
563 "[DTDigiTask] Chamber List :" << synchNoisyCh.str() << endl;
569 LogVerbatim(
"DTDQM|DTMonitorModule|DTDigiTask") << (syncNumTot*100./
nevents) <<
"% sync noise events since the beginning \n"
570 << (syncNum*0.1) <<
"% sync noise events in the last 1000 events " << endl;
575 bool isSyncNoisy =
false;
578 for (dtLayerId_It=dtdigis->begin(); dtLayerId_It!=dtdigis->end(); ++dtLayerId_It) {
581 if (filterSyncNoise) {
582 DTChamberId chId = ((*dtLayerId_It).first).chamberId();
583 if(syncNoisyChambers.find(chId) != syncNoisyChambers.end()) {
589 digiIt!=((*dtLayerId_It).second).
second; ++digiIt) {
591 bool isNoisy =
false;
592 bool isFEMasked =
false;
593 bool isTDCMasked =
false;
594 bool isTrigMask =
false;
598 const DTWireId wireId(((*dtLayerId_It).first), (*digiIt).wire());
599 statusMap->cellStatus(wireId, isNoisy, isFEMasked, isTDCMasked, isTrigMask, isDead, isNohv);
605 const DTSuperLayerId dtSLId = ((*dtLayerId_It).first).superlayerId();
606 uint32_t indexSL = dtSLId.
rawId();
608 uint32_t indexCh = dtChId.
rawId();
609 int layer_number=((*dtLayerId_It).first).layer();
611 const DTLayerId dtLId = (*dtLayerId_It).first;
616 tTrigMap->get( ((*dtLayerId_It).first).superlayerId(),
618 else tTrig = defaultTTrig;
620 int inTimeHitsLowerBoundCorr = int(round(tTrig)) - inTimeHitsLowerBound;
621 int inTimeHitsUpperBoundCorr = int(round(tTrig)) + tMax + inTimeHitsUpperBound;
623 float t0;
float t0RMS;
624 int tdcTime = (*digiIt).countsTDC();
627 const DTWireId dtWireId(((*dtLayerId_It).first), (*digiIt).wire());
630 tdcTime += int(round(t0));
637 if (( !isNoisy ) && (!isSyncNoisy)) {
639 histoTag =
"TimeBox" + triggerSource();
640 if (digiHistos[histoTag].
find(indexSL) == digiHistos[histoTag].
end())
641 bookHistos( dtSLId,
string(
"TimeBoxes"), histoTag );
642 (digiHistos.find(histoTag)->second).
find(indexSL)->second->Fill(tdcTime);
644 (digiHistos.find(histoTag)->second).
find((*dtLayerId_It).first.rawId())->
second->Fill(tdcTime);
663 if (doAllHitsOccupancies) {
665 histoTag =
"OccupancyAllHits_perCh";
666 map<uint32_t, MonitorElement*>::const_iterator mappedHisto =
667 digiHistos[histoTag].find(indexCh);
668 if (mappedHisto == digiHistos[histoTag].
end()) {
669 bookHistos(dtChId,
string(
"Occupancies"), histoTag);
670 mappedHisto = digiHistos[histoTag].find(indexCh);
672 mappedHisto->second->Fill((*digiIt).wire(),(layer_number+(superlayer_number-1)*4)-1);
676 histoTag =
"OccupancyAllHits";
677 map<int, MonitorElement*>::const_iterator histoPerWheel =
678 wheelHistos[histoTag].find(dtChId.
wheel());
679 if(histoPerWheel == wheelHistos[histoTag].
end()) {
681 histoPerWheel = wheelHistos[histoTag].find(dtChId.
wheel());
683 histoPerWheel->second->Fill(dtChId.
sector(),dtChId.
station());
688 if(doNoiseOccupancies) {
689 if (tdcTime < inTimeHitsLowerBoundCorr ) {
694 histoTag =
"OccupancyNoise_perCh";
695 map<uint32_t, MonitorElement*>::const_iterator mappedHisto =
696 digiHistos[histoTag].find(indexCh);
697 if(mappedHisto == digiHistos[histoTag].
end()) {
698 bookHistos(dtChId,
string(
"Occupancies"), histoTag);
699 mappedHisto = digiHistos[histoTag].find(indexCh);
701 mappedHisto->second->Fill((*digiIt).wire(),
702 (layer_number+(superlayer_number-1)*4)-1);
705 histoTag =
"OccupancyNoise";
706 map<int, MonitorElement*>::const_iterator histoPerWheel =
707 wheelHistos[histoTag].find(dtChId.
wheel());
708 if(histoPerWheel == wheelHistos[histoTag].
end()) {
710 histoPerWheel = wheelHistos[histoTag].find(dtChId.
wheel());
712 histoPerWheel->second->Fill(dtChId.
sector(),dtChId.
station());
717 if(doInTimeOccupancies) {
718 if (tdcTime > inTimeHitsLowerBoundCorr && tdcTime < inTimeHitsUpperBoundCorr) {
722 histoTag =
"OccupancyInTimeHits_perCh";
723 map<uint32_t, MonitorElement*>::const_iterator mappedHisto =
724 digiHistos[histoTag].find(indexCh);
725 if(mappedHisto == digiHistos[histoTag].
end()) {
726 bookHistos(dtChId,
string(
"Occupancies"), histoTag);
727 mappedHisto = digiHistos[histoTag].find(indexCh);
729 mappedHisto->second->Fill((*digiIt).wire(),
730 (layer_number+(superlayer_number-1)*4)-1);
733 histoTag =
"OccupancyInTimeHits";
734 map<int, MonitorElement*>::const_iterator histoPerWheel =
735 wheelHistos[histoTag].find(dtChId.
wheel());
736 if(histoPerWheel == wheelHistos[histoTag].
end()) {
738 histoPerWheel = wheelHistos[histoTag].find(dtChId.
wheel());
740 histoPerWheel->second->Fill(dtChId.
sector(),dtChId.
station());
748 syncNoisyChambers.clear();
757 for (std::vector<LTCDigi>::const_iterator ltc_it = ltcdigis->begin(); ltc_it != ltcdigis->end(); ltc_it++){
758 int otherTriggerSum=0;
759 for (
int i = 1; i < 6; i++)
760 otherTriggerSum +=
int((*ltc_it).HasTriggered(i));
762 if ((*ltc_it).HasTriggered(0) && otherTriggerSum == 0)
763 l1ASource =
"DTonly";
764 else if (!(*ltc_it).HasTriggered(0))
766 else if ((*ltc_it).HasTriggered(0) && otherTriggerSum > 0)
767 l1ASource =
"DTalso";
778 if(tpMode)
return string(
"DT/10-TestPulses/");
779 return string(
"DT/01-Digi/");
LuminosityBlockID id() const
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void beginRun(const edm::Run &, const edm::EventSetup &)
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &setup)
DTChamberId chamberId() const
Return the corresponding ChamberId.
std::string topFolder() const
void beginLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
To reset the MEs.
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
DTDigiTask(const edm::ParameterSet &ps)
Constructor.
uint32_t rawId() const
get the raw id
U second(std::pair< T, U > const &p)
void bookHistos(const DTSuperLayerId &dtSL, std::string folder, std::string histoTag)
Book the ME.
const std::vector< const DTSuperLayer * > & superLayers() const
Return the superlayers in the chamber.
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
virtual ~DTDigiTask()
Destructor.
int superlayer() const
Return the superlayer number (deprecated method name)
TimeValue_t value() const
LuminosityBlockNumber_t luminosityBlock() const
std::vector< DigiType >::const_iterator const_iterator
int station() const
Return the station number.
int wheel() const
Return the wheel number.
std::string triggerSource()
get the L1A source
edm::Timestamp time() const