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
188  for (auto rpcRecHitIter = rpcHits->begin(); rpcRecHitIter != rpcHits->end() ; rpcRecHitIter++) {
189  RPCRecHit rpcRecHit = (*rpcRecHitIter);
190  int detId = (int)rpcRecHit.rpcId();
191  if(rechitNoise.find(detId) == rechitNoise.end() || rechitNoise[detId].empty() ){
192  std::vector<RPCRecHit> myVect(1,rpcRecHit );
193  rechitNoise[detId]= myVect;
194  }else {
195  rechitNoise[detId].push_back(rpcRecHit);
196  }
197  }
198  }else{
199  edm::LogError ("rpcmonitordigi") <<"[RPCMonitorDigi]: RPCRecHits - Product not valid for event" << counter;
200  }
201 
202 
203  //Fill counter for all RPC events
204  if( noiseRPCEvents_ != nullptr && !rechitNoise.empty()) {noiseRPCEvents_->Fill(1);}
205  //Perform client operation
206  this->performSourceOperation(rechitNoise, noiseFolder_);
207 
208 }
209 
210 
211 void RPCMonitorDigi::performSourceOperation( std::map<RPCDetId , std::vector<RPCRecHit> > & recHitMap, std::string recHittype){
212 
213  edm::LogInfo ("rpcmonitordigi") <<"[RPCMonitorDigi]: Performing DQM source operations for ";
214 
215  if(recHitMap.empty()) return;
216 
217  std::map<std::string, std::map<std::string, MonitorElement*> > meRollCollection ;
218  std::map<std::string, MonitorElement*> meWheelDisk ;
219  std::map<std::string, MonitorElement*> meRegion ;
220  std::map<std::string, MonitorElement*> meSectorRing;
221 
222  if(recHittype == muonFolder_ ) {
223  meRollCollection = meMuonCollection;
224  meWheelDisk = wheelDiskMuonCollection;
225  meRegion = regionMuonCollection;
226  meSectorRing = sectorRingMuonCollection;
227  }else if(recHittype == noiseFolder_ ){
228  meRollCollection = meNoiseCollection;
229  meWheelDisk = wheelDiskNoiseCollection;
230  meRegion = regionNoiseCollection;
231  meSectorRing = sectorRingNoiseCollection;
232  }else{
233  edm::LogWarning("rpcmonitordigi")<<"[RPCMonitorDigi]: RecHit type not valid.";
234  return;
235  }
236 
237  int totalNumberOfRecHits[3] ={ 0, 0, 0};
238  std::stringstream os;
239 
240  //Loop on Rolls
241  for ( std::map<RPCDetId , std::vector<RPCRecHit> >::const_iterator detIdIter = recHitMap.begin(); detIdIter != recHitMap.end() ; detIdIter++){
242 
243  RPCDetId detId = (*detIdIter).first;
244 
245  //get roll number
246  rpcdqm::utils rpcUtils;
247  int nr = rpcUtils.detId2RollNr(detId);
248 
249  RPCGeomServ geoServ(detId);
250  std::string nameRoll = "";
251 
252  if(useRollInfo_) nameRoll = geoServ.name();
253  else nameRoll = geoServ.chambername();
254 
255  int region=(int)detId.region();
256  int wheelOrDiskNumber;
257  std::string wheelOrDiskType;
258  int ring = 0 ;
259  int sector = detId.sector();
260  int layer = 0;
261  int totalRolls = 3;
262  int roll = detId.roll();
263  if(region == 0) {
264  wheelOrDiskType = "Wheel";
265  wheelOrDiskNumber = (int)detId.ring();
266  int station = detId.station();
267 
268  if(station == 1){
269  if(detId.layer() == 1){
270  layer = 1; //RB1in
271  totalRolls = 2;
272  }else{
273  layer = 2; //RB1out
274  totalRolls = 2;
275  }
276  if(roll == 3) roll =2; // roll=3 is Forward
277  }else if(station == 2){
278  if(detId.layer() == 1){
279  layer = 3; //RB2in
280  if( abs(wheelOrDiskNumber) ==2 && roll == 3) {
281  roll = 2; //W -2, +2 RB2in has only 2 rolls
282  totalRolls = 2;
283  }
284  }else{
285  layer = 4; //RB2out
286  if( abs(wheelOrDiskNumber) !=2 && roll == 3){
287  roll = 2;//W -1, 0, +1 RB2out has only 2 rolls
288  totalRolls = 2;
289  }
290  }
291  }else if (station == 3){
292  layer = 5; //RB3
293  totalRolls = 2;
294  if(roll == 3) roll =2;
295  }else{
296  layer = 6; //RB4
297  totalRolls = 2;
298  if(roll == 3) roll =2;
299  }
300 
301  }else {
302  wheelOrDiskType = "Disk";
303  wheelOrDiskNumber = region*(int)detId.station();
304  ring = detId.ring();
305  }
306 
307  std::vector<RPCRecHit> recHits = (*detIdIter).second;
308  int numberOfRecHits = recHits.size();
309  totalNumberOfRecHits[region + 1 ] += numberOfRecHits;
310 
311  std::set<int> bxSet ;
312  int numDigi = 0;
313 
314  std::map<std::string, MonitorElement*> meMap = meRollCollection[nameRoll];
315 
316  //Loop on recHits
317  for(std::vector<RPCRecHit>::const_iterator recHitIter = recHits.begin(); recHitIter != recHits.end(); recHitIter++){
318  RPCRecHit recHit = (*recHitIter);
319 
320  int bx = recHit.BunchX();
321  bxSet.insert(bx);
322  int clusterSize = (int)recHit.clusterSize();
323  numDigi += clusterSize ;
324  int firstStrip = recHit.firstClusterStrip();
325  int lastStrip = clusterSize + firstStrip - 1;
326 
327  // ###################### Roll Level #################################
328 
329  os.str("");
330  os<<"Occupancy_"<<nameRoll;
331  if(meMap[os.str()]) {
332  for(int s=firstStrip; s<= lastStrip; s++){
333  if(useRollInfo_) { meMap[os.str()]->Fill(s);}
334  else{
335  int nstrips = meMap[os.str()]->getNbinsX()/totalRolls;
336  meMap[os.str()]->Fill(s + nstrips*(roll-1)); }
337  }
338  }
339 
340  os.str("");
341  os<<"BXDistribution_"<<nameRoll;
342  if(meMap[os.str()]) meMap[os.str()]->Fill(bx);
343 
344 
345  os.str("");
346  os<<"ClusterSize_"<<nameRoll;
347  if(meMap[os.str()]) meMap[os.str()]->Fill(clusterSize);
348 
349 
350 
351  // ###################### Sector- Ring Level #################################
352 
353 
354  os.str("");
355  os<<"Occupancy_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Sector_"<<sector;
356  if( meSectorRing[os.str()]){
357  for(int s=firstStrip; s<= lastStrip; s++){//Loop on digis
358  meSectorRing[os.str()]->Fill(s, nr);
359  }
360  }
361 
362  os.str("");
363  if(geoServ.segment() > 0 && geoServ.segment() < 19 ){
364  os<<"Occupancy_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Ring_"<<ring<<"_CH01-CH18";
365  }else if (geoServ.segment() > 18 ){
366  os<<"Occupancy_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Ring_"<<ring<<"_CH19-CH36";
367  }
368 
369  if( meSectorRing[os.str()]){
370  for(int s=firstStrip; s<= lastStrip; s++){//Loop on digis
371  meSectorRing[os.str()]->Fill(s + 32*(detId.roll()-1), geoServ.segment());
372  }
373  }
374 
375  // ###################### 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]); } }
376  if(region ==0){
377  os.str("");
378  os<<"1DOccupancy_Wheel_"<<wheelOrDiskNumber;
379  if( meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill(sector, clusterSize);
380 
381  os.str("");
382  os<<"Occupancy_Roll_vs_Sector_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber;
383  if (meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill(sector, nr, clusterSize);
384 
385  }else{
386  os.str("");
387  os<<"1DOccupancy_Ring_"<<ring;
388  if ((meWheelDisk[os.str()])){
389  if (wheelOrDiskNumber > 0 ) {meWheelDisk[os.str()]->Fill(wheelOrDiskNumber + numberOfDisks_, clusterSize);}
390  else {meWheelDisk[os.str()]->Fill(wheelOrDiskNumber + numberOfDisks_+1, clusterSize);}
391  }
392 
393  os.str("");
394  os<<"Occupancy_Ring_vs_Segment_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber;
395  if (meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill( geoServ.segment(), (ring-1)*3-detId.roll()+1,clusterSize );
396  }
397 
398  os.str("");
399  os<<"BxDistribution_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber;
400  if(meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill(bx);
401 
402 
403  os.str("");
404  os<<"ClusterSize_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Layer"<<layer;
405  if(meWheelDisk[os.str()]) meWheelDisk[os.str()] -> Fill(clusterSize);
406 
407 
408  os.str("");
409  os<<"ClusterSize_"<<wheelOrDiskType<<"_"<<wheelOrDiskNumber<<"_Ring"<<ring;
410  if(meWheelDisk[os.str()]) meWheelDisk[os.str()] -> Fill(clusterSize);
411 
412 
413  // ###################### Global ##################################
414 
415 
416  os.str("");
417  os<<"ClusterSize_"<<RPCMonitorDigi::regionNames_[region +1];
418  if(meRegion[os.str()]) meRegion[os.str()] -> Fill(clusterSize);
419 
420  os.str("");
421  os<<"ClusterSize_";
422  if(region == 0){
423  os<<"Layer"<<layer;
424  }else{
425  os<<"Ring"<<ring;
426  }
427  if(meRegion[os.str()]) meRegion[os.str()] -> Fill(clusterSize);
428 
429 
430  }//end loop on recHits
431 
432  os.str("");
433  os<<"BXWithData_"<<nameRoll;
434  if(meMap[os.str()]) meMap[os.str()]->Fill(bxSet.size());
435 
436  os.str("");
437  os<<"NumberOfClusters_"<<nameRoll;
438  if(meMap[os.str()]) meMap[os.str()]->Fill( numberOfRecHits);
439 
440  os.str("");
441  os<<"Multiplicity_"<<RPCMonitorDigi::regionNames_[region +1];
442  if(meRegion[os.str()]) meRegion[os.str()]->Fill(numDigi);
443 
444  os.str("");
445  if(region==0) {
446  os<<"Occupancy_for_Barrel";
447  if(meRegion[os.str()]) meRegion[os.str()]->Fill(sector, wheelOrDiskNumber, numDigi);
448  }else {
449  os<<"Occupancy_for_Endcap";
450  int xbin = wheelOrDiskNumber+ numberOfDisks_;
451  if (region==-1) {xbin = wheelOrDiskNumber+ numberOfDisks_+1;}
452  if(meRegion[os.str()]) {meRegion[os.str()]->Fill(xbin,ring,numDigi);}
453  }
454 
455  os.str("");
456  os<<"Multiplicity_"<<nameRoll;
457  if(meMap[os.str()]) meMap[os.str()]->Fill(numDigi);
458 
459  }//end loop on rolls
460 
461  for(int i = 0; i< 3; i++ ){
462  os.str("");
463  os<<"NumberOfClusters_"<<RPCMonitorDigi::regionNames_[i];
464  if(meRegion[os.str()]) meRegion[os.str()]->Fill( totalNumberOfRecHits[i]);
465  }
466 
467 }
468 
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
#define nullptr
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 &)
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:291
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:109
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
static constexpr int RPC
Definition: MuonSubdetId.h:14
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)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
T get() const
Definition: EventSetup.h:71
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:45
edm::EDGetTokenT< reco::CandidateView > muonLabel_
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
Definition: Track.h:114
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.
Definition: RPCDetId.h:63
int station() const
Definition: RPCDetId.h:96