CMS 3D CMS Logo

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

#include <MuonTrackAnalyzer.h>

Inheritance diagram for MuonTrackAnalyzer:
edm::EDAnalyzer edm::EDConsumerBase

Public Types

enum  EtaRange { all, barrel, endcap }
 
- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 

Public Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &eventSetup)
 
virtual void beginJob ()
 
virtual void beginRun ()
 
virtual void endJob ()
 
virtual void endRun ()
 
 MuonTrackAnalyzer (const edm::ParameterSet &pset)
 Constructor. More...
 
void seedsAnalysis (const edm::Event &event, const edm::EventSetup &eventSetup, edm::Handle< edm::SimTrackContainer > simTracks)
 
void tracksAnalysis (const edm::Event &event, const edm::EventSetup &eventSetup, edm::Handle< edm::SimTrackContainer > simTracks)
 
virtual ~MuonTrackAnalyzer ()
 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
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

bool checkMuonSimHitPresence (const edm::Event &event, edm::Handle< edm::SimTrackContainer > simTracks)
 
void fillPlots (const edm::Event &event, edm::Handle< edm::SimTrackContainer > &simTracks)
 
void fillPlots (reco::TransientTrack &track, SimTrack &simTrack)
 
void fillPlots (TrajectoryStateOnSurface &recoTSOS, SimTrack &simState, HTrack *, MuonPatternRecoDumper &)
 
void fillPlots (FreeTrajectoryState &recoFTS, SimTrack &simTrack, HTrack *histo, MuonPatternRecoDumper &debug)
 
TrajectoryStateOnSurface getSeedTSOS (const TrajectorySeed &seed)
 
std::pair< SimTrack, double > getSimTrack (TrajectoryStateOnSurface &tsos, edm::Handle< edm::SimTrackContainer > simTracks)
 
bool isInTheAcceptance (double eta)
 

Private Attributes

DQMStoredbe_
 
std::string dirName_
 
bool doSeedsAnalysis
 
bool doTracksAnalysis
 
MonitorElementhChargeVsEta
 
MonitorElementhChargeVsPt
 
MonitorElementhChi2
 
MonitorElementhChi2Norm
 
MonitorElementhChi2NormVsEta
 
MonitorElementhChi2Prob
 
MonitorElementhChi2ProbVsEta
 
MonitorElementhChi2VsEta
 
MonitorElementhDeltaPt_In_Out_VsEta
 
MonitorElementhDeltaPtVsEta
 
MonitorElementhDof
 
MonitorElementhDofVsEta
 
MonitorElementhHitsPerTrack
 
MonitorElementhHitsPerTrackVsEta
 
MonitorElementhNumberOfTracks
 
MonitorElementhNumberOfTracksVsEta
 
MonitorElementhPtRecVsPtGen
 
HTrackhRecoSeedInner
 
HTrackhRecoSeedPCA
 
HTrackhRecoTracksInner
 
HTrackhRecoTracksOuter
 
HTrackhRecoTracksPCA
 
HTrackVariableshSimTracks
 
int numberOfRecTracks
 
int numberOfSimTracks
 
std::string out
 
edm::InputTag theCSCSimHitLabel
 
edm::EDGetTokenT< std::vector
< PSimHit > > 
theCSCSimHitToken
 
edm::InputTag theDTSimHitLabel
 
edm::EDGetTokenT< std::vector
< PSimHit > > 
theDTSimHitToken
 
EtaRange theEtaRange
 
edm::InputTag theRPCSimHitLabel
 
edm::EDGetTokenT< std::vector
< PSimHit > > 
theRPCSimHitToken
 
std::string theSeedPropagatorName
 
edm::InputTag theSeedsLabel
 
edm::EDGetTokenT
< TrajectorySeedCollection
theSeedsToken
 
MuonServiceProxytheService
 
edm::InputTag theSimTracksLabel
 
edm::EDGetTokenT
< edm::SimTrackContainer
theSimTracksToken
 
edm::InputTag theTracksLabel
 
edm::EDGetTokenT
< reco::TrackCollection
theTracksToken
 
MuonUpdatorAtVertextheUpdator
 

Additional Inherited Members

- 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

Analyzer of the Muon tracks

Author
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
R. Bellan - INFN Torino ricca.nosp@m.rdo..nosp@m.bella.nosp@m.n@ce.nosp@m.rn.ch

Definition at line 45 of file MuonTrackAnalyzer.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

MuonTrackAnalyzer::MuonTrackAnalyzer ( const edm::ParameterSet pset)

Constructor.

Definition at line 40 of file MuonTrackAnalyzer.cc.

References dbe_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), MuonServiceProxy_cff::MuonServiceProxy, MuonUpdatorAtVertex_cff::MuonUpdatorAtVertex, cppFunctionSkipper::operator, dbtoconf::out, and AlCaHLTBitMon_QueryRunRegistry::string.

40  {
41 
42  // service parameters
43  ParameterSet serviceParameters = pset.getParameter<ParameterSet>("ServiceParameters");
44  // the services
45  theService = new MuonServiceProxy(serviceParameters);
46 
47  theSimTracksLabel = edm::InputTag("g4SimHits");
48  theSimTracksToken = consumes<edm::SimTrackContainer>(theSimTracksLabel);
49 
50  theTracksLabel = pset.getParameter<InputTag>("Tracks");
51  theTracksToken = consumes<reco::TrackCollection>(theTracksLabel);
52  doTracksAnalysis = pset.getUntrackedParameter<bool>("DoTracksAnalysis",true);
53 
54  doSeedsAnalysis = pset.getUntrackedParameter<bool>("DoSeedsAnalysis",false);
55  if(doSeedsAnalysis){
56  theSeedsLabel = pset.getParameter<InputTag>("MuonSeed");
57  theSeedsToken = consumes<TrajectorySeedCollection>(theSeedsLabel);
58  ParameterSet updatorPar = pset.getParameter<ParameterSet>("MuonUpdatorAtVertexParameters");
59  theSeedPropagatorName = updatorPar.getParameter<string>("Propagator");
60 
61  theUpdator = new MuonUpdatorAtVertex(updatorPar,theService);
62  }
63 
64  theCSCSimHitLabel = pset.getParameter<InputTag>("CSCSimHit");
65  theDTSimHitLabel = pset.getParameter<InputTag>("DTSimHit");
66  theRPCSimHitLabel = pset.getParameter<InputTag>("RPCSimHit");
67  theCSCSimHitToken = consumes<std::vector<PSimHit> >(theCSCSimHitLabel);
68  theDTSimHitToken = consumes<std::vector<PSimHit> >(theDTSimHitLabel);
69  theRPCSimHitToken = consumes<std::vector<PSimHit> >(theRPCSimHitLabel);
70 
71  theEtaRange = (EtaRange) pset.getParameter<int>("EtaRange");
72 
73  // number of sim tracks
75  // number of reco tracks
77 
79  out = pset.getUntrackedParameter<string>("rootFileName");
80  dirName_ = pset.getUntrackedParameter<std::string>("dirName");
81 
82 }
std::string theSeedPropagatorName
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< TrajectorySeedCollection > theSeedsToken
edm::InputTag theCSCSimHitLabel
edm::EDGetTokenT< std::vector< PSimHit > > theCSCSimHitToken
edm::EDGetTokenT< std::vector< PSimHit > > theDTSimHitToken
edm::InputTag theDTSimHitLabel
edm::InputTag theSeedsLabel
edm::EDGetTokenT< edm::SimTrackContainer > theSimTracksToken
edm::EDGetTokenT< std::vector< PSimHit > > theRPCSimHitToken
MuonUpdatorAtVertex * theUpdator
edm::EDGetTokenT< reco::TrackCollection > theTracksToken
edm::InputTag theSimTracksLabel
edm::InputTag theRPCSimHitLabel
MuonServiceProxy * theService
edm::InputTag theTracksLabel
MuonTrackAnalyzer::~MuonTrackAnalyzer ( )
virtual

Destructor.

Definition at line 85 of file MuonTrackAnalyzer.cc.

85  {
86  if (theService) delete theService;
87 }
MuonServiceProxy * theService

Member Function Documentation

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

Implements edm::EDAnalyzer.

Definition at line 193 of file MuonTrackAnalyzer.cc.

References LogDebug.

193  {
194 
195  LogDebug("MuonTrackAnalyzer") << "Run: " << event.id().run() << " Event: " << event.id().event();
196 
197  // Update the services
198  theService->update(eventSetup);
199 
200  Handle<SimTrackContainer> simTracks;
201  event.getByToken(theSimTracksToken,simTracks);
202  fillPlots(event,simTracks);
203 
204 
205  if(doTracksAnalysis)
206  tracksAnalysis(event,eventSetup,simTracks);
207 
208  if(doSeedsAnalysis)
209  seedsAnalysis(event,eventSetup,simTracks);
210 
211 
212 }
#define LogDebug(id)
void seedsAnalysis(const edm::Event &event, const edm::EventSetup &eventSetup, edm::Handle< edm::SimTrackContainer > simTracks)
edm::EDGetTokenT< edm::SimTrackContainer > theSimTracksToken
void tracksAnalysis(const edm::Event &event, const edm::EventSetup &eventSetup, edm::Handle< edm::SimTrackContainer > simTracks)
MuonServiceProxy * theService
void fillPlots(const edm::Event &event, edm::Handle< edm::SimTrackContainer > &simTracks)
void MuonTrackAnalyzer::beginJob ( void  )
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 89 of file MuonTrackAnalyzer.cc.

89  {
90 
91  //theFile->cd();
92 }
void MuonTrackAnalyzer::beginRun ( void  )
virtual

Definition at line 93 of file MuonTrackAnalyzer.cc.

References DQMStore::book1D(), DQMStore::book2D(), DQMStore::cd(), dbe_, TrackerOfflineValidation_Dqm_cff::dirName, hChi2, edm::InputTag::instance(), edm::InputTag::label(), edm::InputTag::process(), python.rootplot.root2matplotlib::replace(), DQMStore::setCurrentFolder(), DQMStore::showDirStructure(), and AlCaHLTBitMon_QueryRunRegistry::string.

93  {
95 
96  dbe_->cd();
97  InputTag algo = theTracksLabel;
98  string dirName=dirName_;
99  if (algo.process()!="")
100  dirName+=algo.process()+"_";
101  if(algo.label()!="")
102  dirName+=algo.label()+"_";
103  if(algo.instance()!="")
104  dirName+=algo.instance()+"";
105  if (dirName.find("Tracks")<dirName.length()){
106  dirName.replace(dirName.find("Tracks"),6,"");
107  }
108  std::replace(dirName.begin(), dirName.end(), ':', '_');
109  dbe_->setCurrentFolder(dirName.c_str());
110 
111  //dbe_->goUp();
112  std::string simName = dirName;
113  simName+="/SimTracks";
114  hSimTracks = new HTrackVariables(simName.c_str(),"SimTracks");
115 
116  dbe_->cd();
117  dbe_->setCurrentFolder(dirName.c_str());
118 
119  // Create the root file
120  //theFile = new TFile(theRootFileName.c_str(), "RECREATE");
121 
122  if(doSeedsAnalysis){
123  dbe_->cd();
124  dbe_->setCurrentFolder(dirName.c_str());
125  hRecoSeedInner = new HTrack(dirName.c_str(),"RecoSeed","Inner");
126  hRecoSeedPCA = new HTrack(dirName.c_str(),"RecoSeed","PCA");
127  }
128 
129  if(doTracksAnalysis){
130  dbe_->cd();
131  dbe_->setCurrentFolder(dirName.c_str());
132  hRecoTracksPCA = new HTrack(dirName.c_str(),"RecoTracks","PCA");
133  hRecoTracksInner = new HTrack(dirName.c_str(),"RecoTracks","Inner");
134  hRecoTracksOuter = new HTrack(dirName.c_str(),"RecoTracks","Outer");
135 
136  dbe_->cd();
137  dbe_->setCurrentFolder(dirName.c_str());
138 
139  // General Histos
140 
141 
142  hChi2 = dbe_->book1D("chi2","#chi^2",200,0,200);
143  hChi2VsEta = dbe_->book2D("chi2VsEta","#chi^2 VS #eta",120,-3.,3.,200,0,200);
144 
145  hChi2Norm = dbe_->book1D("chi2Norm","Normalized #chi^2",400,0,100);
146  hChi2NormVsEta = dbe_->book2D("chi2NormVsEta","Normalized #chi^2 VS #eta",120,-3.,3.,400,0,100);
147 
148  hHitsPerTrack = dbe_->book1D("HitsPerTrack","Number of hits per track",55,0,55);
149  hHitsPerTrackVsEta = dbe_->book2D("HitsPerTrackVsEta","Number of hits per track VS #eta",
150  120,-3.,3.,55,0,55);
151 
152  hDof = dbe_->book1D("dof","Number of Degree of Freedom",55,0,55);
153  hDofVsEta = dbe_->book2D("dofVsEta","Number of Degree of Freedom VS #eta",120,-3.,3.,55,0,55);
154 
155  hChi2Prob = dbe_->book1D("chi2Prob","#chi^2 probability",200,0,1);
156  hChi2ProbVsEta = dbe_->book2D("chi2ProbVsEta","#chi^2 probability VS #eta",120,-3.,3.,200,0,1);
157 
158  hNumberOfTracks = dbe_->book1D("NumberOfTracks","Number of reconstructed tracks per event",200,0,200);
159  hNumberOfTracksVsEta = dbe_->book2D("NumberOfTracksVsEta",
160  "Number of reconstructed tracks per event VS #eta",
161  120,-3.,3.,10,0,10);
162 
163  hChargeVsEta = dbe_->book2D("ChargeVsEta","Charge vs #eta gen",120,-3.,3.,4,-2.,2.);
164  hChargeVsPt = dbe_->book2D("ChargeVsPt","Charge vs P_{T} gen",250,0,200,4,-2.,2.);
165  hPtRecVsPtGen = dbe_->book2D("PtRecVsPtGen","P_{T} rec vs P_{T} gen",250,0,200,250,0,200);
166 
167  hDeltaPtVsEta = dbe_->book2D("DeltaPtVsEta","#Delta P_{t} vs #eta gen",120,-3.,3.,500,-250.,250.);
168  hDeltaPt_In_Out_VsEta = dbe_->book2D("DeltaPt_In_Out_VsEta_","P^{in}_{t} - P^{out}_{t} vs #eta gen",120,-3.,3.,500,-250.,250.);
169  }
170 
171 }
MonitorElement * hChi2VsEta
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:872
MonitorElement * hChi2ProbVsEta
MonitorElement * hDof
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:561
MonitorElement * hDeltaPtVsEta
MonitorElement * hChi2
MonitorElement * hChi2Norm
MonitorElement * hDofVsEta
HTrackVariables * hSimTracks
MonitorElement * hPtRecVsPtGen
MonitorElement * hChargeVsEta
MonitorElement * hHitsPerTrack
MonitorElement * hNumberOfTracks
MonitorElement * hHitsPerTrackVsEta
MonitorElement * hChi2NormVsEta
std::string const & label() const
Definition: InputTag.h:42
std::string const & process() const
Definition: InputTag.h:46
MonitorElement * hChargeVsPt
MonitorElement * hNumberOfTracksVsEta
void showDirStructure(void) const
Definition: DQMStore.cc:2961
MonitorElement * hChi2Prob
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:1000
Definition: HTrack.h:12
std::string const & instance() const
Definition: InputTag.h:43
MonitorElement * hDeltaPt_In_Out_VsEta
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:584
edm::InputTag theTracksLabel
bool MuonTrackAnalyzer::checkMuonSimHitPresence ( const edm::Event event,
edm::Handle< edm::SimTrackContainer simTracks 
)
private

Definition at line 435 of file MuonTrackAnalyzer.cc.

References funct::abs().

436  {
437 
438  // Get the SimHit collection from the event
439  Handle<PSimHitContainer> dtSimHits;
440  event.getByToken(theDTSimHitToken, dtSimHits);
441  // event.getByToken(theDTSimHitLabel.instance(),theDTSimHitLabel.label(), dtSimHits);
442 
443  Handle<PSimHitContainer> cscSimHits;
444  event.getByToken(theCSCSimHitToken, cscSimHits);
445 
446  Handle<PSimHitContainer> rpcSimHits;
447  event.getByToken(theRPCSimHitToken, rpcSimHits);
448 
449  map<unsigned int, vector<const PSimHit*> > mapOfMuonSimHits;
450 
451  for(PSimHitContainer::const_iterator simhit = dtSimHits->begin();
452  simhit != dtSimHits->end(); ++simhit) {
453  if (abs(simhit->particleType()) != 13) continue;
454  mapOfMuonSimHits[simhit->trackId()].push_back(&*simhit);
455  }
456 
457  for(PSimHitContainer::const_iterator simhit = cscSimHits->begin();
458  simhit != cscSimHits->end(); ++simhit) {
459  if (abs(simhit->particleType()) != 13) continue;
460  mapOfMuonSimHits[simhit->trackId()].push_back(&*simhit);
461  }
462 
463  for(PSimHitContainer::const_iterator simhit = rpcSimHits->begin();
464  simhit != rpcSimHits->end(); ++simhit) {
465  if (abs(simhit->particleType()) != 13) continue;
466  mapOfMuonSimHits[simhit->trackId()].push_back(&*simhit);
467  }
468 
469  bool presence = false;
470 
471  for (SimTrackContainer::const_iterator simTrack = simTracks->begin();
472  simTrack != simTracks->end(); ++simTrack){
473 
474  if (abs(simTrack->type()) != 13) continue;
475 
476  map<unsigned int, vector<const PSimHit*> >::const_iterator mapIterator =
477  mapOfMuonSimHits.find(simTrack->trackId());
478 
479  if (mapIterator != mapOfMuonSimHits.end())
480  presence = true;
481  }
482 
483  return presence;
484 }
edm::EDGetTokenT< std::vector< PSimHit > > theCSCSimHitToken
edm::EDGetTokenT< std::vector< PSimHit > > theDTSimHitToken
edm::EDGetTokenT< std::vector< PSimHit > > theRPCSimHitToken
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
void MuonTrackAnalyzer::endJob ( void  )
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 173 of file MuonTrackAnalyzer.cc.

173  {
174 
175 }
void MuonTrackAnalyzer::endRun ( void  )
virtual

Definition at line 176 of file MuonTrackAnalyzer.cc.

References dbe_, dbtoconf::out, and DQMStore::save().

176  {
177  LogInfo("MuonTrackAnalyzer")<< "Number of Sim tracks: " << numberOfSimTracks;
178 
179  LogInfo("MuonTrackAnalyzer") << "Number of Reco tracks: " << numberOfRecTracks;
180 
181 
182  if(doTracksAnalysis){
184  LogInfo("MuonTrackAnalyzer") <<" *Track Efficiency* = "<< eff <<"%";
185  }
186 
187  if(doSeedsAnalysis){
189  LogInfo("MuonTrackAnalyzer")<<" *Seed Efficiency* = "<< eff <<"%";
190  }
191  if ( out.size() != 0 && dbe_ ) dbe_->save(out);
192 }
HTrackVariables * hSimTracks
double computeEfficiency(HTrackVariables *sim)
Definition: HTrack.cc:147
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", const uint32_t run=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:2296
void MuonTrackAnalyzer::fillPlots ( const edm::Event event,
edm::Handle< edm::SimTrackContainer > &  simTracks 
)
private

Definition at line 299 of file MuonTrackAnalyzer.cc.

References funct::abs(), LogTrace, and mathSSE::sqrt().

299  {
300 
301  if(!checkMuonSimHitPresence(event,simTracks)) return;
302 
303  // Loop over the Sim tracks
304  SimTrackContainer::const_iterator simTrack;
305  LogTrace("MuonTrackAnalyzer")<<"Simulated tracks: "<<simTracks->size()<<endl;
306 
307  for (simTrack = simTracks->begin(); simTrack != simTracks->end(); ++simTrack)
308  if (abs((*simTrack).type()) == 13) {
309 
310  if( !isInTheAcceptance( (*simTrack).momentum().eta()) ) continue; // FIXME!!
311 
313 
314  LogTrace("MuonTrackAnalyzer")<<"Simualted muon:"<<endl;
315  LogTrace("MuonTrackAnalyzer")<<"Sim pT: "<<sqrt((*simTrack).momentum().perp2())<<endl;
316  LogTrace("MuonTrackAnalyzer")<<"Sim Eta: "<<(*simTrack).momentum().eta()<<endl; // FIXME
317 
318  hSimTracks->Fill((*simTrack).momentum().mag(),
319  sqrt((*simTrack).momentum().perp2()),
320  (*simTrack).momentum().eta(),
321  (*simTrack).momentum().phi(),
322  -(*simTrack).type()/ abs((*simTrack).type()) ); // Double FIXME
323  LogTrace("MuonTrackAnalyzer") << "hSimTracks filled" << endl;
324  }
325 
326  LogTrace("MuonTrackAnalyzer") << endl;
327 }
bool checkMuonSimHitPresence(const edm::Event &event, edm::Handle< edm::SimTrackContainer > simTracks)
HTrackVariables * hSimTracks
T sqrt(T t)
Definition: SSEVec.h:48
bool isInTheAcceptance(double eta)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define LogTrace(id)
void Fill(double p, double pt, double eta, double phi, double charge)
Definition: Histograms.h:71
void MuonTrackAnalyzer::fillPlots ( reco::TransientTrack track,
SimTrack simTrack 
)
private

Definition at line 330 of file MuonTrackAnalyzer.cc.

References reco::TransientTrack::chi2(), ChiSquaredProbability(), hChi2, LogTrace, CoreSimTrack::momentum(), reco::TransientTrack::ndof(), reco::TransientTrack::normalizedChi2(), and reco::TransientTrack::recHitsSize().

330  {
331 
332  LogTrace("MuonTrackAnalyzer")<<"Analizer: New track, chi2: "<<track.chi2()<<" dof: "<<track.ndof()<<endl;
333  hChi2->Fill(track.chi2());
334  hDof->Fill(track.ndof());
335  hChi2Norm->Fill(track.normalizedChi2());
336  hHitsPerTrack->Fill(track.recHitsSize());
337 
338  hChi2Prob->Fill( ChiSquaredProbability(track.chi2(),track.ndof()) );
339 
340  hChi2VsEta->Fill(simTrack.momentum().eta(),track.chi2());
341  hChi2NormVsEta->Fill(simTrack.momentum().eta(),track.normalizedChi2());
342  hChi2ProbVsEta->Fill(simTrack.momentum().eta(),ChiSquaredProbability(track.chi2(),track.ndof()));
343  hHitsPerTrackVsEta->Fill(simTrack.momentum().eta(),track.recHitsSize());
344  hDofVsEta->Fill(simTrack.momentum().eta(),track.ndof());
345 }
MonitorElement * hChi2VsEta
MonitorElement * hChi2ProbVsEta
MonitorElement * hDof
size_t recHitsSize() const
number of RecHits
double chi2() const
chi-squared of the fit
MonitorElement * hChi2
MonitorElement * hChi2Norm
void Fill(long long x)
MonitorElement * hDofVsEta
MonitorElement * hHitsPerTrack
float ChiSquaredProbability(double chiSquared, double nrDOF)
#define LogTrace(id)
MonitorElement * hHitsPerTrackVsEta
double normalizedChi2() const
chi-squared divided by n.d.o.f.
MonitorElement * hChi2NormVsEta
double ndof() const
number of degrees of freedom of the fit
const math::XYZTLorentzVectorD & momentum() const
particle info...
Definition: CoreSimTrack.h:36
MonitorElement * hChi2Prob
void MuonTrackAnalyzer::fillPlots ( TrajectoryStateOnSurface recoTSOS,
SimTrack simState,
HTrack histo,
MuonPatternRecoDumper debug 
)
private

Definition at line 348 of file MuonTrackAnalyzer.cc.

References HTrack::computeResolutionAndPull(), MuonPatternRecoDumper::dumpTSOS(), HTrack::Fill(), HTrack::FillDeltaR(), TrajectoryStateOnSurface::globalMomentum(), LogTrace, CoreSimTrack::momentum(), dt_dqm_sourceclient_common_cff::reco, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

349  {
350 
351  LogTrace("MuonTrackAnalyzer") << debug.dumpTSOS(recoTSOS)<<endl;
352  histo->Fill(recoTSOS);
353 
354  GlobalVector tsosVect = recoTSOS.globalMomentum();
355  math::XYZVectorD reco(tsosVect.x(), tsosVect.y(), tsosVect.z());
356  double deltaRVal = deltaR<double>(reco.eta(),reco.phi(),
357  simTrack.momentum().eta(),simTrack.momentum().phi());
358  histo->FillDeltaR(deltaRVal);
359 
360  histo->computeResolutionAndPull(recoTSOS,simTrack);
361 }
void computeResolutionAndPull(TrajectoryStateOnSurface &vtx, SimTrack &simTrack)
Definition: HTrack.cc:152
T y() const
Definition: PV3DBase.h:63
std::string dumpTSOS(const TrajectoryStateOnSurface &tsos) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > XYZVectorD
spatial vector with cartesian internal representation
Definition: Vector3D.h:8
T z() const
Definition: PV3DBase.h:64
void Fill(TrajectoryStateOnSurface &)
Definition: HTrack.cc:129
#define LogTrace(id)
GlobalVector globalMomentum() const
void FillDeltaR(double)
Definition: HTrack.cc:142
T x() const
Definition: PV3DBase.h:62
void MuonTrackAnalyzer::fillPlots ( FreeTrajectoryState recoFTS,
SimTrack simTrack,
HTrack histo,
MuonPatternRecoDumper debug 
)
private

Definition at line 364 of file MuonTrackAnalyzer.cc.

References HTrack::computeResolutionAndPull(), MuonPatternRecoDumper::dumpFTS(), HTrack::Fill(), HTrack::FillDeltaR(), LogTrace, CoreSimTrack::momentum(), FreeTrajectoryState::momentum(), dt_dqm_sourceclient_common_cff::reco, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

365  {
366 
367  LogTrace("MuonTrackAnalyzer") << debug.dumpFTS(recoFTS)<<endl;
368  histo->Fill(recoFTS);
369 
370  GlobalVector ftsVect = recoFTS.momentum();
371  math::XYZVectorD reco(ftsVect.x(), ftsVect.y(), ftsVect.z());
372  double deltaRVal = deltaR<double>(reco.eta(),reco.phi(),
373  simTrack.momentum().eta(),simTrack.momentum().phi());
374  histo->FillDeltaR(deltaRVal);
375 
376  histo->computeResolutionAndPull(recoFTS,simTrack);
377 }
void computeResolutionAndPull(TrajectoryStateOnSurface &vtx, SimTrack &simTrack)
Definition: HTrack.cc:152
T y() const
Definition: PV3DBase.h:63
std::string dumpFTS(const FreeTrajectoryState &fts) const
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > XYZVectorD
spatial vector with cartesian internal representation
Definition: Vector3D.h:8
T z() const
Definition: PV3DBase.h:64
void Fill(TrajectoryStateOnSurface &)
Definition: HTrack.cc:129
GlobalVector momentum() const
#define LogTrace(id)
const math::XYZTLorentzVectorD & momentum() const
particle info...
Definition: CoreSimTrack.h:36
void FillDeltaR(double)
Definition: HTrack.cc:142
T x() const
Definition: PV3DBase.h:62
TrajectoryStateOnSurface MuonTrackAnalyzer::getSeedTSOS ( const TrajectorySeed seed)
private

Definition at line 486 of file MuonTrackAnalyzer.cc.

References PTrajectoryStateOnDet::detId(), TrajectoryStateOnSurface::freeState(), TrajectoryStateOnSurface::isValid(), oppositeToMomentum, query::result, TrajectorySeed::startingState(), GeometricSearchDet::surface(), and trajectoryStateTransform::transientState().

486  {
487 
488  // Get the Trajectory State on Det (persistent version of a TSOS) from the seed
489  PTrajectoryStateOnDet pTSOD = seed.startingState();
490 
491  // Transform it in a TrajectoryStateOnSurface
492 
493 
494  DetId seedDetId(pTSOD.detId());
495 
496  const GeomDet* gdet = theService->trackingGeometry()->idToDet( seedDetId );
497 
498  TrajectoryStateOnSurface initialState = trajectoryStateTransform::transientState(pTSOD, &(gdet->surface()), &*theService->magneticField());
499 
500  // Get the layer on which the seed relies
501  const DetLayer *initialLayer = theService->detLayerGeometry()->idToLayer( seedDetId );
502 
504 
505  // ask for compatible layers
506  vector<const DetLayer*> detLayers;
507  detLayers = initialLayer->compatibleLayers( *initialState.freeState(),detLayerOrder);
508 
509  TrajectoryStateOnSurface result = initialState;
510  if(detLayers.size()){
511  const DetLayer* finalLayer = detLayers.back();
512  const TrajectoryStateOnSurface propagatedState = theService->propagator(theSeedPropagatorName)->propagate(initialState, finalLayer->surface());
513  if(propagatedState.isValid())
514  result = propagatedState;
515  }
516 
517  return result;
518 }
std::string theSeedPropagatorName
virtual const BoundSurface & surface() const =0
The surface of the GeometricSearchDet.
PropagationDirection
FreeTrajectoryState const * freeState(bool withErrors=true) const
tuple result
Definition: query.py:137
unsigned int detId() const
Definition: DetId.h:18
PTrajectoryStateOnDet const & startingState() const
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
MuonServiceProxy * theService
pair< SimTrack, double > MuonTrackAnalyzer::getSimTrack ( TrajectoryStateOnSurface tsos,
edm::Handle< edm::SimTrackContainer simTracks 
)
private

Definition at line 379 of file MuonTrackAnalyzer.cc.

References funct::abs(), TrajectoryStateOnSurface::globalMomentum(), LogTrace, query::result, PV3DBase< T, PVType, FrameType >::x(), PV3DBase< T, PVType, FrameType >::y(), and PV3DBase< T, PVType, FrameType >::z().

380  {
381 
382 // // Loop over the Sim tracks
383 // SimTrackContainer::const_iterator simTrack;
384 
385 // SimTrack result;
386 // int mu=0;
387 // for (simTrack = simTracks->begin(); simTrack != simTracks->end(); ++simTrack)
388 // if (abs((*simTrack).type()) == 13) {
389 // result = *simTrack;
390 // ++mu;
391 // }
392 
393 // if(mu != 1) LogTrace("MuonTrackAnalyzer") << "WARNING!! more than 1 simulated muon!!" <<endl;
394 // return result;
395 
396 
397  // Loop over the Sim tracks
398  SimTrackContainer::const_iterator simTrack;
399 
401 
402  double bestDeltaR = 10e5;
403  for (simTrack = simTracks->begin(); simTrack != simTracks->end(); ++simTrack){
404  if (abs((*simTrack).type()) != 13) continue;
405 
406  // double newDeltaR = tsos.globalMomentum().basicVector().deltaR(simTrack->momentum().vect());
407  GlobalVector tsosVect = tsos.globalMomentum();
408  math::XYZVectorD vect(tsosVect.x(), tsosVect.y(), tsosVect.z());
409  double newDeltaR = deltaR<double>(vect.eta(),vect.phi(),
410  simTrack->momentum().eta(),simTrack->momentum().phi());
411 
412  if ( newDeltaR < bestDeltaR ) {
413  LogTrace("MuonTrackAnalyzer") << "Matching Track with DeltaR = " << newDeltaR<<endl;
414  bestDeltaR = newDeltaR;
415  result = *simTrack;
416  }
417  }
418  return pair<SimTrack,double>(result,bestDeltaR);
419 }
T y() const
Definition: PV3DBase.h:63
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< double > > XYZVectorD
spatial vector with cartesian internal representation
Definition: Vector3D.h:8
T z() const
Definition: PV3DBase.h:64
tuple result
Definition: query.py:137
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define LogTrace(id)
GlobalVector globalMomentum() const
T x() const
Definition: PV3DBase.h:62
bool MuonTrackAnalyzer::isInTheAcceptance ( double  eta)
private

Definition at line 422 of file MuonTrackAnalyzer.cc.

References funct::abs(), cond::ecalcond::all, Reference_intrackfit_cff::barrel, Reference_intrackfit_cff::endcap, and LogTrace.

422  {
423  switch(theEtaRange){
424  case all:
425  return ( abs(eta) <= 2.4 ) ? true : false;
426  case barrel:
427  return ( abs(eta) < 1.1 ) ? true : false;
428  case endcap:
429  return ( abs(eta) >= 1.1 && abs(eta) <= 2.4 ) ? true : false;
430  default:
431  {LogTrace("MuonTrackAnalyzer")<<"No correct Eta range selected!! "<<endl; return false;}
432  }
433 }
T eta() const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define LogTrace(id)
void MuonTrackAnalyzer::seedsAnalysis ( const edm::Event event,
const edm::EventSetup eventSetup,
edm::Handle< edm::SimTrackContainer simTracks 
)

Definition at line 214 of file MuonTrackAnalyzer.cc.

References debug, and LogTrace.

215  {
216 
218 
219  // Get the RecTrack collection from the event
221  event.getByToken(theSeedsToken, seeds);
222 
223  LogTrace("MuonTrackAnalyzer")<<"Number of reconstructed seeds: " << seeds->size()<<endl;
224 
225  for(TrajectorySeedCollection::const_iterator seed = seeds->begin();
226  seed != seeds->end(); ++seed){
227  TrajectoryStateOnSurface seedTSOS = getSeedTSOS(*seed);
228  pair<SimTrack,double> sim = getSimTrack(seedTSOS,simTracks);
229  fillPlots(seedTSOS, sim.first,
230  hRecoSeedInner, debug);
231 
232  std::pair<bool,FreeTrajectoryState> propSeed =
234  if(propSeed.first)
235  fillPlots(propSeed.second, sim.first,
236  hRecoSeedPCA, debug);
237  else
238  LogTrace("MuonTrackAnalyzer")<<"Error in seed propagation"<<endl;
239 
240  }
241 }
std::pair< SimTrack, double > getSimTrack(TrajectoryStateOnSurface &tsos, edm::Handle< edm::SimTrackContainer > simTracks)
edm::EDGetTokenT< TrajectorySeedCollection > theSeedsToken
TrajectoryStateOnSurface getSeedTSOS(const TrajectorySeed &seed)
Definition: sim.h:19
MuonUpdatorAtVertex * theUpdator
#define LogTrace(id)
#define debug
Definition: HDRShower.cc:19
void fillPlots(const edm::Event &event, edm::Handle< edm::SimTrackContainer > &simTracks)
std::pair< bool, FreeTrajectoryState > propagateToNominalLine(const TrajectoryStateOnSurface &tsos) const
Propagate the state to the 2D-PCA (nominal CMS axis)
void MuonTrackAnalyzer::tracksAnalysis ( const edm::Event event,
const edm::EventSetup eventSetup,
edm::Handle< edm::SimTrackContainer simTracks 
)

Definition at line 244 of file MuonTrackAnalyzer.cc.

References TrajectoryStateOnSurface::charge(), debug, TrajectoryStateOnSurface::globalMomentum(), LogTrace, CoreSimTrack::momentum(), PV3DBase< T, PVType, FrameType >::perp(), mathSSE::sqrt(), lumiQTWidget::t, and testEve_cfg::tracks.

245  {
247 
248 
249  // Get the RecTrack collection from the event
251  event.getByToken(theTracksToken, tracks);
252 
253  LogTrace("MuonTrackAnalyzer")<<"Reconstructed tracks: " << tracks->size() << endl;
254  hNumberOfTracks->Fill(tracks->size());
255 
256  if(tracks->size()) numberOfRecTracks++;
257 
258  // Loop over the Rec tracks
259  for(reco::TrackCollection::const_iterator t = tracks->begin(); t != tracks->end(); ++t) {
260 
261  reco::TransientTrack track(*t,&*theService->magneticField(),theService->trackingGeometry());
262 
263  TrajectoryStateOnSurface outerTSOS = track.outermostMeasurementState();
264  TrajectoryStateOnSurface innerTSOS = track.innermostMeasurementState();
265  TrajectoryStateOnSurface pcaTSOS = track.impactPointState();
266 
267  pair<SimTrack,double> sim = getSimTrack(pcaTSOS,simTracks);
268  SimTrack simTrack = sim.first;
269  hNumberOfTracksVsEta->Fill(simTrack.momentum().eta(), tracks->size());
270  fillPlots(track,simTrack);
271 
272  LogTrace("MuonTrackAnalyzer") << "State at the outer surface: " << endl;
273  fillPlots(outerTSOS,simTrack,hRecoTracksOuter,debug);
274 
275  LogTrace("MuonTrackAnalyzer") << "State at the inner surface: " << endl;
276  fillPlots(innerTSOS,simTrack,hRecoTracksInner,debug);
277 
278  LogTrace("MuonTrackAnalyzer") << "State at PCA: " << endl;
279  fillPlots(pcaTSOS,simTrack,hRecoTracksPCA,debug);
280 
281  double deltaPt_in_out = innerTSOS.globalMomentum().perp()-outerTSOS.globalMomentum().perp();
282  hDeltaPt_In_Out_VsEta->Fill(simTrack.momentum().eta(),deltaPt_in_out);
283 
284  double deltaPt_pca_sim = pcaTSOS.globalMomentum().perp()-sqrt(simTrack.momentum().Perp2());
285  hDeltaPtVsEta->Fill(simTrack.momentum().eta(),deltaPt_pca_sim);
286 
287  hChargeVsEta->Fill(simTrack.momentum().eta(),pcaTSOS.charge());
288 
289  hChargeVsPt->Fill(sqrt(simTrack.momentum().perp2()),pcaTSOS.charge());
290 
291  hPtRecVsPtGen->Fill(sqrt(simTrack.momentum().perp2()),pcaTSOS.globalMomentum().perp());
292  }
293  LogTrace("MuonTrackAnalyzer")<<"--------------------------------------------"<<endl;
294 }
T perp() const
Definition: PV3DBase.h:72
std::pair< SimTrack, double > getSimTrack(TrajectoryStateOnSurface &tsos, edm::Handle< edm::SimTrackContainer > simTracks)
MonitorElement * hDeltaPtVsEta
Definition: sim.h:19
void Fill(long long x)
MonitorElement * hPtRecVsPtGen
MonitorElement * hChargeVsEta
T sqrt(T t)
Definition: SSEVec.h:48
MonitorElement * hNumberOfTracks
edm::EDGetTokenT< reco::TrackCollection > theTracksToken
#define LogTrace(id)
#define debug
Definition: HDRShower.cc:19
tuple tracks
Definition: testEve_cfg.py:39
GlobalVector globalMomentum() const
const math::XYZTLorentzVectorD & momentum() const
particle info...
Definition: CoreSimTrack.h:36
MonitorElement * hChargeVsPt
MonitorElement * hNumberOfTracksVsEta
MuonServiceProxy * theService
void fillPlots(const edm::Event &event, edm::Handle< edm::SimTrackContainer > &simTracks)
MonitorElement * hDeltaPt_In_Out_VsEta

Member Data Documentation

DQMStore* MuonTrackAnalyzer::dbe_
private

Definition at line 90 of file MuonTrackAnalyzer.h.

std::string MuonTrackAnalyzer::dirName_
private

Definition at line 91 of file MuonTrackAnalyzer.h.

bool MuonTrackAnalyzer::doSeedsAnalysis
private

Definition at line 114 of file MuonTrackAnalyzer.h.

bool MuonTrackAnalyzer::doTracksAnalysis
private

Definition at line 113 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hChargeVsEta
private

Definition at line 129 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hChargeVsPt
private

Definition at line 130 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hChi2
private

Definition at line 121 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hChi2Norm
private

Definition at line 122 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hChi2NormVsEta
private

Definition at line 134 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hChi2Prob
private

Definition at line 125 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hChi2ProbVsEta
private

Definition at line 137 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hChi2VsEta
private

Definition at line 133 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hDeltaPt_In_Out_VsEta
private

Definition at line 139 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hDeltaPtVsEta
private

Definition at line 138 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hDof
private

Definition at line 124 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hDofVsEta
private

Definition at line 136 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hHitsPerTrack
private

Definition at line 123 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hHitsPerTrackVsEta
private

Definition at line 135 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hNumberOfTracks
private

Definition at line 127 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hNumberOfTracksVsEta
private

Definition at line 128 of file MuonTrackAnalyzer.h.

MonitorElement* MuonTrackAnalyzer::hPtRecVsPtGen
private

Definition at line 131 of file MuonTrackAnalyzer.h.

HTrack* MuonTrackAnalyzer::hRecoSeedInner
private

Definition at line 143 of file MuonTrackAnalyzer.h.

HTrack* MuonTrackAnalyzer::hRecoSeedPCA
private

Definition at line 144 of file MuonTrackAnalyzer.h.

HTrack* MuonTrackAnalyzer::hRecoTracksInner
private

Definition at line 146 of file MuonTrackAnalyzer.h.

HTrack* MuonTrackAnalyzer::hRecoTracksOuter
private

Definition at line 147 of file MuonTrackAnalyzer.h.

HTrack* MuonTrackAnalyzer::hRecoTracksPCA
private

Definition at line 145 of file MuonTrackAnalyzer.h.

HTrackVariables* MuonTrackAnalyzer::hSimTracks
private

Definition at line 141 of file MuonTrackAnalyzer.h.

int MuonTrackAnalyzer::numberOfRecTracks
private

Definition at line 151 of file MuonTrackAnalyzer.h.

int MuonTrackAnalyzer::numberOfSimTracks
private

Definition at line 150 of file MuonTrackAnalyzer.h.

std::string MuonTrackAnalyzer::out
private

Definition at line 93 of file MuonTrackAnalyzer.h.

edm::InputTag MuonTrackAnalyzer::theCSCSimHitLabel
private

Definition at line 101 of file MuonTrackAnalyzer.h.

edm::EDGetTokenT<std::vector<PSimHit> > MuonTrackAnalyzer::theCSCSimHitToken
private

Definition at line 108 of file MuonTrackAnalyzer.h.

edm::InputTag MuonTrackAnalyzer::theDTSimHitLabel
private

Definition at line 102 of file MuonTrackAnalyzer.h.

edm::EDGetTokenT<std::vector<PSimHit> > MuonTrackAnalyzer::theDTSimHitToken
private

Definition at line 109 of file MuonTrackAnalyzer.h.

EtaRange MuonTrackAnalyzer::theEtaRange
private

Definition at line 96 of file MuonTrackAnalyzer.h.

edm::InputTag MuonTrackAnalyzer::theRPCSimHitLabel
private

Definition at line 103 of file MuonTrackAnalyzer.h.

edm::EDGetTokenT<std::vector<PSimHit> > MuonTrackAnalyzer::theRPCSimHitToken
private

Definition at line 110 of file MuonTrackAnalyzer.h.

std::string MuonTrackAnalyzer::theSeedPropagatorName
private

Definition at line 115 of file MuonTrackAnalyzer.h.

edm::InputTag MuonTrackAnalyzer::theSeedsLabel
private

Definition at line 99 of file MuonTrackAnalyzer.h.

edm::EDGetTokenT<TrajectorySeedCollection> MuonTrackAnalyzer::theSeedsToken
private

Definition at line 106 of file MuonTrackAnalyzer.h.

MuonServiceProxy* MuonTrackAnalyzer::theService
private

Definition at line 117 of file MuonTrackAnalyzer.h.

edm::InputTag MuonTrackAnalyzer::theSimTracksLabel
private

Definition at line 98 of file MuonTrackAnalyzer.h.

edm::EDGetTokenT<edm::SimTrackContainer> MuonTrackAnalyzer::theSimTracksToken
private

Definition at line 105 of file MuonTrackAnalyzer.h.

edm::InputTag MuonTrackAnalyzer::theTracksLabel
private

Definition at line 100 of file MuonTrackAnalyzer.h.

edm::EDGetTokenT<reco::TrackCollection> MuonTrackAnalyzer::theTracksToken
private

Definition at line 107 of file MuonTrackAnalyzer.h.

MuonUpdatorAtVertex* MuonTrackAnalyzer::theUpdator
private

Definition at line 118 of file MuonTrackAnalyzer.h.