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 ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector
< ProductResolverIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

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
 
bool useME0_
 

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

138 { }

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 232 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::numberOfValidMuonME0Hits(), reco::HitPattern::numberOfValidMuonRPCHits(), reco::TrackBase::parameters(), edm::AssociationMap< Tag >::post_insert(), edm::Handle< T >::product(), reco::TrackBase::pt(), TrackCollections2monitor_cff::quality, dt_dqm_sourceclient_common_cff::reco, funct::sin(), mathSSE::sqrt(), reco::TrackBase::theta(), tmp, HLT_FULL_cff::trackCollection, TrackingParticle::vertex(), and w.

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

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

896  {
897 
898  int w=0;
899  for (unsigned int ww=0;ww<associators.size();ww++){
900  for (unsigned int www=0;www<label.size();www++){
901 
902  //chi2 and #hit vs eta: get mean from 2D histos
910 
912  //vs phi
916 
921 
926 
931 
936 
941 
946 
949 
952 
953  if (MABH) {
960  }
961 
962  w++;
963  }
964  }
965 
966  if ( out.size() != 0 && dbe_ ) dbe_->save(out);
967 }
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< MonitorElement * > nME0hits_vs_eta
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 * > h_ME0hits_eta
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 969 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().

971  {
972  pt = track.pt();
973  ptError = track.ptError();
974  qoverp = track.qoverp();
975  qoverpError = track.qoverpError();
976  lambda = track.lambda();
977  lambdaError = track.lambdaError();
978  phi = track.phi();
979  phiError = track.phiError();
980 }
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 982 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().

984  {
985  pt = gsfTrack.ptMode();
986  ptError = gsfTrack.ptModeError();
987  qoverp = gsfTrack.qoverpMode();
988  qoverpError = gsfTrack.qoverpModeError();
989  lambda = gsfTrack.lambdaMode();
990  lambdaError = gsfTrack.lambdaModeError();
991  phi = gsfTrack.phiMode();
992  phiError = gsfTrack.phiModeError();
993 }
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 163 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

edm::InputTag MuonTrackValidator::associatormap
private

Definition at line 160 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::BiDirectional_RecoToSim_association
private

Definition at line 177 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 196 of file MuonTrackValidator.h.

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

Definition at line 185 of file MuonTrackValidator.h.

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

Definition at line 187 of file MuonTrackValidator.h.

CosmicTrackingParticleSelector MuonTrackValidator::cosmictpSelector
private

Definition at line 174 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 202 of file MuonTrackValidator.h.

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

Definition at line 203 of file MuonTrackValidator.h.

std::string MuonTrackValidator::dirName_
private

Definition at line 159 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 202 of file MuonTrackValidator.h.

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

Definition at line 203 of file MuonTrackValidator.h.

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 202 of file MuonTrackValidator.h.

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

Definition at line 203 of file MuonTrackValidator.h.

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

Definition at line 185 of file MuonTrackValidator.h.

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

Definition at line 193 of file MuonTrackValidator.h.

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

Definition at line 193 of file MuonTrackValidator.h.

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

Definition at line 199 of file MuonTrackValidator.h.

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

Definition at line 197 of file MuonTrackValidator.h.

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

Definition at line 199 of file MuonTrackValidator.h.

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

Definition at line 208 of file MuonTrackValidator.h.

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

Definition at line 208 of file MuonTrackValidator.h.

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

Definition at line 198 of file MuonTrackValidator.h.

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

Definition at line 182 of file MuonTrackValidator.h.

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

Definition at line 197 of file MuonTrackValidator.h.

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

Definition at line 182 of file MuonTrackValidator.h.

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

Definition at line 182 of file MuonTrackValidator.h.

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

Definition at line 208 of file MuonTrackValidator.h.

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

Definition at line 209 of file MuonTrackValidator.h.

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

Definition at line 208 of file MuonTrackValidator.h.

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

Definition at line 209 of file MuonTrackValidator.h.

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

Definition at line 186 of file MuonTrackValidator.h.

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

Definition at line 208 of file MuonTrackValidator.h.

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

Definition at line 209 of file MuonTrackValidator.h.

bool MuonTrackValidator::MABH
private

Definition at line 179 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

double MuonTrackValidator::maxPhi
private

Definition at line 168 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

double MuonTrackValidator::minPhi
private

Definition at line 168 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 187 of file MuonTrackValidator.h.

int MuonTrackValidator::nintPhi
private

Definition at line 169 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 196 of file MuonTrackValidator.h.

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

Definition at line 190 of file MuonTrackValidator.h.

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 207 of file MuonTrackValidator.h.

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

Definition at line 202 of file MuonTrackValidator.h.

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

Definition at line 187 of file MuonTrackValidator.h.

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

Definition at line 203 of file MuonTrackValidator.h.

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

Definition at line 190 of file MuonTrackValidator.h.

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 207 of file MuonTrackValidator.h.

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

Definition at line 202 of file MuonTrackValidator.h.

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

Definition at line 187 of file MuonTrackValidator.h.

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

Definition at line 203 of file MuonTrackValidator.h.

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

Definition at line 162 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 161 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

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

Definition at line 206 of file MuonTrackValidator.h.

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

Definition at line 207 of file MuonTrackValidator.h.

TrackingParticleSelector MuonTrackValidator::tpSelector
private

Definition at line 173 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::UseAssociators
private

Definition at line 165 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::useGEMs_
private

Definition at line 166 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::useGsf
private

Definition at line 170 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().

bool MuonTrackValidator::useME0_
private

Definition at line 167 of file MuonTrackValidator.h.

Referenced by MuonTrackValidator().