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:
DQMEDAnalyzer MuonTrackValidatorBase edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > > edm::stream::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &)
 Method called before the event loop. More...
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
 
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 DQMEDAnalyzer
virtual void beginRun (edm::Run const &, edm::EventSetup const &) final
 
virtual void beginStream (edm::StreamID id) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer (void)
 
virtual void endLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
virtual void endRunSummary (edm::Run const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
uint32_t streamId () const
 
- Public Member Functions inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (std::string const &iProcessName, std::string const &iModuleLabel, bool iPrint, std::vector< char const * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

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::EDGetTokenT
< SimHitTPAssociationProducer::SimHitTPAssociationList
_simHitTpMapTag
 
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
 
edm::EDGetTokenT
< reco::RecoToSimCollection
recoToSimCollection_Token
 
edm::EDGetTokenT
< reco::SimToRecoCollection
simToRecoCollection_Token
 
std::vector< MonitorElement * > thetapull_vs_eta
 
std::vector< MonitorElement * > thetapull_vs_phi
 
TrackingParticleSelector tpSelector
 
bool UseAssociators
 
bool useGEMs_
 
bool useGsf
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDAnalyzerBase
typedef EDAnalyzerAdaptorBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static std::shared_ptr
< dqmDetails::NoCache
globalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
 
static std::shared_ptr
< dqmDetails::NoCache
globalBeginRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *)
 
static void globalEndLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *, dqmDetails::NoCache *)
 
static void globalEndRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *, dqmDetails::NoCache *)
 
- Static Public Member Functions inherited from edm::stream::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- 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)
 
- 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, edm::ConsumesCollector iC)
 Constructor. More...
 
 MuonTrackValidatorBase (const edm::ParameterSet &pset)
 
void setUpVectors ()
 
virtual ~MuonTrackValidatorBase ()
 Destructor. More...
 
- Protected Attributes inherited from MuonTrackValidatorBase
std::vector< std::string > associators
 
edm::InputTag bsSrc
 
edm::EDGetTokenT< reco::BeamSpotbsSrc_Token
 
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_GEMhits_eta
 
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 * > nGEMhits_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
 
edm::EDGetTokenT
< TrackingParticleCollection
tp_effic_Token
 
edm::EDGetTokenT
< TrackingParticleCollection
tp_fake_Token
 
std::vector< edm::EDGetTokenT
< edm::View< reco::Track > > > 
track_Collection_Token
 
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

Definition at line 18 of file MuonTrackValidator.h.

Constructor & Destructor Documentation

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

Constructor.

Definition at line 21 of file MuonTrackValidator.h.

References _simHitTpMapTag, associatormap, MuonTrackValidatorBase::associators, BiDirectional_RecoToSim_association, MuonTrackValidatorBase::bsSrc, MuonTrackValidatorBase::bsSrc_Token, edm::EDConsumerBase::consumes(), cosmictpSelector, dirName_, edm::ParameterSet::dump(), edm::ParameterSet::getParameter(), HLT_FULL_cff::InputTag, MuonTrackValidatorBase::label, MuonTrackValidatorBase::label_tp_effic, MuonTrackValidatorBase::label_tp_fake, MABH, maxPhi, minPhi, nintPhi, recoToSimCollection_Token, simToRecoCollection_Token, AlCaHLTBitMon_QueryRunRegistry::string, MuonTrackValidatorBase::tp_effic_Token, MuonTrackValidatorBase::tp_fake_Token, tpSelector, MuonTrackValidatorBase::track_Collection_Token, UseAssociators, useGEMs_, useGsf, MuonTrackValidatorBase::usemuon, and MuonTrackValidatorBase::usetracker.

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

Destructor.

Definition at line 137 of file MuonTrackValidator.h.

137 { }

Member Function Documentation

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

Method called before the event loop.

Method called once per event

Implements edm::stream::EDAnalyzerBase.

Definition at line 229 of file MuonTrackValidator.cc.

References funct::abs(), reco::TrackBase::charge(), reco::TrackBase::chi2(), funct::cos(), reco::TrackBase::dxy(), reco::TrackBase::dxyError(), reco::TrackBase::dz(), reco::TrackBase::dzError(), edm::AssociationMap< Tag >::end(), reco::TrackBase::eta(), f, edm::AssociationMap< Tag >::find(), reco::Track::found(), HLT_FULL_cff::fraction, edm::EventSetup::get(), edm::Ref< C, T, F >::get(), edm::Event::getByToken(), getEta(), reco::TrackBase::hitPattern(), i, edm::RefToBase< T >::key(), edm::Ref< C, T, F >::key(), diffTwoXMLs::label, LogTrace, M_PI, min(), TrackingParticle::momentum(), reco::TrackBase::momentum(), reco::TrackBase::ndof(), reco::TrackBase::normalizedChi2(), reco::TrackBase::numberOfLostHits(), reco::TrackBase::numberOfValidHits(), reco::HitPattern::numberOfValidMuonCSCHits(), reco::HitPattern::numberOfValidMuonDTHits(), reco::HitPattern::numberOfValidMuonGEMHits(), reco::HitPattern::numberOfValidMuonRPCHits(), reco::TrackBase::parameters(), edm::AssociationMap< Tag >::post_insert(), edm::Handle< T >::product(), reco::TrackBase::pt(), HLT_FULL_cff::quality, dt_dqm_sourceclient_common_cff::reco, funct::sin(), mathSSE::sqrt(), reco::TrackBase::theta(), tmp, HLT_FULL_cff::trackCollection, TrackingParticle::vertex(), and w.

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

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

Implements DQMEDAnalyzer.

Definition at line 26 of file MuonTrackValidator.cc.

References ecalcalib_dqm_sourceclient-live_cfg::algo, DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), DQMStore::IBooker::bookProfile(), DQMStore::IBooker::bookProfile2D(), DQMStore::IBooker::cd(), TrackerOfflineValidation_Dqm_cff::dirName, getTH1F(), getTH2F(), DQMStore::IBooker::goUp(), edm::InputTag::instance(), j, edm::InputTag::label(), diffTwoXMLs::label, bookConverter::max, gather_cfg::maxDxy, min(), HLT_FULL_cff::minHit, nint(), edm::InputTag::process(), python.rootplot.root2matplotlib::replace(), and DQMStore::IBooker::setCurrentFolder().

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

Method called at the end of the event loop.

Reimplemented from edm::stream::EDAnalyzerBase.

Definition at line 892 of file MuonTrackValidator.cc.

References dbe_, diffTwoXMLs::label, GenerateHcalLaserBadRunList::out, and w.

892  {
893 
894  int w=0;
895  for (unsigned int ww=0;ww<associators.size();ww++){
896  for (unsigned int www=0;www<label.size();www++){
897 
898  //chi2 and #hit vs eta: get mean from 2D histos
905 
907  //vs phi
911 
916 
921 
926 
931 
936 
941 
944 
947 
948  if (MABH) {
955  }
956 
957  w++;
958  }
959  }
960 
961  if ( out.size() != 0 && dbe_ ) dbe_->save(out);
962 }
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
const double w
Definition: UKUtility.cc:23
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
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_GEMhits_eta
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 * > nGEMhits_vs_eta
std::vector< MonitorElement * > h_chi2meanh
std::vector< MonitorElement * > nCSChits_vs_eta
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 964 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().

966  {
967  pt = track.pt();
968  ptError = track.ptError();
969  qoverp = track.qoverp();
970  qoverpError = track.qoverpError();
971  lambda = track.lambda();
972  lambdaError = track.lambdaError();
973  phi = track.phi();
974  phiError = track.phiError();
975 }
double qoverp() const
q / p
Definition: TrackBase.h:568
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:640
double pt() const
track transverse momentum
Definition: TrackBase.h:616
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:758
double phiError() const
error on phi
Definition: TrackBase.h:785
double lambda() const
Lambda angle.
Definition: TrackBase.h:580
double qoverpError() const
error on signed transverse curvature
Definition: TrackBase.h:752
double lambdaError() const
error on lambda
Definition: TrackBase.h:773
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 977 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().

979  {
980  pt = gsfTrack.ptMode();
981  ptError = gsfTrack.ptModeError();
982  qoverp = gsfTrack.qoverpMode();
983  qoverpError = gsfTrack.qoverpModeError();
984  lambda = gsfTrack.lambdaMode();
985  lambdaError = gsfTrack.lambdaModeError();
986  phi = gsfTrack.phiMode();
987  phiError = gsfTrack.phiModeError();
988 }
double phiModeError() const
error on phi from mode
Definition: GsfTrack.h:94
double lambdaMode() const
Lambda angle from mode.
Definition: GsfTrack.h:45
double qoverpMode() const
q/p from mode
Definition: GsfTrack.h:41
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
Definition: GsfTrack.h:81
double qoverpModeError() const
error on signed transverse curvature from mode
Definition: GsfTrack.h:79
double phiMode() const
azimuthal angle of momentum vector from mode
Definition: GsfTrack.h:57
double lambdaModeError() const
error on lambda from mode
Definition: GsfTrack.h:90
double ptMode() const
track transverse momentum from mode
Definition: GsfTrack.h:49

Member Data Documentation

edm::EDGetTokenT<SimHitTPAssociationProducer::SimHitTPAssociationList> MuonTrackValidator::_simHitTpMapTag
private

Definition at line 162 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

edm::InputTag MuonTrackValidator::associatormap
private

Definition at line 159 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::BiDirectional_RecoToSim_association
private

Definition at line 175 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 194 of file MuonTrackValidator.h.

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

Definition at line 183 of file MuonTrackValidator.h.

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

Definition at line 185 of file MuonTrackValidator.h.

CosmicTrackingParticleSelector MuonTrackValidator::cosmictpSelector
private

Definition at line 172 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 200 of file MuonTrackValidator.h.

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

Definition at line 201 of file MuonTrackValidator.h.

std::string MuonTrackValidator::dirName_
private

Definition at line 158 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 204 of file MuonTrackValidator.h.

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

Definition at line 200 of file MuonTrackValidator.h.

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

Definition at line 201 of file MuonTrackValidator.h.

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

Definition at line 204 of file MuonTrackValidator.h.

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

Definition at line 200 of file MuonTrackValidator.h.

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

Definition at line 201 of file MuonTrackValidator.h.

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

Definition at line 183 of file MuonTrackValidator.h.

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

Definition at line 191 of file MuonTrackValidator.h.

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

Definition at line 191 of file MuonTrackValidator.h.

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

Definition at line 197 of file MuonTrackValidator.h.

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

Definition at line 195 of file MuonTrackValidator.h.

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

Definition at line 197 of file MuonTrackValidator.h.

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 196 of file MuonTrackValidator.h.

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

Definition at line 180 of file MuonTrackValidator.h.

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

Definition at line 195 of file MuonTrackValidator.h.

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

Definition at line 180 of file MuonTrackValidator.h.

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

Definition at line 180 of file MuonTrackValidator.h.

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 207 of file MuonTrackValidator.h.

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 207 of file MuonTrackValidator.h.

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

Definition at line 184 of file MuonTrackValidator.h.

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 207 of file MuonTrackValidator.h.

bool MuonTrackValidator::MABH
private

Definition at line 177 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

double MuonTrackValidator::maxPhi
private

Definition at line 166 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

double MuonTrackValidator::minPhi
private

Definition at line 166 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 185 of file MuonTrackValidator.h.

int MuonTrackValidator::nintPhi
private

Definition at line 167 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 194 of file MuonTrackValidator.h.

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

Definition at line 188 of file MuonTrackValidator.h.

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

Definition at line 204 of file MuonTrackValidator.h.

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

Definition at line 205 of file MuonTrackValidator.h.

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

Definition at line 200 of file MuonTrackValidator.h.

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

Definition at line 185 of file MuonTrackValidator.h.

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

Definition at line 201 of file MuonTrackValidator.h.

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

Definition at line 188 of file MuonTrackValidator.h.

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

Definition at line 204 of file MuonTrackValidator.h.

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

Definition at line 205 of file MuonTrackValidator.h.

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

Definition at line 200 of file MuonTrackValidator.h.

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

Definition at line 185 of file MuonTrackValidator.h.

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

Definition at line 201 of file MuonTrackValidator.h.

edm::EDGetTokenT<reco::RecoToSimCollection> MuonTrackValidator::recoToSimCollection_Token
private

Definition at line 161 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

edm::EDGetTokenT<reco::SimToRecoCollection> MuonTrackValidator::simToRecoCollection_Token
private

Definition at line 160 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 204 of file MuonTrackValidator.h.

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

Definition at line 205 of file MuonTrackValidator.h.

TrackingParticleSelector MuonTrackValidator::tpSelector
private

Definition at line 171 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::UseAssociators
private

Definition at line 164 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::useGEMs_
private

Definition at line 165 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::useGsf
private

Definition at line 168 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().