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