CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MTVHistoProducerAlgoForTracker.h
Go to the documentation of this file.
1 #ifndef Validation_RecoTrack_MTVHistoProducerAlgoForTracker_h
2 #define Validation_RecoTrack_MTVHistoProducerAlgoForTracker_h
3 
4 /* \author B.Mangano, UCSD
5  *
6  * Concrete class implementing the MTVHistoProducerAlgo interface.
7  * To be used within the MTV to fill histograms for Tracker tracks.
8  */
9 
12 
19 
22 
25 
26 
27 
29  public:
34 
35  void bookSimHistos(DQMStore::IBooker& ibook);
38  void bookRecoHistos(DQMStore::IBooker& ibook);
41 
42 
44  void fill_simTrackBased_histos(int numSimTracks);
45 
46 
48  const TrackingParticle& tp,
49  const TrackingParticle::Vector& momentumTP, const TrackingParticle::Point& vertexTP,
50  double dxy, double dz,
51  double dxyPV, double dzPV,
52  int nSimHits,
53  int nSimLayers, int nSimPixelLayers, int nSimStripMonoAndStereoLayers,
54  const reco::Track* track,
55  int numVertices,
56  double dR,
57  const math::XYZPoint *pvPosition);
58 
60  const reco::GenParticle& tp,
61  const TrackingParticle::Vector& momentumTP, const TrackingParticle::Point& vertexTP,
62  double dxy, double dz, int nSimHits,
63  const reco::Track* track,
64  int numVertices);
65 
66 
68  const reco::Track& track,
69  const math::XYZPoint& bsPosition,
70  const math::XYZPoint *pvPosition,
71  bool isMatched,
72  bool isSigMatched,
73  bool isChargeMatched,
74  int numAssocRecoTracks,
75  int numVertices,
76  int nSimHits,
77  double sharedFraction,
78  double dR);
79 
80  void fill_dedx_recoTrack_histos(int count, const edm::RefToBase<reco::Track>& trackref, const std::vector< const edm::ValueMap<reco::DeDxData> *>& v_dEdx);
81 
83  const reco::Track& track);
84 
86  int assTracks,
87  int numRecoTracks,
88  int numSimTracks);
89 
90 
92  const TrackingParticle::Vector& momentumTP,
93  const TrackingParticle::Point& vertexTP,
94  int chargeTP,
95  const reco::Track& track,
96  const math::XYZPoint& bsPosition);
97 
98  private:
99 
101  void getRecoMomentum (const reco::Track& track, double& pt, double& ptError,
102  double& qoverp, double& qoverpError, double& lambda, double& lambdaError,
103  double& phi, double& phiError ) const;
105  void getRecoMomentum (const reco::GsfTrack& gsfTrack, double& pt, double& ptError,
106  double& qoverp, double& qoverpError, double& lambda, double& lambdaError,
107  double& phi, double& phiError) const;
108 
109  double getEta(double eta);
110 
111  double getPt(double pt);
112 
113 
114  //private data members
115  std::unique_ptr<TrackingParticleSelector> generalTpSelector;
116  std::unique_ptr<TrackingParticleSelector> TpSelectorForEfficiencyVsEta;
117  std::unique_ptr<TrackingParticleSelector> TpSelectorForEfficiencyVsPhi;
118  std::unique_ptr<TrackingParticleSelector> TpSelectorForEfficiencyVsPt;
119  std::unique_ptr<TrackingParticleSelector> TpSelectorForEfficiencyVsVTXR;
120  std::unique_ptr<TrackingParticleSelector> TpSelectorForEfficiencyVsVTXZ;
121 
122  std::unique_ptr<GenParticleCustomSelector> generalGpSelector;
123  std::unique_ptr<GenParticleCustomSelector> GpSelectorForEfficiencyVsEta;
124  std::unique_ptr<GenParticleCustomSelector> GpSelectorForEfficiencyVsPhi;
125  std::unique_ptr<GenParticleCustomSelector> GpSelectorForEfficiencyVsPt;
126  std::unique_ptr<GenParticleCustomSelector> GpSelectorForEfficiencyVsVTXR;
127  std::unique_ptr<GenParticleCustomSelector> GpSelectorForEfficiencyVsVTXZ;
128 
129  double minEta, maxEta; int nintEta; bool useFabsEta;
130  double minPt, maxPt; int nintPt; bool useInvPt; bool useLogPt;
131  double minHit, maxHit; int nintHit;
132  double minPu, maxPu; int nintPu;
134  double minPhi, maxPhi; int nintPhi;
135  double minDxy, maxDxy; int nintDxy;
136  double minDz, maxDz; int nintDz;
138  double minZpos, maxZpos; int nintZpos;
139  double mindr, maxdr; int nintdr;
140  double minChi2, maxChi2; int nintChi2;
141  double minDeDx, maxDeDx; int nintDeDx;
144 
145  //
151 
152  double maxDzpvCum; int nintDzpvCum;
154 
155  //sim
157 
158  //1D
159  std::vector<MonitorElement*> h_tracks, h_fakes, h_hits, h_charge, h_algo;;
160  std::vector<MonitorElement*> h_recoeta, h_assoceta, h_assoc2eta, h_simuleta, h_loopereta, h_misideta, h_pileupeta;
172 
173  std::vector<MonitorElement*> h_assocvertpos, h_simulvertpos, h_assoczpos, h_simulzpos;
174  std::vector<MonitorElement*> h_assocdr, h_assoc2dr, h_simuldr, h_recodr, h_pileupdr;
175  std::vector<MonitorElement*> h_recochi2, h_assoc2chi2, h_looperchi2, h_misidchi2, h_pileupchi2;
179  std::vector<MonitorElement*> h_assoc2_ootpu_eta, h_assoc2_ootpu_vertcount;
180  std::vector<MonitorElement*> h_reco_ootpu_eta, h_reco_ootpu_vertcount;
181  std::vector<MonitorElement*> h_con_eta, h_con_vertcount, h_con_zpos;
182 
185 
188 
189  // dE/dx
190  // in the future these might become an array
191  std::vector<std::vector<MonitorElement*>> h_dedx_estim;
192  std::vector<std::vector<MonitorElement*>> h_dedx_nom;
193  std::vector<std::vector<MonitorElement*>> h_dedx_sat;
194 
195  //2D
196  std::vector<MonitorElement*> nrec_vs_nsim;
197  std::vector<MonitorElement*> nrecHit_vs_nsimHit_sim2rec;
198  std::vector<MonitorElement*> nrecHit_vs_nsimHit_rec2sim;
199 
200  //assoc hits
201  std::vector<MonitorElement*> h_assocFraction, h_assocSharedHit;
202 
203  //#hit vs eta: to be used with doProfileX
204  std::vector<MonitorElement*> nhits_vs_eta,
210 
211 
212  //---- second set of histograms (originally not used by the SeedGenerator)
213  //1D
215 
216  //2D
217  std::vector<MonitorElement*> chi2_vs_nhits, etares_vs_eta;
218  std::vector<MonitorElement*> h_ptshifteta;
219  std::vector<MonitorElement*> ptres_vs_phi, chi2_vs_phi, nhits_vs_phi, phires_vs_phi;
220 
221  //Profile2D
222  std::vector<MonitorElement*> ptmean_vs_eta_phi, phimean_vs_eta_phi;
223 
224  //assoc chi2
225  std::vector<MonitorElement*> h_assochi2, h_assochi2_prob;
226 
227  //chi2 and # lost hits vs eta: to be used with doProfileX
228  std::vector<MonitorElement*> chi2_vs_eta, nlosthits_vs_eta;
229 
230  //resolution of track params: to be used with fitslicesytool
233 
234  //pulls of track params vs eta: to be used with fitslicesytool
236  std::vector<MonitorElement*> ptpull_vs_phi, phipull_vs_phi, thetapull_vs_phi;
237 };
238 
239 #endif
std::vector< MonitorElement * > h_looperhit
std::vector< MonitorElement * > h_simul2_dzpvcut
std::vector< MonitorElement * > h_assoc2hit
std::vector< MonitorElement * > h_pileupdxypv
std::vector< MonitorElement * > h_recodxy
std::vector< MonitorElement * > h_assoc2_itpu_sig_vertcount
std::vector< MonitorElement * > h_assochit
void bookSimTrackPVAssociationHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > h_fakes
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_nchi2_prob
std::vector< MonitorElement * > h_looperpT
std::vector< MonitorElement * > h_pullDz
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsEta
std::vector< MonitorElement * > h_assoc_dzpvsigcut_pt
std::vector< MonitorElement * > h_misidlayer
std::vector< MonitorElement * > ptpull_vs_phi
void bookRecoPVAssociationHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > h_looperchi2
std::vector< MonitorElement * > h_assoczpos
std::vector< MonitorElement * > nPXFhits_vs_eta
std::vector< MonitorElement * > h_assoc2_ootpu_vertcount
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_simulzpos
std::vector< MonitorElement * > h_assochi2
std::vector< MonitorElement * > nrecHit_vs_nsimHit_rec2sim
std::vector< MonitorElement * > h_assoc2pT
std::vector< MonitorElement * > h_nmisslayers_inner
std::vector< MonitorElement * > h_simulpT
std::vector< MonitorElement * > h_looperpixellayer
std::vector< MonitorElement * > h_ptshifteta
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< MonitorElement * > h_simul_dzpvsigcut
std::vector< MonitorElement * > h_pileuphit
std::vector< MonitorElement * > h_pileupdr
std::vector< MonitorElement * > nTEChits_vs_eta
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_hits
std::vector< MonitorElement * > nLayersWithMeas_vs_eta
std::vector< MonitorElement * > h_pullPhi
std::vector< MonitorElement * > phipull_vs_phi
std::vector< std::vector< MonitorElement * > > h_dedx_estim
std::vector< MonitorElement * > h_assoc_dzpvcut_pt
std::vector< MonitorElement * > nrec_vs_nsim
std::vector< MonitorElement * > h_pileup_dzpvsigcut_pt
std::vector< MonitorElement * > h_pileuppT
std::vector< MonitorElement * > h_algo
std::vector< MonitorElement * > h_simul_dzpvcut_pt
std::vector< MonitorElement * > h_assocdz
std::vector< MonitorElement * > nTIDhits_vs_eta
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXZ
void bookSimTrackHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > phires_vs_eta
std::vector< MonitorElement * > h_pullDxy
std::vector< MonitorElement * > h_assoc2phi
std::vector< MonitorElement * > h_nchi2
std::vector< MonitorElement * > h_assoc2pu
std::vector< MonitorElement * > h_misidchi2
std::vector< MonitorElement * > h_assoc2_dzpvcut
std::vector< MonitorElement * > h_looperdxy
std::vector< MonitorElement * > h_simuleta
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_assoc3Dlayer
std::vector< MonitorElement * > h_looper3Dlayer
std::vector< MonitorElement * > h_simul2_dzpvsigcut_pt
std::vector< MonitorElement * > h_reco_dzpvcut
std::vector< MonitorElement * > h_assoc2_itpu_vertcount
std::vector< MonitorElement * > h_reco3Dlayer
std::vector< MonitorElement * > h_pileupchi2
void fill_trackBased_histos(int count, int assTracks, int numRecoTracks, int numSimTracks)
std::vector< MonitorElement * > h_assoc2dz
std::vector< MonitorElement * > chi2_vs_phi
std::vector< MonitorElement * > h_assocdzpv
std::vector< MonitorElement * > h_assocphi
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPhi
std::vector< MonitorElement * > phires_vs_phi
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, edm::ConsumesCollector &&iC)
std::vector< MonitorElement * > dzres_vs_eta
std::vector< MonitorElement * > h_misideta
std::vector< MonitorElement * > nlosthits_vs_eta
std::vector< MonitorElement * > nSTRIPlayersWith1dMeas_vs_eta
std::vector< MonitorElement * > h_recohit
std::vector< MonitorElement * > h_simul2_dzpvcut_pt
math::XYZPointD Point
point in the space
std::vector< MonitorElement * > h_looperlayer
std::vector< MonitorElement * > phires_vs_pt
std::vector< MonitorElement * > h_assoc2_dzpvsigcut
std::vector< MonitorElement * > h_assoc2_itpu_eta
void fill_generic_recoTrack_histos(int count, const reco::Track &track, const math::XYZPoint &bsPosition, const math::XYZPoint *pvPosition, bool isMatched, bool isSigMatched, bool isChargeMatched, int numAssocRecoTracks, int numVertices, int nSimHits, double sharedFraction, double dR)
void fill_ResoAndPull_recoTrack_histos(int count, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, int chargeTP, const reco::Track &track, const math::XYZPoint &bsPosition)
std::vector< MonitorElement * > h_assocpu
std::vector< MonitorElement * > h_assoc2layer
std::vector< MonitorElement * > h_assoc23Dlayer
std::vector< MonitorElement * > nPXBhits_vs_eta
std::vector< std::vector< MonitorElement * > > h_dedx_sat
std::vector< MonitorElement * > h_looperpu
std::vector< MonitorElement * > h_assoc2dxypv
std::vector< MonitorElement * > h_assoc2dxy
std::vector< MonitorElement * > h_pullQoverp
std::vector< MonitorElement * > h_simulpu
std::vector< MonitorElement * > h_assoc2chi2
std::vector< MonitorElement * > h_simuldzpv
std::vector< MonitorElement * > h_simuldr
std::vector< MonitorElement * > h_misidhit
std::vector< MonitorElement * > nSTRIPlayersWithMeas_vs_eta
std::vector< MonitorElement * > h_pileup_dzpvcut_pt
std::vector< MonitorElement * > h_reco_dzpvcut_pt
std::vector< MonitorElement * > h_assoc2eta_sig
void fill_recoAssociated_simTrack_histos(int count, const TrackingParticle &tp, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, double dxy, double dz, double dxyPV, double dzPV, int nSimHits, int nSimLayers, int nSimPixelLayers, int nSimStripMonoAndStereoLayers, const reco::Track *track, int numVertices, double dR, const math::XYZPoint *pvPosition)
std::vector< MonitorElement * > nTOBhits_vs_eta
std::vector< MonitorElement * > ptpull_vs_eta
std::vector< MonitorElement * > etares_vs_eta
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsEta
std::vector< MonitorElement * > h_recophi
std::vector< MonitorElement * > h_assocpT
std::unique_ptr< TrackingParticleSelector > generalTpSelector
std::vector< MonitorElement * > nSTRIPlayersWith2dMeas_vs_eta
std::vector< MonitorElement * > h_tracks
std::vector< MonitorElement * > nhits_vs_phi
std::vector< MonitorElement * > h_assoc2pixellayer
std::vector< MonitorElement * > h_misid3Dlayer
std::vector< MonitorElement * > nrecHit_vs_nsimHit_sim2rec
bool isMatched(TrackingRecHit const &hit)
void fill_simAssociated_recoTrack_histos(int count, const reco::Track &track)
std::vector< MonitorElement * > h_assochi2_prob
std::vector< MonitorElement * > phimean_vs_eta_phi
std::vector< MonitorElement * > h_looperdxypv
std::vector< MonitorElement * > h_charge
std::vector< MonitorElement * > h_misidpu
std::vector< MonitorElement * > h_reco_ootpu_eta
std::vector< MonitorElement * > h_loopereta
std::vector< MonitorElement * > h_misiddz
std::vector< MonitorElement * > h_simullayer
std::vector< MonitorElement * > h_assoc2_ootpu_eta
std::vector< MonitorElement * > h_pileupphi
std::vector< MonitorElement * > chi2_vs_nhits
std::vector< MonitorElement * > h_recodr
std::vector< MonitorElement * > dzpull_vs_eta
std::vector< MonitorElement * > h_simuldz
std::vector< MonitorElement * > h_misiddxy
std::vector< MonitorElement * > thetapull_vs_phi
std::vector< MonitorElement * > h_recolayer
std::vector< MonitorElement * > h_assoc2_dzpvsigcut_pt
std::vector< MonitorElement * > h_simulvertpos
std::vector< MonitorElement * > dxyres_vs_eta
std::vector< MonitorElement * > h_simuldxypv
std::vector< MonitorElement * > h_reco_dzpvsigcut_pt
std::vector< MonitorElement * > h_simulpixellayer
std::vector< MonitorElement * > h_simul_dzpvcut
std::vector< MonitorElement * > h_recopu
std::vector< MonitorElement * > h_assoc_dzpvsigcut
std::vector< MonitorElement * > h_misidpT
std::vector< MonitorElement * > h_nmisslayers_outer
std::vector< MonitorElement * > nPXLlayersWithMeas_vs_eta
std::vector< MonitorElement * > h_misiddzpv
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPhi
std::vector< MonitorElement * > nTIBhits_vs_eta
void fill_generic_simTrack_histos(const TrackingParticle::Vector &, const TrackingParticle::Point &vertex, int bx)
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
std::vector< MonitorElement * > h_simul_dzpvsigcut_pt
std::vector< MonitorElement * > h_eta
std::vector< MonitorElement * > h_pt
std::vector< MonitorElement * > cotThetares_vs_pt
std::vector< MonitorElement * > h_assoc2_itpu_sig_eta
std::vector< MonitorElement * > h_recodzpv
std::vector< MonitorElement * > h_pileuppixellayer
std::vector< MonitorElement * > h_simulphi
std::vector< MonitorElement * > h_pileup_dzpvcut
void bookRecoHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > h_pullTheta
std::vector< MonitorElement * > h_looperdzpv
std::vector< MonitorElement * > ptmean_vs_eta_phi
std::vector< MonitorElement * > h_looperphi
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXZ
std::vector< MonitorElement * > h_recodxypv
std::vector< MonitorElement * > h_assoc2dr
std::vector< MonitorElement * > h_simul2_dzpvsigcut
std::vector< MonitorElement * > dxypull_vs_eta
std::vector< MonitorElement * > ptres_vs_eta
std::vector< MonitorElement * > h_con_vertcount
std::vector< MonitorElement * > phipull_vs_eta
std::vector< MonitorElement * > h_simulhit
std::vector< MonitorElement * > h_recopixellayer
std::vector< MonitorElement * > h_con_zpos
std::vector< MonitorElement * > h_pileup_dzpvsigcut
std::vector< MonitorElement * > h_recopT
std::vector< MonitorElement * > h_pileup3Dlayer
std::vector< MonitorElement * > h_looperdz
std::vector< MonitorElement * > h_misiddxypv
std::vector< MonitorElement * > h_assocdxy
std::vector< MonitorElement * > h_misidpixellayer
void bookRecodEdxHistos(DQMStore::IBooker &ibook)
Monte Carlo truth information used for tracking validation.
std::vector< MonitorElement * > h_pileuplayer
std::vector< MonitorElement * > cotThetares_vs_eta
std::vector< MonitorElement * > h_assocFraction
std::vector< MonitorElement * > h_reco_dzpvsigcut
std::vector< MonitorElement * > h_assoc2_dzpvcut_pt
void fill_dedx_recoTrack_histos(int count, const edm::RefToBase< reco::Track > &trackref, const std::vector< const edm::ValueMap< reco::DeDxData > * > &v_dEdx)
std::unique_ptr< GenParticleCustomSelector > generalGpSelector
std::vector< MonitorElement * > h_pileupdxy
std::vector< MonitorElement * > h_recodz
std::vector< MonitorElement * > ptres_vs_pt
std::vector< MonitorElement * > h_pileupdzpv
std::vector< MonitorElement * > h_pileupdz
math::XYZVectorD Vector
point in the space
std::vector< MonitorElement * > h_reco_ootpu_vertcount
std::vector< std::vector< MonitorElement * > > h_dedx_nom
std::vector< MonitorElement * > h_assoclayer
std::vector< MonitorElement * > h_recochi2
std::vector< MonitorElement * > h_assoceta
std::vector< MonitorElement * > ptres_vs_phi
std::vector< MonitorElement * > h_con_eta
std::vector< MonitorElement * > h_assocSharedHit
std::vector< MonitorElement * > h_simul3Dlayer
std::vector< MonitorElement * > nhits_vs_eta
std::vector< MonitorElement * > h_assoc2dzpv
std::vector< MonitorElement * > h_pileupeta
std::vector< MonitorElement * > h_simuldxy
std::vector< MonitorElement * > h_assocdr
std::vector< MonitorElement * > h_assocvertpos
std::vector< MonitorElement * > h_assocpixellayer
std::vector< MonitorElement * > h_recoeta
std::vector< MonitorElement * > thetapull_vs_eta
std::vector< MonitorElement * > h_assoc_dzpvcut
std::vector< MonitorElement * > chi2_vs_eta
void bookSimHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > h_assocdxypv
std::vector< MonitorElement * > dxyres_vs_pt
std::vector< MonitorElement * > h_losthits
std::vector< MonitorElement * > h_assoc2eta
std::vector< MonitorElement * > h_misidphi
std::vector< MonitorElement * > dzres_vs_pt
std::vector< MonitorElement * > h_pileuppu