CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Attributes
PhysicsObjectsMonitor Class Reference

#include <PhysicsObjectsMonitor.h>

Inheritance diagram for PhysicsObjectsMonitor:
edm::EDAnalyzer edm::EDConsumerBase

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. More...
 
virtual ~PhysicsObjectsMonitor ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Attributes

MonitorElementcharge
 
MonitorElementCSCvsRPC
 
DQMStoredbe
 
MonitorElementDTvsCSC
 
MonitorElementDTvsRPC
 
MonitorElementh1_Pres
 
MonitorElementhPres
 
MonitorElementNCSChits
 
MonitorElementNDThits
 
MonitorElementNmuon
 
MonitorElementNrechits
 
MonitorElementNRPChits
 
int numberOfRecTracks
 
int numberOfSimTracks
 
MonitorElementpt
 
MonitorElementptot
 
MonitorElementpx
 
MonitorElementpy
 
MonitorElementpz
 
bool saveRootFile
 
std::string theDataType
 
std::string theRootFileName
 
std::string theSeedCollectionLabel
 
std::string theSTAMuonLabel
 
edm::EDGetTokenT
< reco::TrackCollection
theSTAMuonToken_
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

For now: Analyzer of StandAlone muon tracks Later: Add other detectors and more Reco

Author
M. Mulders - CERN marti.nosp@m.jn.m.nosp@m.ulder.nosp@m.s@ce.nosp@m.rn.ch Based on STAMuonAnalyzer by R. Bellan - INFN Torino ricca.nosp@m.rdo..nosp@m.bella.nosp@m.n@ce.nosp@m.rn.ch

Analyzer of the StandAlone muon tracks

Author
M. Mulders - CERN marti.nosp@m.jn.m.nosp@m.ulder.nosp@m.s@ce.nosp@m.rn.ch Based on STAMuonAnalyzer by R. Bellan - INFN Torino ricca.nosp@m.rdo..nosp@m.bella.nosp@m.n@ce.nosp@m.rn.ch

Definition at line 31 of file PhysicsObjectsMonitor.h.

Constructor & Destructor Documentation

PhysicsObjectsMonitor::PhysicsObjectsMonitor ( const edm::ParameterSet pset)

Constructor.

get hold of back-end interface

Definition at line 33 of file PhysicsObjectsMonitor.cc.

References edm::ParameterSet::getUntrackedParameter(), and cppFunctionSkipper::operator.

33  {
34  theSTAMuonLabel = pset.getUntrackedParameter<string>("StandAloneTrackCollectionLabel");
35  theSeedCollectionLabel = pset.getUntrackedParameter<string>("MuonSeedCollectionLabel");
36 
37  theRootFileName = pset.getUntrackedParameter<string>("rootFileName");
38  saveRootFile = pset.getUntrackedParameter<bool>("produceRootFile");
39 
40  theDataType = pset.getUntrackedParameter<string>("DataType");
41 
42  if(theDataType != "RealData" && theDataType != "SimData")
43  edm::LogInfo ("PhysicsObjectsMonitor") << "Error in Data Type!!"<<endl;
44 
47 
50 
51 
52  //set Token(-s)
53  theSTAMuonToken_ = consumes<reco::TrackCollection>(pset.getUntrackedParameter<string>("StandAloneTrackCollectionLabel"));
54 
55 }
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< reco::TrackCollection > theSTAMuonToken_
PhysicsObjectsMonitor::~PhysicsObjectsMonitor ( )
virtual

Destructor.

Definition at line 58 of file PhysicsObjectsMonitor.cc.

58  {
59 }

Member Function Documentation

void PhysicsObjectsMonitor::analyze ( const edm::Event event,
const edm::EventSetup eventSetup 
)
virtual

Implements edm::EDAnalyzer.

Definition at line 105 of file PhysicsObjectsMonitor.cc.

References DeDxDiscriminatorTools::charge(), TrajectoryStateClosestToPoint::charge(), MuonSubdetId::CSC, debug, MuonSubdetId::DT, MuonPatternRecoDumper::dumpFTS(), edm::EventSetup::get(), reco::TransientTrack::impactPointTSCP(), PV3DBase< T, PVType, FrameType >::mag(), TrajectoryStateClosestToPoint::momentum(), PV3DBase< T, PVType, FrameType >::perp(), RecoTauCleanerPlugins::pt, reco::TransientTrack::recHitsBegin(), reco::TransientTrack::recHitsEnd(), recPt, MuonSubdetId::RPC, muonTagProbeFilters_cff::staTracks, TrajectoryStateClosestToPoint::theState(), PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

105  {
106 
107  edm::LogInfo ("PhysicsObjectsMonitor") << "Run: " << event.id().run() << " Event: " << event.id().event();
109 
110  // Get the RecTrack collection from the event
112  event.getByToken(theSTAMuonToken_, staTracks);
113 
114  ESHandle<MagneticField> theMGField;
115  eventSetup.get<IdealMagneticFieldRecord>().get(theMGField);
116 
117 
118  double recPt=0.;
119  double simPt=0.;
120 
121  // Get the SimTrack collection from the event
122  // if(theDataType == "SimData"){
123  // Handle<SimTrackContainer> simTracks;
124 
125  // numberOfRecTracks += staTracks->size();
126 
127  // SimTrackContainer::const_iterator simTrack;
128 
129  // edm::LogInfo ("PhysicsObjectsMonitor") <<"Simulated tracks: ";
130  // for (simTrack = simTracks->begin(); simTrack != simTracks->end(); ++simTrack){
131  // if (abs((*simTrack).type()) == 13) {
132  // edm::LogInfo ("PhysicsObjectsMonitor") << "Sim pT: "<<(*simTrack).momentum().perp()<<endl;
133  // simPt=(*simTrack).momentum().perp();
134  // edm::LogInfo ("PhysicsObjectsMonitor") <<"Sim Eta: "<<(*simTrack).momentum().eta()<<endl;
135  // numberOfSimTracks++;
136  // }
137  // }
138  // edm::LogInfo ("PhysicsObjectsMonitor") << "\n";
139  //}
140 
141  reco::TrackCollection::const_iterator staTrack;
142 
143  edm::LogInfo ("PhysicsObjectsMonitor") << "Reconstructed tracks: " << staTracks->size() << endl;
144  Nmuon->Fill(staTracks->size());
145  for (staTrack = staTracks->begin(); staTrack != staTracks->end(); ++staTrack){
146  reco::TransientTrack track(*staTrack,&*theMGField);
147 
148  int nrechits=0;
149  int nDThits=0;
150  int nCSChits=0;
151  int nRPChits=0;
152 
153  for (trackingRecHit_iterator it = track.recHitsBegin (); it != track.recHitsEnd (); it++) {
154  if ((*it)->isValid ()) {
155  edm::LogInfo ("PhysicsObjectsMonitor") << "Analyzer: Aha this looks like a Rechit!" << std::endl;
156  if((*it)->geographicalId().subdetId() == MuonSubdetId::DT) {
157  nDThits++;
158  } else if((*it)->geographicalId().subdetId() == MuonSubdetId::CSC) {
159  nCSChits++;
160  } else if((*it)->geographicalId().subdetId() == MuonSubdetId::RPC) {
161  nRPChits++;
162  } else {
163  edm::LogInfo ("PhysicsObjectsMonitor") << "This is an UNKNOWN hit !! " << std::endl;
164  }
165  nrechits++;
166  }
167  }
168 
169  Nrechits->Fill(nrechits);
170  NDThits->Fill(nDThits);
171  NCSChits->Fill(nCSChits);
172  DTvsCSC->Fill(nDThits,nCSChits);
173  NRPChits->Fill(nRPChits);
174 
175  debug.dumpFTS(track.impactPointTSCP().theState());
176 
177  recPt = track.impactPointTSCP().momentum().perp();
178  edm::LogInfo ("PhysicsObjectsMonitor") << " p: "<<track.impactPointTSCP().momentum().mag()<< " pT: "<<recPt<<endl;
179  pt->Fill(recPt);
180  ptot->Fill(track.impactPointTSCP().momentum().mag());
181  charge->Fill(track.impactPointTSCP().charge());
182  px->Fill(track.impactPointTSCP().momentum().x());
183  py->Fill(track.impactPointTSCP().momentum().y());
184  pz->Fill(track.impactPointTSCP().momentum().z());
185  }
186  edm::LogInfo ("PhysicsObjectsMonitor") <<"---"<<endl;
187  if(recPt && theDataType == "SimData"){
188  hPres->Fill( (recPt-simPt)/simPt);
189  h1_Pres->Fill( ( 1/recPt - 1/simPt)/ (1/simPt));
190 
191  }
192 }
void Fill(long long x)
std::string dumpFTS(const FreeTrajectoryState &fts) const
static const int CSC
Definition: MuonSubdetId.h:13
#define debug
Definition: HDRShower.cc:19
const T & get() const
Definition: EventSetup.h:55
edm::EDGetTokenT< reco::TrackCollection > theSTAMuonToken_
static const int RPC
Definition: MuonSubdetId.h:14
static const int DT
Definition: MuonSubdetId.h:12
double recPt
void PhysicsObjectsMonitor::beginJob ( void  )
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 61 of file PhysicsObjectsMonitor.cc.

References DeDxDiscriminatorTools::charge(), and RecoTauCleanerPlugins::pt.

61  {
62 
63  dbe->setCurrentFolder("PhysicsObjects/MuonReconstruction");
64 
65 
66  hPres = dbe->book1D("pTRes","pT Resolution",100,-2,2);
67  h1_Pres =dbe->book1D("invPTRes","1/pT Resolution",100,-2,2);
68 
69  charge= dbe->book1D("charge","track charge",5,-2.5,2.5);
70  ptot = dbe->book1D("ptot","track momentum",50,0,50);
71  pt = dbe->book1D("pt","track pT",100,0,50);
72  px = dbe->book1D("px ","track px",100,-50,50);
73  py = dbe->book1D("py","track py",100,-50,50);
74  pz = dbe->book1D("pz","track pz",100,-50,50);
75  Nmuon = dbe->book1D("Nmuon","Number of muon tracks",11,-.5,10.5);
76  Nrechits = dbe->book1D("Nrechits","Number of RecHits/Segments on track",21,-.5,21.5);
77  NDThits = dbe->book1D("NDThits","Number of DT Hits/Segments on track",31,-.5,31.5);
78  NCSChits = dbe->book1D("NCSChits","Number of CSC Hits/Segments on track",31,-.5,31.5);
79  NRPChits = dbe->book1D("NRPChits","Number of RPC hits on track",11,-.5,11.5);
80 
81  DTvsCSC = dbe->book2D("DTvsCSC","Number of DT vs CSC hits on track",29,-.5,28.5,29,-.5,28.5);
82  TH2F * root_ob = DTvsCSC->getTH2F();
83  root_ob->SetXTitle("Number of DT hits");
84  root_ob->SetYTitle("Number of CSC hits");
85 
86 }
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:942
TH2F * getTH2F(void) const
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:1070
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:655
void PhysicsObjectsMonitor::endJob ( void  )
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 88 of file PhysicsObjectsMonitor.cc.

88  {
89 
90  if(theDataType == "SimData"){
91  // edm::LogInfo ("PhysicsObjectsMonitor") << "Number of Sim tracks: " << numberOfSimTracks;
92  edm::LogInfo ("PhysicsObjectsMonitor") << "Sorry! Running this package on simulation is no longer supported! ";
93  }
94 
95  edm::LogInfo ("PhysicsObjectsMonitor") << "Number of Reco tracks: " << numberOfRecTracks ;
96 
98  dbe->setCurrentFolder("PhysicsObjects/MuonReconstruction");
100 
101 
102 }
void removeContents(void)
erase all monitoring elements in current directory (not including subfolders);
Definition: DQMStore.cc:3085
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", const uint32_t run=0, const uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE", const bool resetMEsAfterWriting=false)
Definition: DQMStore.cc:2490
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:655

Member Data Documentation

MonitorElement* PhysicsObjectsMonitor::charge
private
MonitorElement* PhysicsObjectsMonitor::CSCvsRPC
private

Definition at line 73 of file PhysicsObjectsMonitor.h.

DQMStore* PhysicsObjectsMonitor::dbe
private

Definition at line 50 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::DTvsCSC
private

Definition at line 71 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::DTvsRPC
private

Definition at line 72 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::h1_Pres
private

Definition at line 58 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::hPres
private

Definition at line 57 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::NCSChits
private

Definition at line 70 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::NDThits
private

Definition at line 69 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::Nmuon
private

Definition at line 67 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::Nrechits
private

Definition at line 68 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::NRPChits
private

Definition at line 74 of file PhysicsObjectsMonitor.h.

int PhysicsObjectsMonitor::numberOfRecTracks
private

Definition at line 79 of file PhysicsObjectsMonitor.h.

int PhysicsObjectsMonitor::numberOfSimTracks
private

Definition at line 78 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::pt
private

Definition at line 63 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::ptot
private

Definition at line 62 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::px
private

Definition at line 64 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::py
private

Definition at line 65 of file PhysicsObjectsMonitor.h.

MonitorElement* PhysicsObjectsMonitor::pz
private

Definition at line 66 of file PhysicsObjectsMonitor.h.

bool PhysicsObjectsMonitor::saveRootFile
private

Definition at line 49 of file PhysicsObjectsMonitor.h.

std::string PhysicsObjectsMonitor::theDataType
private

Definition at line 81 of file PhysicsObjectsMonitor.h.

std::string PhysicsObjectsMonitor::theRootFileName
private

Definition at line 48 of file PhysicsObjectsMonitor.h.

std::string PhysicsObjectsMonitor::theSeedCollectionLabel
private

Definition at line 54 of file PhysicsObjectsMonitor.h.

std::string PhysicsObjectsMonitor::theSTAMuonLabel
private

Definition at line 53 of file PhysicsObjectsMonitor.h.

edm::EDGetTokenT<reco::TrackCollection> PhysicsObjectsMonitor::theSTAMuonToken_
private

Definition at line 84 of file PhysicsObjectsMonitor.h.