CMS 3D CMS Logo

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