51 edm::LogInfo (
"rpcmonitordigi") <<
"[RPCMonitorDigi]: Begin Run " ;
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 ){
109 std::vector< const RPCRoll*> roles = (ch->
rolls());
111 for(std::vector<const RPCRoll*>::const_iterator r = roles.begin();r != roles.end(); ++
r){
115 std::string nameID = rpcsrv.
name();
156 edm::LogInfo (
"rpcmonitordigi") <<
"[RPCMonitorDigi]: Beginning analyzing event " <<
counter;
161 std::map<RPCDetId , std::vector<RPCRecHit> > rechitMuon;
164 int numRPCRecHit = 0 ;
168 int nStaMuons = muonCands->size();
170 for(
int i = 0;
i < nStaMuons;
i++ ) {
179 std::vector<TrackingRecHitRef > rpcTrackRecHits;
182 if (!(*it)->isValid ())
continue;
183 int muSubDetId = (*it)->geographicalId().subdetId();
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;
193 rechitMuon[detId].push_back(*rpcRecHit);
204 edm::LogError (
"rpcmonitordigi") <<
"[RPCMonitorDigi]: Muons - Product not valid for event" <<
counter;
210 std::map<RPCDetId , std::vector<RPCRecHit> > rechitNoise;
217 std::vector<RPCRecHit>::const_iterator muonRecHitIter;
219 for (rpcRecHitIter = rpcHits->begin(); rpcRecHitIter != rpcHits->end() ; 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;
226 rechitNoise[detId].push_back(rpcRecHit);
230 edm::LogError (
"rpcmonitordigi") <<
"[RPCMonitorDigi]: RPCRecHits - Product not valid for event" <<
counter;
244 edm::LogInfo (
"rpcmonitordigi") <<
"[RPCMonitorDigi]: Performing DQM source operations for ";
246 if(recHitMap.size()==0)
return;
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;
264 edm::LogWarning(
"rpcmonitordigi")<<
"[RPCMonitorDigi]: RecHit type not valid.";
269 int totalNumberOfRecHits[3] ={ 0, 0, 0};
270 std::stringstream os;
273 for (
std::map<
RPCDetId , std::vector<RPCRecHit> >::const_iterator detIdIter = recHitMap.begin(); detIdIter != recHitMap.end() ; detIdIter++){
275 RPCDetId detId = (*detIdIter).first;
284 std::string nameRoll =
"";
290 int region=(int)detId.
region();
291 int wheelOrDiskNumber;
292 std::string wheelOrDiskType;
294 int sector = detId.
sector();
297 int roll = detId.
roll();
299 wheelOrDiskType =
"Wheel";
300 wheelOrDiskNumber = (int)detId.
ring();
304 if(detId.
layer() == 1){
311 if(roll == 3) roll =2;
312 }
else if(station == 2){
313 if(detId.
layer() == 1){
315 if(
abs(wheelOrDiskNumber) ==2 && roll == 3) {
321 if(
abs(wheelOrDiskNumber) !=2 && roll == 3){
326 }
else if (station == 3){
329 if(roll == 3) roll =2;
333 if(roll == 3) roll =2;
337 wheelOrDiskType =
"Disk";
338 wheelOrDiskNumber = region*(int)detId.
station();
342 std::vector<RPCRecHit> recHits = (*detIdIter).second;
343 int numberOfRecHits = recHits.size();
344 totalNumberOfRecHits[region + 1 ] += numberOfRecHits;
346 std::set<int> bxSet ;
349 std::map<std::string, MonitorElement*> meMap = meRollCollection[nameRoll];
352 for(std::vector<RPCRecHit>::const_iterator recHitIter = recHits.begin(); recHitIter != recHits.end(); recHitIter++){
358 numDigi += clusterSize ;
360 int lastStrip = clusterSize + firstStrip - 1;
365 os<<
"Occupancy_"<<nameRoll;
366 if(meMap[os.str()]) {
367 for(
int s=firstStrip;
s<= lastStrip;
s++){
370 int nstrips = meMap[os.str()]->getNbinsX()/totalRolls;
371 meMap[os.str()]->Fill(
s + nstrips*(roll-1)); }
376 os<<
"BXDistribution_"<<nameRoll;
377 if(meMap[os.str()]) meMap[os.str()]->Fill(bx);
381 os<<
"ClusterSize_"<<nameRoll;
382 if(meMap[os.str()]) meMap[os.str()]->Fill(clusterSize);
390 os<<
"Occupancy_"<<wheelOrDiskType<<
"_"<<wheelOrDiskNumber<<
"_Sector_"<<sector;
391 if( meSectorRing[os.str()]){
392 for(
int s=firstStrip;
s<= lastStrip;
s++){
393 meSectorRing[os.str()]->Fill(
s, nr);
403 os<<
"Occupancy_"<<wheelOrDiskType<<
"_"<<wheelOrDiskNumber<<
"_Ring_"<<ring<<
"_CH01-CH18";
404 }
else if (geoServ.
segment() > 18 ){
405 os<<
"Occupancy_"<<wheelOrDiskType<<
"_"<<wheelOrDiskNumber<<
"_Ring_"<<ring<<
"_CH19-CH36";
408 if( meSectorRing[os.str()]){
409 for(
int s=firstStrip;
s<= lastStrip;
s++){
410 meSectorRing[os.str()]->Fill(
s + 32*(detId.
roll()-1), geoServ.
segment());
422 os<<
"1DOccupancy_Wheel_"<<wheelOrDiskNumber;
423 if( meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill(sector, clusterSize);
426 os<<
"Occupancy_Roll_vs_Sector_"<<wheelOrDiskType<<
"_"<<wheelOrDiskNumber;
427 if (meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill(sector, nr, clusterSize);
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);
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 );
443 os<<
"BxDistribution_"<<wheelOrDiskType<<
"_"<<wheelOrDiskNumber;
444 if(meWheelDisk[os.str()]) meWheelDisk[os.str()]->Fill(bx);
448 os<<
"ClusterSize_"<<wheelOrDiskType<<
"_"<<wheelOrDiskNumber<<
"_Layer"<<layer;
449 if(meWheelDisk[os.str()]) meWheelDisk[os.str()] ->
Fill(clusterSize);
453 os<<
"ClusterSize_"<<wheelOrDiskType<<
"_"<<wheelOrDiskNumber<<
"_Ring"<<
ring;
454 if(meWheelDisk[os.str()]) meWheelDisk[os.str()] ->
Fill(clusterSize);
462 if(meRegion[os.str()]) meRegion[os.str()] ->
Fill(clusterSize);
471 if(meRegion[os.str()]) meRegion[os.str()] ->
Fill(clusterSize);
477 os<<
"BXWithData_"<<nameRoll;
478 if(meMap[os.str()]) meMap[os.str()]->Fill(bxSet.size());
481 os<<
"NumberOfClusters_"<<nameRoll;
482 if(meMap[os.str()]) meMap[os.str()]->Fill( numberOfRecHits);
486 if(meRegion[os.str()]) meRegion[os.str()]->Fill(numDigi);
490 os<<
"Occupancy_for_Barrel";
491 if(meRegion[os.str()]) meRegion[os.str()]->Fill(sector, wheelOrDiskNumber, numDigi);
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);
500 os<<
"Multiplicity_"<<nameRoll;
501 if(meMap[os.str()]) meMap[os.str()]->Fill(numDigi);
505 for(
int i = 0;
i< 3;
i++ ){
508 if(meRegion[os.str()]) meRegion[os.str()]->Fill( totalNumberOfRecHits[
i]);
518 if ( ! e.
getByLabel(
"scalersRawToDigi", dcsStatus) ){
530 for (DcsStatusCollection::const_iterator dcsStatusItr = dcsStatus->begin();
531 dcsStatusItr != dcsStatus->end(); ++dcsStatusItr){
virtual std::string chambername()
T getParameter(std::string const &) const
std::map< std::string, MonitorElement * > regionMuonCollection
std::map< std::string, MonitorElement * > sectorRingNoiseCollection
int firstClusterStrip() const
T getUntrackedParameter(std::string const &, T const &) const
const std::string & getName(void) const
get name of ME
std::string globalFolder_
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
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")
std::map< std::string, MonitorElement * > regionNoiseCollection
bool isGlobalMuon() const
std::map< std::string, std::map< std::string, MonitorElement * > > meNoiseCollection
MonitorElement * muonRPCEvents_
RPCMonitorDigi(const edm::ParameterSet &)
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::map< std::string, MonitorElement * > wheelDiskNoiseCollection
C::const_iterator const_iterator
constant access iterator type
static const std::string regionNames_[3]
Data Format.
RPCDetId rpcId() const
Return the rpcId.
virtual std::string name()
void beginRun(const edm::Run &r, const edm::EventSetup &c)
virtual void analyze(const edm::Event &, const edm::EventSetup &)
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
void removeElement(const std::string &name)
const std::vector< const RPCRoll * > & rolls() const
Return the Rolls.
trackingRecHit_iterator recHitsBegin() const
Iterator to first hit on the track.
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
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 getByLabel(InputTag const &tag, Handle< PROD > &result) const
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
virtual TrackRef outerTrack() const
reference to Track reconstructed in the muon detector only
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 detId2RollNr(const RPCDetId &_id)
virtual double pt() const
transverse momentum
int sector() const
Sector id: the group of chambers at same phi (and increasing r)
edm::InputTag rpcRecHitLabel_
void performSourceOperation(std::map< RPCDetId, std::vector< RPCRecHit > > &, std::string)
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.
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)
trackingRecHit_iterator recHitsEnd() const
Iterator to last hit on the track.
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.