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