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 Member Functions | Private Attributes
MuonTrackValidator Class Reference

#include <MuonTrackValidator.h>

Inheritance diagram for MuonTrackValidator:
edm::EDAnalyzer MuonTrackValidatorBase

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &)
 Method called once per event. More...
 
void beginRun (edm::Run const &, edm::EventSetup const &)
 Method called before the event loop. More...
 
void endRun (edm::Run const &, edm::EventSetup const &)
 Method called at the end of the event loop. More...
 
 MuonTrackValidator (const edm::ParameterSet &pset)
 Constructor. More...
 
virtual ~MuonTrackValidator ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Private Member Functions

void getRecoMomentum (const reco::Track &track, double &pt, double &ptError, double &qoverp, double &qoverpError, double &lambda, double &lambdaError, double &phi, double &phiError) const
 retrieval of reconstructed momentum components from reco::Track (== mean values for GSF) More...
 
void getRecoMomentum (const reco::GsfTrack &gsfTrack, double &pt, double &ptError, double &qoverp, double &qoverpError, double &lambda, double &lambdaError, double &phi, double &phiError) const
 retrieval of reconstructed momentum components based on the mode of a reco::GsfTrack More...
 

Private Attributes

edm::InputTag associatormap
 
bool BiDirectional_RecoToSim_association
 
std::vector< MonitorElement * > chi2_vs_eta
 
std::vector< MonitorElement * > chi2_vs_nhits
 
std::vector< MonitorElement * > chi2_vs_phi
 
CosmicTrackingParticleSelector cosmictpSelector
 
std::vector< MonitorElement * > cotThetares_vs_eta
 
std::vector< MonitorElement * > cotThetares_vs_pt
 
std::string dirName_
 
std::vector< MonitorElement * > dxypull_vs_eta
 
std::vector< MonitorElement * > dxyres_vs_eta
 
std::vector< MonitorElement * > dxyres_vs_pt
 
std::vector< MonitorElement * > dzpull_vs_eta
 
std::vector< MonitorElement * > dzres_vs_eta
 
std::vector< MonitorElement * > dzres_vs_pt
 
std::vector< MonitorElement * > etares_vs_eta
 
std::vector< MonitorElement * > h_assochi2
 
std::vector< MonitorElement * > h_assochi2_prob
 
std::vector< MonitorElement * > h_chi2mean_vs_phi
 
std::vector< MonitorElement * > h_chi2meanh
 
std::vector< MonitorElement * > h_chi2meanhitsh
 
std::vector< MonitorElement * > h_dxypulleta
 
std::vector< MonitorElement * > h_dzpulleta
 
std::vector< MonitorElement * > h_hits_phi
 
std::vector< MonitorElement * > h_losthits
 
std::vector< MonitorElement * > h_losthits_eta
 
std::vector< MonitorElement * > h_nchi2
 
std::vector< MonitorElement * > h_nchi2_prob
 
std::vector< MonitorElement * > h_phipulleta
 
std::vector< MonitorElement * > h_phipullphi
 
std::vector< MonitorElement * > h_ptpulleta
 
std::vector< MonitorElement * > h_ptpullphi
 
std::vector< MonitorElement * > h_ptshifteta
 
std::vector< MonitorElement * > h_thetapulleta
 
std::vector< MonitorElement * > h_thetapullphi
 
bool MABH
 
double maxPhi
 
double minPhi
 
std::vector< MonitorElement * > nhits_vs_phi
 
int nintPhi
 
std::vector< MonitorElement * > nlosthits_vs_eta
 
std::vector< MonitorElement * > phimean_vs_eta_phi
 
std::vector< MonitorElement * > phipull_vs_eta
 
std::vector< MonitorElement * > phipull_vs_phi
 
std::vector< MonitorElement * > phires_vs_eta
 
std::vector< MonitorElement * > phires_vs_phi
 
std::vector< MonitorElement * > phires_vs_pt
 
std::vector< MonitorElement * > ptmean_vs_eta_phi
 
std::vector< MonitorElement * > ptpull_vs_eta
 
std::vector< MonitorElement * > ptpull_vs_phi
 
std::vector< MonitorElement * > ptres_vs_eta
 
std::vector< MonitorElement * > ptres_vs_phi
 
std::vector< MonitorElement * > ptres_vs_pt
 
std::vector< MonitorElement * > thetapull_vs_eta
 
std::vector< MonitorElement * > thetapull_vs_phi
 
TrackingParticleSelector tpSelector
 
bool UseAssociators
 
bool useGsf
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- 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::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from MuonTrackValidatorBase
void BinLogX (TH1 *h)
 
virtual void doProfileX (TH2 *th2, MonitorElement *me)
 
virtual void doProfileX (MonitorElement *th2m, MonitorElement *me)
 
void fillPlotFromVector (MonitorElement *h, std::vector< int > &vec)
 
void fillPlotFromVectors (MonitorElement *h, std::vector< int > &numerator, std::vector< int > &denominator, std::string type)
 
virtual double getEta (double eta)
 
virtual double getPt (double pt)
 
 MuonTrackValidatorBase (const edm::ParameterSet &pset)
 Constructor. More...
 
void setUpVectors ()
 
virtual ~MuonTrackValidatorBase ()
 Destructor. More...
 
- Protected Attributes inherited from MuonTrackValidatorBase
std::vector< const
TrackAssociatorBase * > 
associator
 
std::vector< std::string > associators
 
edm::InputTag bsSrc
 
int cotThetaRes_nbin
 
double cotThetaRes_rangeMax
 
double cotThetaRes_rangeMin
 
DQMStoredbe_
 
std::vector< std::vector
< double > > 
dxyintervals
 
int dxyRes_nbin
 
double dxyRes_rangeMax
 
double dxyRes_rangeMin
 
std::vector< std::vector
< double > > 
dzintervals
 
int dzRes_nbin
 
double dzRes_rangeMax
 
double dzRes_rangeMin
 
std::vector< std::vector
< double > > 
etaintervals
 
std::vector< MonitorElement * > h_assoc2dxy
 
std::vector< MonitorElement * > h_assoc2dz
 
std::vector< MonitorElement * > h_assoc2eta
 
std::vector< MonitorElement * > h_assoc2hit
 
std::vector< MonitorElement * > h_assoc2phi
 
std::vector< MonitorElement * > h_assoc2pT
 
std::vector< MonitorElement * > h_assocdxy
 
std::vector< MonitorElement * > h_assocdz
 
std::vector< MonitorElement * > h_assoceta
 
std::vector< MonitorElement * > h_assoceta_Quality05
 
std::vector< MonitorElement * > h_assoceta_Quality075
 
std::vector< MonitorElement * > h_assocFraction
 
std::vector< MonitorElement * > h_assochit
 
std::vector< MonitorElement * > h_assocphi
 
std::vector< MonitorElement * > h_assocphi_Quality05
 
std::vector< MonitorElement * > h_assocphi_Quality075
 
std::vector< MonitorElement * > h_assocpT
 
std::vector< MonitorElement * > h_assocpT_Quality05
 
std::vector< MonitorElement * > h_assocpT_Quality075
 
std::vector< MonitorElement * > h_assocSharedHit
 
std::vector< MonitorElement * > h_assocvertpos
 
std::vector< MonitorElement * > h_assoczpos
 
std::vector< MonitorElement * > h_charge
 
std::vector< MonitorElement * > h_CSChits_eta
 
std::vector< MonitorElement * > h_DThits_eta
 
std::vector< MonitorElement * > h_eta
 
std::vector< MonitorElement * > h_etaSIM
 
std::vector< MonitorElement * > h_fakes
 
std::vector< MonitorElement * > h_hits
 
std::vector< MonitorElement * > h_hits_eta
 
std::vector< MonitorElement * > h_pt
 
std::vector< MonitorElement * > h_ptSIM
 
std::vector< MonitorElement * > h_pullDxy
 
std::vector< MonitorElement * > h_pullDz
 
std::vector< MonitorElement * > h_pullPhi
 
std::vector< MonitorElement * > h_pullQoverp
 
std::vector< MonitorElement * > h_pullTheta
 
std::vector< MonitorElement * > h_PurityVsQuality
 
std::vector< MonitorElement * > h_recodxy
 
std::vector< MonitorElement * > h_recodz
 
std::vector< MonitorElement * > h_recoeta
 
std::vector< MonitorElement * > h_recohit
 
std::vector< MonitorElement * > h_recophi
 
std::vector< MonitorElement * > h_recopT
 
std::vector< MonitorElement * > h_RPChits_eta
 
std::vector< MonitorElement * > h_simuldxy
 
std::vector< MonitorElement * > h_simuldz
 
std::vector< MonitorElement * > h_simuleta
 
std::vector< MonitorElement * > h_simulhit
 
std::vector< MonitorElement * > h_simulphi
 
std::vector< MonitorElement * > h_simulpT
 
std::vector< MonitorElement * > h_simulvertpos
 
std::vector< MonitorElement * > h_simulzpos
 
std::vector< MonitorElement * > h_tracks
 
std::vector< MonitorElement * > h_tracksSIM
 
std::vector< MonitorElement * > h_vertposSIM
 
bool ignoremissingtkcollection_
 
std::vector< edm::InputTaglabel
 
edm::InputTag label_tp_effic
 
edm::InputTag label_tp_fake
 
double max
 
double maxDxy
 
double maxDz
 
double maxHit
 
double maxPhi
 
double maxpT
 
double maxVertpos
 
double maxZpos
 
double min
 
double minDxy
 
double minDz
 
double minHit
 
double minPhi
 
double minpT
 
double minVertpos
 
double minZpos
 
std::vector< MonitorElement * > nCSChits_vs_eta
 
std::vector< MonitorElement * > nDThits_vs_eta
 
std::vector< MonitorElement * > nhits_vs_eta
 
int nint
 
int nintDxy
 
int nintDz
 
int nintHit
 
int nintPhi
 
int nintpT
 
int nintVertpos
 
int nintZpos
 
std::vector< MonitorElement * > nrec_vs_nsim
 
std::vector< MonitorElement * > nrecHit_vs_nsimHit_rec2sim
 
std::vector< MonitorElement * > nrecHit_vs_nsimHit_sim2rec
 
std::vector< MonitorElement * > nRPChits_vs_eta
 
std::string out
 
std::string parametersDefiner
 
std::vector< std::vector
< double > > 
phiintervals
 
int phiRes_nbin
 
double phiRes_rangeMax
 
double phiRes_rangeMin
 
std::vector< std::vector
< double > > 
pTintervals
 
int ptRes_nbin
 
double ptRes_rangeMax
 
double ptRes_rangeMin
 
edm::ESHandle< MagneticFieldtheMF
 
std::vector< std::vector< int > > totASS2_dxy
 
std::vector< std::vector< int > > totASS2_dz
 
std::vector< std::vector< int > > totASS2_hit
 
std::vector< std::vector< int > > totASS2_phi
 
std::vector< std::vector< int > > totASS2eta
 
std::vector< std::vector< int > > totASS2pT
 
std::vector< std::vector< int > > totASS_dxy
 
std::vector< std::vector< int > > totASS_dz
 
std::vector< std::vector< int > > totASS_hit
 
std::vector< std::vector< int > > totASS_phi
 
std::vector< std::vector< int > > totASS_phi_Quality05
 
std::vector< std::vector< int > > totASS_phi_Quality075
 
std::vector< std::vector< int > > totASS_vertpos
 
std::vector< std::vector< int > > totASS_zpos
 
std::vector< std::vector< int > > totASSeta
 
std::vector< std::vector< int > > totASSeta_Quality05
 
std::vector< std::vector< int > > totASSeta_Quality075
 
std::vector< std::vector< int > > totASSpT
 
std::vector< std::vector< int > > totASSpT_Quality05
 
std::vector< std::vector< int > > totASSpT_Quality075
 
std::vector< std::vector< int > > totREC_dxy
 
std::vector< std::vector< int > > totREC_dz
 
std::vector< std::vector< int > > totREC_hit
 
std::vector< std::vector< int > > totREC_phi
 
std::vector< std::vector< int > > totRECeta
 
std::vector< std::vector< int > > totRECpT
 
std::vector< std::vector< int > > totSIM_dxy
 
std::vector< std::vector< int > > totSIM_dz
 
std::vector< std::vector< int > > totSIM_hit
 
std::vector< std::vector< int > > totSIM_phi
 
std::vector< std::vector< int > > totSIM_vertpos
 
std::vector< std::vector< int > > totSIM_zpos
 
std::vector< std::vector< int > > totSIMeta
 
std::vector< std::vector< int > > totSIMpT
 
bool useFabs
 
bool useInvPt
 
bool useLogPt
 
bool usemuon
 
bool usetracker
 
std::vector< std::vector
< double > > 
vertposintervals
 
std::vector< std::vector
< double > > 
zposintervals
 

Detailed Description

Class that produces histograms to validate Muon Track Reconstruction performances

Date:
2011/02/22 18:28:59
Revision:
1.5

Definition at line 17 of file MuonTrackValidator.h.

Constructor & Destructor Documentation

MuonTrackValidator::MuonTrackValidator ( const edm::ParameterSet pset)
inline

Constructor.

Definition at line 20 of file MuonTrackValidator.h.

References associatormap, MuonTrackValidatorBase::associators, BiDirectional_RecoToSim_association, cosmictpSelector, dirName_, edm::ParameterSet::dump(), edm::ParameterSet::getParameter(), MuonTrackValidatorBase::label, MABH, maxPhi, minPhi, nintPhi, tpSelector, UseAssociators, useGsf, MuonTrackValidatorBase::usemuon, and MuonTrackValidatorBase::usetracker.

21  dirName_ = pset.getParameter<std::string>("dirName");
22  associatormap = pset.getParameter< edm::InputTag >("associatormap");
23  UseAssociators = pset.getParameter< bool >("UseAssociators");
24  tpSelector = TrackingParticleSelector(pset.getParameter<double>("ptMinTP"),
25  pset.getParameter<double>("minRapidityTP"),
26  pset.getParameter<double>("maxRapidityTP"),
27  pset.getParameter<double>("tipTP"),
28  pset.getParameter<double>("lipTP"),
29  pset.getParameter<int>("minHitTP"),
30  pset.getParameter<bool>("signalOnlyTP"),
31  pset.getParameter<bool>("chargedOnlyTP"),
32  pset.getParameter<bool>("stableOnlyTP"),
33  pset.getParameter<std::vector<int> >("pdgIdTP"));
35  pset.getParameter<double>("minRapidityTP"),
36  pset.getParameter<double>("maxRapidityTP"),
37  pset.getParameter<double>("tipTP"),
38  pset.getParameter<double>("lipTP"),
39  pset.getParameter<int>("minHitTP"),
40  pset.getParameter<bool>("chargedOnlyTP"),
41  pset.getParameter<std::vector<int> >("pdgIdTP"));
42 
43  minPhi = pset.getParameter<double>("minPhi");
44  maxPhi = pset.getParameter<double>("maxPhi");
45  nintPhi = pset.getParameter<int>("nintPhi");
46  useGsf = pset.getParameter<bool>("useGsf");
47  BiDirectional_RecoToSim_association = pset.getParameter<bool>("BiDirectional_RecoToSim_association");
48 
49  // dump cfg parameters
50  edm::LogVerbatim("MuonTrackValidator") << "constructing MuonTrackValidator: " << pset.dump();
51 
52  MABH = false;
53  if (!UseAssociators) {
54  // flag MuonAssociatorByHits
55  if (associators[0] == "MuonAssociationByHits") MABH = true;
56  // reset string associators to the map label
57  associators.clear();
58  associators.push_back(associatormap.label());
59  edm::LogVerbatim("MuonTrackValidator") << "--> associators reset to: " <<associators[0];
60  }
61 
62  // inform on which SimHits will be counted
63  if (usetracker) edm::LogVerbatim("MuonTrackValidator")
64  <<"\n usetracker = TRUE : Tracker SimHits WILL be counted";
65  else edm::LogVerbatim("MuonTrackValidator")
66  <<"\n usetracker = FALSE : Tracker SimHits WILL NOT be counted";
67  if (usemuon) edm::LogVerbatim("MuonTrackValidator")
68  <<" usemuon = TRUE : Muon SimHits WILL be counted";
69  else edm::LogVerbatim("MuonTrackValidator")
70  <<" usemuon = FALSE : Muon SimHits WILL NOT be counted"<<std::endl;
71 
72  // loop over the reco::Track collections to validate: check for inconsistent input settings
73  for (unsigned int www=0;www<label.size();www++) {
74  std::string recoTracksLabel = label[www].label();
75  std::string recoTracksInstance = label[www].instance();
76 
77  // tracks with hits only on tracker
78  if (recoTracksLabel=="generalTracks" ||
79  (recoTracksLabel.find("cutsRecoTracks") != std::string::npos) ||
80  recoTracksLabel=="ctfWithMaterialTracksP5LHCNavigation" ||
81  recoTracksLabel=="hltL3TkTracksFromL2" ||
82  (recoTracksLabel=="hltL3Muons" && recoTracksInstance=="L2Seeded"))
83  {
84  if (usemuon) {
85  edm::LogWarning("MuonTrackValidator")
86  <<"\n*** WARNING : inconsistent input tracksTag = "<<label[www]
87  <<"\n with usemuon == true"<<"\n ---> please change to usemuon == false ";
88  }
89  if (!usetracker) {
90  edm::LogWarning("MuonTrackValidator")
91  <<"\n*** WARNING : inconsistent input tracksTag = "<<label[www]
92  <<"\n with usetracker == false"<<"\n ---> please change to usetracker == true ";
93  }
94  }
95 
96  // tracks with hits only on muon detectors
97  else if (recoTracksLabel=="standAloneMuons" ||
98  recoTracksLabel=="standAloneSETMuons" ||
99  recoTracksLabel=="cosmicMuons" ||
100  recoTracksLabel=="hltL2Muons")
101  {
102  if (usetracker) {
103  edm::LogWarning("MuonTrackValidator")
104  <<"\n*** WARNING : inconsistent input tracksTag = "<<label[www]
105  <<"\n with usetracker == true"<<"\n ---> please change to usetracker == false ";
106  }
107  if (!usemuon) {
108  edm::LogWarning("MuonTrackValidator")
109  <<"\n*** WARNING : inconsistent input tracksTag = "<<label[www]
110  <<"\n with usemuon == false"<<"\n ---> please change to usemuon == true ";
111  }
112  }
113 
114  } // for (unsigned int www=0;www<label.size();www++)
115  }
T getParameter(std::string const &) const
SingleObjectSelector< TrackingParticleCollection,::TrackingParticleSelector > TrackingParticleSelector
CosmicTrackingParticleSelector cosmictpSelector
std::vector< edm::InputTag > label
ObjectSelector< CosmicTrackingParticleSelector > CosmicTrackingParticleSelector
TrackingParticleSelector tpSelector
edm::InputTag associatormap
MuonTrackValidatorBase(const edm::ParameterSet &pset)
Constructor.
std::vector< std::string > associators
std::string dump() const
virtual MuonTrackValidator::~MuonTrackValidator ( )
inlinevirtual

Destructor.

Definition at line 118 of file MuonTrackValidator.h.

118 { }

Member Function Documentation

void MuonTrackValidator::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
virtual

Method called once per event.

Implements edm::EDAnalyzer.

Definition at line 231 of file MuonTrackValidator.cc.

References abs, asciidump::at, reco::TrackBase::charge(), reco::TrackBase::chi2(), funct::cos(), reco::TrackBase::dxy(), reco::TrackBase::dxyError(), reco::TrackBase::dz(), reco::TrackBase::dzError(), alignCSCRings::e, edm::AssociationMap< Tag >::end(), reco::TrackBase::eta(), f, edm::AssociationMap< Tag >::find(), reco::Track::found(), edm::EventSetup::get(), edm::Ref< C, T, F >::get(), edm::Event::getByLabel(), reco::TrackBase::hitPattern(), i, edm::RefToBase< T >::key(), edm::Ref< C, T, F >::key(), diffTwoXMLs::label, LogTrace, M_PI, min, ParticleBase::momentum(), reco::TrackBase::momentum(), DetId::Muon, reco::TrackBase::ndof(), reco::TrackBase::normalizedChi2(), reco::TrackBase::numberOfLostHits(), reco::TrackBase::numberOfValidHits(), reco::HitPattern::numberOfValidMuonCSCHits(), reco::HitPattern::numberOfValidMuonDTHits(), reco::HitPattern::numberOfValidMuonRPCHits(), reco::TrackBase::parameters(), edm::AssociationMap< Tag >::post_insert(), edm::Handle< T >::product(), reco::TrackBase::pt(), dt_dqm_sourceclient_common_cff::reco, funct::sin(), mathSSE::sqrt(), reco::TrackBase::theta(), tmp, DetId::Tracker, TrackingParticle::trackPSimHit(), ParticleBase::vertex(), w(), and cms::Exception::what().

231  {
232  using namespace reco;
233 
234  edm::LogInfo("MuonTrackValidator") << "\n====================================================" << "\n"
235  << "Analyzing new event" << "\n"
236  << "====================================================\n" << "\n";
237  edm::ESHandle<ParametersDefinerForTP> parametersDefinerTP;
238  setup.get<TrackAssociatorRecord>().get(parametersDefiner,parametersDefinerTP);
239 
240  edm::Handle<TrackingParticleCollection> TPCollectionHeff ;
241  event.getByLabel(label_tp_effic,TPCollectionHeff);
242  const TrackingParticleCollection tPCeff = *(TPCollectionHeff.product());
243 
244  edm::Handle<TrackingParticleCollection> TPCollectionHfake ;
245  event.getByLabel(label_tp_fake,TPCollectionHfake);
246  const TrackingParticleCollection tPCfake = *(TPCollectionHfake.product());
247 
248  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
249  event.getByLabel(bsSrc,recoBeamSpotHandle);
250  reco::BeamSpot bs = *recoBeamSpotHandle;
251 
252  int w=0;
253  for (unsigned int ww=0;ww<associators.size();ww++){
254  for (unsigned int www=0;www<label.size();www++){
255  //
256  //get collections from the event
257  //
258  edm::Handle<View<Track> > trackCollection;
259 
260  reco::RecoToSimCollection recSimColl;
261  reco::SimToRecoCollection simRecColl;
262  unsigned int trackCollectionSize = 0;
263 
264  // if(!event.getByLabel(label[www], trackCollection)&&ignoremissingtkcollection_) continue;
265  if(!event.getByLabel(label[www], trackCollection)&&ignoremissingtkcollection_) {
266 
267  recSimColl.post_insert();
268  simRecColl.post_insert();
269 
270  }
271 
272  else {
273 
274  trackCollectionSize = trackCollection->size();
275  //associate tracks
276  if(UseAssociators){
277  edm::LogVerbatim("MuonTrackValidator") << "Analyzing "
278  << label[www].process()<<":"
279  << label[www].label()<<":"
280  << label[www].instance()<<" with "
281  << associators[ww].c_str() <<"\n";
282 
283  LogTrace("MuonTrackValidator") << "Calling associateRecoToSim method" << "\n";
284  recSimColl=associator[ww]->associateRecoToSim(trackCollection,
285  TPCollectionHfake,
286  &event);
287  LogTrace("MuonTrackValidator") << "Calling associateSimToReco method" << "\n";
288  simRecColl=associator[ww]->associateSimToReco(trackCollection,
289  TPCollectionHeff,
290  &event);
291  }
292  else{
293  edm::LogVerbatim("MuonTrackValidator") << "Analyzing "
294  << label[www].process()<<":"
295  << label[www].label()<<":"
296  << label[www].instance()<<" with "
297  << associatormap.process()<<":"
298  << associatormap.label()<<":"
299  << associatormap.instance()<<"\n";
300 
301  Handle<reco::SimToRecoCollection > simtorecoCollectionH;
302  event.getByLabel(associatormap,simtorecoCollectionH);
303  simRecColl= *(simtorecoCollectionH.product());
304 
305  Handle<reco::RecoToSimCollection > recotosimCollectionH;
306  event.getByLabel(associatormap,recotosimCollectionH);
307  recSimColl= *(recotosimCollectionH.product());
308  }
309 
310  }
311 
312 
313  //
314  //fill simulation histograms
315  //compute number of tracks per eta interval
316  //
317  edm::LogVerbatim("MuonTrackValidator") << "\n# of TrackingParticles: " << tPCeff.size() << "\n";
318  int ats = 0;
319  int st=0;
320  for (TrackingParticleCollection::size_type i=0; i<tPCeff.size(); i++){
321  bool TP_is_matched = false;
322  double quality = 0.;
323  bool Quality05 = false;
324  bool Quality075 = false;
325 
326  TrackingParticleRef tpr(TPCollectionHeff, i);
327  TrackingParticle* tp=const_cast<TrackingParticle*>(tpr.get());
328  ParticleBase::Vector momentumTP;
329  ParticleBase::Point vertexTP;
330  double dxySim = 0;
331  double dzSim = 0;
332 
333  //If the TrackingParticle is collison like, get the momentum and vertex at production state
334  if(parametersDefiner=="LhcParametersDefinerForTP")
335  {
336  if(! tpSelector(*tp)) continue;
337  momentumTP = tp->momentum();
338  vertexTP = tp->vertex();
339  //Calcualte the impact parameters w.r.t. PCA
340  ParticleBase::Vector momentum = parametersDefinerTP->momentum(event,setup,*tp);
341  ParticleBase::Point vertex = parametersDefinerTP->vertex(event,setup,*tp);
342  dxySim = (-vertex.x()*sin(momentum.phi())+vertex.y()*cos(momentum.phi()));
343  dzSim = vertex.z() - (vertex.x()*momentum.x()+vertex.y()*momentum.y())/sqrt(momentum.perp2()) * momentum.z()/sqrt(momentum.perp2());
344  }
345  //If the TrackingParticle is comics, get the momentum and vertex at PCA
346  if(parametersDefiner=="CosmicParametersDefinerForTP")
347  {
348  if(! cosmictpSelector(*tp,&bs,event,setup)) continue;
349  momentumTP = parametersDefinerTP->momentum(event,setup,*tp);
350  vertexTP = parametersDefinerTP->vertex(event,setup,*tp);
351  dxySim = (-vertexTP.x()*sin(momentumTP.phi())+vertexTP.y()*cos(momentumTP.phi()));
352  dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/sqrt(momentumTP.perp2()) * momentumTP.z()/sqrt(momentumTP.perp2());
353  }
354  edm::LogVerbatim("MuonTrackValidator") <<"--------------------Selected TrackingParticle #"<<tpr.key();
355  st++;
356 
357  h_ptSIM[w]->Fill(sqrt(momentumTP.perp2()));
358  h_etaSIM[w]->Fill(momentumTP.eta());
359  h_vertposSIM[w]->Fill(sqrt(vertexTP.perp2()));
360 
361  std::vector<std::pair<RefToBase<Track>, double> > rt;
362  if(simRecColl.find(tpr) != simRecColl.end()){
363  rt = (std::vector<std::pair<RefToBase<Track>, double> >) simRecColl[tpr];
364  if (rt.size()!=0) {
365  RefToBase<Track> assoc_recoTrack = rt.begin()->first;
366  edm::LogVerbatim("MuonTrackValidator")<<"-----------------------------associated Track #"<<assoc_recoTrack.key();
367  TP_is_matched = true;
368  ats++;
369  quality = rt.begin()->second;
370  edm::LogVerbatim("MuonTrackValidator") << "TrackingParticle #" <<tpr.key()
371  << " with pt=" << sqrt(momentumTP.perp2())
372  << " associated with quality:" << quality <<"\n";
373  if (MABH) {
374  if (quality > 0.75) {
375  Quality075 = true;
376  Quality05 = true;
377  }
378  else if (quality > 0.5) {
379  Quality05 = true;
380  }
381  }
382  }
383  }else{
384  edm::LogVerbatim("MuonTrackValidator")
385  << "TrackingParticle #" << tpr.key()
386  << " with pt,eta,phi: "
387  << sqrt(momentumTP.perp2()) << " , "
388  << momentumTP.eta() << " , "
389  << momentumTP.phi() << " , "
390  << " NOT associated to any reco::Track" << "\n";
391  }
392 
393  for (unsigned int f=0; f<etaintervals[w].size()-1; f++){
394  if (getEta(momentumTP.eta())>etaintervals[w][f]&&
395  getEta(momentumTP.eta())<etaintervals[w][f+1]) {
396  totSIMeta[w][f]++;
397  if (TP_is_matched) {
398  totASSeta[w][f]++;
399 
400  if (MABH) {
401  if (Quality075) {
403  totASSeta_Quality05[w][f]++;
404  }
405  else if (Quality05) {
406  totASSeta_Quality05[w][f]++;
407  }
408  }
409  }
410  }
411  } // END for (unsigned int f=0; f<etaintervals[w].size()-1; f++){
412 
413  for (unsigned int f=0; f<phiintervals[w].size()-1; f++){
414  if (momentumTP.phi() > phiintervals[w][f]&&
415  momentumTP.phi() <phiintervals[w][f+1]) {
416  totSIM_phi[w][f]++;
417  if (TP_is_matched) {
418  totASS_phi[w][f]++;
419 
420  if (MABH) {
421  if (Quality075) {
424  }
425  else if (Quality05) {
427  }
428  }
429  }
430  }
431  } // END for (unsigned int f=0; f<phiintervals[w].size()-1; f++){
432 
433 
434  for (unsigned int f=0; f<pTintervals[w].size()-1; f++){
435  if (getPt(sqrt(momentumTP.perp2()))>pTintervals[w][f]&&
436  getPt(sqrt(momentumTP.perp2()))<pTintervals[w][f+1]) {
437  totSIMpT[w][f]++;
438  if (TP_is_matched) {
439  totASSpT[w][f]++;
440 
441  if (MABH) {
442  if (Quality075) {
443  totASSpT_Quality075[w][f]++;
444  totASSpT_Quality05[w][f]++;
445  }
446  else if (Quality05) {
447  totASSpT_Quality05[w][f]++;
448  }
449  }
450  }
451  }
452  } // END for (unsigned int f=0; f<pTintervals[w].size()-1; f++){
453 
454  for (unsigned int f=0; f<dxyintervals[w].size()-1; f++){
455  if (dxySim>dxyintervals[w][f]&&
456  dxySim<dxyintervals[w][f+1]) {
457  totSIM_dxy[w][f]++;
458  if (TP_is_matched) {
459  totASS_dxy[w][f]++;
460  }
461  }
462  } // END for (unsigned int f=0; f<dxyintervals[w].size()-1; f++){
463 
464  for (unsigned int f=0; f<dzintervals[w].size()-1; f++){
465  if (dzSim>dzintervals[w][f]&&
466  dzSim<dzintervals[w][f+1]) {
467  totSIM_dz[w][f]++;
468  if (TP_is_matched) {
469  totASS_dz[w][f]++;
470  }
471  }
472  } // END for (unsigned int f=0; f<dzintervals[w].size()-1; f++){
473 
474  for (unsigned int f=0; f<vertposintervals[w].size()-1; f++){
475  if (sqrt(vertexTP.perp2())>vertposintervals[w][f]&&
476  sqrt(vertexTP.perp2())<vertposintervals[w][f+1]) {
477  totSIM_vertpos[w][f]++;
478  if (TP_is_matched) {
479  totASS_vertpos[w][f]++;
480  }
481  }
482  } // END for (unsigned int f=0; f<vertposintervals[w].size()-1; f++){
483 
484  for (unsigned int f=0; f<zposintervals[w].size()-1; f++){
485  if (vertexTP.z()>zposintervals[w][f]&&
486  vertexTP.z()<zposintervals[w][f+1]) {
487  totSIM_zpos[w][f]++;
488  if (TP_is_matched) {
489  totASS_zpos[w][f]++;
490  }
491  }
492  } // END for (unsigned int f=0; f<zposintervals[w].size()-1; f++){
493 
494  std::vector<PSimHit> simhits;
495 
496  if (usetracker && usemuon) {
497  simhits=tp->trackPSimHit();
498  }
499  else if (!usetracker && usemuon) {
500  simhits=tp->trackPSimHit(DetId::Muon);
501  }
502  else if (usetracker && !usemuon) {
503  simhits=tp->trackPSimHit(DetId::Tracker);
504  }
505 
506  int tmp = std::min((int)(simhits.end()-simhits.begin()),int(maxHit-1));
507  edm::LogVerbatim("MuonTrackValidator") << "\t N simhits = "<< (int)(simhits.end()-simhits.begin())<<"\n";
508 
509  totSIM_hit[w][tmp]++;
510  if (TP_is_matched) totASS_hit[w][tmp]++;
511 
512  if (TP_is_matched)
513  {
514  RefToBase<Track> assoctrack = rt.begin()->first;
515  nrecHit_vs_nsimHit_sim2rec[w]->Fill( assoctrack->numberOfValidHits(),(int)(simhits.end()-simhits.begin() ));
516  }
517  } // End for (TrackingParticleCollection::size_type i=0; i<tPCeff.size(); i++){
518  if (st!=0) h_tracksSIM[w]->Fill(st);
519 
520 
521  //
522  //fill reconstructed track histograms
523  //
524  edm::LogVerbatim("MuonTrackValidator") << "\n# of reco::Tracks with "
525  << label[www].process()<<":"
526  << label[www].label()<<":"
527  << label[www].instance()
528  << ": " << trackCollectionSize << "\n";
529  int at=0;
530  int rT=0;
531  for(View<Track>::size_type i=0; i<trackCollectionSize; ++i){
532  bool Track_is_matched = false;
533  RefToBase<Track> track(trackCollection, i);
534  rT++;
535 
536  std::vector<std::pair<TrackingParticleRef, double> > tp;
538 
539  // new logic (bidirectional)
541  edm::LogVerbatim("MuonTrackValidator")<<"----------------------------------------Track #"<< track.key();
542 
543  if(recSimColl.find(track) != recSimColl.end()) {
544  tp = recSimColl[track];
545  if (tp.size() != 0) {
546  tpr = tp.begin()->first;
547  // RtS and StR must associate the same pair !
548  if(simRecColl.find(tpr) != simRecColl.end()) {
549  std::vector<std::pair<RefToBase<Track>, double> > track_checkback = simRecColl[tpr];
550  RefToBase<Track> assoc_track_checkback;
551  assoc_track_checkback = track_checkback.begin()->first;
552 
553  if ( assoc_track_checkback.key() == track.key() ) {
554  edm::LogVerbatim("MuonTrackValidator")<<"------------------associated TrackingParticle #"<<tpr.key();
555  Track_is_matched = true;
556  at++;
557  double Purity = tp.begin()->second;
558  double Quality = track_checkback.begin()->second;
559  edm::LogVerbatim("MuonTrackValidator") << "reco::Track #" << track.key() << " with pt=" << track->pt()
560  << " associated with quality:" << Purity <<"\n";
561  if (MABH) h_PurityVsQuality[w]->Fill(Quality,Purity);
562  }
563  }
564  }
565  }
566 
567  if (!Track_is_matched) edm::LogVerbatim("MuonTrackValidator")
568  << "reco::Track #" << track.key() << " with pt=" << track->pt() << " NOT associated to any TrackingParticle" << "\n";
569  }
570  // old logic (bugged)
571  else {
572  if(recSimColl.find(track) != recSimColl.end()){
573  tp = recSimColl[track];
574  if (tp.size()!=0) {
575  Track_is_matched = true;
576  tpr = tp.begin()->first;
577  at++;
578  edm::LogVerbatim("MuonTrackValidator") << "reco::Track #" << track.key() << " with pt=" << track->pt()
579  << " associated with quality:" << tp.begin()->second <<"\n";
580  }
581  } else {
582  edm::LogVerbatim("MuonTrackValidator") << "reco::Track #" << track.key() << " with pt=" << track->pt()
583  << " NOT associated to any TrackingParticle" << "\n";
584  }
585  }
586 
587  //Compute fake rate vs eta
588  for (unsigned int f=0; f<etaintervals[w].size()-1; f++){
589  if (getEta(track->momentum().eta())>etaintervals[w][f]&&
590  getEta(track->momentum().eta())<etaintervals[w][f+1]) {
591  totRECeta[w][f]++;
592  if (Track_is_matched) {
593  totASS2eta[w][f]++;
594  }
595  }
596  } // End for (unsigned int f=0; f<etaintervals[w].size()-1; f++){
597 
598  for (unsigned int f=0; f<phiintervals[w].size()-1; f++){
599  if (track->momentum().phi()>phiintervals[w][f]&&
600  track->momentum().phi()<phiintervals[w][f+1]) {
601  totREC_phi[w][f]++;
602  if (Track_is_matched) {
603  totASS2_phi[w][f]++;
604  }
605  }
606  } // End for (unsigned int f=0; f<phiintervals[w].size()-1; f++){
607 
608 
609  for (unsigned int f=0; f<pTintervals[w].size()-1; f++){
610  if (getPt(sqrt(track->momentum().perp2()))>pTintervals[w][f]&&
611  getPt(sqrt(track->momentum().perp2()))<pTintervals[w][f+1]) {
612  totRECpT[w][f]++;
613  if (Track_is_matched) {
614  totASS2pT[w][f]++;
615  }
616  }
617  } // End for (unsigned int f=0; f<pTintervals[w].size()-1; f++){
618 
619  for (unsigned int f=0; f<dxyintervals[w].size()-1; f++){
620  if (track->dxy(bs.position())>dxyintervals[w][f]&&
621  track->dxy(bs.position())<dxyintervals[w][f+1]) {
622  totREC_dxy[w][f]++;
623  if (Track_is_matched) {
624  totASS2_dxy[w][f]++;
625  }
626  }
627  } // End for (unsigned int f=0; f<dxyintervals[w].size()-1; f++){
628 
629  for (unsigned int f=0; f<dzintervals[w].size()-1; f++){
630  if (track->dz(bs.position())>dzintervals[w][f]&&
631  track->dz(bs.position())<dzintervals[w][f+1]) {
632  totREC_dz[w][f]++;
633  if (Track_is_matched) {
634  totASS2_dz[w][f]++;
635  }
636  }
637  } // End for (unsigned int f=0; f<dzintervals[w].size()-1; f++){
638 
639  int tmp = std::min((int)track->found(),int(maxHit-1));
640  totREC_hit[w][tmp]++;
641  if (Track_is_matched) totASS2_hit[w][tmp]++;
642 
643  edm::LogVerbatim("MuonTrackValidator") << "\t N valid rechits = "<< (int)track->found() <<"\n";
644 
645  //Fill other histos
646  try{
647  if (!Track_is_matched) continue;
648 
649  if (associators[ww]=="TrackAssociatorByChi2"){
650  //association chi2
651  double assocChi2 = -tp.begin()->second;//in association map is stored -chi2
652  h_assochi2[www]->Fill(assocChi2);
653  h_assochi2_prob[www]->Fill(TMath::Prob((assocChi2)*5,5));
654  }
655  else if (associators[ww]=="TrackAssociatorByHits"){
656  double fraction = tp.begin()->second;
657  h_assocFraction[www]->Fill(fraction);
658  h_assocSharedHit[www]->Fill(fraction*track->numberOfValidHits());
659  }
660 
661  //nchi2 and hits global distributions
662  h_nchi2[w]->Fill(track->normalizedChi2());
663  h_nchi2_prob[w]->Fill(TMath::Prob(track->chi2(),(int)track->ndof()));
664  h_hits[w]->Fill(track->numberOfValidHits());
665  h_losthits[w]->Fill(track->numberOfLostHits());
666  chi2_vs_nhits[w]->Fill(track->numberOfValidHits(),track->normalizedChi2());
667  h_charge[w]->Fill( track->charge() );
668 
669  //Get tracking particle parameters at point of closest approach to the beamline
670  ParticleBase::Vector momentumTP = parametersDefinerTP->momentum(event,setup,*(tpr.get()));
671  ParticleBase::Point vertexTP = parametersDefinerTP->vertex(event,setup,*(tpr.get()));
672  double ptSim = sqrt(momentumTP.perp2());
673  double qoverpSim = tpr->charge()/sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
674  double thetaSim = momentumTP.theta();
675  double lambdaSim = M_PI/2-momentumTP.theta();
676  double phiSim = momentumTP.phi();
677  double dxySim = (-vertexTP.x()*sin(momentumTP.phi())+vertexTP.y()*cos(momentumTP.phi()));
678  double dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/sqrt(momentumTP.perp2()) * momentumTP.z()/sqrt(momentumTP.perp2());
679 
680  // removed unused variable, left this in case it has side effects
681  track->parameters();
682 
683  double qoverpRec(0);
684  double qoverpErrorRec(0);
685  double ptRec(0);
686  double ptErrorRec(0);
687  double lambdaRec(0);
688  double lambdaErrorRec(0);
689  double phiRec(0);
690  double phiErrorRec(0);
691 
692 
693  //loop to decide whether to take gsfTrack (utilisation of mode-function) or common track
694  const GsfTrack* gsfTrack(0);
695  if(useGsf){
696  gsfTrack = dynamic_cast<const GsfTrack*>(&(*track));
697  if (gsfTrack==0) edm::LogInfo("MuonTrackValidator") << "Trying to access mode for a non-GsfTrack";
698  }
699 
700  if (gsfTrack) {
701  // get values from mode
702  getRecoMomentum(*gsfTrack, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
703  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
704  }
705 
706  else {
707  // get values from track (without mode)
708  getRecoMomentum(*track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
709  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
710  }
711 
712  double thetaRec = track->theta();
713  double ptError = ptErrorRec;
714  double ptres = ptRec - ptSim;
715  double etares = track->eta()-momentumTP.Eta();
716  double dxyRec = track->dxy(bs.position());
717  double dzRec = track->dz(bs.position());
718  // eta residue; pt, k, theta, phi, dxy, dz pulls
719  double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
720  double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
721  double phiDiff = phiRec - phiSim;
722  if (abs(phiDiff) > M_PI) {
723  if (phiDiff >0.) phiDiff = phiDiff - 2.*M_PI;
724  else phiDiff = phiDiff + 2.*M_PI;
725  }
726  double phiPull=phiDiff/phiErrorRec;
727  double dxyPull=(dxyRec-dxySim)/track->dxyError();
728  double dzPull=(dzRec-dzSim)/track->dzError();
729 
730  double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
731  ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
732  double contrib_dxy = ((dxyRec-dxySim)/track->dxyError())*((dxyRec-dxySim)/track->dxyError())/5;
733  double contrib_dz = ((dzRec-dzSim)/track->dzError())*((dzRec-dzSim)/track->dzError())/5;
734  double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
735  ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
736  double contrib_phi = (phiDiff/phiErrorRec)*(phiDiff/phiErrorRec)/5;
737 
738  LogTrace("MuonTrackValidator") << "assocChi2=" << tp.begin()->second << "\n"
739  << "" << "\n"
740  << "ptREC=" << ptRec << "\n"
741  << "etaREC=" << track->eta() << "\n"
742  << "qoverpREC=" << qoverpRec << "\n"
743  << "dxyREC=" << dxyRec << "\n"
744  << "dzREC=" << dzRec << "\n"
745  << "thetaREC=" << track->theta() << "\n"
746  << "phiREC=" << phiRec << "\n"
747  << "" << "\n"
748  << "qoverpError()=" << qoverpErrorRec << "\n"
749  << "dxyError()=" << track->dxyError() << "\n"
750  << "dzError()=" << track->dzError() << "\n"
751  << "thetaError()=" << lambdaErrorRec << "\n"
752  << "phiError()=" << phiErrorRec << "\n"
753  << "" << "\n"
754  << "ptSIM=" << ptSim << "\n"
755  << "etaSIM=" << momentumTP.Eta() << "\n"
756  << "qoverpSIM=" << qoverpSim << "\n"
757  << "dxySIM=" << dxySim << "\n"
758  << "dzSIM=" << dzSim << "\n"
759  << "thetaSIM=" << M_PI/2-lambdaSim << "\n"
760  << "phiSIM=" << phiSim << "\n"
761  << "" << "\n"
762  << "contrib_Qoverp=" << contrib_Qoverp << "\n"
763  << "contrib_dxy=" << contrib_dxy << "\n"
764  << "contrib_dz=" << contrib_dz << "\n"
765  << "contrib_theta=" << contrib_theta << "\n"
766  << "contrib_phi=" << contrib_phi << "\n"
767  << "" << "\n"
768  <<"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<"\n";
769 
770  h_pullQoverp[w]->Fill(qoverpPull);
771  h_pullTheta[w]->Fill(thetaPull);
772  h_pullPhi[w]->Fill(phiPull);
773  h_pullDxy[w]->Fill(dxyPull);
774  h_pullDz[w]->Fill(dzPull);
775 
776 
777  h_pt[w]->Fill(ptres/ptError);
778  h_eta[w]->Fill(etares);
779  etares_vs_eta[w]->Fill(getEta(track->eta()),etares);
780 
781 
782  //chi2 and #hit vs eta: fill 2D histos
783  chi2_vs_eta[w]->Fill(getEta(track->eta()),track->normalizedChi2());
784  nhits_vs_eta[w]->Fill(getEta(track->eta()),track->numberOfValidHits());
785  nDThits_vs_eta[w]->Fill(getEta(track->eta()),track->hitPattern().numberOfValidMuonDTHits());
786  nCSChits_vs_eta[w]->Fill(getEta(track->eta()),track->hitPattern().numberOfValidMuonCSCHits());
787  nRPChits_vs_eta[w]->Fill(getEta(track->eta()),track->hitPattern().numberOfValidMuonRPCHits());
788 
789  nlosthits_vs_eta[w]->Fill(getEta(track->eta()),track->numberOfLostHits());
790 
791  //resolution of track params: fill 2D histos
792  dxyres_vs_eta[w]->Fill(getEta(track->eta()),dxyRec-dxySim);
793  ptres_vs_eta[w]->Fill(getEta(track->eta()),(ptRec-ptSim)/ptRec);
794  dzres_vs_eta[w]->Fill(getEta(track->eta()),dzRec-dzSim);
795  phires_vs_eta[w]->Fill(getEta(track->eta()),phiDiff);
796  cotThetares_vs_eta[w]->Fill(getEta(track->eta()), cos(thetaRec)/sin(thetaRec) - cos(thetaSim)/sin(thetaSim));
797 
798  //same as before but vs pT
799  dxyres_vs_pt[w]->Fill(getPt(ptRec),dxyRec-dxySim);
800  ptres_vs_pt[w]->Fill(getPt(ptRec),(ptRec-ptSim)/ptRec);
801  dzres_vs_pt[w]->Fill(getPt(ptRec),dzRec-dzSim);
802  phires_vs_pt[w]->Fill(getPt(ptRec),phiDiff);
803  cotThetares_vs_pt[w]->Fill(getPt(ptRec), cos(thetaRec)/sin(thetaRec) - cos(thetaSim)/sin(thetaSim));
804 
805  //pulls of track params vs eta: fill 2D histos
806  dxypull_vs_eta[w]->Fill(getEta(track->eta()),dxyPull);
807  ptpull_vs_eta[w]->Fill(getEta(track->eta()),ptres/ptError);
808  dzpull_vs_eta[w]->Fill(getEta(track->eta()),dzPull);
809  phipull_vs_eta[w]->Fill(getEta(track->eta()),phiPull);
810  thetapull_vs_eta[w]->Fill(getEta(track->eta()),thetaPull);
811 
812  //plots vs phi
813  nhits_vs_phi[w]->Fill(phiRec,track->numberOfValidHits());
814  chi2_vs_phi[w]->Fill(phiRec,track->normalizedChi2());
815  ptmean_vs_eta_phi[w]->Fill(phiRec,getEta(track->eta()),ptRec);
816  phimean_vs_eta_phi[w]->Fill(phiRec,getEta(track->eta()),phiRec);
817  ptres_vs_phi[w]->Fill(phiRec,(ptRec-ptSim)/ptRec);
818  phires_vs_phi[w]->Fill(phiRec,phiDiff);
819  ptpull_vs_phi[w]->Fill(phiRec,ptres/ptError);
820  phipull_vs_phi[w]->Fill(phiRec,phiPull);
821  thetapull_vs_phi[w]->Fill(phiRec,thetaPull);
822 
823  std::vector<PSimHit> simhits;
824 
825  if (usetracker && usemuon) {
826  simhits=tpr.get()->trackPSimHit();
827  }
828  else if (!usetracker && usemuon) {
829  simhits=tpr.get()->trackPSimHit(DetId::Muon);
830  }
831  else if (usetracker && !usemuon) {
832  simhits=tpr.get()->trackPSimHit(DetId::Tracker);
833  }
834 
835  nrecHit_vs_nsimHit_rec2sim[w]->Fill(track->numberOfValidHits(), (int)(simhits.end()-simhits.begin() ));
836 
837  } // End of try{
838  catch (cms::Exception e){
839  LogTrace("MuonTrackValidator") << "exception found: " << e.what() << "\n";
840  }
841  } // End of for(View<Track>::size_type i=0; i<trackCollectionSize; ++i){
842  if (at!=0) h_tracks[w]->Fill(at);
843  h_fakes[w]->Fill(rT-at);
844  edm::LogVerbatim("MuonTrackValidator") << "Total Simulated: " << st << "\n"
845  << "Total Associated (simToReco): " << ats << "\n"
846  << "Total Reconstructed: " << rT << "\n"
847  << "Total Associated (recoToSim): " << at << "\n"
848  << "Total Fakes: " << rT-at << "\n";
849  nrec_vs_nsim[w]->Fill(rT,st);
850  w++;
851  } // End of for (unsigned int www=0;www<label.size();www++){
852  } //END of for (unsigned int ww=0;ww<associators.size();ww++){
853 }
virtual char const * what() const
Definition: Exception.cc:141
std::vector< MonitorElement * > nrecHit_vs_nsimHit_sim2rec
std::vector< std::vector< int > > totASS_zpos
int i
Definition: DBlmapReader.cc:9
std::vector< MonitorElement * > h_PurityVsQuality
std::vector< std::vector< int > > totASSeta_Quality05
std::vector< std::vector< int > > totREC_phi
std::vector< MonitorElement * > etares_vs_eta
std::vector< MonitorElement * > nrecHit_vs_nsimHit_rec2sim
std::vector< MonitorElement * > ptres_vs_phi
std::vector< std::vector< int > > totASS2_hit
std::vector< std::vector< int > > totRECpT
std::vector< TrackingParticle > TrackingParticleCollection
std::vector< std::vector< int > > totREC_dz
std::vector< MonitorElement * > nrec_vs_nsim
const_iterator end() const
last iterator over the map (read only)
std::vector< MonitorElement * > h_pullDz
std::vector< MonitorElement * > h_etaSIM
const std::vector< PSimHit > & trackPSimHit() const
std::vector< MonitorElement * > h_fakes
std::vector< MonitorElement * > ptres_vs_eta
std::vector< MonitorElement * > cotThetares_vs_eta
virtual double getEta(double eta)
std::vector< MonitorElement * > h_eta
std::vector< MonitorElement * > phimean_vs_eta_phi
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
std::vector< std::vector< int > > totASS_dz
const_iterator find(const key_type &k) const
find element with specified reference key
std::vector< std::vector< double > > etaintervals
std::vector< MonitorElement * > h_pt
std::vector< MonitorElement * > phires_vs_pt
std::vector< MonitorElement * > h_pullQoverp
std::vector< MonitorElement * > h_assochi2_prob
#define abs(x)
Definition: mlp_lapack.h:159
std::vector< std::vector< int > > totSIM_zpos
std::vector< std::vector< int > > totASS2_dz
std::vector< MonitorElement * > cotThetares_vs_pt
#define min(a, b)
Definition: mlp_lapack.h:161
math::XYZVectorD Vector
point in the space
Definition: ParticleBase.h:30
std::vector< MonitorElement * > dxyres_vs_eta
std::vector< std::vector< int > > totASS_phi_Quality05
std::vector< MonitorElement * > dzres_vs_pt
std::vector< MonitorElement * > h_tracks
std::vector< MonitorElement * > dzres_vs_eta
void getRecoMomentum(const reco::Track &track, double &pt, double &ptError, double &qoverp, double &qoverpError, double &lambda, double &lambdaError, double &phi, double &phiError) const
retrieval of reconstructed momentum components from reco::Track (== mean values for GSF) ...
std::vector< std::vector< double > > dxyintervals
uint16_t size_type
std::vector< MonitorElement * > nDThits_vs_eta
std::vector< std::vector< int > > totASS_phi
std::vector< MonitorElement * > thetapull_vs_phi
std::vector< std::vector< int > > totASS_dxy
std::vector< MonitorElement * > h_assochi2
std::vector< MonitorElement * > chi2_vs_phi
std::vector< std::vector< int > > totSIM_dxy
std::vector< MonitorElement * > chi2_vs_nhits
std::vector< std::vector< int > > totASSeta_Quality075
std::vector< MonitorElement * > nhits_vs_eta
std::vector< MonitorElement * > phires_vs_phi
virtual double getPt(double pt)
CosmicTrackingParticleSelector cosmictpSelector
math::XYZPointD Point
point in the space
Definition: ParticleBase.h:28
std::vector< MonitorElement * > nhits_vs_phi
std::vector< std::vector< int > > totASS2pT
std::vector< MonitorElement * > h_vertposSIM
std::vector< MonitorElement * > dxyres_vs_pt
std::vector< edm::InputTag > label
std::vector< MonitorElement * > h_assocSharedHit
std::vector< MonitorElement * > h_nchi2
std::vector< std::vector< double > > pTintervals
void post_insert()
post insert action
std::vector< std::vector< int > > totASS2eta
T sqrt(T t)
Definition: SSEVec.h:46
std::vector< std::vector< int > > totSIMpT
std::vector< std::vector< int > > totREC_dxy
std::vector< MonitorElement * > h_pullPhi
std::vector< std::vector< int > > totSIM_hit
std::vector< MonitorElement * > h_nchi2_prob
std::vector< MonitorElement * > ptpull_vs_eta
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
std::vector< std::vector< int > > totASSpT
std::vector< MonitorElement * > dxypull_vs_eta
unsigned int size_type
Definition: View.h:85
std::vector< std::vector< int > > totASS_phi_Quality075
double f[11][100]
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:232
std::vector< MonitorElement * > h_pullTheta
std::vector< std::vector< int > > totSIM_vertpos
std::vector< std::vector< int > > totASSpT_Quality05
std::vector< std::vector< int > > totREC_hit
std::vector< MonitorElement * > phipull_vs_eta
std::vector< std::vector< int > > totSIMeta
std::vector< std::vector< int > > totASS2_dxy
std::vector< MonitorElement * > thetapull_vs_eta
std::vector< MonitorElement * > h_charge
size_t key() const
Definition: RefToBase.h:228
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
#define LogTrace(id)
std::vector< MonitorElement * > ptmean_vs_eta_phi
std::vector< std::vector< int > > totASS2_phi
std::vector< std::vector< double > > phiintervals
std::vector< std::vector< int > > totASSpT_Quality075
#define M_PI
Definition: BFit3D.cc:3
std::vector< MonitorElement * > h_pullDxy
std::vector< MonitorElement * > h_tracksSIM
const T & get() const
Definition: EventSetup.h:55
key_type key() const
Accessor for product key.
Definition: Ref.h:266
std::vector< MonitorElement * > chi2_vs_eta
TrackingParticleSelector tpSelector
Vector momentum() const
spatial momentum vector
Definition: ParticleBase.h:86
T const * product() const
Definition: Handle.h:74
std::vector< std::vector< int > > totSIM_phi
std::string const & label() const
Definition: InputTag.h:25
std::vector< MonitorElement * > h_hits
std::vector< MonitorElement * > h_losthits
std::vector< MonitorElement * > ptpull_vs_phi
std::string const & process() const
Definition: InputTag.h:29
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
edm::InputTag associatormap
std::vector< std::vector< int > > totASSeta
std::vector< MonitorElement * > ptres_vs_pt
std::vector< const TrackAssociatorBase * > associator
std::vector< std::vector< int > > totRECeta
std::vector< std::vector< double > > vertposintervals
std::vector< std::vector< double > > dzintervals
std::vector< MonitorElement * > phires_vs_eta
std::vector< MonitorElement * > h_ptSIM
std::vector< std::vector< double > > zposintervals
std::vector< MonitorElement * > h_assocFraction
std::vector< std::vector< int > > totSIM_dz
std::vector< std::string > associators
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:242
const Point & vertex() const
vertex position
Definition: ParticleBase.h:228
std::vector< MonitorElement * > nlosthits_vs_eta
std::vector< MonitorElement * > dzpull_vs_eta
std::string const & instance() const
Definition: InputTag.h:26
std::vector< MonitorElement * > nRPChits_vs_eta
std::vector< std::vector< int > > totASS_vertpos
std::vector< std::vector< int > > totASS_hit
std::vector< MonitorElement * > nCSChits_vs_eta
T w() const
list at
Definition: asciidump.py:428
std::vector< MonitorElement * > phipull_vs_phi
void MuonTrackValidator::beginRun ( edm::Run const &  ,
edm::EventSetup const &  setup 
)
virtual

Method called before the event loop.

this are needed to calculate efficiency during tha harvesting for the automated validation

Reimplemented from edm::EDAnalyzer.

Definition at line 29 of file MuonTrackValidator.cc.

References algo, DQMStore::book1D(), DQMStore::book2D(), DQMStore::bookProfile(), DQMStore::bookProfile2D(), DQMStore::cd(), dbe_, TrackerOfflineValidation_Dqm_cff::dirName, edm::EventSetup::get(), getTH1F(), getTH2F(), DQMStore::goUp(), edm::InputTag::instance(), j, edm::InputTag::label(), diffTwoXMLs::label, max(), gather_cfg::maxDxy, min, nint(), edm::InputTag::process(), edm::ESHandle< class >::product(), python.rootplot.root2matplotlib::replace(), DQMStore::setCurrentFolder(), and w().

29  {
30 
31  // dbe_->showDirStructure();
32 
33  int j=0;
34  for (unsigned int ww=0;ww<associators.size();ww++){
35  for (unsigned int www=0;www<label.size();www++){
36 
37  dbe_->cd();
38  InputTag algo = label[www];
39  string dirName=dirName_;
40  if (algo.process()!="")
41  dirName+=algo.process()+"_";
42  if(algo.label()!="")
43  dirName+=algo.label()+"_";
44  if(algo.instance()!="")
45  dirName+=algo.instance()+"_";
46  if (dirName.find("Tracks")<dirName.length()){
47  dirName.replace(dirName.find("Tracks"),6,"");
48  }
49  string assoc= associators[ww];
50  if (assoc.find("Track")<assoc.length()){
51  assoc.replace(assoc.find("Track"),5,"");
52  }
53  dirName+=assoc;
54  std::replace(dirName.begin(), dirName.end(), ':', '_');
55  dbe_->setCurrentFolder(dirName.c_str());
56 
57  setUpVectors();
58 
59  dbe_->goUp();
60  string subDirName = dirName + "/simulation";
61  dbe_->setCurrentFolder(subDirName.c_str());
62  h_ptSIM.push_back( dbe_->book1D("ptSIM", "generated p_{t}", 5500, 0, 110 ) );
63  h_etaSIM.push_back( dbe_->book1D("etaSIM", "generated pseudorapidity", 500, -2.5, 2.5 ) );
64  h_tracksSIM.push_back( dbe_->book1D("tracksSIM","number of simulated tracks",200,-0.5,99.5) );
65  h_vertposSIM.push_back( dbe_->book1D("vertposSIM","Transverse position of sim vertices",100,0.,120.) );
66 
67  dbe_->cd();
68  dbe_->setCurrentFolder(dirName.c_str());
69  h_tracks.push_back( dbe_->book1D("tracks","number of reconstructed tracks",200,-0.5,19.5) );
70  h_fakes.push_back( dbe_->book1D("fakes","number of fake reco tracks",20,-0.5,19.5) );
71  h_charge.push_back( dbe_->book1D("charge","charge",3,-1.5,1.5) );
72  h_hits.push_back( dbe_->book1D("hits", "number of hits per track", nintHit,minHit,maxHit ) );
73  h_losthits.push_back( dbe_->book1D("losthits", "number of lost hits per track", nintHit,minHit,maxHit) );
74  h_nchi2.push_back( dbe_->book1D("chi2", "normalized #chi^{2}", 200, 0, 20 ) );
75  h_nchi2_prob.push_back( dbe_->book1D("chi2_prob", "normalized #chi^{2} probability",100,0,1));
76 
78  h_recoeta.push_back( dbe_->book1D("num_reco_eta","N of reco track vs eta",nint,min,max) );
79  h_assoceta.push_back( dbe_->book1D("num_assoc(simToReco)_eta","N of associated tracks (simToReco) vs eta",nint,min,max) );
80  h_assoc2eta.push_back( dbe_->book1D("num_assoc(recoToSim)_eta","N of associated (recoToSim) tracks vs eta",nint,min,max) );
81  h_simuleta.push_back( dbe_->book1D("num_simul_eta","N of simulated tracks vs eta",nint,min,max) );
82  h_recopT.push_back( dbe_->book1D("num_reco_pT","N of reco track vs pT",nintpT,minpT,maxpT) );
83  h_assocpT.push_back( dbe_->book1D("num_assoc(simToReco)_pT","N of associated tracks (simToReco) vs pT",nintpT,minpT,maxpT) );
84  h_assoc2pT.push_back( dbe_->book1D("num_assoc(recoToSim)_pT","N of associated (recoToSim) tracks vs pT",nintpT,minpT,maxpT) );
85  h_simulpT.push_back( dbe_->book1D("num_simul_pT","N of simulated tracks vs pT",nintpT,minpT,maxpT) );
86  //
87  h_recohit.push_back( dbe_->book1D("num_reco_hit","N of reco track vs hit",nintHit,minHit,maxHit) );
88  h_assochit.push_back( dbe_->book1D("num_assoc(simToReco)_hit","N of associated tracks (simToReco) vs hit",nintHit,minHit,maxHit) );
89  h_assoc2hit.push_back( dbe_->book1D("num_assoc(recoToSim)_hit","N of associated (recoToSim) tracks vs hit",nintHit,minHit,maxHit) );
90  h_simulhit.push_back( dbe_->book1D("num_simul_hit","N of simulated tracks vs hit",nintHit,minHit,maxHit) );
91  //
92  h_recophi.push_back( dbe_->book1D("num_reco_phi","N of reco track vs phi",nintPhi,minPhi,maxPhi) );
93  h_assocphi.push_back( dbe_->book1D("num_assoc(simToReco)_phi","N of associated tracks (simToReco) vs phi",nintPhi,minPhi,maxPhi) );
94  h_assoc2phi.push_back( dbe_->book1D("num_assoc(recoToSim)_phi","N of associated (recoToSim) tracks vs phi",nintPhi,minPhi,maxPhi) );
95  h_simulphi.push_back( dbe_->book1D("num_simul_phi","N of simulated tracks vs phi",nintPhi,minPhi,maxPhi) );
96 
97  h_recodxy.push_back( dbe_->book1D("num_reco_dxy","N of reco track vs dxy",nintDxy,minDxy,maxDxy) );
98  h_assocdxy.push_back( dbe_->book1D("num_assoc(simToReco)_dxy","N of associated tracks (simToReco) vs dxy",nintDxy,minDxy,maxDxy) );
99  h_assoc2dxy.push_back( dbe_->book1D("num_assoc(recoToSim)_dxy","N of associated (recoToSim) tracks vs dxy",nintDxy,minDxy,maxDxy) );
100  h_simuldxy.push_back( dbe_->book1D("num_simul_dxy","N of simulated tracks vs dxy",nintDxy,minDxy,maxDxy) );
101 
102  h_recodz.push_back( dbe_->book1D("num_reco_dz","N of reco track vs dz",nintDz,minDz,maxDz) );
103  h_assocdz.push_back( dbe_->book1D("num_assoc(simToReco)_dz","N of associated tracks (simToReco) vs dz",nintDz,minDz,maxDz) );
104  h_assoc2dz.push_back( dbe_->book1D("num_assoc(recoToSim)_dz","N of associated (recoToSim) tracks vs dz",nintDz,minDz,maxDz) );
105  h_simuldz.push_back( dbe_->book1D("num_simul_dz","N of simulated tracks vs dz",nintDz,minDz,maxDz) );
106 
107  h_assocvertpos.push_back( dbe_->book1D("num_assoc(simToReco)_vertpos","N of associated tracks (simToReco) vs transverse vert position",nintVertpos,minVertpos,maxVertpos) );
108  h_simulvertpos.push_back( dbe_->book1D("num_simul_vertpos","N of simulated tracks vs transverse vert position",nintVertpos,minVertpos,maxVertpos) );
109 
110  h_assoczpos.push_back( dbe_->book1D("num_assoc(simToReco)_zpos","N of associated tracks (simToReco) vs z vert position",nintZpos,minZpos,maxZpos) );
111  h_simulzpos.push_back( dbe_->book1D("num_simul_zpos","N of simulated tracks vs z vert position",nintZpos,minZpos,maxZpos) );
112 
113 
115 
116  h_eta.push_back( dbe_->book1D("eta", "pseudorapidity residue", 1000, -0.1, 0.1 ) );
117  h_pt.push_back( dbe_->book1D("pullPt", "pull of p_{t}", 100, -10, 10 ) );
118  h_pullTheta.push_back( dbe_->book1D("pullTheta","pull of #theta parameter",250,-25,25) );
119  h_pullPhi.push_back( dbe_->book1D("pullPhi","pull of #phi parameter",250,-25,25) );
120  h_pullDxy.push_back( dbe_->book1D("pullDxy","pull of dxy parameter",250,-25,25) );
121  h_pullDz.push_back( dbe_->book1D("pullDz","pull of dz parameter",250,-25,25) );
122  h_pullQoverp.push_back( dbe_->book1D("pullQoverp","pull of qoverp parameter",250,-25,25) );
123 
124  if (associators[ww]=="TrackAssociatorByChi2"){
125  h_assochi2.push_back( dbe_->book1D("assocChi2","track association #chi^{2}",1000000,0,100000) );
126  h_assochi2_prob.push_back(dbe_->book1D("assocChi2_prob","probability of association #chi^{2}",100,0,1));
127  } else if (associators[ww]=="TrackAssociatorByHits"){
128  h_assocFraction.push_back( dbe_->book1D("assocFraction","fraction of shared hits",200,0,2) );
129  h_assocSharedHit.push_back(dbe_->book1D("assocSharedHit","number of shared hits",20,0,20));
130  }
131 
132  chi2_vs_nhits.push_back( dbe_->book2D("chi2_vs_nhits","#chi^{2} vs nhits",25,0,25,100,0,10) );
133  h_chi2meanhitsh.push_back( dbe_->bookProfile("chi2mean_vs_nhits","mean #chi^{2} vs nhits",25,0,25,100,0,10) );
134 
135  etares_vs_eta.push_back( dbe_->book2D("etares_vs_eta","etaresidue vs eta",nint,min,max,200,-0.1,0.1) );
136  nrec_vs_nsim.push_back( dbe_->book2D("nrec_vs_nsim","nrec vs nsim",20,-0.5,19.5,20,-0.5,19.5) );
137 
138  chi2_vs_eta.push_back( dbe_->book2D("chi2_vs_eta","chi2_vs_eta",nint,min,max, 200, 0, 20 ));
139  h_chi2meanh.push_back( dbe_->bookProfile("chi2mean","mean #chi^{2} vs #eta",nint,min,max, 200, 0, 20) );
140  chi2_vs_phi.push_back( dbe_->book2D("chi2_vs_phi","#chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20 ) );
141  h_chi2mean_vs_phi.push_back( dbe_->bookProfile("chi2mean_vs_phi","mean of #chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20) );
142 
143  nhits_vs_eta.push_back( dbe_->book2D("nhits_vs_eta","nhits vs eta",nint,min,max,nintHit,minHit,maxHit) );
144  nDThits_vs_eta.push_back( dbe_->book2D("nDThits_vs_eta","# DT hits vs eta",nint,min,max,nintHit,minHit,maxHit) );
145  nCSChits_vs_eta.push_back( dbe_->book2D("nCSChits_vs_eta","# CSC hits vs eta",nint,min,max,nintHit,minHit,maxHit) );
146  nRPChits_vs_eta.push_back( dbe_->book2D("nRPChits_vs_eta","# RPC hits vs eta",nint,min,max,nintHit,minHit,maxHit) );
147 
148  h_DThits_eta.push_back( dbe_->bookProfile("DThits_eta","mean # DT hits vs eta",nint,min,max,nintHit,minHit,maxHit) );
149  h_CSChits_eta.push_back( dbe_->bookProfile("CSChits_eta","mean # CSC hits vs eta",nint,min,max,nintHit,minHit,maxHit) );
150  h_RPChits_eta.push_back( dbe_->bookProfile("RPChits_eta","mean # RPC hits vs eta",nint,min,max,nintHit,minHit,maxHit) );
151  h_hits_eta.push_back( dbe_->bookProfile("hits_eta","mean #hits vs eta",nint,min,max,nintHit,minHit,maxHit) );
152  nhits_vs_phi.push_back( dbe_->book2D("nhits_vs_phi","#hits vs #phi",nintPhi,minPhi,maxPhi,nintHit,minHit,maxHit) );
153  h_hits_phi.push_back( dbe_->bookProfile("hits_phi","mean #hits vs #phi",nintPhi,minPhi,maxPhi, nintHit,minHit,maxHit) );
154 
155  nlosthits_vs_eta.push_back( dbe_->book2D("nlosthits_vs_eta","nlosthits vs eta",nint,min,max,nintHit,minHit,maxHit) );
156  h_losthits_eta.push_back( dbe_->bookProfile("losthits_eta","losthits_eta",nint,min,max,nintHit,minHit,maxHit) );
157 
158  ptres_vs_eta.push_back(dbe_->book2D("ptres_vs_eta","ptres_vs_eta",nint,min,max, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
159  ptres_vs_phi.push_back( dbe_->book2D("ptres_vs_phi","p_{t} res vs #phi",nintPhi,minPhi,maxPhi, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
160  ptres_vs_pt.push_back(dbe_->book2D("ptres_vs_pt","ptres_vs_pt",nintpT,minpT,maxpT, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
161 
162  cotThetares_vs_eta.push_back(dbe_->book2D("cotThetares_vs_eta","cotThetares_vs_eta",nint,min,max,cotThetaRes_nbin, cotThetaRes_rangeMin, cotThetaRes_rangeMax));
163  cotThetares_vs_pt.push_back(dbe_->book2D("cotThetares_vs_pt","cotThetares_vs_pt",nintpT,minpT,maxpT, cotThetaRes_nbin, cotThetaRes_rangeMin, cotThetaRes_rangeMax));
164 
165  phires_vs_eta.push_back(dbe_->book2D("phires_vs_eta","phires_vs_eta",nint,min,max, phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax));
166  phires_vs_pt.push_back(dbe_->book2D("phires_vs_pt","phires_vs_pt",nintpT,minpT,maxpT, phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax));
167  phires_vs_phi.push_back(dbe_->book2D("phires_vs_phi","#phi res vs #phi",nintPhi,minPhi,maxPhi,phiRes_nbin, phiRes_rangeMin, phiRes_rangeMax));
168 
169  dxyres_vs_eta.push_back(dbe_->book2D("dxyres_vs_eta","dxyres_vs_eta",nint,min,max,dxyRes_nbin, dxyRes_rangeMin, dxyRes_rangeMax));
170  dxyres_vs_pt.push_back( dbe_->book2D("dxyres_vs_pt","dxyres_vs_pt",nintpT,minpT,maxpT,dxyRes_nbin, dxyRes_rangeMin, dxyRes_rangeMax));
171 
172  dzres_vs_eta.push_back(dbe_->book2D("dzres_vs_eta","dzres_vs_eta",nint,min,max,dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
173  dzres_vs_pt.push_back(dbe_->book2D("dzres_vs_pt","dzres_vs_pt",nintpT,minpT,maxpT,dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
174 
175  ptmean_vs_eta_phi.push_back(dbe_->bookProfile2D("ptmean_vs_eta_phi","mean p_{t} vs #eta and #phi",nintPhi,minPhi,maxPhi,nint,min,max,1000,0,1000));
176  phimean_vs_eta_phi.push_back(dbe_->bookProfile2D("phimean_vs_eta_phi","mean #phi vs #eta and #phi",nintPhi,minPhi,maxPhi,nint,min,max,nintPhi,minPhi,maxPhi));
177 
178  //pulls of track params vs eta: to be used with fitslicesytool
179  dxypull_vs_eta.push_back(dbe_->book2D("dxypull_vs_eta","dxypull_vs_eta",nint,min,max,100,-10,10));
180  ptpull_vs_eta.push_back(dbe_->book2D("ptpull_vs_eta","ptpull_vs_eta",nint,min,max,100,-10,10));
181  dzpull_vs_eta.push_back(dbe_->book2D("dzpull_vs_eta","dzpull_vs_eta",nint,min,max,100,-10,10));
182  phipull_vs_eta.push_back(dbe_->book2D("phipull_vs_eta","phipull_vs_eta",nint,min,max,100,-10,10));
183  thetapull_vs_eta.push_back(dbe_->book2D("thetapull_vs_eta","thetapull_vs_eta",nint,min,max,100,-10,10));
184 
185  //pulls of track params vs phi
186  ptpull_vs_phi.push_back(dbe_->book2D("ptpull_vs_phi","p_{t} pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
187  phipull_vs_phi.push_back(dbe_->book2D("phipull_vs_phi","#phi pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
188  thetapull_vs_phi.push_back(dbe_->book2D("thetapull_vs_phi","#theta pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
189 
190  nrecHit_vs_nsimHit_sim2rec.push_back( dbe_->book2D("nrecHit_vs_nsimHit_sim2rec","nrecHit vs nsimHit (Sim2RecAssoc)",nintHit,minHit,maxHit, nintHit,minHit,maxHit ));
191  nrecHit_vs_nsimHit_rec2sim.push_back( dbe_->book2D("nrecHit_vs_nsimHit_rec2sim","nrecHit vs nsimHit (Rec2simAssoc)",nintHit,minHit,maxHit, nintHit,minHit,maxHit ));
192 
193  if (MABH) {
194  h_PurityVsQuality.push_back( dbe_->book2D("PurityVsQuality","Purity vs Quality (MABH)",20,0.01,1.01,20,0.01,1.01) );
195  h_assoceta_Quality05.push_back( dbe_->book1D("num_assoc(simToReco)_eta_Q05","N of associated tracks (simToReco) vs eta (Quality>0.5)",nint,min,max) );
196  h_assoceta_Quality075.push_back( dbe_->book1D("num_assoc(simToReco)_eta_Q075","N of associated tracks (simToReco) vs eta (Quality>0.75)",nint,min,max) );
197  h_assocpT_Quality05.push_back( dbe_->book1D("num_assoc(simToReco)_pT_Q05","N of associated tracks (simToReco) vs pT (Quality>0.5)",nintpT,minpT,maxpT) );
198  h_assocpT_Quality075.push_back( dbe_->book1D("num_assoc(simToReco)_pT_Q075","N of associated tracks (simToReco) vs pT (Quality>0.75)",nintpT,minpT,maxpT) );
199  h_assocphi_Quality05.push_back( dbe_->book1D("num_assoc(simToReco)_phi_Q05","N of associated tracks (simToReco) vs phi (Quality>0.5)",nintPhi,minPhi,maxPhi) );
200  h_assocphi_Quality075.push_back( dbe_->book1D("num_assoc(simToReco)_phi_Q075","N of associated tracks (simToReco) vs phi (Quality>0.75)",nintPhi,minPhi,maxPhi) );
201  }
202 
203  if(useLogPt){
204  BinLogX(dzres_vs_pt[j]->getTH2F());
208  BinLogX(ptres_vs_pt[j]->getTH2F());
209  BinLogX(h_recopT[j]->getTH1F());
210  BinLogX(h_assocpT[j]->getTH1F());
211  BinLogX(h_assoc2pT[j]->getTH1F());
212  BinLogX(h_simulpT[j]->getTH1F());
213  if (MABH) {
216  }
217  j++;
218  }
219 
220  }
221  }
222  if (UseAssociators) {
224  for (unsigned int w=0;w<associators.size();w++) {
225  setup.get<TrackAssociatorRecord>().get(associators[w],theAssociator);
226  associator.push_back( theAssociator.product() );
227  }
228  }
229 }
std::vector< MonitorElement * > h_assoc2phi
std::vector< MonitorElement * > h_recoeta
std::vector< MonitorElement * > nrecHit_vs_nsimHit_sim2rec
std::vector< MonitorElement * > h_DThits_eta
std::vector< MonitorElement * > h_assoc2hit
std::vector< MonitorElement * > h_PurityVsQuality
std::vector< MonitorElement * > h_recopT
std::vector< MonitorElement * > etares_vs_eta
std::vector< MonitorElement * > h_assoc2dxy
std::vector< MonitorElement * > nrecHit_vs_nsimHit_rec2sim
std::vector< MonitorElement * > ptres_vs_phi
std::vector< MonitorElement * > h_losthits_eta
std::vector< MonitorElement * > h_assocpT_Quality075
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:717
std::vector< MonitorElement * > nrec_vs_nsim
std::vector< MonitorElement * > h_pullDz
std::vector< MonitorElement * > h_recohit
std::vector< MonitorElement * > h_etaSIM
std::vector< MonitorElement * > h_assocvertpos
std::vector< MonitorElement * > h_fakes
std::vector< MonitorElement * > ptres_vs_eta
std::vector< MonitorElement * > cotThetares_vs_eta
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:406
std::vector< MonitorElement * > h_eta
std::vector< MonitorElement * > phimean_vs_eta_phi
std::vector< MonitorElement * > h_pt
std::vector< MonitorElement * > phires_vs_pt
std::vector< MonitorElement * > h_pullQoverp
std::vector< MonitorElement * > h_assochi2_prob
std::vector< MonitorElement * > h_CSChits_eta
std::vector< MonitorElement * > cotThetares_vs_pt
std::vector< MonitorElement * > dxyres_vs_eta
std::vector< MonitorElement * > dzres_vs_pt
std::vector< MonitorElement * > h_assoceta
std::vector< MonitorElement * > h_tracks
std::vector< MonitorElement * > dzres_vs_eta
std::vector< MonitorElement * > h_assoceta_Quality075
std::vector< MonitorElement * > nDThits_vs_eta
std::vector< MonitorElement * > thetapull_vs_phi
std::vector< MonitorElement * > h_assochi2
std::vector< MonitorElement * > chi2_vs_phi
std::vector< MonitorElement * > h_simuldxy
std::vector< MonitorElement * > h_simuldz
std::vector< MonitorElement * > chi2_vs_nhits
std::vector< MonitorElement * > nhits_vs_eta
std::vector< MonitorElement * > phires_vs_phi
std::vector< MonitorElement * > h_chi2mean_vs_phi
std::vector< MonitorElement * > h_assoczpos
std::vector< MonitorElement * > nhits_vs_phi
std::vector< MonitorElement * > h_simulphi
std::vector< MonitorElement * > h_vertposSIM
std::vector< MonitorElement * > dxyres_vs_pt
std::vector< edm::InputTag > label
std::vector< MonitorElement * > h_assocSharedHit
std::vector< MonitorElement * > h_nchi2
std::vector< MonitorElement * > h_assoc2dz
std::vector< MonitorElement * > h_pullPhi
std::vector< MonitorElement * > h_nchi2_prob
std::vector< MonitorElement * > ptpull_vs_eta
std::vector< MonitorElement * > h_recophi
std::vector< MonitorElement * > dxypull_vs_eta
int j
Definition: DBlmapReader.cc:9
TH1F * getTH1F(std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
std::vector< MonitorElement * > h_pullTheta
std::vector< MonitorElement * > h_simulhit
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:1031
std::vector< MonitorElement * > phipull_vs_eta
std::vector< MonitorElement * > thetapull_vs_eta
std::vector< MonitorElement * > h_charge
std::vector< MonitorElement * > h_assocphi
std::vector< MonitorElement * > ptmean_vs_eta_phi
std::vector< MonitorElement * > h_assocpT
std::vector< MonitorElement * > h_pullDxy
std::vector< MonitorElement * > h_simulpT
std::vector< MonitorElement * > h_tracksSIM
std::vector< MonitorElement * > h_assocphi_Quality05
std::vector< MonitorElement * > h_simulzpos
T const * product() const
Definition: ESHandle.h:62
std::vector< MonitorElement * > h_recodz
std::vector< MonitorElement * > chi2_vs_eta
std::vector< MonitorElement * > h_assocphi_Quality075
std::vector< MonitorElement * > h_hits_eta
std::string const & label() const
Definition: InputTag.h:25
std::vector< MonitorElement * > h_hits
std::vector< MonitorElement * > h_losthits
std::vector< MonitorElement * > ptpull_vs_phi
std::string const & process() const
Definition: InputTag.h:29
std::vector< MonitorElement * > h_simulvertpos
std::vector< MonitorElement * > ptres_vs_pt
std::vector< const TrackAssociatorBase * > associator
std::vector< MonitorElement * > h_chi2meanhitsh
std::vector< MonitorElement * > h_recodxy
std::vector< MonitorElement * > phires_vs_eta
std::vector< MonitorElement * > h_ptSIM
TH2F * getTH2F(std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
void goUp(void)
equivalent to &quot;cd ..&quot;
Definition: DQMStore.cc:440
std::vector< MonitorElement * > h_assocdz
std::vector< MonitorElement * > h_hits_phi
std::vector< MonitorElement * > h_assocpT_Quality05
std::vector< MonitorElement * > h_RPChits_eta
std::vector< MonitorElement * > h_assoc2pT
std::vector< MonitorElement * > h_assocFraction
LimitAlgo * algo
Definition: Combine.cc:60
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:845
std::vector< std::string > associators
std::vector< MonitorElement * > nlosthits_vs_eta
std::vector< MonitorElement * > h_assoceta_Quality05
std::vector< MonitorElement * > dzpull_vs_eta
std::vector< MonitorElement * > h_assocdxy
std::string const & instance() const
Definition: InputTag.h:26
std::vector< MonitorElement * > nRPChits_vs_eta
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
std::vector< MonitorElement * > h_assochit
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
std::vector< MonitorElement * > h_chi2meanh
std::vector< MonitorElement * > nCSChits_vs_eta
T w() const
std::vector< MonitorElement * > h_simuleta
std::vector< MonitorElement * > h_assoc2eta
std::vector< MonitorElement * > phipull_vs_phi
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")
Definition: DQMStore.cc:1175
void MuonTrackValidator::endRun ( edm::Run const &  ,
edm::EventSetup const &   
)
virtual

Method called at the end of the event loop.

Reimplemented from edm::EDAnalyzer.

Definition at line 855 of file MuonTrackValidator.cc.

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

855  {
856 
857  int w=0;
858  for (unsigned int ww=0;ww<associators.size();ww++){
859  for (unsigned int www=0;www<label.size();www++){
860 
861  //chi2 and #hit vs eta: get mean from 2D histos
867 
869  //vs phi
873 
878 
883 
888 
893 
898 
903 
906 
909 
910  if (MABH) {
917  }
918 
919  w++;
920  }
921  }
922 
923  if ( out.size() != 0 && dbe_ ) dbe_->save(out);
924 }
std::vector< MonitorElement * > h_assoc2phi
std::vector< MonitorElement * > h_recoeta
std::vector< MonitorElement * > h_DThits_eta
std::vector< MonitorElement * > h_assoc2hit
std::vector< std::vector< int > > totASS_zpos
std::vector< std::vector< int > > totASSeta_Quality05
std::vector< MonitorElement * > h_recopT
std::vector< std::vector< int > > totREC_phi
std::vector< MonitorElement * > h_assoc2dxy
std::vector< std::vector< int > > totASS2_hit
std::vector< MonitorElement * > h_losthits_eta
std::vector< MonitorElement * > h_assocpT_Quality075
std::vector< std::vector< int > > totRECpT
std::vector< std::vector< int > > totREC_dz
std::vector< MonitorElement * > h_recohit
std::vector< MonitorElement * > h_assocvertpos
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:2113
std::vector< std::vector< int > > totASS_dz
std::vector< std::vector< int > > totSIM_zpos
std::vector< MonitorElement * > h_CSChits_eta
std::vector< std::vector< int > > totASS2_dz
std::vector< std::vector< int > > totASS_phi_Quality05
std::vector< MonitorElement * > h_assoceta
std::vector< MonitorElement * > h_assoceta_Quality075
std::vector< MonitorElement * > nDThits_vs_eta
std::vector< std::vector< int > > totASS_phi
std::vector< std::vector< int > > totASS_dxy
std::vector< MonitorElement * > chi2_vs_phi
std::vector< MonitorElement * > h_simuldxy
std::vector< std::vector< int > > totSIM_dxy
std::vector< MonitorElement * > h_simuldz
std::vector< MonitorElement * > chi2_vs_nhits
std::vector< std::vector< int > > totASSeta_Quality075
std::vector< MonitorElement * > nhits_vs_eta
std::vector< MonitorElement * > h_chi2mean_vs_phi
std::vector< MonitorElement * > h_assoczpos
std::vector< MonitorElement * > nhits_vs_phi
std::vector< MonitorElement * > h_simulphi
std::vector< std::vector< int > > totASS2pT
virtual void doProfileX(TH2 *th2, MonitorElement *me)
std::vector< edm::InputTag > label
std::vector< std::vector< int > > totASS2eta
std::vector< std::vector< int > > totSIMpT
std::vector< std::vector< int > > totREC_dxy
std::vector< MonitorElement * > h_assoc2dz
std::vector< std::vector< int > > totSIM_hit
std::vector< MonitorElement * > h_recophi
std::vector< std::vector< int > > totASSpT
std::vector< std::vector< int > > totASS_phi_Quality075
std::vector< std::vector< int > > totSIM_vertpos
std::vector< std::vector< int > > totASSpT_Quality05
std::vector< std::vector< int > > totREC_hit
std::vector< MonitorElement * > h_simulhit
std::vector< std::vector< int > > totSIMeta
std::vector< std::vector< int > > totASS2_dxy
std::vector< MonitorElement * > h_assocphi
std::vector< std::vector< int > > totASS2_phi
std::vector< std::vector< int > > totASSpT_Quality075
std::vector< MonitorElement * > h_assocpT
std::vector< MonitorElement * > h_simulpT
std::vector< MonitorElement * > h_assocphi_Quality05
std::vector< MonitorElement * > h_simulzpos
std::vector< MonitorElement * > h_recodz
std::vector< MonitorElement * > chi2_vs_eta
std::vector< MonitorElement * > h_assocphi_Quality075
std::vector< std::vector< int > > totSIM_phi
void fillPlotFromVector(MonitorElement *h, std::vector< int > &vec)
std::vector< MonitorElement * > h_hits_eta
std::vector< std::vector< int > > totASSeta
std::vector< MonitorElement * > h_simulvertpos
std::vector< std::vector< int > > totRECeta
std::vector< MonitorElement * > h_chi2meanhitsh
std::vector< MonitorElement * > h_recodxy
std::vector< MonitorElement * > h_assocdz
std::vector< MonitorElement * > h_hits_phi
std::vector< MonitorElement * > h_assocpT_Quality05
std::vector< MonitorElement * > h_RPChits_eta
std::vector< MonitorElement * > h_assoc2pT
std::vector< std::vector< int > > totSIM_dz
std::vector< std::string > associators
std::vector< MonitorElement * > nlosthits_vs_eta
std::vector< MonitorElement * > h_assoceta_Quality05
std::vector< MonitorElement * > h_assocdxy
std::vector< MonitorElement * > nRPChits_vs_eta
std::vector< std::vector< int > > totASS_vertpos
std::vector< MonitorElement * > h_assochit
std::vector< std::vector< int > > totASS_hit
std::vector< MonitorElement * > h_chi2meanh
std::vector< MonitorElement * > nCSChits_vs_eta
T w() const
std::vector< MonitorElement * > h_simuleta
std::vector< MonitorElement * > h_assoc2eta
void MuonTrackValidator::getRecoMomentum ( const reco::Track track,
double &  pt,
double &  ptError,
double &  qoverp,
double &  qoverpError,
double &  lambda,
double &  lambdaError,
double &  phi,
double &  phiError 
) const
private

retrieval of reconstructed momentum components from reco::Track (== mean values for GSF)

Definition at line 928 of file MuonTrackValidator.cc.

References reco::TrackBase::lambda(), reco::TrackBase::lambdaError(), reco::TrackBase::phi(), reco::TrackBase::phiError(), reco::TrackBase::pt(), reco::TrackBase::ptError(), reco::TrackBase::qoverp(), and reco::TrackBase::qoverpError().

929  {
930  pt = track.pt();
931  ptError = track.ptError();
932  qoverp = track.qoverp();
933  qoverpError = track.qoverpError();
934  lambda = track.lambda();
935  lambdaError = track.lambdaError();
936  phi = track.phi();
937  phiError = track.phiError();
938 
939 }
double qoverp() const
q/p
Definition: TrackBase.h:115
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:139
double pt() const
track transverse momentum
Definition: TrackBase.h:131
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:194
double phiError() const
error on phi
Definition: TrackBase.h:207
double lambda() const
Lambda angle.
Definition: TrackBase.h:119
double qoverpError() const
error on signed transverse curvature
Definition: TrackBase.h:192
double lambdaError() const
error on lambda
Definition: TrackBase.h:203
Definition: DDAxes.h:10
void MuonTrackValidator::getRecoMomentum ( const reco::GsfTrack gsfTrack,
double &  pt,
double &  ptError,
double &  qoverp,
double &  qoverpError,
double &  lambda,
double &  lambdaError,
double &  phi,
double &  phiError 
) const
private

retrieval of reconstructed momentum components based on the mode of a reco::GsfTrack

Definition at line 942 of file MuonTrackValidator.cc.

References reco::GsfTrack::lambdaMode(), reco::GsfTrack::lambdaModeError(), reco::GsfTrack::phiMode(), reco::GsfTrack::phiModeError(), reco::GsfTrack::ptMode(), reco::GsfTrack::ptModeError(), reco::GsfTrack::qoverpMode(), and reco::GsfTrack::qoverpModeError().

943  {
944 
945  pt = gsfTrack.ptMode();
946  ptError = gsfTrack.ptModeError();
947  qoverp = gsfTrack.qoverpMode();
948  qoverpError = gsfTrack.qoverpModeError();
949  lambda = gsfTrack.lambdaMode();
950  lambdaError = gsfTrack.lambdaModeError();
951  phi = gsfTrack.phiMode();
952  phiError = gsfTrack.phiModeError();
953 
954 }
double phiModeError() const
error on phi from mode
Definition: GsfTrack.h:93
double lambdaMode() const
Lambda angle from mode.
Definition: GsfTrack.h:44
double qoverpMode() const
q/p from mode
Definition: GsfTrack.h:40
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
Definition: GsfTrack.h:80
double qoverpModeError() const
error on signed transverse curvature from mode
Definition: GsfTrack.h:78
double phiMode() const
azimuthal angle of momentum vector from mode
Definition: GsfTrack.h:56
double lambdaModeError() const
error on lambda from mode
Definition: GsfTrack.h:89
double ptMode() const
track transverse momentum from mode
Definition: GsfTrack.h:48
Definition: DDAxes.h:10

Member Data Documentation

edm::InputTag MuonTrackValidator::associatormap
private

Definition at line 139 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::BiDirectional_RecoToSim_association
private

Definition at line 150 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

std::vector<MonitorElement*> MuonTrackValidator::chi2_vs_eta
private

Definition at line 169 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::chi2_vs_nhits
private

Definition at line 158 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::chi2_vs_phi
private

Definition at line 160 of file MuonTrackValidator.h.

CosmicTrackingParticleSelector MuonTrackValidator::cosmictpSelector
private

Definition at line 147 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

std::vector<MonitorElement*> MuonTrackValidator::cotThetares_vs_eta
private

Definition at line 175 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::cotThetares_vs_pt
private

Definition at line 176 of file MuonTrackValidator.h.

std::string MuonTrackValidator::dirName_
private

Definition at line 138 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

std::vector<MonitorElement*> MuonTrackValidator::dxypull_vs_eta
private

Definition at line 179 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::dxyres_vs_eta
private

Definition at line 175 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::dxyres_vs_pt
private

Definition at line 176 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::dzpull_vs_eta
private

Definition at line 179 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::dzres_vs_eta
private

Definition at line 175 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::dzres_vs_pt
private

Definition at line 176 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::etares_vs_eta
private

Definition at line 158 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_assochi2
private

Definition at line 166 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_assochi2_prob
private

Definition at line 166 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_chi2mean_vs_phi
private

Definition at line 172 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_chi2meanh
private

Definition at line 170 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_chi2meanhitsh
private

Definition at line 172 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_dxypulleta
private

Definition at line 181 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_dzpulleta
private

Definition at line 181 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_hits_phi
private

Definition at line 171 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_losthits
private

Definition at line 155 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_losthits_eta
private

Definition at line 170 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_nchi2
private

Definition at line 155 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_nchi2_prob
private

Definition at line 155 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_phipulleta
private

Definition at line 181 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_phipullphi
private

Definition at line 182 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_ptpulleta
private

Definition at line 181 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_ptpullphi
private

Definition at line 182 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_ptshifteta
private

Definition at line 159 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_thetapulleta
private

Definition at line 181 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::h_thetapullphi
private

Definition at line 182 of file MuonTrackValidator.h.

bool MuonTrackValidator::MABH
private

Definition at line 152 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

double MuonTrackValidator::maxPhi
private

Definition at line 141 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

double MuonTrackValidator::minPhi
private

Definition at line 141 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

std::vector<MonitorElement*> MuonTrackValidator::nhits_vs_phi
private

Definition at line 160 of file MuonTrackValidator.h.

int MuonTrackValidator::nintPhi
private

Definition at line 142 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

std::vector<MonitorElement*> MuonTrackValidator::nlosthits_vs_eta
private

Definition at line 169 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::phimean_vs_eta_phi
private

Definition at line 163 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::phipull_vs_eta
private

Definition at line 179 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::phipull_vs_phi
private

Definition at line 180 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::phires_vs_eta
private

Definition at line 175 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::phires_vs_phi
private

Definition at line 160 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::phires_vs_pt
private

Definition at line 176 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::ptmean_vs_eta_phi
private

Definition at line 163 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::ptpull_vs_eta
private

Definition at line 179 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::ptpull_vs_phi
private

Definition at line 180 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::ptres_vs_eta
private

Definition at line 175 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::ptres_vs_phi
private

Definition at line 160 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::ptres_vs_pt
private

Definition at line 176 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::thetapull_vs_eta
private

Definition at line 179 of file MuonTrackValidator.h.

std::vector<MonitorElement*> MuonTrackValidator::thetapull_vs_phi
private

Definition at line 180 of file MuonTrackValidator.h.

TrackingParticleSelector MuonTrackValidator::tpSelector
private

Definition at line 146 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::UseAssociators
private

Definition at line 140 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::useGsf
private

Definition at line 143 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().