CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RPCMonitorDigi.cc
Go to the documentation of this file.
1 #include <set>
2 #include <sstream>
10 //Tracking Tools
12 //FW Core
14 //Reco Muon
16 
17 const std::string RPCMonitorDigi::regionNames_[3] = {"Endcap-", "Barrel", "Endcap+"};
18 
20  : counter(0),
21  dcs_(false),
22  numberOfDisks_(0),
23  numberOfInnerRings_(0){
24 
25  saveRootFile = pset.getUntrackedParameter<bool>("SaveRootFile", false);
26  RootFileName = pset.getUntrackedParameter<std::string>("RootFileName", "RPCMonitorDigiDQM.root");
27 
28  useMuonDigis_= pset.getUntrackedParameter<bool>("UseMuon", true);
29  useRollInfo_= pset.getUntrackedParameter<bool>("UseRollInfo", false);
30 
31  muPtCut_ = pset.getUntrackedParameter<double>("MuonPtCut", 3.0);
32  muEtaCut_ = pset.getUntrackedParameter<double>("MuonEtaCut", 1.9);
33 
34  subsystemFolder_ = pset.getUntrackedParameter<std::string>("RPCFolder", "RPC");
35  globalFolder_ = pset.getUntrackedParameter<std::string>("GlobalFolder", "SummaryHistograms");
36 
37  //Parametersets for tokens
38  muonLabel_ = consumes<reco::CandidateView>(pset.getParameter<edm::InputTag>("MuonLabel"));
39  rpcRecHitLabel_ = consumes<RPCRecHitCollection>(pset.getParameter<edm::InputTag>("RecHitLabel"));
40  scalersRawToDigiLabel_ = consumes<DcsStatusCollection>(pset.getParameter<edm::InputTag>("ScalersRawToDigiLabel"));
41 
42  noiseFolder_ = pset.getUntrackedParameter<std::string>("NoiseFolder", "AllHits");
43  muonFolder_ = pset.getUntrackedParameter<std::string>("MuonFolder", "Muon");
44 
45 }
46 
48 
49 
51 
52  edm::LogInfo ("rpcmonitordigi") <<"[RPCMonitorDigi]: Begin Run " ;
53 
54  std::set<int> disk_set, ring_set;
56  iSetup.get<MuonGeometryRecord>().get(rpcGeo);
57 
58  //loop on geometry to book all MEs
59  edm::LogInfo ("rpcmonitordigi") <<"[RPCMonitorDigi]: Booking histograms per roll. " ;
60  for (TrackingGeometry::DetContainer::const_iterator it=rpcGeo->dets().begin();it<rpcGeo->dets().end();it++){
61  if(dynamic_cast< const RPCChamber* >( *it ) != 0 ){
62  const RPCChamber* ch = dynamic_cast< const RPCChamber* >( *it );
63  std::vector< const RPCRoll*> roles = (ch->rolls());
64  if(useRollInfo_){
65  for(std::vector<const RPCRoll*>::const_iterator r = roles.begin();r != roles.end(); ++r){
66  RPCDetId rpcId = (*r)->id();
67 
68  //get station and inner ring
69  if(rpcId.region()!=0){
70  disk_set.insert(rpcId.station());
71  ring_set.insert(rpcId.ring());
72  }
73 
74  //booking all histograms
75  RPCGeomServ rpcsrv(rpcId);
76  std::string nameID = rpcsrv.name();
77  if(useMuonDigis_) bookRollME(ibooker,rpcId ,iSetup, muonFolder_, meMuonCollection[nameID]);
78  bookRollME(ibooker, rpcId, iSetup, noiseFolder_, meNoiseCollection[nameID]);
79  }
80  }else{
81  RPCDetId rpcId = roles[0]->id(); //any roll would do - here I just take the first one
82  RPCGeomServ rpcsrv(rpcId);
83  std::string nameID = rpcsrv.chambername();
84  if(useMuonDigis_) bookRollME(ibooker, rpcId,iSetup, muonFolder_, meMuonCollection[nameID]);
85  bookRollME(ibooker, rpcId, iSetup, noiseFolder_, meNoiseCollection[nameID]);
86  if(rpcId.region()!=0){
87  disk_set.insert(rpcId.station());
88  ring_set.insert(rpcId.ring());
89  }
90  }
91  }
92  }//end loop on geometry to book all MEs
93 
94  numberOfDisks_ = disk_set.size();
95  numberOfInnerRings_ = (*ring_set.begin());
96 
97  //Book
101 
102  std::string currentFolder = subsystemFolder_ +"/"+noiseFolder_;
103  ibooker.setCurrentFolder(currentFolder);
104 
105  noiseRPCEvents_ = ibooker.book1D("RPCEvents","RPCEvents", 1, 0.5, 1.5);
106 
107  if(useMuonDigis_ ){
111 
112  currentFolder = subsystemFolder_ +"/"+muonFolder_;
113  ibooker.setCurrentFolder(currentFolder);
114 
115  muonRPCEvents_ = ibooker.book1D("RPCEvents", "RPCEvents", 1, 0.5, 1.5);
116  NumberOfMuon_ = ibooker.book1D("NumberOfMuons", "Number of Muons", 11, -0.5, 10.5);
117  NumberOfRecHitMuon_ = ibooker.book1D("NumberOfRecHitMuons", "Number of RPC RecHits per Muon", 8, -0.5, 7.5);
118  }
119 
120  //Clear flags;
121  dcs_ = true;
122 }
123 
125  dcs_ = true;
126 
127  //Check HV status
128  //this->makeDcsInfo(event); //For the time being, ignore DCS bit due to its unreliability
129 
130  if( !dcs_){ //This condition, now is always false
131  edm::LogWarning ("rpcmonitordigi") <<"[RPCMonitorDigi]: DCS bit OFF" ;
132  return;//if RPC not ON there's no need to continue
133  }
134 
135  counter++;
136  edm::LogInfo ("rpcmonitordigi") <<"[RPCMonitorDigi]: Beginning analyzing event " << counter;
137 
138  //Muons
140  event.getByToken(muonLabel_, muonCands);
141 
142  std::map<RPCDetId , std::vector<RPCRecHit> > rechitMuon;
143  rechitMuon.clear();
144 
145  int numMuons = 0;
146  int numRPCRecHit = 0 ;
147 
148  if(muonCands.isValid()){
149 
150  int nStaMuons = muonCands->size();
151 
152  for( int i = 0; i < nStaMuons; i++ ) {
153 
154  const reco::Candidate & goodMuon = (*muonCands)[i];
155  const reco::Muon * muCand = dynamic_cast<const reco::Muon*>(&goodMuon);
156 
157  if(!muCand->isGlobalMuon())continue;
158  if(muCand->pt() < muPtCut_ || fabs(muCand->eta())>muEtaCut_) continue;
159  numMuons++;
160  reco::Track muTrack = (*(muCand->outerTrack()));
161  std::vector<TrackingRecHitRef > rpcTrackRecHits;
162  //loop on mu rechits
163  for ( trackingRecHit_iterator it= muTrack.recHitsBegin(); it != muTrack.recHitsEnd() ; it++) {
164  if (!(*it)->isValid ())continue;
165  int muSubDetId = (*it)->geographicalId().subdetId();
166  if(muSubDetId == MuonSubdetId::RPC) {
167  numRPCRecHit ++;
168  TrackingRecHit * tkRecHit = (*it)->clone();
169  RPCRecHit* rpcRecHit = dynamic_cast<RPCRecHit*>(tkRecHit);
170  int detId = (int)rpcRecHit->rpcId();
171  if(rechitMuon.find(detId) == rechitMuon.end() || rechitMuon[detId].size() == 0){
172  std::vector<RPCRecHit> myVect(1,*rpcRecHit );
173  rechitMuon[detId]= myVect;
174  }else {
175  rechitMuon[detId].push_back(*rpcRecHit);
176  }
177  }
178  }// end loop on mu rechits
179 
180  }
181 
182  if( NumberOfMuon_) NumberOfMuon_->Fill(numMuons);
183  if( NumberOfRecHitMuon_ && numMuons>0) NumberOfRecHitMuon_->Fill( numRPCRecHit);
184 
185  }else{
186  edm::LogError ("rpcmonitordigi") <<"[RPCMonitorDigi]: Muons - Product not valid for event" << counter;
187  }
188 
189  //RecHits
191  event.getByToken( rpcRecHitLabel_ , rpcHits);
192  std::map<RPCDetId , std::vector<RPCRecHit> > rechitNoise;
193  rechitNoise.clear();
194 
195  if(rpcHits.isValid()){
196 
197  // RPC rec hits NOT associated to a muon
199  std::vector<RPCRecHit>::const_iterator muonRecHitIter;
200 
201  for (rpcRecHitIter = rpcHits->begin(); rpcRecHitIter != rpcHits->end() ; rpcRecHitIter++) {
202  RPCRecHit rpcRecHit = (*rpcRecHitIter);
203  int detId = (int)rpcRecHit.rpcId();
204  if(rechitNoise.find(detId) == rechitNoise.end() || rechitNoise[detId].size() == 0){
205  std::vector<RPCRecHit> myVect(1,rpcRecHit );
206  rechitNoise[detId]= myVect;
207  }else {
208  rechitNoise[detId].push_back(rpcRecHit);
209  }
210  }
211  }else{
212  edm::LogError ("rpcmonitordigi") <<"[RPCMonitorDigi]: RPCRecHits - Product not valid for event" << counter;
213  }
214 
215 
216  if( useMuonDigis_ && !rechitMuon.empty() ){
217  if(muonRPCEvents_ != 0 ) {muonRPCEvents_->Fill(1);}
218  this->performSourceOperation(rechitMuon, muonFolder_);
219  }
220 
221  if( !rechitNoise.empty()) {
222  if( noiseRPCEvents_ != 0) { noiseRPCEvents_->Fill(1);}
223  this->performSourceOperation(rechitNoise, noiseFolder_);
224  }
225 
226 }
227 
228 
229 void RPCMonitorDigi::performSourceOperation( std::map<RPCDetId , std::vector<RPCRecHit> > & recHitMap, std::string recHittype){
230 
231  edm::LogInfo ("rpcmonitordigi") <<"[RPCMonitorDigi]: Performing DQM source operations for ";
232 
233  if(recHitMap.size()==0) return;
234 
235  std::map<std::string, std::map<std::string, MonitorElement*> > meRollCollection ;
236  std::map<std::string, MonitorElement*> meWheelDisk ;
237  std::map<std::string, MonitorElement*> meRegion ;
238  std::map<std::string, MonitorElement*> meSectorRing;
239 
240  if(recHittype == muonFolder_ ) {
241  meRollCollection = meMuonCollection;
242  meWheelDisk = wheelDiskMuonCollection;
243  meRegion = regionMuonCollection;
244  meSectorRing = sectorRingMuonCollection;
245  }else if(recHittype == noiseFolder_ ){
246  meRollCollection = meNoiseCollection;
247  meWheelDisk = wheelDiskNoiseCollection;
248  meRegion = regionNoiseCollection;
249  meSectorRing = sectorRingNoiseCollection;
250  }else{
251  edm::LogWarning("rpcmonitordigi")<<"[RPCMonitorDigi]: RecHit type not valid.";
252  return;
253  }
254 
255 
256  int totalNumberOfRecHits[3] ={ 0, 0, 0};
257  std::stringstream os;
258 
259  //Loop on Rolls
260  for ( std::map<RPCDetId , std::vector<RPCRecHit> >::const_iterator detIdIter = recHitMap.begin(); detIdIter != recHitMap.end() ; detIdIter++){
261 
262  RPCDetId detId = (*detIdIter).first;
263  // int id=detId();
264 
265  //get roll number
266  rpcdqm::utils rpcUtils;
267  int nr = rpcUtils.detId2RollNr(detId);
268 
269 
270  RPCGeomServ geoServ(detId);
271  std::string nameRoll = "";
272 
273 
274  if(useRollInfo_) nameRoll = geoServ.name();
275  else nameRoll = geoServ.chambername();
276 
277  int region=(int)detId.region();
278  int wheelOrDiskNumber;
279  std::string wheelOrDiskType;
280  int ring = 0 ;
281  int sector = detId.sector();
282  int layer = 0;
283  int totalRolls = 3;
284  int roll = detId.roll();
285  if(region == 0) {
286  wheelOrDiskType = "Wheel";
287  wheelOrDiskNumber = (int)detId.ring();
288  int station = detId.station();
289 
290  if(station == 1){
291  if(detId.layer() == 1){
292  layer = 1; //RB1in
293  totalRolls = 2;
294  }else{
295  layer = 2; //RB1out
296  totalRolls = 2;
297  }
298  if(roll == 3) roll =2; // roll=3 is Forward
299  }else if(station == 2){
300  if(detId.layer() == 1){
301  layer = 3; //RB2in
302  if( abs(wheelOrDiskNumber) ==2 && roll == 3) {
303  roll = 2; //W -2, +2 RB2in has only 2 rolls
304  totalRolls = 2;
305  }
306  }else{
307  layer = 4; //RB2out
308  if( abs(wheelOrDiskNumber) !=2 && roll == 3){
309  roll = 2;//W -1, 0, +1 RB2out has only 2 rolls
310  totalRolls = 2;
311  }
312  }
313  }else if (station == 3){
314  layer = 5; //RB3
315  totalRolls = 2;
316  if(roll == 3) roll =2;
317  }else{
318  layer = 6; //RB4
319  totalRolls = 2;
320  if(roll == 3) roll =2;
321  }
322 
323  }else {
324  wheelOrDiskType = "Disk";
325  wheelOrDiskNumber = region*(int)detId.station();
326  ring = detId.ring();
327  }
328 
329  std::vector<RPCRecHit> recHits = (*detIdIter).second;
330  int numberOfRecHits = recHits.size();
331  totalNumberOfRecHits[region + 1 ] += numberOfRecHits;
332 
333  std::set<int> bxSet ;
334  int numDigi = 0;
335 
336  std::map<std::string, MonitorElement*> meMap = meRollCollection[nameRoll];
337 
338  //Loop on recHits
339  for(std::vector<RPCRecHit>::const_iterator recHitIter = recHits.begin(); recHitIter != recHits.end(); recHitIter++){
340  RPCRecHit recHit = (*recHitIter);
341 
342  int bx = recHit.BunchX();
343  bxSet.insert(bx);
344  int clusterSize = (int)recHit.clusterSize();
345  numDigi += clusterSize ;
346  int firstStrip = recHit.firstClusterStrip();
347  int lastStrip = clusterSize + firstStrip - 1;
348 
349  // ###################### Roll Level #################################
350 
351  os.str("");
352  os<<"Occupancy_"<<nameRoll;
353  if(meMap[os.str()]) {
354  for(int s=firstStrip; s<= lastStrip; s++){
355  if(useRollInfo_) { meMap[os.str()]->Fill(s);}
356  else{
357  int nstrips = meMap[os.str()]->getNbinsX()/totalRolls;
358  meMap[os.str()]->Fill(s + nstrips*(roll-1)); }
359  }
360  }
361 
362  os.str("");
363  os<<"BXDistribution_"<<nameRoll;
364  if(meMap[os.str()]) meMap[os.str()]->Fill(bx);
365 
366 
367  os.str("");
368  os<<"ClusterSize_"<<nameRoll;
369  if(meMap[os.str()]) meMap[os.str()]->Fill(clusterSize);
370 
371 
372 
373  // ###################### Sector- Ring Level #################################
374 
375 
376  os.str("");
377  os<<"Occupancy_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Sector_"<<sector;
378  if( meSectorRing[os.str()]){
379  for(int s=firstStrip; s<= lastStrip; s++){//Loop on digis
380  meSectorRing[os.str()]->Fill(s, nr);
381  }
382  }
383 
384  // os.str("");
385 // os<<"BxDistribution_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Sector_"<<sector;
386 // if( meSectorRing[os.str()]) meSectorRing[os.str()]->Fill(bx);
387 
388  os.str("");
389  if(geoServ.segment() > 0 && geoServ.segment() < 19 ){
390  os<<"Occupancy_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Ring_"<<ring<<"_CH01-CH18";
391  }else if (geoServ.segment() > 18 ){
392  os<<"Occupancy_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Ring_"<<ring<<"_CH19-CH36";
393  }
394 
395  if( meSectorRing[os.str()]){
396  for(int s=firstStrip; s<= lastStrip; s++){//Loop on digis
397  meSectorRing[os.str()]->Fill(s + 32*(detId.roll()-1), geoServ.segment());
398  }
399  }
400 
401  // os.str("");
402 // os<<"BxDistribution_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Ring_"<<ring;
403 // if( meSectorRing[os.str()]) meSectorRing[os.str()]->Fill(bx);
404 
405 
406  // ###################### Wheel/Disk Level #########################ààà
407  if(region ==0){
408  os.str("");
409  os<<"1DOccupancy_Wheel_"<<wheelOrDiskNumber;
410  if( meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill(sector, clusterSize);
411 
412  os.str("");
413  os<<"Occupancy_Roll_vs_Sector_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber;
414  if (meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill(sector, nr, clusterSize);
415 
416  }else{
417  os.str("");
418  os<<"1DOccupancy_Ring_"<<ring;
419  if ((meWheelDisk[os.str()])){
420  if (wheelOrDiskNumber > 0 ) {meWheelDisk[os.str()]->Fill(wheelOrDiskNumber + numberOfDisks_, clusterSize);}
421  else {meWheelDisk[os.str()]->Fill(wheelOrDiskNumber + numberOfDisks_+1, clusterSize);}
422  }
423 
424  os.str("");
425  os<<"Occupancy_Ring_vs_Segment_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber;
426  if (meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill( geoServ.segment(), (ring-1)*3-detId.roll()+1,clusterSize );
427  }
428 
429  os.str("");
430  os<<"BxDistribution_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber;
431  if(meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill(bx);
432 
433 
434  os.str("");
435  os<<"ClusterSize_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Layer"<<layer;
436  if(meWheelDisk[os.str()]) meWheelDisk[os.str()] -> Fill(clusterSize);
437 
438 
439  os.str("");
440  os<<"ClusterSize_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Ring"<<ring;
441  if(meWheelDisk[os.str()]) meWheelDisk[os.str()] -> Fill(clusterSize);
442 
443 
444  // ###################### Global ##################################
445 
446 
447  os.str("");
448  os<<"ClusterSize_"<<RPCMonitorDigi::regionNames_[region +1];
449  if(meRegion[os.str()]) meRegion[os.str()] -> Fill(clusterSize);
450 
451  os.str("");
452  os<<"ClusterSize_";
453  if(region == 0){
454  os<<"Layer"<<layer;
455  }else{
456  os<<"Ring"<<ring;
457  }
458  if(meRegion[os.str()]) meRegion[os.str()] -> Fill(clusterSize);
459 
460 
461  }//end loop on recHits
462 
463  os.str("");
464  os<<"BXWithData_"<<nameRoll;
465  if(meMap[os.str()]) meMap[os.str()]->Fill(bxSet.size());
466 
467  os.str("");
468  os<<"NumberOfClusters_"<<nameRoll;
469  if(meMap[os.str()]) meMap[os.str()]->Fill( numberOfRecHits);
470 
471  os.str("");
472  os<<"Multiplicity_"<<RPCMonitorDigi::regionNames_[region +1];
473  if(meRegion[os.str()]) meRegion[os.str()]->Fill(numDigi);
474 
475  os.str("");
476  if(region==0) {
477  os<<"Occupancy_for_Barrel";
478  if(meRegion[os.str()]) meRegion[os.str()]->Fill(sector, wheelOrDiskNumber, numDigi);
479  }else {
480  os<<"Occupancy_for_Endcap";
481  int xbin = wheelOrDiskNumber+ numberOfDisks_;
482  if (region==-1) {xbin = wheelOrDiskNumber+ numberOfDisks_+1;}
483  if(meRegion[os.str()]) {meRegion[os.str()]->Fill(xbin,ring,numDigi);}
484  }
485 
486  os.str("");
487  os<<"Multiplicity_"<<nameRoll;
488  if(meMap[os.str()]) meMap[os.str()]->Fill(numDigi);
489 
490  }//end loop on rolls
491 
492  for(int i = 0; i< 3; i++ ){
493  os.str("");
494  os<<"NumberOfClusters_"<<RPCMonitorDigi::regionNames_[i];
495  if(meRegion[os.str()]) meRegion[os.str()]->Fill( totalNumberOfRecHits[i]);
496  }
497 
498 }
499 
500 
502 
504 
505  if ( ! e.getByToken(scalersRawToDigiLabel_, dcsStatus) ){
506  dcs_ = true;
507  return;
508  }
509 
510  if ( ! dcsStatus.isValid() )
511  {
512  edm::LogWarning("RPCDcsInfo") << "scalersRawToDigi not found" ;
513  dcs_ = true; // info not available: set to true
514  return;
515  }
516 
517  for (DcsStatusCollection::const_iterator dcsStatusItr = dcsStatus->begin();
518  dcsStatusItr != dcsStatus->end(); ++dcsStatusItr){
519 
520  if (!dcsStatusItr->ready(DcsStatus::RPC)) dcs_=false;
521  }
522 
523  return ;
524 }
525 
526 
virtual std::string chambername()
Definition: RPCGeomServ.cc:120
T getParameter(std::string const &) const
std::map< std::string, MonitorElement * > regionMuonCollection
std::map< std::string, MonitorElement * > sectorRingNoiseCollection
int firstClusterStrip() const
Definition: RPCRecHit.h:105
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
std::string globalFolder_
std::string muonFolder_
virtual float pt() const
transverse momentum
std::string RootFileName
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:446
std::map< std::string, MonitorElement * > wheelDiskMuonCollection
std::map< std::string, MonitorElement * > regionNoiseCollection
bool isGlobalMuon() const
Definition: Muon.h:218
std::map< std::string, std::map< std::string, MonitorElement * > > meNoiseCollection
MonitorElement * muonRPCEvents_
void bookSectorRingME(DQMStore::IBooker &, const std::string &, std::map< std::string, MonitorElement * > &)
Booking of MonitoringElement at Sector/Ring level.
RPCMonitorDigi(const edm::ParameterSet &)
void makeDcsInfo(const edm::Event &)
std::string noiseFolder_
return((rh^lh)&mask)
void Fill(long long x)
std::map< std::string, MonitorElement * > wheelDiskNoiseCollection
tuple numMuons
Definition: patZpeak.py:40
int clusterSize() const
Definition: RPCRecHit.h:109
static const std::string regionNames_[3]
Geometry.
RPCDetId rpcId() const
Return the rpcId.
Definition: RPCRecHit.h:97
virtual std::string name()
Definition: RPCGeomServ.cc:20
int roll() const
Definition: RPCDetId.h:120
virtual void analyze(const edm::Event &, const edm::EventSetup &)
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
int ring() const
Definition: RPCDetId.h:72
virtual float eta() const
momentum pseudorapidity
void bookRollME(DQMStore::IBooker &, RPCDetId &, const edm::EventSetup &, const std::string &, std::map< std::string, MonitorElement * > &)
Booking of MonitoringElement for one RPCDetId (= roll)
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
const std::vector< const RPCRoll * > & rolls() const
Return the Rolls.
Definition: RPCChamber.cc:68
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
Definition: Track.h:104
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
bool isValid() const
Definition: HandleBase.h:76
virtual TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only
Definition: Muon.h:51
MonitorElement * NumberOfRecHitMuon_
virtual TrackingRecHit * clone() const =0
int layer() const
Definition: RPCDetId.h:108
virtual int segment()
Definition: RPCGeomServ.cc:467
int detId2RollNr(const RPCDetId &_id)
Definition: utils.h:18
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
const T & get() const
Definition: EventSetup.h:55
edm::EDGetTokenT< RPCRecHitCollection > rpcRecHitLabel_
edm::EDGetTokenT< DcsStatusCollection > scalersRawToDigiLabel_
int sector() const
Sector id: the group of chambers at same phi (and increasing r)
Definition: RPCDetId.h:102
void performSourceOperation(std::map< RPCDetId, std::vector< RPCRecHit > > &, std::string)
static const int RPC
Definition: MuonSubdetId.h:14
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
static std::atomic< unsigned int > counter
void bookWheelDiskME(DQMStore::IBooker &, const std::string &, std::map< std::string, MonitorElement * > &)
Booking of MonitoringElemnt at Wheel/Disk level.
int BunchX() const
Definition: RPCRecHit.h:101
MonitorElement * noiseRPCEvents_
std::map< std::string, MonitorElement * > sectorRingMuonCollection
volatile std::atomic< bool > shutdown_flag false
std::map< std::string, std::map< std::string, MonitorElement * > > meMuonCollection
void bookRegionME(DQMStore::IBooker &, const std::string &, std::map< std::string, MonitorElement * > &)
Booking of MonitoringElemnt at region (Barrel/Endcap) level.
MonitorElement * NumberOfMuon_
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
std::string subsystemFolder_
TrackingRecHitCollection::base::const_iterator trackingRecHit_iterator
iterator over a vector of reference to TrackingRecHit in the same collection
Definition: Run.h:41
edm::EDGetTokenT< reco::CandidateView > muonLabel_
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:109
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.
Definition: RPCDetId.h:63
int station() const
Definition: RPCDetId.h:96