#include <L1TRPCTPG.h>
Public Member Functions | |
std::map< std::string, MonitorElement * > | L1TRPCBookME (RPCDetId &detId) |
Booking of MonitoringElemnt for one RPCDetId (= roll) | |
L1TRPCTPG (const edm::ParameterSet &ps) | |
virtual | ~L1TRPCTPG () |
Protected Member Functions | |
void | analyze (const edm::Event &e, const edm::EventSetup &c) |
void | beginJob (void) |
void | endJob (void) |
Private Attributes | |
DQMStore * | dbe |
ofstream | logFile_ |
MonitorElement * | m_digiBxCSC |
MonitorElement * | m_digiBxDT |
MonitorElement * | m_digiBxRPCBar |
MonitorElement * | m_digiBxRPCEnd |
bool | monitorDaemon_ |
int | nev_ |
std::string | outputFile_ |
edm::InputTag | rpctfSource_ |
MonitorElement * | rpctpgbx |
std::map< uint32_t, std::map < std::string, MonitorElement * > > | rpctpgmeCollection |
MonitorElement * | rpctpgndigi [3] |
edm::InputTag | rpctpgSource_ |
bool | verbose_ |
L1TRPCTPG::L1TRPCTPG | ( | const edm::ParameterSet & | ps | ) |
Definition at line 22 of file L1TRPCTPG.cc.
References gather_cfg::cout, dbe, edm::ParameterSet::getUntrackedParameter(), NULL, cmsCodeRules::cppFunctionSkipper::operator, outputFile_, DQMStore::setCurrentFolder(), DQMStore::setVerbose(), and verbose_.
: rpctpgSource_( ps.getParameter< InputTag >("rpctpgSource") ), rpctfSource_( ps.getParameter< InputTag >("rpctfSource") ) { // verbosity switch verbose_ = ps.getUntrackedParameter<bool>("verbose", false); if(verbose_) cout << "L1TRPCTPG: constructor...." << endl; dbe = NULL; if ( ps.getUntrackedParameter<bool>("DQMStore", false) ) { dbe = Service<DQMStore>().operator->(); dbe->setVerbose(0); } outputFile_ = ps.getUntrackedParameter<string>("outputFile", ""); if ( outputFile_.size() != 0 ) { cout << "L1T Monitoring histograms will be saved to " << outputFile_.c_str() << endl; } bool disable = ps.getUntrackedParameter<bool>("disableROOToutput", false); if(disable){ outputFile_=""; } if ( dbe !=NULL ) { dbe->setCurrentFolder("L1T/L1TRPCTPG"); } }
L1TRPCTPG::~L1TRPCTPG | ( | ) | [virtual] |
Definition at line 58 of file L1TRPCTPG.cc.
{ }
void L1TRPCTPG::analyze | ( | const edm::Event & | e, |
const edm::EventSetup & | c | ||
) | [protected, virtual] |
RPC Geometry
DIGI
RecHits, perhaps to add later
Implements edm::EDAnalyzer.
Definition at line 117 of file L1TRPCTPG.cc.
References gather_cfg::cout, MonitorElement::Fill(), edm::EventSetup::get(), edm::Event::getByLabel(), edm::Event::getByType(), L1MuGMTReadoutCollection::getRecords(), edm::ESHandleBase::isValid(), edm::HandleBase::isValid(), edm::InputTag::label(), m_digiBxCSC, m_digiBxDT, m_digiBxRPCBar, m_digiBxRPCEnd, nev_, edm::Handle< T >::product(), rpctfSource_, rpctpgbx, rpctpgndigi, rpctpgSource_, edm::second(), and verbose_.
{ nev_++; if(verbose_) cout << "L1TRPCTPG: analyze...." << endl; edm::ESHandle<RPCGeometry> rpcGeo; c.get<MuonGeometryRecord>().get(rpcGeo); if (!rpcGeo.isValid()) { edm::LogInfo("DataNotFound") << "can't find RPCGeometry" << endl; return; } // char layerLabel[328]; // char meId [328]; edm::Handle<RPCDigiCollection> rpcdigis; e.getByLabel(rpctpgSource_,rpcdigis); if (!rpcdigis.isValid()) { edm::LogInfo("DataNotFound") << "can't find RPCDigiCollection with label "<< rpctpgSource_ << endl; return; } // Calculate the number of DT and CSC cands present edm::Handle<L1MuGMTReadoutCollection> pCollection; e.getByLabel(rpctfSource_,pCollection); if (!pCollection.isValid()) { edm::LogInfo("DataNotFound") << "can't find L1MuGMTReadoutCollection with label " << rpctfSource_.label() ; return; } L1MuGMTReadoutCollection const* gmtrc = pCollection.product(); vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->getRecords(); vector<L1MuGMTReadoutRecord>::const_iterator RRItr; static int nRPCTrackBarrel, nRPCTrackEndcap , nDTTrack, nCSCTrack; nRPCTrackBarrel = 0; nRPCTrackEndcap = 0; nDTTrack = 0; nCSCTrack = 0; for( RRItr = gmt_records.begin() ; RRItr != gmt_records.end() ; RRItr++ ) { // DTs vector<L1MuRegionalCand> DTCands = RRItr->getDTBXCands(); for( vector<L1MuRegionalCand>::const_iterator ECItr = DTCands.begin() ; ECItr != DTCands.end() ; ++ECItr ) { if (!ECItr->empty()) { ++nDTTrack; } } // CSCs vector<L1MuRegionalCand> CSCCands = RRItr->getCSCCands(); for( vector<L1MuRegionalCand>::const_iterator ECItr = CSCCands.begin() ; ECItr != CSCCands.end() ; ++ECItr ) { if (!ECItr->empty()) { ++nCSCTrack; } } //RPC barrel vector<L1MuRegionalCand> RPCBCands = RRItr->getBrlRPCCands(); for( vector<L1MuRegionalCand>::const_iterator ECItr = RPCBCands.begin() ; ECItr != RPCBCands.end() ; ++ECItr ) { if (!ECItr->empty()) { ++nRPCTrackBarrel; } } //RPC endcap vector<L1MuRegionalCand> RPCECands = RRItr->getFwdRPCCands(); for( vector<L1MuRegionalCand>::const_iterator ECItr = RPCECands.begin() ; ECItr != RPCECands.end() ; ++ECItr ) { if (!ECItr->empty()) { ++nRPCTrackEndcap; } } } if (0){ edm::Handle<RPCRecHitCollection> rpcHits; e.getByType(rpcHits); if (!rpcHits.isValid()) { edm::LogInfo("DataNotFound") << "can't find RPCRecHitCollection of any type" << endl; return; } } int numberofDigi[3] = {0,0,0}; RPCDigiCollection::DigiRangeIterator collectionItr; for(collectionItr=rpcdigis->begin(); collectionItr!=rpcdigis->end(); ++collectionItr){ /*RPCDetId detId=(*collectionItr ).first; uint32_t id=detId(); char detUnitLabel[328]; RPCGeomServ RPCname(detId); std::string nameRoll = RPCname.name(); sprintf(detUnitLabel ,"%s",nameRoll.c_str()); sprintf(layerLabel ,"%s",nameRoll.c_str()); std::map<uint32_t, std::map<std::string,MonitorElement*> >::iterator meItr = rpctpgmeCollection.find(id); if (meItr == rpctpgmeCollection.end() || (rpctpgmeCollection.size()==0)) { rpctpgmeCollection[id]=L1TRPCBookME(detId); } std::map<std::string, MonitorElement*> meMap=rpctpgmeCollection[id];*/ // std::vector<int> strips; // std::vector<int> bxs; // strips.clear(); // bxs.clear(); RPCDigiCollection::const_iterator digiItr; for (digiItr = ((*collectionItr ).second).first; digiItr!=((*collectionItr).second).second; ++digiItr){ // strips is a list of hit strips (regardless of bx) for this roll // int strip= (*digiItr).strip(); // strips.push_back(strip); int bx=(*digiItr).bx(); rpctpgbx->Fill(bx); // if ( nRPCTrackBarrel == 0 && nDTTrack != 0) { m_digiBxDT->Fill(bx); } else if ( nRPCTrackBarrel != 0 && nDTTrack == 0) { m_digiBxRPCBar->Fill(bx); } if ( nRPCTrackEndcap == 0 && nCSCTrack != 0) { m_digiBxCSC->Fill(bx); } else if ( nRPCTrackEndcap != 0 && nCSCTrack == 0) { m_digiBxRPCEnd->Fill(bx); } if (bx == -1) { numberofDigi[0]++; } if (bx == 0) { // sprintf(meId,"Occupancy_%s",detUnitLabel); // meMap[meId]->Fill(strip); numberofDigi[1]++; } if (bx == 2) { numberofDigi[2]++; } // sprintf(meId,"BXN_%s",detUnitLabel); // meMap[meId]->Fill(bx); // sprintf(meId,"BXN_vs_strip_%s",detUnitLabel); // meMap[meId]->Fill(strip,bx); } } rpctpgndigi[0]->Fill(numberofDigi[0]); rpctpgndigi[1]->Fill(numberofDigi[1]); rpctpgndigi[2]->Fill(numberofDigi[2]); }
void L1TRPCTPG::beginJob | ( | void | ) | [protected, virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 62 of file L1TRPCTPG.cc.
References DQMStore::book1D(), dbe, m_digiBxCSC, m_digiBxDT, m_digiBxRPCBar, m_digiBxRPCEnd, nev_, cmsCodeRules::cppFunctionSkipper::operator, DQMStore::rmdir(), rpctpgbx, rpctpgndigi, and DQMStore::setCurrentFolder().
{ nev_ = 0; // get hold of back-end interface DQMStore* dbe = 0; dbe = Service<DQMStore>().operator->(); if ( dbe ) { dbe->setCurrentFolder("L1T/L1TRPCTPG"); dbe->rmdir("L1T/L1TRPCTPG"); } if ( dbe ) { dbe->setCurrentFolder("L1T/L1TRPCTPG"); rpctpgbx = dbe->book1D("RPCTPG_bx", "RPC digis bx - all events", 9, -4.5, 4.5 ) ; rpctpgndigi[1] = dbe->book1D("RPCTPG_ndigi", "RPCTPG nDigi bx 0", 100, -0.5, 99.5 ) ; rpctpgndigi[2] = dbe->book1D("RPCTPG_ndigi_+1", "RPCTPG nDigi bx +1", 100, -0.5, 99.5 ) ; rpctpgndigi[0] = dbe->book1D("RPCTPG_ndigi_-1", "RPCTPG nDigi bx -1", 100, -0.5, 99.5 ) ; m_digiBxRPCBar = dbe->book1D("RPCDigiRPCBmu_noDTmu_bx", "RPC digis bx - RPC, !DT", 9, -4.5, 4.5 ) ; m_digiBxRPCEnd = dbe->book1D("RPCDigiRPCEmu_noCSCmu_bx", "RPC digis bx - RPC, !CSC", 9, -4.5, 4.5 ) ; m_digiBxDT = dbe->book1D("RPCDigiDTmu_noRPCBmu_bx", "RPC digis bx - !RPC, DT", 9, -4.5, 4.5 ) ; m_digiBxCSC = dbe->book1D("RPCDigiCSCmu_noRPCEmu_bx", "RPC digis bx - !RPC, CSC", 9, -4.5, 4.5 ) ; } }
void L1TRPCTPG::endJob | ( | void | ) | [protected, virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 107 of file L1TRPCTPG.cc.
References gather_cfg::cout, dbe, nev_, outputFile_, DQMStore::save(), and verbose_.
{ if(verbose_) cout << "L1TRPCTPG: end job...." << endl; LogInfo("EndJob") << "analyzed " << nev_ << " events"; if ( outputFile_.size() != 0 && dbe ) dbe->save(outputFile_); return; }
std::map< std::string, MonitorElement * > L1TRPCTPG::L1TRPCBookME | ( | RPCDetId & | detId | ) |
Booking of MonitoringElemnt for one RPCDetId (= roll)
Name components common to current RPDDetId
Definition at line 23 of file L1TRPCBookME.cc.
References RPCGeomServ::name(), RPCDetId::region(), RPCDetId::ring(), RPCDetId::sector(), and RPCDetId::station().
{ std::map<std::string, MonitorElement*> meMap; std::string regionName; std::string ringType; if(detId.region() == 0) { regionName="Barrel"; ringType="Wheel"; }else{ ringType="Disk"; if(detId.region() == -1) regionName="Encap-"; if(detId.region() == 1) regionName="Encap+"; } char folder[220]; sprintf(folder,"L1T/L1TRPCTPG/Strips/%s/%s_%d/station_%d/sector_%d", regionName.c_str(),ringType.c_str(), detId.ring(),detId.station(),detId.sector()); //cout << folder << endl; dbe->setCurrentFolder(folder); char detUnitLabel[328]; char layerLabel[328]; //sprintf(detUnitLabel ,"%d",detId()); RPCGeomServ RPCname(detId); std::string nameRoll = RPCname.name(); sprintf(detUnitLabel ,"%s",nameRoll.c_str()); sprintf(layerLabel ,"%s",nameRoll.c_str()); char meId [328]; char meTitle [328]; // Begin booking sprintf(meId,"Occupancy_%s",detUnitLabel); sprintf(meTitle,"Occupancy_for_%s",layerLabel); // cout << meId << endl; // cout << meTitle << endl; meMap[meId] = dbe->book1D(meId, meTitle, 100, 0.5, 100.5); sprintf(meId,"BXN_%s",detUnitLabel); sprintf(meTitle,"BXN_for_%s",layerLabel); meMap[meId] = dbe->book1D(meId, meTitle, 11, -10.5, 10.5); sprintf(meId,"BXN_vs_strip_%s",detUnitLabel); sprintf(meTitle,"BXN_vs_strip_for_%s",layerLabel); meMap[meId] = dbe->book2D(meId, meTitle, 100, 0.5, 100.5, 11, -10.5, 10.5); return meMap; }
DQMStore* L1TRPCTPG::dbe [private] |
Definition at line 80 of file L1TRPCTPG.h.
Referenced by beginJob(), endJob(), and L1TRPCTPG().
ofstream L1TRPCTPG::logFile_ [private] |
Definition at line 99 of file L1TRPCTPG.h.
MonitorElement* L1TRPCTPG::m_digiBxCSC [private] |
Definition at line 91 of file L1TRPCTPG.h.
Referenced by analyze(), and beginJob().
MonitorElement* L1TRPCTPG::m_digiBxDT [private] |
Definition at line 89 of file L1TRPCTPG.h.
Referenced by analyze(), and beginJob().
MonitorElement* L1TRPCTPG::m_digiBxRPCBar [private] |
Definition at line 85 of file L1TRPCTPG.h.
Referenced by analyze(), and beginJob().
MonitorElement* L1TRPCTPG::m_digiBxRPCEnd [private] |
Definition at line 87 of file L1TRPCTPG.h.
Referenced by analyze(), and beginJob().
bool L1TRPCTPG::monitorDaemon_ [private] |
Definition at line 98 of file L1TRPCTPG.h.
int L1TRPCTPG::nev_ [private] |
Definition at line 95 of file L1TRPCTPG.h.
Referenced by analyze(), beginJob(), and endJob().
std::string L1TRPCTPG::outputFile_ [private] |
Definition at line 96 of file L1TRPCTPG.h.
Referenced by endJob(), and L1TRPCTPG().
edm::InputTag L1TRPCTPG::rpctfSource_ [private] |
Definition at line 101 of file L1TRPCTPG.h.
Referenced by analyze().
MonitorElement* L1TRPCTPG::rpctpgbx [private] |
Definition at line 83 of file L1TRPCTPG.h.
Referenced by analyze(), and beginJob().
std::map<uint32_t, std::map<std::string, MonitorElement*> > L1TRPCTPG::rpctpgmeCollection [private] |
Definition at line 93 of file L1TRPCTPG.h.
MonitorElement* L1TRPCTPG::rpctpgndigi[3] [private] |
Definition at line 82 of file L1TRPCTPG.h.
Referenced by analyze(), and beginJob().
edm::InputTag L1TRPCTPG::rpctpgSource_ [private] |
Definition at line 100 of file L1TRPCTPG.h.
Referenced by analyze().
bool L1TRPCTPG::verbose_ [private] |
Definition at line 97 of file L1TRPCTPG.h.
Referenced by analyze(), endJob(), and L1TRPCTPG().