#include <PhysicsObjectsMonitor.h>
Public Member Functions | |
void | analyze (const edm::Event &event, const edm::EventSetup &eventSetup) |
virtual void | beginJob () |
virtual void | endJob () |
PhysicsObjectsMonitor (const edm::ParameterSet &pset) | |
Constructor. | |
virtual | ~PhysicsObjectsMonitor () |
Destructor. | |
Private Attributes | |
MonitorElement * | charge |
MonitorElement * | CSCvsRPC |
DQMStore * | dbe |
MonitorElement * | DTvsCSC |
MonitorElement * | DTvsRPC |
MonitorElement * | h1_Pres |
MonitorElement * | hPres |
MonitorElement * | NCSChits |
MonitorElement * | NDThits |
MonitorElement * | Nmuon |
MonitorElement * | Nrechits |
MonitorElement * | NRPChits |
int | numberOfRecTracks |
int | numberOfSimTracks |
MonitorElement * | pt |
MonitorElement * | ptot |
MonitorElement * | px |
MonitorElement * | py |
MonitorElement * | pz |
bool | saveRootFile |
std::string | theDataType |
std::string | theRootFileName |
std::string | theSeedCollectionLabel |
std::string | theSTAMuonLabel |
For now: Analyzer of StandAlone muon tracks Later: Add other detectors and more Reco
Analyzer of the StandAlone muon tracks
Definition at line 32 of file PhysicsObjectsMonitor.h.
PhysicsObjectsMonitor::PhysicsObjectsMonitor | ( | const edm::ParameterSet & | pset | ) |
Constructor.
get hold of back-end interface
Definition at line 35 of file PhysicsObjectsMonitor.cc.
References edm::ParameterSet::getUntrackedParameter(), and cmsCodeRules::cppFunctionSkipper::operator.
{ theSTAMuonLabel = pset.getUntrackedParameter<string>("StandAloneTrackCollectionLabel"); theSeedCollectionLabel = pset.getUntrackedParameter<string>("MuonSeedCollectionLabel"); theRootFileName = pset.getUntrackedParameter<string>("rootFileName"); saveRootFile = pset.getUntrackedParameter<bool>("produceRootFile"); theDataType = pset.getUntrackedParameter<string>("DataType"); if(theDataType != "RealData" && theDataType != "SimData") edm::LogInfo ("PhysicsObjectsMonitor") << "Error in Data Type!!"<<endl; numberOfSimTracks=0; numberOfRecTracks=0; dbe = edm::Service<DQMStore>().operator->(); }
PhysicsObjectsMonitor::~PhysicsObjectsMonitor | ( | ) | [virtual] |
void PhysicsObjectsMonitor::analyze | ( | const edm::Event & | event, |
const edm::EventSetup & | eventSetup | ||
) | [virtual] |
Implements edm::EDAnalyzer.
Definition at line 106 of file PhysicsObjectsMonitor.cc.
References TrajectoryStateClosestToPoint::charge(), DeDxDiscriminatorTools::charge(), CSC(), debug, GeomDetEnumerators::DT, MuonPatternRecoDumper::dumpFTS(), edm::EventSetup::get(), reco::TransientTrack::impactPointTSCP(), PV3DBase< T, PVType, FrameType >::mag(), TrajectoryStateClosestToPoint::momentum(), PV3DBase< T, PVType, FrameType >::perp(), reco::TransientTrack::recHitsBegin(), reco::TransientTrack::recHitsEnd(), recPt, dedefs::RPC, muonTagProbeFilters_cff::staTracks, TrajectoryStateClosestToPoint::theState(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().
{ edm::LogInfo ("PhysicsObjectsMonitor") << "Run: " << event.id().run() << " Event: " << event.id().event(); MuonPatternRecoDumper debug; // Get the RecTrack collection from the event Handle<reco::TrackCollection> staTracks; event.getByLabel(theSTAMuonLabel, staTracks); ESHandle<MagneticField> theMGField; eventSetup.get<IdealMagneticFieldRecord>().get(theMGField); double recPt=0.; double simPt=0.; // Get the SimTrack collection from the event // if(theDataType == "SimData"){ // Handle<SimTrackContainer> simTracks; // event.getByLabel("g4SimHits",simTracks); // numberOfRecTracks += staTracks->size(); // SimTrackContainer::const_iterator simTrack; // edm::LogInfo ("PhysicsObjectsMonitor") <<"Simulated tracks: "; // for (simTrack = simTracks->begin(); simTrack != simTracks->end(); ++simTrack){ // if (abs((*simTrack).type()) == 13) { // edm::LogInfo ("PhysicsObjectsMonitor") << "Sim pT: "<<(*simTrack).momentum().perp()<<endl; // simPt=(*simTrack).momentum().perp(); // edm::LogInfo ("PhysicsObjectsMonitor") <<"Sim Eta: "<<(*simTrack).momentum().eta()<<endl; // numberOfSimTracks++; // } // } // edm::LogInfo ("PhysicsObjectsMonitor") << "\n"; //} reco::TrackCollection::const_iterator staTrack; edm::LogInfo ("PhysicsObjectsMonitor") << "Reconstructed tracks: " << staTracks->size() << endl; Nmuon->Fill(staTracks->size()); for (staTrack = staTracks->begin(); staTrack != staTracks->end(); ++staTrack){ reco::TransientTrack track(*staTrack,&*theMGField); int nrechits=0; int nDThits=0; int nCSChits=0; int nRPChits=0; for (trackingRecHit_iterator it = track.recHitsBegin (); it != track.recHitsEnd (); it++) { if ((*it)->isValid ()) { edm::LogInfo ("PhysicsObjectsMonitor") << "Analyzer: Aha this looks like a Rechit!" << std::endl; if((*it)->geographicalId().subdetId() == MuonSubdetId::DT) { nDThits++; } else if((*it)->geographicalId().subdetId() == MuonSubdetId::CSC) { nCSChits++; } else if((*it)->geographicalId().subdetId() == MuonSubdetId::RPC) { nRPChits++; } else { edm::LogInfo ("PhysicsObjectsMonitor") << "This is an UNKNOWN hit !! " << std::endl; } nrechits++; } } Nrechits->Fill(nrechits); NDThits->Fill(nDThits); NCSChits->Fill(nCSChits); DTvsCSC->Fill(nDThits,nCSChits); NRPChits->Fill(nRPChits); debug.dumpFTS(track.impactPointTSCP().theState()); recPt = track.impactPointTSCP().momentum().perp(); edm::LogInfo ("PhysicsObjectsMonitor") << " p: "<<track.impactPointTSCP().momentum().mag()<< " pT: "<<recPt<<endl; pt->Fill(recPt); ptot->Fill(track.impactPointTSCP().momentum().mag()); charge->Fill(track.impactPointTSCP().charge()); px->Fill(track.impactPointTSCP().momentum().x()); py->Fill(track.impactPointTSCP().momentum().y()); pz->Fill(track.impactPointTSCP().momentum().z()); } edm::LogInfo ("PhysicsObjectsMonitor") <<"---"<<endl; if(recPt && theDataType == "SimData"){ hPres->Fill( (recPt-simPt)/simPt); h1_Pres->Fill( ( 1/recPt - 1/simPt)/ (1/simPt)); } }
void PhysicsObjectsMonitor::beginJob | ( | void | ) | [virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 62 of file PhysicsObjectsMonitor.cc.
References DeDxDiscriminatorTools::charge().
{ dbe->setCurrentFolder("PhysicsObjects/MuonReconstruction"); hPres = dbe->book1D("pTRes","pT Resolution",100,-2,2); h1_Pres =dbe->book1D("invPTRes","1/pT Resolution",100,-2,2); charge= dbe->book1D("charge","track charge",5,-2.5,2.5); ptot = dbe->book1D("ptot","track momentum",50,0,50); pt = dbe->book1D("pt","track pT",100,0,50); px = dbe->book1D("px ","track px",100,-50,50); py = dbe->book1D("py","track py",100,-50,50); pz = dbe->book1D("pz","track pz",100,-50,50); Nmuon = dbe->book1D("Nmuon","Number of muon tracks",11,-.5,10.5); Nrechits = dbe->book1D("Nrechits","Number of RecHits/Segments on track",21,-.5,21.5); NDThits = dbe->book1D("NDThits","Number of DT Hits/Segments on track",31,-.5,31.5); NCSChits = dbe->book1D("NCSChits","Number of CSC Hits/Segments on track",31,-.5,31.5); NRPChits = dbe->book1D("NRPChits","Number of RPC hits on track",11,-.5,11.5); DTvsCSC = dbe->book2D("DTvsCSC","Number of DT vs CSC hits on track",29,-.5,28.5,29,-.5,28.5); TH2F * root_ob = DTvsCSC->getTH2F(); root_ob->SetXTitle("Number of DT hits"); root_ob->SetYTitle("Number of CSC hits"); }
void PhysicsObjectsMonitor::endJob | ( | void | ) | [virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 89 of file PhysicsObjectsMonitor.cc.
{ if(theDataType == "SimData"){ // edm::LogInfo ("PhysicsObjectsMonitor") << "Number of Sim tracks: " << numberOfSimTracks; edm::LogInfo ("PhysicsObjectsMonitor") << "Sorry! Running this package on simulation is no longer supported! "; } edm::LogInfo ("PhysicsObjectsMonitor") << "Number of Reco tracks: " << numberOfRecTracks ; if(saveRootFile) dbe->save(theRootFileName); dbe->setCurrentFolder("PhysicsObjects/MuonReconstruction"); dbe->removeContents(); }
MonitorElement* PhysicsObjectsMonitor::charge [private] |
Definition at line 62 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::CSCvsRPC [private] |
Definition at line 74 of file PhysicsObjectsMonitor.h.
DQMStore* PhysicsObjectsMonitor::dbe [private] |
Definition at line 51 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::DTvsCSC [private] |
Definition at line 72 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::DTvsRPC [private] |
Definition at line 73 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::h1_Pres [private] |
Definition at line 59 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::hPres [private] |
Definition at line 58 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::NCSChits [private] |
Definition at line 71 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::NDThits [private] |
Definition at line 70 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::Nmuon [private] |
Definition at line 68 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::Nrechits [private] |
Definition at line 69 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::NRPChits [private] |
Definition at line 75 of file PhysicsObjectsMonitor.h.
int PhysicsObjectsMonitor::numberOfRecTracks [private] |
Definition at line 80 of file PhysicsObjectsMonitor.h.
int PhysicsObjectsMonitor::numberOfSimTracks [private] |
Definition at line 79 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::pt [private] |
Definition at line 64 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::ptot [private] |
Definition at line 63 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::px [private] |
Definition at line 65 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::py [private] |
Definition at line 66 of file PhysicsObjectsMonitor.h.
MonitorElement* PhysicsObjectsMonitor::pz [private] |
Definition at line 67 of file PhysicsObjectsMonitor.h.
bool PhysicsObjectsMonitor::saveRootFile [private] |
Definition at line 50 of file PhysicsObjectsMonitor.h.
std::string PhysicsObjectsMonitor::theDataType [private] |
Definition at line 82 of file PhysicsObjectsMonitor.h.
std::string PhysicsObjectsMonitor::theRootFileName [private] |
Definition at line 49 of file PhysicsObjectsMonitor.h.
std::string PhysicsObjectsMonitor::theSeedCollectionLabel [private] |
Definition at line 55 of file PhysicsObjectsMonitor.h.
std::string PhysicsObjectsMonitor::theSTAMuonLabel [private] |
Definition at line 54 of file PhysicsObjectsMonitor.h.