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