CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MTVHistoProducerAlgoForTracker.cc
Go to the documentation of this file.
3 
8 
10 
11 #include "TMath.h"
12 #include <TF1.h>
13 
14 using namespace std;
15 
17  //parameters for _vs_eta plots
18  minEta = pset.getParameter<double>("minEta");
19  maxEta = pset.getParameter<double>("maxEta");
20  nintEta = pset.getParameter<int>("nintEta");
21  useFabsEta = pset.getParameter<bool>("useFabsEta");
22 
23  //parameters for _vs_pt plots
24  minPt = pset.getParameter<double>("minPt");
25  maxPt = pset.getParameter<double>("maxPt");
26  nintPt = pset.getParameter<int>("nintPt");
27  useInvPt = pset.getParameter<bool>("useInvPt");
28  useLogPt = pset.getUntrackedParameter<bool>("useLogPt",false);
29 
30  //parameters for _vs_Hit plots
31  minHit = pset.getParameter<double>("minHit");
32  maxHit = pset.getParameter<double>("maxHit");
33  nintHit = pset.getParameter<int>("nintHit");
34 
35  //parameters for _vs_Pu plots
36  minPu = pset.getParameter<double>("minPu");
37  maxPu = pset.getParameter<double>("maxPu");
38  nintPu = pset.getParameter<int>("nintPu");
39 
40  //parameters for _vs_Layer plots
41  minLayers = pset.getParameter<double>("minLayers");
42  maxLayers = pset.getParameter<double>("maxLayers");
43  nintLayers = pset.getParameter<int>("nintLayers");
44 
45  //parameters for _vs_phi plots
46  minPhi = pset.getParameter<double>("minPhi");
47  maxPhi = pset.getParameter<double>("maxPhi");
48  nintPhi = pset.getParameter<int>("nintPhi");
49 
50  //parameters for _vs_Dxy plots
51  minDxy = pset.getParameter<double>("minDxy");
52  maxDxy = pset.getParameter<double>("maxDxy");
53  nintDxy = pset.getParameter<int>("nintDxy");
54 
55  //parameters for _vs_Dz plots
56  minDz = pset.getParameter<double>("minDz");
57  maxDz = pset.getParameter<double>("maxDz");
58  nintDz = pset.getParameter<int>("nintDz");
59 
60  //parameters for _vs_ProductionVertexTransvPosition plots
61  minVertpos = pset.getParameter<double>("minVertpos");
62  maxVertpos = pset.getParameter<double>("maxVertpos");
63  nintVertpos = pset.getParameter<int>("nintVertpos");
64 
65  //parameters for _vs_ProductionVertexZPosition plots
66  minZpos = pset.getParameter<double>("minZpos");
67  maxZpos = pset.getParameter<double>("maxZpos");
68  nintZpos = pset.getParameter<int>("nintZpos");
69 
70  //parameters for _vs_dR plots
71  mindr = pset.getParameter<double>("mindr");
72  maxdr = pset.getParameter<double>("maxdr");
73  nintdr = pset.getParameter<int>("nintdr");
74 
75  // paramers for _vs_chi2 plots
76  minChi2 = pset.getParameter<double>("minChi2");
77  maxChi2 = pset.getParameter<double>("maxChi2");
78  nintChi2 = pset.getParameter<int>("nintChi2");
79 
80  //parameters for dE/dx plots
81  minDeDx = pset.getParameter<double>("minDeDx");
82  maxDeDx = pset.getParameter<double>("maxDeDx");
83  nintDeDx = pset.getParameter<int>("nintDeDx");
84 
85  //parameters for Pileup plots
86  minVertcount = pset.getParameter<double>("minVertcount");
87  maxVertcount = pset.getParameter<double>("maxVertcount");
88  nintVertcount = pset.getParameter<int>("nintVertcount");
89 
90  //parameters for number of tracks plots
91  minTracks = pset.getParameter<double>("minTracks");
92  maxTracks = pset.getParameter<double>("maxTracks");
93  nintTracks = pset.getParameter<int>("nintTracks");
94 
95  //parameters for resolution plots
96  ptRes_rangeMin = pset.getParameter<double>("ptRes_rangeMin");
97  ptRes_rangeMax = pset.getParameter<double>("ptRes_rangeMax");
98  ptRes_nbin = pset.getParameter<int>("ptRes_nbin");
99 
100  phiRes_rangeMin = pset.getParameter<double>("phiRes_rangeMin");
101  phiRes_rangeMax = pset.getParameter<double>("phiRes_rangeMax");
102  phiRes_nbin = pset.getParameter<int>("phiRes_nbin");
103 
104  cotThetaRes_rangeMin = pset.getParameter<double>("cotThetaRes_rangeMin");
105  cotThetaRes_rangeMax = pset.getParameter<double>("cotThetaRes_rangeMax");
106  cotThetaRes_nbin = pset.getParameter<int>("cotThetaRes_nbin");
107 
108  dxyRes_rangeMin = pset.getParameter<double>("dxyRes_rangeMin");
109  dxyRes_rangeMax = pset.getParameter<double>("dxyRes_rangeMax");
110  dxyRes_nbin = pset.getParameter<int>("dxyRes_nbin");
111 
112  dzRes_rangeMin = pset.getParameter<double>("dzRes_rangeMin");
113  dzRes_rangeMax = pset.getParameter<double>("dzRes_rangeMax");
114  dzRes_nbin = pset.getParameter<int>("dzRes_nbin");
115 
116 
117  //--- tracking particle selectors for efficiency measurements
118  using namespace edm;
119 
120  ParameterSet generalTpSelectorPSet = pset.getParameter<ParameterSet>("generalTpSelector");
121  ParameterSet TpSelectorForEfficiencyVsEtaPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsEta");
122  ParameterSet TpSelectorForEfficiencyVsPhiPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsPhi");
123  ParameterSet TpSelectorForEfficiencyVsPtPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsPt");
124  ParameterSet TpSelectorForEfficiencyVsVTXRPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsVTXR");
125  ParameterSet TpSelectorForEfficiencyVsVTXZPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsVTXZ");
126 
127  ParameterSet generalGpSelectorPSet = pset.getParameter<ParameterSet>("generalGpSelector");
128  ParameterSet GpSelectorForEfficiencyVsEtaPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsEta");
129  ParameterSet GpSelectorForEfficiencyVsPhiPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsPhi");
130  ParameterSet GpSelectorForEfficiencyVsPtPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsPt");
131  ParameterSet GpSelectorForEfficiencyVsVTXRPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsVTXR");
132  ParameterSet GpSelectorForEfficiencyVsVTXZPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsVTXZ");
133 
134  using namespace reco::modules;
141 
148 
149  // fix for the LogScale by Ryan
150  if(useLogPt){
151  maxPt=log10(maxPt);
152  if(minPt > 0){
153  minPt=log10(minPt);
154  }
155  else{
156  edm::LogWarning("MultiTrackValidator")
157  << "minPt = "
158  << minPt << " <= 0 out of range while requesting log scale. Using minPt = 0.1.";
159  minPt=log10(0.1);
160  }
161  }
162 
163 }
164 
166  delete generalTpSelector;
172 
173  delete generalGpSelector;
179 }
180 
182  h_ptSIM.push_back( ibook.book1D("ptSIM", "generated p_{t}", nintPt, minPt, maxPt) );
183  h_etaSIM.push_back( ibook.book1D("etaSIM", "generated pseudorapidity", nintEta, minEta, maxEta) );
184  h_tracksSIM.push_back( ibook.book1D("tracksSIM","number of simulated tracks", nintTracks, minTracks, maxTracks) );
185  h_vertposSIM.push_back( ibook.book1D("vertposSIM","Transverse position of sim vertices", nintVertpos, minVertpos, maxVertpos) );
186  h_bunchxSIM.push_back( ibook.book1D("bunchxSIM", "bunch crossing", 21, -15.5, 5.5 ) );
187 
188  if(useLogPt) {
189  BinLogX(h_ptSIM.back()->getTH1F());
190  }
191 }
192 
194  h_assoceta.push_back( ibook.book1D("num_assoc(simToReco)_eta","N of associated tracks (simToReco) vs eta",nintEta,minEta,maxEta) );
195  h_simuleta.push_back( ibook.book1D("num_simul_eta","N of simulated tracks vs eta",nintEta,minEta,maxEta) );
196 
197  h_assocpT.push_back( ibook.book1D("num_assoc(simToReco)_pT","N of associated tracks (simToReco) vs pT",nintPt,minPt,maxPt) );
198  h_simulpT.push_back( ibook.book1D("num_simul_pT","N of simulated tracks vs pT",nintPt,minPt,maxPt) );
199 
200  h_assochit.push_back( ibook.book1D("num_assoc(simToReco)_hit","N of associated tracks (simToReco) vs hit",nintHit,minHit,maxHit) );
201  h_simulhit.push_back( ibook.book1D("num_simul_hit","N of simulated tracks vs hit",nintHit,minHit,maxHit) );
202 
203  h_assoclayer.push_back( ibook.book1D("num_assoc(simToReco)_layer","N of associated tracks (simToReco) vs layer",nintHit,minHit,maxHit) );
204  h_simullayer.push_back( ibook.book1D("num_simul_layer","N of simulated tracks vs layer",nintHit,minHit,maxHit) );
205 
206  h_assocpixellayer.push_back( ibook.book1D("num_assoc(simToReco)_pixellayer","N of associated tracks (simToReco) vs pixel layer",nintHit,minHit,maxHit) );
207  h_simulpixellayer.push_back( ibook.book1D("num_simul_pixellayer","N of simulated tracks vs pixel layer",nintHit,minHit,maxHit) );
208 
209  h_assoc3Dlayer.push_back( ibook.book1D("num_assoc(simToReco)_3Dlayer","N of associated tracks (simToReco) vs 3D layer",nintHit,minHit,maxHit) );
210  h_simul3Dlayer.push_back( ibook.book1D("num_simul_3Dlayer","N of simulated tracks vs 3D layer",nintHit,minHit,maxHit) );
211 
212  h_assocpu.push_back( ibook.book1D("num_assoc(simToReco)_pu","N of associated tracks (simToReco) vs pu",nintPu,minPu,maxPu) );
213  h_simulpu.push_back( ibook.book1D("num_simul_pu","N of simulated tracks vs pu",nintPu,minPu,maxPu) );
214 
215  h_assocphi.push_back( ibook.book1D("num_assoc(simToReco)_phi","N of associated tracks (simToReco) vs phi",nintPhi,minPhi,maxPhi) );
216  h_simulphi.push_back( ibook.book1D("num_simul_phi","N of simulated tracks vs phi",nintPhi,minPhi,maxPhi) );
217 
218  h_assocdxy.push_back( ibook.book1D("num_assoc(simToReco)_dxy","N of associated tracks (simToReco) vs dxy",nintDxy,minDxy,maxDxy) );
219  h_simuldxy.push_back( ibook.book1D("num_simul_dxy","N of simulated tracks vs dxy",nintDxy,minDxy,maxDxy) );
220 
221  h_assocdz.push_back( ibook.book1D("num_assoc(simToReco)_dz","N of associated tracks (simToReco) vs dz",nintDz,minDz,maxDz) );
222  h_simuldz.push_back( ibook.book1D("num_simul_dz","N of simulated tracks vs dz",nintDz,minDz,maxDz) );
223 
224  h_assocvertpos.push_back( ibook.book1D("num_assoc(simToReco)_vertpos",
225  "N of associated tracks (simToReco) vs transverse vert position",
227  h_simulvertpos.push_back( ibook.book1D("num_simul_vertpos","N of simulated tracks vs transverse vert position",
229 
230  h_assoczpos.push_back( ibook.book1D("num_assoc(simToReco)_zpos","N of associated tracks (simToReco) vs z vert position",
232  h_simulzpos.push_back( ibook.book1D("num_simul_zpos","N of simulated tracks vs z vert position",nintZpos,minZpos,maxZpos) );
233 
234  h_assocdr.push_back( ibook.book1D("num_assoc(simToReco)_dr","N of associated tracks (simToReco) vs dR",nintdr,log10(mindr),log10(maxdr)) );
235  h_simuldr.push_back( ibook.book1D("num_simul_dr","N of simulated tracks vs dR",nintdr,log10(mindr),log10(maxdr)) );
236  BinLogX(h_assocdr.back()->getTH1F());
237  BinLogX(h_simuldr.back()->getTH1F());
238 
239  nrecHit_vs_nsimHit_sim2rec.push_back( ibook.book2D("nrecHit_vs_nsimHit_sim2rec","nrecHit vs nsimHit (Sim2RecAssoc)",
241 
242  if(useLogPt){
243  BinLogX(h_assocpT.back()->getTH1F());
244  BinLogX(h_simulpT.back()->getTH1F());
245  }
246 }
247 
249  h_tracks.push_back( ibook.book1D("tracks","number of reconstructed tracks", nintTracks, minTracks, maxTracks) );
250  h_fakes.push_back( ibook.book1D("fakes","number of fake reco tracks", nintTracks, minTracks, maxTracks) );
251  h_charge.push_back( ibook.book1D("charge","charge",3,-1.5,1.5) );
252 
253  h_hits.push_back( ibook.book1D("hits", "number of hits per track", nintHit,minHit,maxHit ) );
254  h_losthits.push_back( ibook.book1D("losthits", "number of lost hits per track", nintHit,minHit,maxHit) );
255  h_nchi2.push_back( ibook.book1D("chi2", "normalized #chi^{2}", 200, 0, 20 ) );
256  h_nchi2_prob.push_back( ibook.book1D("chi2_prob", "normalized #chi^{2} probability",100,0,1));
257 
258  h_nmisslayers_inner.push_back( ibook.book1D("missing_inner_layers", "number of missing inner layers", nintLayers,minLayers,maxLayers ) );
259  h_nmisslayers_outer.push_back( ibook.book1D("missing_outer_layers", "number of missing outer layers", nintLayers,minLayers,maxLayers ) );
260 
261  h_algo.push_back( ibook.book1D("h_algo","Tracks by algo",reco::TrackBase::algoSize, 0., double(reco::TrackBase::algoSize) ) );
262  for (size_t ibin=0; ibin<reco::TrackBase::algoSize-1; ibin++)
263  h_algo.back()->setBinLabel(ibin+1,reco::TrackBase::algoNames[ibin]);
264  // h_algo.setBinLabel(ibin+1,reco::TrackBase::algoNames[ibin]);
265 
267  h_recoeta.push_back( ibook.book1D("num_reco_eta","N of reco track vs eta",nintEta,minEta,maxEta) );
268  h_assoc2eta.push_back( ibook.book1D("num_assoc(recoToSim)_eta","N of associated (recoToSim) tracks vs eta",nintEta,minEta,maxEta) );
269  h_loopereta.push_back( ibook.book1D("num_duplicate_eta","N of associated (recoToSim) duplicate tracks vs eta",nintEta,minEta,maxEta) );
270  h_misideta.push_back( ibook.book1D("num_chargemisid_eta","N of associated (recoToSim) charge misIDed tracks vs eta",nintEta,minEta,maxEta) );
271  h_pileupeta.push_back( ibook.book1D("num_pileup_eta","N of associated (recoToSim) pileup tracks vs eta",nintEta,minEta,maxEta) );
272  //
273  h_recopT.push_back( ibook.book1D("num_reco_pT","N of reco track vs pT",nintPt,minPt,maxPt) );
274  h_assoc2pT.push_back( ibook.book1D("num_assoc(recoToSim)_pT","N of associated (recoToSim) tracks vs pT",nintPt,minPt,maxPt) );
275  h_looperpT.push_back( ibook.book1D("num_duplicate_pT","N of associated (recoToSim) duplicate tracks vs pT",nintPt,minPt,maxPt) );
276  h_misidpT.push_back( ibook.book1D("num_chargemisid_pT","N of associated (recoToSim) charge misIDed tracks vs pT",nintPt,minPt,maxPt) );
277  h_pileuppT.push_back( ibook.book1D("num_pileup_pT","N of associated (recoToSim) pileup tracks vs pT",nintPt,minPt,maxPt) );
278  //
279  h_recohit.push_back( ibook.book1D("num_reco_hit","N of reco track vs hit",nintHit,minHit,maxHit) );
280  h_assoc2hit.push_back( ibook.book1D("num_assoc(recoToSim)_hit","N of associated (recoToSim) tracks vs hit",nintHit,minHit,maxHit) );
281  h_looperhit.push_back( ibook.book1D("num_duplicate_hit","N of associated (recoToSim) duplicate tracks vs hit",nintHit,minHit,maxHit) );
282  h_misidhit.push_back( ibook.book1D("num_chargemisid_hit","N of associated (recoToSim) charge misIDed tracks vs hit",nintHit,minHit,maxHit) );
283  h_pileuphit.push_back( ibook.book1D("num_pileup_hit","N of associated (recoToSim) pileup tracks vs hit",nintHit,minHit,maxHit) );
284  //
285  h_recolayer.push_back( ibook.book1D("num_reco_layer","N of reco track vs layer",nintHit,minHit,maxHit) );
286  h_assoc2layer.push_back( ibook.book1D("num_assoc(recoToSim)_layer","N of associated (recoToSim) tracks vs layer",nintHit,minHit,maxHit) );
287  h_looperlayer.push_back( ibook.book1D("num_duplicate_layer","N of associated (recoToSim) duplicate tracks vs layer",nintHit,minHit,maxHit) );
288  h_misidlayer.push_back( ibook.book1D("num_chargemisid_layer","N of associated (recoToSim) charge misIDed tracks vs layer",nintHit,minHit,maxHit) );
289  h_pileuplayer.push_back( ibook.book1D("num_pileup_layer","N of associated (recoToSim) pileup tracks vs layer",nintHit,minHit,maxHit) );
290  //
291  h_recopixellayer.push_back( ibook.book1D("num_reco_pixellayer","N of reco track vs pixellayer",nintHit,minHit,maxHit) );
292  h_assoc2pixellayer.push_back( ibook.book1D("num_assoc(recoToSim)_pixellayer","N of associated (recoToSim) tracks vs pixellayer",nintHit,minHit,maxHit) );
293  h_looperpixellayer.push_back( ibook.book1D("num_duplicate_pixellayer","N of associated (recoToSim) duplicate tracks vs pixellayer",nintHit,minHit,maxHit) );
294  h_misidpixellayer.push_back( ibook.book1D("num_chargemisid_pixellayer","N of associated (recoToSim) charge misIDed tracks vs pixellayer",nintHit,minHit,maxHit) );
295  h_pileuppixellayer.push_back( ibook.book1D("num_pileup_pixellayer","N of associated (recoToSim) pileup tracks vs pixellayer",nintHit,minHit,maxHit) );
296  //
297  h_reco3Dlayer.push_back( ibook.book1D("num_reco_3Dlayer","N of reco track vs 3D layer",nintHit,minHit,maxHit) );
298  h_assoc23Dlayer.push_back( ibook.book1D("num_assoc(recoToSim)_3Dlayer","N of associated (recoToSim) tracks vs 3D layer",nintHit,minHit,maxHit) );
299  h_looper3Dlayer.push_back( ibook.book1D("num_duplicate_3Dlayer","N of associated (recoToSim) duplicate tracks vs 3D layer",nintHit,minHit,maxHit) );
300  h_misid3Dlayer.push_back( ibook.book1D("num_chargemisid_3Dlayer","N of associated (recoToSim) charge misIDed tracks vs 3D layer",nintHit,minHit,maxHit) );
301  h_pileup3Dlayer.push_back( ibook.book1D("num_pileup_3Dlayer","N of associated (recoToSim) pileup tracks vs 3D layer",nintHit,minHit,maxHit) );
302  //
303  h_recopu.push_back( ibook.book1D("num_reco_pu","N of reco track vs pu",nintPu,minPu,maxPu) );
304  h_assoc2pu.push_back( ibook.book1D("num_assoc(recoToSim)_pu","N of associated (recoToSim) tracks vs pu",nintPu,minPu,maxPu) );
305  h_looperpu.push_back( ibook.book1D("num_duplicate_pu","N of associated (recoToSim) duplicate tracks vs pu",nintPu,minPu,maxPu) );
306  h_misidpu.push_back( ibook.book1D("num_chargemisid_pu","N of associated (recoToSim) charge misIDed tracks vs pu",nintPu,minPu,maxPu) );
307  h_pileuppu.push_back( ibook.book1D("num_pileup_pu","N of associated (recoToSim) pileup tracks vs pu",nintPu,minPu,maxPu) );
308  //
309  h_recophi.push_back( ibook.book1D("num_reco_phi","N of reco track vs phi",nintPhi,minPhi,maxPhi) );
310  h_assoc2phi.push_back( ibook.book1D("num_assoc(recoToSim)_phi","N of associated (recoToSim) tracks vs phi",nintPhi,minPhi,maxPhi) );
311  h_looperphi.push_back( ibook.book1D("num_duplicate_phi","N of associated (recoToSim) duplicate tracks vs phi",nintPhi,minPhi,maxPhi) );
312  h_misidphi.push_back( ibook.book1D("num_chargemisid_phi","N of associated (recoToSim) charge misIDed tracks vs phi",nintPhi,minPhi,maxPhi) );
313  h_pileupphi.push_back( ibook.book1D("num_pileup_phi","N of associated (recoToSim) pileup tracks vs phi",nintPhi,minPhi,maxPhi) );
314 
315  h_recodxy.push_back( ibook.book1D("num_reco_dxy","N of reco track vs dxy",nintDxy,minDxy,maxDxy) );
316  h_assoc2dxy.push_back( ibook.book1D("num_assoc(recoToSim)_dxy","N of associated (recoToSim) tracks vs dxy",nintDxy,minDxy,maxDxy) );
317  h_looperdxy.push_back( ibook.book1D("num_duplicate_dxy","N of associated (recoToSim) looper tracks vs dxy",nintDxy,minDxy,maxDxy) );
318  h_misiddxy.push_back( ibook.book1D("num_chargemisid_dxy","N of associated (recoToSim) charge misIDed tracks vs dxy",nintDxy,minDxy,maxDxy) );
319  h_pileupdxy.push_back( ibook.book1D("num_pileup_dxy","N of associated (recoToSim) pileup tracks vs dxy",nintDxy,minDxy,maxDxy) );
320 
321  h_recodz.push_back( ibook.book1D("num_reco_dz","N of reco track vs dz",nintDz,minDz,maxDz) );
322  h_assoc2dz.push_back( ibook.book1D("num_assoc(recoToSim)_dz","N of associated (recoToSim) tracks vs dz",nintDz,minDz,maxDz) );
323  h_looperdz.push_back( ibook.book1D("num_duplicate_dz","N of associated (recoToSim) looper tracks vs dz",nintDz,minDz,maxDz) );
324  h_misiddz.push_back( ibook.book1D("num_chargemisid_versus_dz","N of associated (recoToSim) charge misIDed tracks vs dz",nintDz,minDz,maxDz) );
325  h_pileupdz.push_back( ibook.book1D("num_pileup_versus_dz","N of associated (recoToSim) pileup tracks vs dz",nintDz,minDz,maxDz) );
326 
327  h_recodr.push_back( ibook.book1D("num_reco_dr","N of reconstructed tracks vs dR",nintdr,log10(mindr),log10(maxdr)) );
328  h_assoc2dr.push_back( ibook.book1D("num_assoc(recoToSim)_dr","N of associated tracks (recoToSim) vs dR",nintdr,log10(mindr),log10(maxdr)) );
329  h_pileupdr.push_back( ibook.book1D("num_pileup_dr","N of associated (recoToSim) pileup tracks vs dR",nintdr,log10(mindr),log10(maxdr)) );
330  BinLogX(h_recodr.back()->getTH1F());
331  BinLogX(h_assoc2dr.back()->getTH1F());
332  BinLogX(h_pileupdr.back()->getTH1F());
333 
334  h_recochi2.push_back( ibook.book1D("num_reco_chi2","N of reco track vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
335  h_assoc2chi2.push_back( ibook.book1D("num_assoc(recoToSim)_chi2","N of associated (recoToSim) tracks vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
336  h_looperchi2.push_back( ibook.book1D("num_duplicate_chi2","N of associated (recoToSim) looper tracks vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
337  h_misidchi2.push_back( ibook.book1D("num_chargemisid_chi2","N of associated (recoToSim) charge misIDed tracks vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
338  h_pileupchi2.push_back( ibook.book1D("num_pileup_chi2","N of associated (recoToSim) pileup tracks vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
339 
341 
342  h_eta.push_back( ibook.book1D("eta", "pseudorapidity residue", 1000, -0.1, 0.1 ) );
343  h_pt.push_back( ibook.book1D("pullPt", "pull of p_{t}", 100, -10, 10 ) );
344  h_pullTheta.push_back( ibook.book1D("pullTheta","pull of #theta parameter",250,-25,25) );
345  h_pullPhi.push_back( ibook.book1D("pullPhi","pull of #phi parameter",250,-25,25) );
346  h_pullDxy.push_back( ibook.book1D("pullDxy","pull of dxy parameter",250,-25,25) );
347  h_pullDz.push_back( ibook.book1D("pullDz","pull of dz parameter",250,-25,25) );
348  h_pullQoverp.push_back( ibook.book1D("pullQoverp","pull of qoverp parameter",250,-25,25) );
349 
350  /* TO BE FIXED -----------
351  if (associators[ww]=="TrackAssociatorByChi2"){
352  h_assochi2.push_back( ibook.book1D("assocChi2","track association #chi^{2}",1000000,0,100000) );
353  h_assochi2_prob.push_back(ibook.book1D("assocChi2_prob","probability of association #chi^{2}",100,0,1));
354  } else if (associators[ww]=="quickTrackAssociatorByHits"){
355  h_assocFraction.push_back( ibook.book1D("assocFraction","fraction of shared hits",200,0,2) );
356  h_assocSharedHit.push_back(ibook.book1D("assocSharedHit","number of shared hits",20,0,20));
357  }
358  */
359  h_assocFraction.push_back( ibook.book1D("assocFraction","fraction of shared hits",200,0,2) );
360  h_assocSharedHit.push_back(ibook.book1D("assocSharedHit","number of shared hits",41,-0.5,40.5));
361  // ----------------------
362 
363  // use the standard error of the mean as the errors in the profile
364  chi2_vs_nhits.push_back( ibook.bookProfile("chi2mean_vs_nhits","mean #chi^{2} vs nhits",nintHit,minHit,maxHit, 100,0,10, " ") );
365 
366  etares_vs_eta.push_back( ibook.book2D("etares_vs_eta","etaresidue vs eta",nintEta,minEta,maxEta,200,-0.1,0.1) );
367  nrec_vs_nsim.push_back( ibook.book2D("nrec_vs_nsim","nrec vs nsim", nintTracks,minTracks,maxTracks, nintTracks,minTracks,maxTracks) );
368 
369  chi2_vs_eta.push_back( ibook.bookProfile("chi2mean","mean #chi^{2} vs #eta",nintEta,minEta,maxEta, 200, 0, 20, " " ));
370  chi2_vs_phi.push_back( ibook.bookProfile("chi2mean_vs_phi","mean #chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20, " " ) );
371 
372  nhits_vs_eta.push_back( ibook.bookProfile("hits_eta","mean hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
373  nPXBhits_vs_eta.push_back( ibook.bookProfile("PXBhits_vs_eta","mean # PXB its vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
374  nPXFhits_vs_eta.push_back( ibook.bookProfile("PXFhits_vs_eta","mean # PXF hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
375  nTIBhits_vs_eta.push_back( ibook.bookProfile("TIBhits_vs_eta","mean # TIB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
376  nTIDhits_vs_eta.push_back( ibook.bookProfile("TIDhits_vs_eta","mean # TID hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
377  nTOBhits_vs_eta.push_back( ibook.bookProfile("TOBhits_vs_eta","mean # TOB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
378  nTEChits_vs_eta.push_back( ibook.bookProfile("TEChits_vs_eta","mean # TEC hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
379 
380  nLayersWithMeas_vs_eta.push_back( ibook.bookProfile("LayersWithMeas_eta","mean # Layers with measurement vs eta",
382  nPXLlayersWithMeas_vs_eta.push_back( ibook.bookProfile("PXLlayersWithMeas_vs_eta","mean # PXL Layers with measurement vs eta",
384  nSTRIPlayersWithMeas_vs_eta.push_back( ibook.bookProfile("STRIPlayersWithMeas_vs_eta","mean # STRIP Layers with measurement vs eta",
386  nSTRIPlayersWith1dMeas_vs_eta.push_back( ibook.bookProfile("STRIPlayersWith1dMeas_vs_eta","mean # STRIP Layers with 1D measurement vs eta",
388  nSTRIPlayersWith2dMeas_vs_eta.push_back( ibook.bookProfile("STRIPlayersWith2dMeas_vs_eta","mean # STRIP Layers with 2D measurement vs eta",
390 
391  nhits_vs_phi.push_back( ibook.bookProfile("hits_phi","mean # hits vs #phi",nintPhi,minPhi,maxPhi,nintHit,minHit,maxHit, " ") );
392 
393  nlosthits_vs_eta.push_back( ibook.bookProfile("losthits_vs_eta","mean # lost hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
394 
395  //resolution of track parameters
396  // dPt/Pt cotTheta Phi TIP LIP
397  // log10(pt)<0.5 100,0.1 240,0.08 100,0.015 100,0.1000 150,0.3000
398  // 0.5<log10(pt)<1.5 100,0.1 120,0.01 100,0.003 100,0.0100 150,0.0500
399  // >1.5 100,0.3 100,0.005 100,0.0008 100,0.0060 120,0.0300
400 
401  ptres_vs_eta.push_back(ibook.book2D("ptres_vs_eta","ptres_vs_eta",
403 
404  ptres_vs_phi.push_back( ibook.book2D("ptres_vs_phi","p_{t} res vs #phi",
406 
407  ptres_vs_pt.push_back(ibook.book2D("ptres_vs_pt","ptres_vs_pt",nintPt,minPt,maxPt, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
408 
409  cotThetares_vs_eta.push_back(ibook.book2D("cotThetares_vs_eta","cotThetares_vs_eta",
411 
412 
413  cotThetares_vs_pt.push_back(ibook.book2D("cotThetares_vs_pt","cotThetares_vs_pt",
415 
416 
417  phires_vs_eta.push_back(ibook.book2D("phires_vs_eta","phires_vs_eta",
419 
420  phires_vs_pt.push_back(ibook.book2D("phires_vs_pt","phires_vs_pt",
422 
423  phires_vs_phi.push_back(ibook.book2D("phires_vs_phi","#phi res vs #phi",
425 
426  dxyres_vs_eta.push_back(ibook.book2D("dxyres_vs_eta","dxyres_vs_eta",
428 
429  dxyres_vs_pt.push_back( ibook.book2D("dxyres_vs_pt","dxyres_vs_pt",
431 
432  dzres_vs_eta.push_back(ibook.book2D("dzres_vs_eta","dzres_vs_eta",
434 
435  dzres_vs_pt.push_back(ibook.book2D("dzres_vs_pt","dzres_vs_pt",nintPt,minPt,maxPt,dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
436 
437  ptmean_vs_eta_phi.push_back(ibook.bookProfile2D("ptmean_vs_eta_phi","mean p_{t} vs #eta and #phi",
438  nintPhi,minPhi,maxPhi,nintEta,minEta,maxEta,1000,0,1000));
439  phimean_vs_eta_phi.push_back(ibook.bookProfile2D("phimean_vs_eta_phi","mean #phi vs #eta and #phi",
441 
442  //pulls of track params vs eta: to be used with fitslicesytool
443  dxypull_vs_eta.push_back(ibook.book2D("dxypull_vs_eta","dxypull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
444  ptpull_vs_eta.push_back(ibook.book2D("ptpull_vs_eta","ptpull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
445  dzpull_vs_eta.push_back(ibook.book2D("dzpull_vs_eta","dzpull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
446  phipull_vs_eta.push_back(ibook.book2D("phipull_vs_eta","phipull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
447  thetapull_vs_eta.push_back(ibook.book2D("thetapull_vs_eta","thetapull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
448 
449  // h_ptshiftetamean.push_back( ibook.book1D("h_ptshifteta_Mean","<#deltapT/pT>[%] vs #eta",nintEta,minEta,maxEta) );
450 
451 
452  //pulls of track params vs phi
453  ptpull_vs_phi.push_back(ibook.book2D("ptpull_vs_phi","p_{t} pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
454  phipull_vs_phi.push_back(ibook.book2D("phipull_vs_phi","#phi pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
455  thetapull_vs_phi.push_back(ibook.book2D("thetapull_vs_phi","#theta pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
456 
457 
458  nrecHit_vs_nsimHit_rec2sim.push_back( ibook.book2D("nrecHit_vs_nsimHit_rec2sim","nrecHit vs nsimHit (Rec2simAssoc)",
460 
461  if(useLogPt){
462  BinLogX(dzres_vs_pt.back()->getTH2F());
463  BinLogX(dxyres_vs_pt.back()->getTH2F());
464  BinLogX(phires_vs_pt.back()->getTH2F());
465  BinLogX(cotThetares_vs_pt.back()->getTH2F());
466  BinLogX(ptres_vs_pt.back()->getTH2F());
467  BinLogX(h_looperpT.back()->getTH1F());
468  BinLogX(h_misidpT.back()->getTH1F());
469  BinLogX(h_recopT.back()->getTH1F());
470  BinLogX(h_assoc2pT.back()->getTH1F());
471  BinLogX(h_pileuppT.back()->getTH1F());
472  }
473 }
474 
476  // dE/dx stuff
477  h_dedx_estim.emplace_back(std::initializer_list<MonitorElement*>{
478  ibook.book1D("h_dedx_estim1","dE/dx estimator 1",nintDeDx,minDeDx,maxDeDx),
479  ibook.book1D("h_dedx_estim2","dE/dx estimator 2",nintDeDx,minDeDx,maxDeDx)
480  });
481  h_dedx_nom.emplace_back(std::initializer_list<MonitorElement*>{
482  ibook.book1D("h_dedx_nom1","dE/dx number of measurements",nintHit,minHit,maxHit),
483  ibook.book1D("h_dedx_nom2","dE/dx number of measurements",nintHit,minHit,maxHit)
484  });
485  h_dedx_sat.emplace_back(std::initializer_list<MonitorElement*>{
486  ibook.book1D("h_dedx_sat1","dE/dx number of measurements with saturation",nintHit,minHit,maxHit),
487  ibook.book1D("h_dedx_sat2","dE/dx number of measurements with saturation",nintHit,minHit,maxHit)
488  });
489 }
490 
492  const TrackingParticle::Vector& momentumTP,
493  const TrackingParticle::Point& vertexTP,
494  int bx){
495  h_ptSIM[count]->Fill(sqrt(momentumTP.perp2()));
496  h_etaSIM[count]->Fill(momentumTP.eta());
497  h_vertposSIM[count]->Fill(sqrt(vertexTP.perp2()));
498  h_bunchxSIM[count]->Fill(bx);
499 }
500 
501 
502 
504  const TrackingParticle& tp,
505  const TrackingParticle::Vector& momentumTP,
506  const TrackingParticle::Point& vertexTP,
507  double dxySim, double dzSim, int nSimHits,
508  int nSimLayers, int nSimPixelLayers, int nSimStripMonoAndStereoLayers,
509  const reco::Track* track,
510  int numVertices,
511  double dR){
512  bool isMatched = track;
513  auto const nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
514 
515  if((*TpSelectorForEfficiencyVsEta)(tp)){
516  //effic vs eta
517  fillPlotNoFlow(h_simuleta[count],getEta(momentumTP.eta()));
518  if (isMatched) fillPlotNoFlow(h_assoceta[count],getEta(momentumTP.eta()));
519  //effic vs hits
520  fillPlotNoFlow(h_simulhit[count],(int)nSimHits);
521  fillPlotNoFlow(h_simullayer[count], nSimLayers);
522  fillPlotNoFlow(h_simulpixellayer[count], nSimPixelLayers);
523  fillPlotNoFlow(h_simul3Dlayer[count], nSim3DLayers);
524  if(isMatched) {
525  fillPlotNoFlow(h_assochit[count],(int)nSimHits);
526  fillPlotNoFlow(h_assoclayer[count], nSimLayers);
527  fillPlotNoFlow(h_assocpixellayer[count], nSimPixelLayers);
528  fillPlotNoFlow(h_assoc3Dlayer[count], nSim3DLayers);
529  nrecHit_vs_nsimHit_sim2rec[count]->Fill( track->numberOfValidHits(),nSimHits);
530  }
531  //effic vs pu
532  fillPlotNoFlow(h_simulpu[count],(int)numVertices);
533  if(isMatched) fillPlotNoFlow(h_assocpu[count],numVertices);
534  //efficiency vs dR
535  fillPlotNoFlow(h_simuldr[count],dR);
536  if (isMatched) fillPlotNoFlow(h_assocdr[count],dR);
537  }
538 
539  if((*TpSelectorForEfficiencyVsPhi)(tp)){
540  fillPlotNoFlow(h_simulphi[count],momentumTP.phi());
541  if (isMatched) fillPlotNoFlow(h_assocphi[count],momentumTP.phi());
542  }
543 
544  if((*TpSelectorForEfficiencyVsPt)(tp)){
545  fillPlotNoFlow(h_simulpT[count],getPt(sqrt(momentumTP.perp2())));
546  if (isMatched) fillPlotNoFlow(h_assocpT[count],getPt(sqrt(momentumTP.perp2())));
547  }
548 
550  fillPlotNoFlow(h_simuldxy[count],dxySim);
551  if (isMatched) fillPlotNoFlow(h_assocdxy[count],dxySim);
552 
553  fillPlotNoFlow(h_simulvertpos[count],sqrt(vertexTP.perp2()));
554  if (isMatched) fillPlotNoFlow(h_assocvertpos[count],sqrt(vertexTP.perp2()));
555  }
556 
557 
559  fillPlotNoFlow(h_simuldz[count],dzSim);
560  if (isMatched) fillPlotNoFlow(h_assocdz[count],dzSim);
561 
562  fillPlotNoFlow(h_simulzpos[count],vertexTP.z());
563  if (isMatched) fillPlotNoFlow(h_assoczpos[count],vertexTP.z());
564  }
565 
566 }
567 
569  h_tracksSIM[count]->Fill(numSimTracks);
570 }
571 
572 // dE/dx
574  for (unsigned int i=0; i<v_dEdx.size(); i++) {
575  const edm::ValueMap<reco::DeDxData>& dEdxTrack = *(v_dEdx[i]);
576  const reco::DeDxData& dedx = dEdxTrack[trackref];
577  h_dedx_estim[count][i]->Fill(dedx.dEdx());
578  h_dedx_nom[count][i]->Fill(dedx.numberOfMeasurements());
580  }
581 }
582 
583 
585  const reco::Track& track,
586  const math::XYZPoint& bsPosition,
587  bool isMatched,
588  bool isSigMatched,
589  bool isChargeMatched,
590  int numAssocRecoTracks,
591  int numVertices,
592  int nSimHits,
593  double sharedFraction,
594  double dR){
595 
596  //Fill track algo histogram
597  fillPlotNoFlow(h_algo[count],track.algo());
598  int sharedHits = sharedFraction * track.numberOfValidHits();
599 
600  //Compute fake rate vs eta
601  const auto eta = getEta(track.momentum().eta());
602  const auto phi = track.momentum().phi();
603  const auto pt = getPt(sqrt(track.momentum().perp2()));
604  const auto dxy = track.dxy(bsPosition);
605  const auto dz = track.dz(bsPosition);
606  const auto nhits = track.found();
607  const auto nlayers = track.hitPattern().trackerLayersWithMeasurement();
608  const auto nPixelLayers = track.hitPattern().pixelLayersWithMeasurement();
609  const auto n3DLayers = nPixelLayers + track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
610  const auto deltar = min(max(dR,h_recodr[count]->getTH1()->GetXaxis()->GetXmin()),h_recodr[count]->getTH1()->GetXaxis()->GetXmax());
611  const auto chi2 = track.normalizedChi2();
612 
613  fillPlotNoFlow(h_recoeta[count], eta);
614  fillPlotNoFlow(h_recophi[count], phi);
615  fillPlotNoFlow(h_recopT[count], pt);
616  fillPlotNoFlow(h_recodxy[count], dxy);
617  fillPlotNoFlow(h_recodz[count], dz);
618  fillPlotNoFlow(h_recohit[count], nhits);
620  fillPlotNoFlow(h_recopixellayer[count], nPixelLayers);
621  fillPlotNoFlow(h_reco3Dlayer[count], n3DLayers);
622  fillPlotNoFlow(h_recopu[count],numVertices);
623  fillPlotNoFlow(h_recochi2[count], chi2);
624  h_recodr[count]->Fill(deltar);
625  if (isMatched) {
626  fillPlotNoFlow(h_assoc2eta[count], eta);
627  fillPlotNoFlow(h_assoc2phi[count], phi);
628  fillPlotNoFlow(h_assoc2pT[count], pt);
629  fillPlotNoFlow(h_assoc2dxy[count], dxy);
630  fillPlotNoFlow(h_assoc2dz[count], dz);
633  fillPlotNoFlow(h_assoc2pixellayer[count], nPixelLayers);
634  fillPlotNoFlow(h_assoc23Dlayer[count], n3DLayers);
635  fillPlotNoFlow(h_assoc2pu[count],numVertices);
636  fillPlotNoFlow(h_assoc2chi2[count], chi2);
637  h_assoc2dr[count]->Fill(deltar);
638 
639  nrecHit_vs_nsimHit_rec2sim[count]->Fill( track.numberOfValidHits(),nSimHits);
640  h_assocFraction[count]->Fill( sharedFraction);
641  h_assocSharedHit[count]->Fill( sharedHits);
642 
643  if (!isChargeMatched) {
644  fillPlotNoFlow(h_misideta[count], eta);
645  fillPlotNoFlow(h_misidphi[count], phi);
646  fillPlotNoFlow(h_misidpT[count], pt);
647  fillPlotNoFlow(h_misiddxy[count], dxy);
648  fillPlotNoFlow(h_misiddz[count], dz);
651  fillPlotNoFlow(h_misidpixellayer[count], nPixelLayers);
652  fillPlotNoFlow(h_misid3Dlayer[count], n3DLayers);
653  fillPlotNoFlow(h_misidpu[count], numVertices);
654  fillPlotNoFlow(h_misidchi2[count], chi2);
655  }
656 
657  if (numAssocRecoTracks>1) {
658  fillPlotNoFlow(h_loopereta[count], eta);
659  fillPlotNoFlow(h_looperphi[count], phi);
660  fillPlotNoFlow(h_looperpT[count], pt);
661  fillPlotNoFlow(h_looperdxy[count], dxy);
662  fillPlotNoFlow(h_looperdz[count], dz);
665  fillPlotNoFlow(h_looperpixellayer[count], nPixelLayers);
666  fillPlotNoFlow(h_looper3Dlayer[count], n3DLayers);
667  fillPlotNoFlow(h_looperpu[count], numVertices);
668  fillPlotNoFlow(h_looperchi2[count], chi2);
669  }
670  else if(!isSigMatched) {
671  fillPlotNoFlow(h_pileupeta[count], eta);
672  fillPlotNoFlow(h_pileupphi[count], phi);
673  fillPlotNoFlow(h_pileuppT[count], pt);
674  fillPlotNoFlow(h_pileupdxy[count], dxy);
675  fillPlotNoFlow(h_pileupdz[count], dz);
678  fillPlotNoFlow(h_pileuppixellayer[count], nPixelLayers);
679  fillPlotNoFlow(h_pileup3Dlayer[count], n3DLayers);
680  fillPlotNoFlow(h_pileuppu[count], numVertices);
681  fillPlotNoFlow(h_pileupchi2[count], chi2);
682  h_pileupdr[count]->Fill(deltar);
683  }
684  }
685 }
686 
687 
689  const reco::Track& track){
690  //nchi2 and hits global distributions
691  h_nchi2[count]->Fill(track.normalizedChi2());
692  h_nchi2_prob[count]->Fill(TMath::Prob(track.chi2(),(int)track.ndof()));
693  h_hits[count]->Fill(track.numberOfValidHits());
694  h_losthits[count]->Fill(track.numberOfLostHits());
695  chi2_vs_nhits[count]->Fill(track.numberOfValidHits(),track.normalizedChi2());
696  h_charge[count]->Fill( track.charge() );
699 
700  //chi2 and #hit vs eta: fill 2D histos
701  const auto eta = getEta(track.eta());
702  chi2_vs_eta[count]->Fill(eta, track.normalizedChi2());
703  nhits_vs_eta[count]->Fill(eta, track.numberOfValidHits());
712  int LayersAll = track.hitPattern().stripLayersWithMeasurement();
713  int Layers2D = track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
714  int Layers1D = LayersAll - Layers2D;
715  nSTRIPlayersWithMeas_vs_eta[count]->Fill(eta, LayersAll);
716  nSTRIPlayersWith1dMeas_vs_eta[count]->Fill(eta, Layers1D);
717  nSTRIPlayersWith2dMeas_vs_eta[count]->Fill(eta, Layers2D);
718 
719  nlosthits_vs_eta[count]->Fill(eta, track.numberOfLostHits());
720 }
721 
722 
723 void MTVHistoProducerAlgoForTracker::fill_trackBased_histos(int count, int assTracks, int numRecoTracks, int numSimTracks){
724 
725  h_tracks[count]->Fill(assTracks);
726  h_fakes[count]->Fill(numRecoTracks-assTracks);
727  nrec_vs_nsim[count]->Fill(numRecoTracks,numSimTracks);
728 
729 }
730 
731 
732 
734  const TrackingParticle::Vector& momentumTP,
735  const TrackingParticle::Point& vertexTP,
736  int chargeTP,
737  const reco::Track& track,
738  const math::XYZPoint& bsPosition){
739 
740  // evaluation of TP parameters
741  double qoverpSim = chargeTP/sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
742  double lambdaSim = M_PI/2-momentumTP.theta();
743  double phiSim = momentumTP.phi();
744  double dxySim = (-vertexTP.x()*sin(momentumTP.phi())+vertexTP.y()*cos(momentumTP.phi()));
745  double dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/sqrt(momentumTP.perp2())
746  * momentumTP.z()/sqrt(momentumTP.perp2());
747 
748 
749  // reco::Track::ParameterVector rParameters = track.parameters(); // UNUSED
750 
751  double qoverpRec(0);
752  double qoverpErrorRec(0);
753  double ptRec(0);
754  double ptErrorRec(0);
755  double lambdaRec(0);
756  double lambdaErrorRec(0);
757  double phiRec(0);
758  double phiErrorRec(0);
759 
760  /* TO BE FIXED LATER -----------
761  //loop to decide whether to take gsfTrack (utilisation of mode-function) or common track
762  const GsfTrack* gsfTrack(0);
763  if(useGsf){
764  gsfTrack = dynamic_cast<const GsfTrack*>(&(*track));
765  if (gsfTrack==0) edm::LogInfo("TrackValidator") << "Trying to access mode for a non-GsfTrack";
766  }
767 
768  if (gsfTrack) {
769  // get values from mode
770  getRecoMomentum(*gsfTrack, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
771  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
772  }
773 
774  else {
775  // get values from track (without mode)
776  getRecoMomentum(*track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
777  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
778  }
779  */
780  getRecoMomentum(track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
781  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
782  // -------------
783 
784  double ptError = ptErrorRec;
785  double ptres=ptRec-sqrt(momentumTP.perp2());
786  double etares=track.eta()-momentumTP.Eta();
787 
788 
789  double dxyRec = track.dxy(bsPosition);
790  double dzRec = track.dz(bsPosition);
791 
792  const auto phiRes = phiRec-phiSim;
793  const auto dxyRes = dxyRec-dxySim;
794  const auto dzRes = dzRec-dzSim;
795  const auto cotThetaRes = 1/tan(M_PI*0.5-lambdaRec)-1/tan(M_PI*0.5-lambdaSim);
796 
797  // eta residue; pt, k, theta, phi, dxy, dz pulls
798  double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
799  double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
800  double phiPull=phiRes/phiErrorRec;
801  double dxyPull=dxyRes/track.dxyError();
802  double dzPull=dzRes/track.dzError();
803 
804  double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
805  ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
806  double contrib_dxy = ((dxyRec-dxySim)/track.dxyError())*((dxyRec-dxySim)/track.dxyError())/5;
807  double contrib_dz = ((dzRec-dzSim)/track.dzError())*((dzRec-dzSim)/track.dzError())/5;
808  double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
809  ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
810  double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
811  ((phiRec-phiSim)/phiErrorRec)/5;
812 
813  LogTrace("TrackValidatorTEST")
814  //<< "assocChi2=" << tp.begin()->second << "\n"
815  << "" << "\n"
816  << "ptREC=" << ptRec << "\n" << "etaREC=" << track.eta() << "\n" << "qoverpREC=" << qoverpRec << "\n"
817  << "dxyREC=" << dxyRec << "\n" << "dzREC=" << dzRec << "\n"
818  << "thetaREC=" << track.theta() << "\n" << "phiREC=" << phiRec << "\n"
819  << "" << "\n"
820  << "qoverpError()=" << qoverpErrorRec << "\n" << "dxyError()=" << track.dxyError() << "\n"<< "dzError()="
821  << track.dzError() << "\n"
822  << "thetaError()=" << lambdaErrorRec << "\n" << "phiError()=" << phiErrorRec << "\n"
823  << "" << "\n"
824  << "ptSIM=" << sqrt(momentumTP.perp2()) << "\n"<< "etaSIM=" << momentumTP.Eta() << "\n"<< "qoverpSIM=" << qoverpSim << "\n"
825  << "dxySIM=" << dxySim << "\n"<< "dzSIM=" << dzSim << "\n" << "thetaSIM=" << M_PI/2-lambdaSim << "\n"
826  << "phiSIM=" << phiSim << "\n"
827  << "" << "\n"
828  << "contrib_Qoverp=" << contrib_Qoverp << "\n"<< "contrib_dxy=" << contrib_dxy << "\n"<< "contrib_dz=" << contrib_dz << "\n"
829  << "contrib_theta=" << contrib_theta << "\n"<< "contrib_phi=" << contrib_phi << "\n"
830  << "" << "\n"
831  <<"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<"\n";
832 
833  h_pullQoverp[count]->Fill(qoverpPull);
834  h_pullTheta[count]->Fill(thetaPull);
835  h_pullPhi[count]->Fill(phiPull);
836  h_pullDxy[count]->Fill(dxyPull);
837  h_pullDz[count]->Fill(dzPull);
838 
839  const auto etaSim = getEta(momentumTP.eta());
840  const auto ptSim = getPt(sqrt(momentumTP.perp2()));
841 
842  h_pt[count]->Fill(ptres/ptError);
843  h_eta[count]->Fill(etares);
844  //etares_vs_eta[count]->Fill(getEta(track.eta()),etares);
845  etares_vs_eta[count]->Fill(etaSim, etares);
846 
847  //resolution of track params: fill 2D histos
848  dxyres_vs_eta[count]->Fill(etaSim, dxyRes);
849  ptres_vs_eta[count]->Fill(etaSim, ptres/ptRec);
850  dzres_vs_eta[count]->Fill(etaSim, dzRes);
851  phires_vs_eta[count]->Fill(etaSim, phiRes);
852  cotThetares_vs_eta[count]->Fill(etaSim, cotThetaRes);
853 
854  //same as before but vs pT
855  dxyres_vs_pt[count]->Fill(ptSim, dxyRes);
856  ptres_vs_pt[count]->Fill(ptSim, ptres/ptRec);
857  dzres_vs_pt[count]->Fill(ptSim, dzRes);
858  phires_vs_pt[count]->Fill(ptSim, phiRes);
859  cotThetares_vs_pt[count]->Fill(ptSim, cotThetaRes);
860 
861  //pulls of track params vs eta: fill 2D histos
862  dxypull_vs_eta[count]->Fill(etaSim, dxyPull);
863  ptpull_vs_eta[count]->Fill(etaSim, ptres/ptError);
864  dzpull_vs_eta[count]->Fill(etaSim, dzPull);
865  phipull_vs_eta[count]->Fill(etaSim, phiPull);
866  thetapull_vs_eta[count]->Fill(etaSim, thetaPull);
867 
868  //plots vs phi
869  nhits_vs_phi[count]->Fill(phiRec,track.numberOfValidHits());
870  chi2_vs_phi[count]->Fill(phiRec,track.normalizedChi2());
871  ptmean_vs_eta_phi[count]->Fill(phiRec,getEta(track.eta()),ptRec);
872  phimean_vs_eta_phi[count]->Fill(phiRec,getEta(track.eta()),phiRec);
873 
874  ptres_vs_phi[count]->Fill(phiSim, ptres/ptRec);
875  phires_vs_phi[count]->Fill(phiSim, phiRes);
876  ptpull_vs_phi[count]->Fill(phiSim, ptres/ptError);
877  phipull_vs_phi[count]->Fill(phiSim, phiPull);
878  thetapull_vs_phi[count]->Fill(phiSim, thetaPull);
879 
880 
881 }
882 
883 
884 
885 void
886 MTVHistoProducerAlgoForTracker::getRecoMomentum (const reco::Track& track, double& pt, double& ptError,
887  double& qoverp, double& qoverpError, double& lambda,double& lambdaError,
888  double& phi, double& phiError ) const {
889  pt = track.pt();
890  ptError = track.ptError();
891  qoverp = track.qoverp();
892  qoverpError = track.qoverpError();
893  lambda = track.lambda();
894  lambdaError = track.lambdaError();
895  phi = track.phi();
896  phiError = track.phiError();
897  // cout <<"test1" << endl;
898 
899 
900 
901 }
902 
903 void
904 MTVHistoProducerAlgoForTracker::getRecoMomentum (const reco::GsfTrack& gsfTrack, double& pt, double& ptError,
905  double& qoverp, double& qoverpError, double& lambda,double& lambdaError,
906  double& phi, double& phiError ) const {
907 
908  pt = gsfTrack.ptMode();
909  ptError = gsfTrack.ptModeError();
910  qoverp = gsfTrack.qoverpMode();
911  qoverpError = gsfTrack.qoverpModeError();
912  lambda = gsfTrack.lambdaMode();
913  lambdaError = gsfTrack.lambdaModeError();
914  phi = gsfTrack.phiMode();
915  phiError = gsfTrack.phiModeError();
916  // cout <<"test2" << endl;
917 
918 }
919 
920 double
922  if (useFabsEta) return fabs(eta);
923  else return eta;
924 }
925 
926 double
928  if (useInvPt && pt!=0) return 1/pt;
929  else return pt;
930 }
931 
932 
934  const reco::GenParticle& tp,
935  const TrackingParticle::Vector& momentumTP,
936  const TrackingParticle::Point& vertexTP,
937  double dxySim, double dzSim, int nSimHits,
938  const reco::Track* track,
939  int numVertices){
940 
941  bool isMatched = track;
942 
943  if((*GpSelectorForEfficiencyVsEta)(tp)){
944  //effic vs eta
945  fillPlotNoFlow(h_simuleta[count],getEta(momentumTP.eta()));
946  if (isMatched) fillPlotNoFlow(h_assoceta[count],getEta(momentumTP.eta()));
947  //effic vs hits
948  fillPlotNoFlow(h_simulhit[count],(int)nSimHits);
949  if(isMatched) {
950  fillPlotNoFlow(h_assochit[count],(int)nSimHits);
951  nrecHit_vs_nsimHit_sim2rec[count]->Fill( track->numberOfValidHits(),nSimHits);
952  }
953  //effic vs pu
954  fillPlotNoFlow(h_simulpu[count],numVertices);
955  if (isMatched) fillPlotNoFlow(h_assocpu[count],numVertices);
956  //efficiency vs dR
957  //not implemented for now
958  }
959 
960  if((*GpSelectorForEfficiencyVsPhi)(tp)){
961  fillPlotNoFlow(h_simulphi[count],momentumTP.phi());
962  if (isMatched) fillPlotNoFlow(h_assocphi[count],momentumTP.phi());
963  }
964 
965  if((*GpSelectorForEfficiencyVsPt)(tp)){
966  fillPlotNoFlow(h_simulpT[count],getPt(sqrt(momentumTP.perp2())));
967  if (isMatched) fillPlotNoFlow(h_assocpT[count],getPt(sqrt(momentumTP.perp2())));
968  }
969 
971  fillPlotNoFlow(h_simuldxy[count],dxySim);
972  if (isMatched) fillPlotNoFlow(h_assocdxy[count],dxySim);
973 
974  fillPlotNoFlow(h_simulvertpos[count],sqrt(vertexTP.perp2()));
975  if (isMatched) fillPlotNoFlow(h_assocvertpos[count],sqrt(vertexTP.perp2()));
976  }
977 
979  fillPlotNoFlow(h_simuldz[count],dzSim);
980  if (isMatched) fillPlotNoFlow(h_assocdz[count],dzSim);
981 
982  fillPlotNoFlow(h_simulzpos[count],vertexTP.z());
983  if (isMatched) fillPlotNoFlow(h_assoczpos[count],vertexTP.z());
984  }
985 
986 }
double qoverp() const
q / p
Definition: TrackBase.h:536
double phiModeError() const
error on phi from mode
Definition: GsfTrack.h:94
std::vector< MonitorElement * > h_looperhit
T getParameter(std::string const &) const
std::vector< MonitorElement * > h_assoc2hit
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
std::vector< MonitorElement * > h_recodxy
std::vector< MonitorElement * > h_assochit
std::vector< MonitorElement * > h_fakes
std::vector< MonitorElement * > h_nchi2_prob
std::vector< MonitorElement * > h_looperpT
std::vector< MonitorElement * > h_pullDz
std::vector< MonitorElement * > h_misidlayer
TrackingParticleSelector * TpSelectorForEfficiencyVsPhi
std::vector< MonitorElement * > ptpull_vs_phi
std::vector< MonitorElement * > h_looperchi2
std::vector< MonitorElement * > h_assoczpos
std::vector< MonitorElement * > nPXFhits_vs_eta
void fillPlotNoFlow(MonitorElement *h, T val)
std::vector< MonitorElement * > h_simulzpos
std::vector< MonitorElement * > nrecHit_vs_nsimHit_rec2sim
std::vector< MonitorElement * > h_assoc2pT
std::vector< MonitorElement * > h_nmisslayers_inner
double lambdaMode() const
Lambda angle from mode.
Definition: GsfTrack.h:45
std::vector< MonitorElement * > h_simulpT
std::vector< MonitorElement * > h_looperpixellayer
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:524
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
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) ...
GenParticleCustomSelector * GpSelectorForEfficiencyVsPhi
std::vector< MonitorElement * > h_pileuphit
std::vector< MonitorElement * > h_pileupdr
std::vector< MonitorElement * > nTEChits_vs_eta
std::vector< MonitorElement * > h_hits
double theta() const
polar angle
Definition: TrackBase.h:542
double dxyError() const
error on dxy
Definition: TrackBase.h:759
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
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
std::vector< MonitorElement * > nrec_vs_nsim
std::vector< MonitorElement * > h_pileuppT
std::vector< MonitorElement * > h_algo
std::vector< MonitorElement * > h_assocdz
std::vector< MonitorElement * > nTIDhits_vs_eta
std::vector< MonitorElement * > h_ptSIM
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
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:608
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
Definition: TrackBase.h:789
TrackingParticleSelector * TpSelectorForEfficiencyVsVTXZ
std::vector< MonitorElement * > h_misidchi2
std::vector< MonitorElement * > h_vertposSIM
std::vector< MonitorElement * > h_looperdxy
std::vector< MonitorElement * > h_simuleta
std::vector< MonitorElement * > h_assoc3Dlayer
std::vector< MonitorElement * > h_looper3Dlayer
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:458
void fill_recoAssociated_simTrack_histos(int count, const TrackingParticle &tp, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, double dxy, double dz, int nSimHits, int nSimLayers, int nSimPixelLayers, int nSimStripMonoAndStereoLayers, const reco::Track *track, int numVertices, double dR)
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:638
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
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:477
std::vector< MonitorElement * > chi2_vs_phi
int numberOfValidStripTOBHits() const
Definition: HitPattern.h:779
void bookSimHistos(DQMStore::IBooker &ibook) override
std::vector< MonitorElement * > h_assocphi
int sharedHits(const reco::GsfTrackRef &, const reco::GsfTrackRef &)
std::vector< MonitorElement * > phires_vs_phi
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, edm::ConsumesCollector &&iC)
std::vector< MonitorElement * > dzres_vs_eta
double qoverpMode() const
q/p from mode
Definition: GsfTrack.h:41
float dEdx() const
Definition: DeDxData.cc:26
std::vector< MonitorElement * > h_misideta
std::vector< MonitorElement * > nlosthits_vs_eta
GenParticleCustomSelector * GpSelectorForEfficiencyVsVTXZ
std::vector< MonitorElement * > nSTRIPlayersWith1dMeas_vs_eta
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
Definition: GsfTrack.h:81
std::vector< MonitorElement * > h_recohit
TrackAlgorithm algo() const
Definition: TrackBase.h:460
math::XYZPointD Point
point in the space
std::vector< MonitorElement * > h_looperlayer
std::vector< MonitorElement * > phires_vs_pt
SingleObjectSelector< TrackingParticleCollection,::TrackingParticleSelector > TrackingParticleSelector
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
unsigned int numberOfMeasurements() const
Definition: DeDxData.cc:37
std::vector< MonitorElement * > nPXBhits_vs_eta
std::vector< std::vector< MonitorElement * > > h_dedx_sat
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:614
int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
Definition: HitPattern.cc:300
std::vector< MonitorElement * > h_looperpu
std::vector< MonitorElement * > h_assoc2dxy
std::vector< MonitorElement * > h_pullQoverp
int numberOfValidPixelBarrelHits() const
Definition: HitPattern.h:754
std::vector< MonitorElement * > h_simulpu
std::vector< MonitorElement * > h_assoc2chi2
double chi2() const
chi-squared of the fit
Definition: TrackBase.h:512
std::vector< MonitorElement * > h_simuldr
std::vector< MonitorElement * > h_misidhit
std::vector< MonitorElement * > nSTRIPlayersWithMeas_vs_eta
MonitorElement * bookProfile2D(Args &&...args)
Definition: DQMStore.h:163
std::vector< MonitorElement * > nTOBhits_vs_eta
double ndof() const
number of degrees of freedom of the fit
Definition: TrackBase.h:518
T sqrt(T t)
Definition: SSEVec.h:48
std::vector< MonitorElement * > ptpull_vs_eta
std::vector< MonitorElement * > etares_vs_eta
double pt() const
track transverse momentum
Definition: TrackBase.h:584
std::vector< MonitorElement * > h_recophi
std::vector< MonitorElement * > h_assocpT
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:726
std::vector< MonitorElement * > nSTRIPlayersWith2dMeas_vs_eta
std::vector< MonitorElement * > h_tracks
double phiError() const
error on phi
Definition: TrackBase.h:753
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
std::vector< MonitorElement * > h_tracksSIM
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
void fill_generic_recoTrack_histos(int count, const reco::Track &track, const math::XYZPoint &bsPosition, bool isMatched, bool isSigMatched, bool isChargeMatched, int numAssocRecoTracks, int numVertices, int nSimHits, double sharedFraction, double dR)
std::vector< MonitorElement * > nhits_vs_phi
std::vector< MonitorElement * > h_assoc2pixellayer
int numberOfValidStripTIDHits() const
Definition: HitPattern.h:774
double lambda() const
Lambda angle.
Definition: TrackBase.h:548
std::vector< MonitorElement * > h_misid3Dlayer
std::vector< MonitorElement * > nrecHit_vs_nsimHit_sim2rec
bool isMatched(TrackingRecHit const &hit)
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:783
void fill_simAssociated_recoTrack_histos(int count, const reco::Track &track)
int numberOfValidStripTECHits() const
Definition: HitPattern.h:784
T min(T a, T b)
Definition: MathUtil.h:58
std::vector< MonitorElement * > phimean_vs_eta_phi
std::vector< MonitorElement * > h_charge
std::vector< MonitorElement * > h_misidpu
std::vector< MonitorElement * > h_loopereta
std::vector< MonitorElement * > h_misiddz
#define LogTrace(id)
std::vector< MonitorElement * > h_simullayer
#define M_PI
std::vector< MonitorElement * > h_pileupphi
std::vector< MonitorElement * > chi2_vs_nhits
std::vector< MonitorElement * > h_recodr
std::vector< MonitorElement * > dzpull_vs_eta
void bookSimTrackHistos(DQMStore::IBooker &ibook) override
std::vector< MonitorElement * > h_simuldz
std::vector< MonitorElement * > h_misiddxy
std::vector< MonitorElement * > h_bunchxSIM
double qoverpError() const
error on signed transverse curvature
Definition: TrackBase.h:720
void fill_simTrackBased_histos(int count, int numSimTracks)
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:572
double dzError() const
error on dz
Definition: TrackBase.h:777
void bookRecodEdxHistos(DQMStore::IBooker &ibook) override
std::vector< MonitorElement * > thetapull_vs_phi
std::vector< MonitorElement * > h_recolayer
TrackingParticleSelector * TpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_simulvertpos
std::vector< MonitorElement * > dxyres_vs_eta
std::vector< MonitorElement * > h_simulpixellayer
std::vector< MonitorElement * > h_recopu
std::vector< MonitorElement * > h_misidpT
std::vector< MonitorElement * > h_nmisslayers_outer
std::vector< MonitorElement * > nPXLlayersWithMeas_vs_eta
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
std::vector< MonitorElement * > nTIBhits_vs_eta
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:421
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
double qoverpModeError() const
error on signed transverse curvature from mode
Definition: GsfTrack.h:79
int stripLayersWithMeasurement() const
Definition: HitPattern.h:919
std::vector< MonitorElement * > h_eta
std::vector< MonitorElement * > h_pt
std::vector< MonitorElement * > cotThetares_vs_pt
std::vector< MonitorElement * > h_pileuppixellayer
std::vector< MonitorElement * > h_etaSIM
int numberOfValidStripTIBHits() const
Definition: HitPattern.h:769
std::vector< MonitorElement * > h_simulphi
static const std::string algoNames[]
Definition: TrackBase.h:146
int numberOfValidPixelEndcapHits() const
Definition: HitPattern.h:759
std::vector< MonitorElement * > h_pullTheta
std::vector< MonitorElement * > ptmean_vs_eta_phi
std::vector< MonitorElement * > h_looperphi
double lambdaError() const
error on lambda
Definition: TrackBase.h:741
std::vector< MonitorElement * > h_assoc2dr
std::vector< MonitorElement * > dxypull_vs_eta
std::vector< MonitorElement * > ptres_vs_eta
GenParticleCustomSelector * generalGpSelector
std::vector< MonitorElement * > phipull_vs_eta
unsigned short found() const
Number of valid hits on track.
Definition: Track.h:194
GenParticleCustomSelector * GpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_simulhit
std::vector< MonitorElement * > h_recopixellayer
GenParticleCustomSelector * GpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_recopT
std::vector< MonitorElement * > h_pileup3Dlayer
std::vector< MonitorElement * > h_looperdz
std::vector< MonitorElement * > h_assocdxy
std::vector< MonitorElement * > h_misidpixellayer
double phiMode() const
azimuthal angle of momentum vector from mode
Definition: GsfTrack.h:57
Monte Carlo truth information used for tracking validation.
std::vector< MonitorElement * > h_pileuplayer
int charge() const
track electric charge
Definition: TrackBase.h:530
std::vector< MonitorElement * > cotThetares_vs_eta
std::vector< MonitorElement * > h_assocFraction
void fill_generic_simTrack_histos(int counter, const TrackingParticle::Vector &, const TrackingParticle::Point &vertex, int bx)
void fill_dedx_recoTrack_histos(int count, const edm::RefToBase< reco::Track > &trackref, const std::vector< const edm::ValueMap< reco::DeDxData > * > &v_dEdx)
GenParticleCustomSelector * GpSelectorForEfficiencyVsEta
double lambdaModeError() const
error on lambda from mode
Definition: GsfTrack.h:90
std::vector< MonitorElement * > h_pileupdxy
std::vector< MonitorElement * > h_recodz
std::vector< MonitorElement * > ptres_vs_pt
SingleObjectSelector< GenParticleCollection,::GenParticleCustomSelector > GenParticleCustomSelector
std::vector< MonitorElement * > h_pileupdz
math::XYZVectorD Vector
point in the space
std::vector< std::vector< MonitorElement * > > h_dedx_nom
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:554
std::vector< MonitorElement * > h_assoclayer
std::vector< MonitorElement * > h_recochi2
std::vector< MonitorElement * > h_assoceta
std::vector< MonitorElement * > ptres_vs_phi
TrackingParticleSelector * TpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_assocSharedHit
std::vector< MonitorElement * > h_simul3Dlayer
void bookRecoHistos(DQMStore::IBooker &ibook) override
std::vector< MonitorElement * > nhits_vs_eta
double ptMode() const
track transverse momentum from mode
Definition: GsfTrack.h:49
int numberOfSaturatedMeasurements() const
Definition: DeDxData.cc:42
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 * > chi2_vs_eta
int numberOfHits(HitCategory category) const
Definition: HitPattern.h:718
std::vector< MonitorElement * > dxyres_vs_pt
std::vector< MonitorElement * > h_losthits
TrackingParticleSelector * TpSelectorForEfficiencyVsEta
std::vector< MonitorElement * > h_assoc2eta
std::vector< MonitorElement * > h_misidphi
std::vector< MonitorElement * > dzres_vs_pt
std::vector< MonitorElement * > h_pileuppu