![]() |
![]() |
#include <RPCRecHitValid.h>
Public Member Functions | |
RPCRecHitValid (const edm::ParameterSet &ps) | |
~RPCRecHitValid () | |
Protected Member Functions | |
void | analyze (const edm::Event &e, const edm::EventSetup &c) |
void | beginJob () |
void | endJob (void) |
Private Attributes | |
MonitorElement * | ClSize |
DQMStore * | dbe_ |
MonitorElement * | occRB1IN |
MonitorElement * | occRB1OUT |
MonitorElement * | Pulls |
MonitorElement * | Rechisto |
MonitorElement * | Res |
MonitorElement * | res1cl |
MonitorElement * | ResS1 |
MonitorElement * | ResS3 |
MonitorElement * | ResWmin1 |
MonitorElement * | ResWmin2 |
MonitorElement * | ResWplu1 |
MonitorElement * | ResWplu2 |
MonitorElement * | ResWzer0 |
std::string | rootFileName |
MonitorElement * | Simhisto |
Definition at line 32 of file RPCRecHitValid.h.
RPCRecHitValid::RPCRecHitValid | ( | const edm::ParameterSet & | ps | ) |
Definition at line 28 of file RPCRecHitValid.cc.
References dbe_, edm::ParameterSet::getUntrackedParameter(), cmsCodeRules::cppFunctionSkipper::operator, and FitTarget::Res.
{ rootFileName = pset.getUntrackedParameter<string>("rootFileName", "rpcRecHitValidPlots.root"); //simHitLabel = pset.getUntrackedParameter<string>("g4SimHits", "MuonRPCHits"); //recHitLabel = pset.getUntrackedParameter<string>("recHitLabel", "RPCRecHitProducer"); dbe_ = Service<DQMStore>().operator->(); if ( dbe_ ) { Rechisto = dbe_->book1D("RecHits", "RPC RecHits", 300, -150, 150); Simhisto = dbe_->book1D("SimHits", "Simulated Hits", 300, -150, 150); Pulls = dbe_->book1D("Global Pulls", "RPC Global Pulls", 100, -4,4); ClSize = dbe_->book1D("Global ClSize", "Global Cluster Size", 10, 0, 10); res1cl = dbe_->book1D("Residuals CS = 1", "Residuals for ClSize = 1", 300, -8, 8); // dbe_->setCurrentFolder("Residuals"); // Res = dbe_->book1D("Global Residuals", "Global Residuals", 300, -8, 8); // ResWmin2 = dbe_->book1D("W-2 Residuals", "Residuals for Wheel -2", 300, -8, 8); // ResWmin1 = dbe_->book1D("W-1 Residuals", "Residuals for Wheel -1", 300, -8, 8); // ResWzer0 = dbe_->book1D("W 0 Residuals", "Residuals for Wheel 0", 300, -8, 8); // ResWplu1 = dbe_->book1D("W+1 Residuals", "Residuals for Wheel +1", 300, -8, 8); // ResWplu2 = dbe_->book1D("W+2 Residuals", "Residuals for Wheel +2", 300, -8, 8); // ResS1 = dbe_->book1D("Sector 1 Residuals", "Sector 1 Residuals", 300, -8, 8); // ResS3 = dbe_->book1D("Sector 3 Residuals", "Sector 3 Residuals", 300, -8, 8); dbe_->setCurrentFolder("Residuals and Occupancy"); occRB1IN = dbe_->book1D("RB1 IN Occupancy", "RB1 IN Occupancy", 100, 0, 100); occRB1OUT = dbe_->book1D("RB1 OUT Occupancy", "RB1 OUT Occupancy", 100, 0, 100); // dbe_->setCurrentFolder("Residuals"); Res = dbe_->book1D("Global Residuals", "Global Residuals", 300, -8, 8); ResWmin2 = dbe_->book1D("W-2 Residuals", "Residuals for Wheel -2", 300, -8, 8); ResWmin1 = dbe_->book1D("W-1 Residuals", "Residuals for Wheel -1", 300, -8, 8); ResWzer0 = dbe_->book1D("W 0 Residuals", "Residuals for Wheel 0", 300, -8, 8); ResWplu1 = dbe_->book1D("W+1 Residuals", "Residuals for Wheel +1", 300, -8, 8); ResWplu2 = dbe_->book1D("W+2 Residuals", "Residuals for Wheel +2", 300, -8, 8); ResS1 = dbe_->book1D("Sector 1 Residuals", "Sector 1 Residuals", 300, -8, 8); ResS3 = dbe_->book1D("Sector 3 Residuals", "Sector 3 Residuals", 300, -8, 8); } }
RPCRecHitValid::~RPCRecHitValid | ( | ) |
Definition at line 75 of file RPCRecHitValid.cc.
{ }
void RPCRecHitValid::analyze | ( | const edm::Event & | e, |
const edm::EventSetup & | c | ||
) | [protected, virtual] |
Implements edm::EDAnalyzer.
Definition at line 84 of file RPCRecHitValid.cc.
References abs, edm::EventSetup::get(), i, RPCRoll::id(), RPCRoll::isForward(), gen::k, RPCDetId::layer(), csvReporter::r, FitTarget::Res, RPCDetId::ring(), RPCDetId, RPCDetId::sector(), relativeConstraints::station, RPCDetId::station(), PV3DBase< T, PVType, FrameType >::x(), and LocalError::xx().
{ // Get the RPC Geometry ESHandle<RPCGeometry> rpcGeom; eventSetup.get<MuonGeometryRecord>().get(rpcGeom); Handle<PSimHitContainer> simHit; event.getByLabel("g4SimHits", "MuonRPCHits", simHit); std::map<double, int> mapsim; std::map<int, double> nmapsim; std::map<double, int> simWmin2; std::map<double, int> simWmin1; std::map<double, int> simWzer0; std::map<double, int> simWplu1; std::map<double, int> simWplu2; std::map<double, int> simS1; std::map<double, int> simS3; std::map<int, double> nsimWmin2; std::map<int, double> nsimWmin1; std::map<int, double> nsimWzer0; std::map<int, double> nsimWplu1; std::map<int, double> nsimWplu2; std::map<int, double> nsimS1; std::map<int, double> nsimS3; Handle<RPCRecHitCollection> recHit; event.getByLabel("rpcRecHits", recHit); std::map<double, int> maprec; std::map<int, double> nmaprec; std::map<double, double> nmaperr; std::map<int, double> nmapres; std::map<double, int> maprecCL1; std::map<int, double> nmaprecCL1; std::map<double, int> recWmin2; std::map<double, int> recWmin1; std::map<double, int> recWzer0; std::map<double, int> recWplu1; std::map<double, int> recWplu2; std::map<double, int> recS1; std::map<double, int> recS3; std::map<int, double> nrecWmin2; std::map<int, double> nrecWmin1; std::map<int, double> nrecWzer0; std::map<int, double> nrecWplu1; std::map<int, double> nrecWplu2; std::map<int, double> nrecS1; std::map<int, double> nrecS3; std::map<double, double> errWmin2; std::map<double, double> errWmin1; std::map<double, double> errWzer0; std::map<double, double> errWplu1; std::map<double, double> errWplu2; // Loop on rechits RPCRecHitCollection::const_iterator recIt; int nrec = 0; int nrecCL1 = 0; int nrecmin2 = 0; int nrecmin1 = 0; int nreczer0 = 0; int nrecplu1 = 0; int nrecplu2 = 0; int nrecS1c = 0; int nrecS3c = 0; for (recIt = recHit->begin(); recIt != recHit->end(); recIt++) { RPCDetId Rid = (RPCDetId)(*recIt).rpcId(); const RPCRoll* roll = dynamic_cast<const RPCRoll* >( rpcGeom->roll(Rid)); if((roll->isForward())) return; int clsize = (*recIt).clusterSize(); int fstrip = (*recIt).firstClusterStrip(); nrec = nrec + 1; LocalPoint rhitlocal = (*recIt).localPosition(); LocalError locerr = (*recIt).localPositionError(); double rhitlocalx = rhitlocal.x(); double rhiterrx = locerr.xx(); Rechisto->Fill(rhitlocalx); int wheel = roll->id().ring(); int sector = roll->id().sector(); int station = roll->id().station(); int k = roll->id().layer(); // int s = roll->id().subsector(); //-----CLSIZE = 1------------ if (clsize == 1) { maprecCL1[rhitlocalx] = nrec; nrecCL1 = nrecCL1 + 1; } //----------------------------- ClSize->Fill(clsize); //Global Cluster Size // occupancy for (int occ = 0; occ < clsize; occ++) { int occup = fstrip + occ; if (station == 1 && k == 1) { occRB1IN->Fill(occup); } if (station == 1 && k == 2) { occRB1OUT->Fill(occup); } } maprec[rhitlocalx] = nrec; nmaperr[rhitlocalx] = rhiterrx; //-------PHI------------------- if(sector == 1) { recS1[rhitlocalx] = nrec; nrecS1c = nrecS1c + 1; } if(sector == 3) { recS3[rhitlocalx] = nrec; nrecS3c = nrecS3c + 1; } //---------------------------- if(wheel == -2) { recWmin2[rhitlocalx] = nrec; errWmin2[rhitlocalx] = rhiterrx; nrecmin2 = nrecmin2 + 1; } if(wheel == -1) { recWmin1[rhitlocalx] = nrec; errWmin1[rhitlocalx] = rhiterrx; nrecmin1 = nrecmin1 + 1; } if(wheel == 0) { recWzer0[rhitlocalx] = nrec; errWzer0[rhitlocalx] = rhiterrx; nreczer0 = nreczer0 + 1; } if(wheel == 1) { recWplu1[rhitlocalx] = nrec; errWplu1[rhitlocalx] = rhiterrx; nrecplu1 = nrecplu1 + 1; } if(wheel == 2) { recWplu2[rhitlocalx] = nrec; errWplu2[rhitlocalx] = rhiterrx; nrecplu2 = nrecplu2 + 1; } } //cout << " --> Found " << nrec << " rechit in event " << event.id().event() << endl; // Global rechit mapping int i = 0; for (map<double, int>::iterator iter = maprec.begin(); iter != maprec.end(); iter++) { i = i + 1; nmaprec[i] = (*iter).first; } // CL = 1 rechit mapping i = 0; for (map<double, int>::iterator iter = maprecCL1.begin(); iter != maprecCL1.end(); iter++) { i = i + 1; nmaprecCL1[i] = (*iter).first; } // Wheel -2 rechit mapping i = 0; for (map<double, int>::iterator iter = recWmin2.begin(); iter != recWmin2.end(); iter++) { i = i + 1; nrecWmin2[i] = (*iter).first; } // Wheel -1 rechit mapping i = 0; for (map<double, int>::iterator iter = recWmin1.begin(); iter != recWmin1.end(); iter++) { i = i + 1; nrecWmin1[i] = (*iter).first; } // Wheel 0 rechit mapping i = 0; for (map<double, int>::iterator iter = recWzer0.begin(); iter != recWzer0.end(); iter++) { i = i + 1; nrecWzer0[i] = (*iter).first; } // Wheel +1 rechit mapping i = 0; for (map<double, int>::iterator iter = recWplu1.begin(); iter != recWplu1.end(); iter++) { i = i + 1; nrecWplu1[i] = (*iter).first; } // Wheel +2 rechit mapping i = 0; for (map<double, int>::iterator iter = recWplu2.begin(); iter != recWplu2.end(); iter++) { i = i + 1; nrecWplu2[i] = (*iter).first; } // Sector 1 rechit mapping i = 0; for (map<double, int>::iterator iter = recS1.begin(); iter != recS1.end(); iter++) { i = i + 1; nrecS1[i] = (*iter).first; } // Sector 3 rechit mapping i = 0; for (map<double, int>::iterator iter = recS3.begin(); iter != recS3.end(); iter++) { i = i + 1; nrecS3[i] = (*iter).first; } // Loop on simhits PSimHitContainer::const_iterator simIt; int nsim = 0; int nsimmin2 = 0; int nsimmin1 = 0; int nsimzer0 = 0; int nsimplu1 = 0; int nsimplu2 = 0; int nsimS1c = 0; int nsimS3c = 0; for (simIt = simHit->begin(); simIt != simHit->end(); simIt++) { int ptype = (*simIt).particleType(); RPCDetId Rsid = (RPCDetId)(*simIt).detUnitId(); const RPCRoll* roll = dynamic_cast<const RPCRoll* >( rpcGeom->roll(Rsid)); int Swheel = roll->id().ring(); int Ssector = roll->id().sector(); // selection of muon hits if (ptype == 13 || ptype == -13) { nsim = nsim + 1; LocalPoint shitlocal = (*simIt).localPosition(); double shitlocalx = shitlocal.x(); Simhisto->Fill(shitlocalx); mapsim[shitlocalx] = nsim; //----PHI------------------------ if(Ssector == 1) { simS1[shitlocalx] = nsim; nsimS1c = nsimS1c + 1; } if(Ssector == 3) { simS3[shitlocalx] = nsim; nsimS3c = nsimS3c + 1; } //-------------------------------- if(Swheel == -2) { simWmin2[shitlocalx] = nsim; nsimmin2 = nsimmin2 + 1; } if(Swheel == -1) { simWmin1[shitlocalx] = nsim; nsimmin1 = nsimmin1 + 1; } if(Swheel == 0) { simWzer0[shitlocalx] = nsim; nsimzer0 = nsimzer0 + 1; } if(Swheel == 1) { simWplu1[shitlocalx] = nsim; nsimplu1 = nsimplu1 + 1; } if(Swheel == 2) { simWplu2[shitlocalx] = nsim; nsimplu2 = nsimplu2 + 1; } } } //cout << " --> Found " << nsim <<" simhits in event " << event.id().event() << endl; // Global simhit mapping i = 0; for (map<double, int>::iterator iter = mapsim.begin(); iter != mapsim.end(); iter++) { i = i + 1; nmapsim[i] = (*iter).first; } // Wheel -2 simhit mapping i = 0; for (map<double, int>::iterator iter = simWmin2.begin(); iter != simWmin2.end(); iter++) { i = i + 1; nsimWmin2[i] = (*iter).first; } // Wheel -1 simhit mapping i = 0; for (map<double, int>::iterator iter = simWmin1.begin(); iter != simWmin1.end(); iter++) { i = i + 1; nsimWmin1[i] = (*iter).first; } // Wheel 0 simhit mapping i = 0; for (map<double, int>::iterator iter = simWzer0.begin(); iter != simWzer0.end(); iter++) { i = i + 1; nsimWzer0[i] = (*iter).first; } // Wheel +1 simhit mapping i = 0; for (map<double, int>::iterator iter = simWplu1.begin(); iter != simWplu1.end(); iter++) { i = i + 1; nsimWplu1[i] = (*iter).first; } // Wheel +2 simhit mapping i = 0; for (map<double, int>::iterator iter = simWplu2.begin(); iter != simWplu2.end(); iter++) { i = i + 1; nsimWplu2[i] = (*iter).first; } // Sector 1 simhit mapping i = 0; for (map<double, int>::iterator iter = simS1.begin(); iter != simS1.end(); iter++) { i = i + 1; nsimS1[i] = (*iter).first; } // Sector 3 simhit mapping i = 0; for (map<double, int>::iterator iter = simS3.begin(); iter != simS3.end(); iter++) { i = i + 1; nsimS3[i] = (*iter).first; } // Compute residuals double res,resmin2,resmin1,reszer0,resplu1,resplu2,resS1,resS3; if (nsim == nrec) { for (int r=0; r<nsim; r++) { res = nmapsim[r+1] - nmaprec[r+1]; nmapres[r+1] = res; Res->Fill(res); } } if (nsim == nrecCL1) { for (int r=0; r<nsim; r++) { res = nmapsim[r+1] - nmaprecCL1[r+1]; //cout << nmapsim[r+1] << " " << nmaprecCL1[r+1] << endl; if (abs(res) < 3) { res1cl->Fill(res); } } } if (nsimmin2 == nrecmin2) { for (int r=0; r<nsimmin2; r++) { resmin2 = nsimWmin2[r+1] - nrecWmin2[r+1]; ResWmin2->Fill(resmin2); } } if (nsimmin1 == nrecmin1) { for (int r=0; r<nsimmin1; r++) { resmin1 = nsimWmin1[r+1] - nrecWmin1[r+1]; ResWmin1->Fill(resmin1); } } if (nsimzer0 == nreczer0) { for (int r=0; r<nsimzer0; r++) { reszer0 = nsimWzer0[r+1] - nrecWzer0[r+1]; ResWzer0->Fill(reszer0); } } if (nsimplu1 == nrecplu1) { for (int r=0; r<nsimplu1; r++) { resplu1 = nsimWplu1[r+1] - nrecWplu1[r+1]; ResWplu1->Fill(resplu1); } } if (nsimplu2 == nrecplu2) { for (int r=0; r<nsimplu2; r++) { resplu2 = nsimWplu2[r+1] - nrecWplu2[r+1]; ResWplu2->Fill(resplu2); } } if (nsimS1c == nrecS1c) { for (int r=0; r<nsimS1c; r++) { resS1 = nsimS1[r+1] - nrecS1[r+1]; ResS1->Fill(resS1); } } if (nsimS3c == nrecS3c) { for (int r=0; r<nsimS3c; r++) { resS3 = nsimS3[r+1] - nrecS3[r+1]; ResS3->Fill(resS3); } } // compute Pulls double pull; if (nsim == nrec) { for (int r=0; r<nsim; r++) { pull = nmapres[r+1] / nmaperr[nmaprec[r+1]]; Pulls->Fill(pull); } } }
void RPCRecHitValid::beginJob | ( | void | ) | [protected, virtual] |
void RPCRecHitValid::endJob | ( | void | ) | [protected, virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 78 of file RPCRecHitValid.cc.
References dbe_, and DQMStore::save().
{ if ( rootFileName.size() != 0 && dbe_ ) dbe_->save(rootFileName); }
MonitorElement* RPCRecHitValid::ClSize [private] |
Definition at line 58 of file RPCRecHitValid.h.
DQMStore* RPCRecHitValid::dbe_ [private] |
Definition at line 65 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::occRB1IN [private] |
Definition at line 62 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::occRB1OUT [private] |
Definition at line 63 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::Pulls [private] |
Definition at line 57 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::Rechisto [private] |
Definition at line 55 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::Res [private] |
Definition at line 46 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::res1cl [private] |
Definition at line 60 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::ResS1 [private] |
Definition at line 52 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::ResS3 [private] |
Definition at line 53 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::ResWmin1 [private] |
Definition at line 48 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::ResWmin2 [private] |
Definition at line 47 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::ResWplu1 [private] |
Definition at line 50 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::ResWplu2 [private] |
Definition at line 51 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::ResWzer0 [private] |
Definition at line 49 of file RPCRecHitValid.h.
std::string RPCRecHitValid::rootFileName [private] |
Definition at line 66 of file RPCRecHitValid.h.
MonitorElement* RPCRecHitValid::Simhisto [private] |
Definition at line 56 of file RPCRecHitValid.h.