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  //parameters for dE/dx plots
76  minDeDx = pset.getParameter<double>("minDeDx");
77  maxDeDx = pset.getParameter<double>("maxDeDx");
78  nintDeDx = pset.getParameter<int>("nintDeDx");
79 
80  //parameters for Pileup plots
81  minVertcount = pset.getParameter<double>("minVertcount");
82  maxVertcount = pset.getParameter<double>("maxVertcount");
83  nintVertcount = pset.getParameter<int>("nintVertcount");
84 
85  //parameters for resolution plots
86  ptRes_rangeMin = pset.getParameter<double>("ptRes_rangeMin");
87  ptRes_rangeMax = pset.getParameter<double>("ptRes_rangeMax");
88  ptRes_nbin = pset.getParameter<int>("ptRes_nbin");
89 
90  phiRes_rangeMin = pset.getParameter<double>("phiRes_rangeMin");
91  phiRes_rangeMax = pset.getParameter<double>("phiRes_rangeMax");
92  phiRes_nbin = pset.getParameter<int>("phiRes_nbin");
93 
94  cotThetaRes_rangeMin = pset.getParameter<double>("cotThetaRes_rangeMin");
95  cotThetaRes_rangeMax = pset.getParameter<double>("cotThetaRes_rangeMax");
96  cotThetaRes_nbin = pset.getParameter<int>("cotThetaRes_nbin");
97 
98  dxyRes_rangeMin = pset.getParameter<double>("dxyRes_rangeMin");
99  dxyRes_rangeMax = pset.getParameter<double>("dxyRes_rangeMax");
100  dxyRes_nbin = pset.getParameter<int>("dxyRes_nbin");
101 
102  dzRes_rangeMin = pset.getParameter<double>("dzRes_rangeMin");
103  dzRes_rangeMax = pset.getParameter<double>("dzRes_rangeMax");
104  dzRes_nbin = pset.getParameter<int>("dzRes_nbin");
105 
106 
107  //--- tracking particle selectors for efficiency measurements
108  using namespace edm;
109 
110  ParameterSet generalTpSelectorPSet = pset.getParameter<ParameterSet>("generalTpSelector");
111  ParameterSet TpSelectorForEfficiencyVsEtaPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsEta");
112  ParameterSet TpSelectorForEfficiencyVsPhiPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsPhi");
113  ParameterSet TpSelectorForEfficiencyVsPtPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsPt");
114  ParameterSet TpSelectorForEfficiencyVsVTXRPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsVTXR");
115  ParameterSet TpSelectorForEfficiencyVsVTXZPSet = pset.getParameter<ParameterSet>("TpSelectorForEfficiencyVsVTXZ");
116 
117  ParameterSet generalGpSelectorPSet = pset.getParameter<ParameterSet>("generalGpSelector");
118  ParameterSet GpSelectorForEfficiencyVsEtaPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsEta");
119  ParameterSet GpSelectorForEfficiencyVsPhiPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsPhi");
120  ParameterSet GpSelectorForEfficiencyVsPtPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsPt");
121  ParameterSet GpSelectorForEfficiencyVsVTXRPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsVTXR");
122  ParameterSet GpSelectorForEfficiencyVsVTXZPSet = pset.getParameter<ParameterSet>("GpSelectorForEfficiencyVsVTXZ");
123 
124  using namespace reco::modules;
131 
138 
139  // fix for the LogScale by Ryan
140  if(useLogPt){
141  maxPt=log10(maxPt);
142  if(minPt > 0){
143  minPt=log10(minPt);
144  }
145  else{
146  edm::LogWarning("MultiTrackValidator")
147  << "minPt = "
148  << minPt << " <= 0 out of range while requesting log scale. Using minPt = 0.1.";
149  minPt=log10(0.1);
150  }
151  }
152 
153 }
154 
156  delete generalTpSelector;
162 
163  delete generalGpSelector;
169 }
170 
172  h_ptSIM.push_back( ibook.book1D("ptSIM", "generated p_{t}", 5500, 0, 110 ) );
173  h_etaSIM.push_back( ibook.book1D("etaSIM", "generated pseudorapidity", 500, -2.5, 2.5 ) );
174  h_tracksSIM.push_back( ibook.book1D("tracksSIM","number of simulated tracks",200,-0.5,99.5) );
175  h_vertposSIM.push_back( ibook.book1D("vertposSIM","Transverse position of sim vertices",100,0.,120.) );
176  h_bunchxSIM.push_back( ibook.book1D("bunchxSIM", "bunch crossing", 22, -5, 5 ) );
177 }
178 
180  h_tracks.push_back( ibook.book1D("tracks","number of reconstructed tracks",401,-0.5,400.5) );
181  h_fakes.push_back( ibook.book1D("fakes","number of fake reco tracks",101,-0.5,100.5) );
182  h_charge.push_back( ibook.book1D("charge","charge",3,-1.5,1.5) );
183 
184  h_hits.push_back( ibook.book1D("hits", "number of hits per track", nintHit,minHit,maxHit ) );
185  h_losthits.push_back( ibook.book1D("losthits", "number of lost hits per track", nintHit,minHit,maxHit) );
186  h_nchi2.push_back( ibook.book1D("chi2", "normalized #chi^{2}", 200, 0, 20 ) );
187  h_nchi2_prob.push_back( ibook.book1D("chi2_prob", "normalized #chi^{2} probability",100,0,1));
188 
189  h_nmisslayers_inner.push_back( ibook.book1D("missing_inner_layers", "number of missing inner layers", nintLayers,minLayers,maxLayers ) );
190  h_nmisslayers_outer.push_back( ibook.book1D("missing_outer_layers", "number of missing outer layers", nintLayers,minLayers,maxLayers ) );
191 
192  h_algo.push_back( ibook.book1D("h_algo","Tracks by algo",15,0.0,15.0) );
193 
195  h_recoeta.push_back( ibook.book1D("num_reco_eta","N of reco track vs eta",nintEta,minEta,maxEta) );
196  h_assoceta.push_back( ibook.book1D("num_assoc(simToReco)_eta","N of associated tracks (simToReco) vs eta",nintEta,minEta,maxEta) );
197  h_assoc2eta.push_back( ibook.book1D("num_assoc(recoToSim)_eta","N of associated (recoToSim) tracks vs eta",nintEta,minEta,maxEta) );
198  h_simuleta.push_back( ibook.book1D("num_simul_eta","N of simulated tracks vs eta",nintEta,minEta,maxEta) );
199  h_loopereta.push_back( ibook.book1D("num_duplicate_eta","N of associated (recoToSim) duplicate tracks vs eta",nintEta,minEta,maxEta) );
200  h_misideta.push_back( ibook.book1D("num_chargemisid_eta","N of associated (recoToSim) charge misIDed tracks vs eta",nintEta,minEta,maxEta) );
201  //
202  h_recopT.push_back( ibook.book1D("num_reco_pT","N of reco track vs pT",nintPt,minPt,maxPt) );
203  h_assocpT.push_back( ibook.book1D("num_assoc(simToReco)_pT","N of associated tracks (simToReco) vs pT",nintPt,minPt,maxPt) );
204  h_assoc2pT.push_back( ibook.book1D("num_assoc(recoToSim)_pT","N of associated (recoToSim) tracks vs pT",nintPt,minPt,maxPt) );
205  h_simulpT.push_back( ibook.book1D("num_simul_pT","N of simulated tracks vs pT",nintPt,minPt,maxPt) );
206  h_looperpT.push_back( ibook.book1D("num_duplicate_pT","N of associated (recoToSim) duplicate tracks vs pT",nintPt,minPt,maxPt) );
207  h_misidpT.push_back( ibook.book1D("num_chargemisid_pT","N of associated (recoToSim) charge misIDed tracks vs pT",nintPt,minPt,maxPt) );
208  //
209  h_recohit.push_back( ibook.book1D("num_reco_hit","N of reco track vs hit",nintHit,minHit,maxHit) );
210  h_assochit.push_back( ibook.book1D("num_assoc(simToReco)_hit","N of associated tracks (simToReco) vs hit",nintHit,minHit,maxHit) );
211  h_assoc2hit.push_back( ibook.book1D("num_assoc(recoToSim)_hit","N of associated (recoToSim) tracks vs hit",nintHit,minHit,maxHit) );
212  h_simulhit.push_back( ibook.book1D("num_simul_hit","N of simulated tracks vs hit",nintHit,minHit,maxHit) );
213  h_looperhit.push_back( ibook.book1D("num_duplicate_hit","N of associated (recoToSim) duplicate tracks vs hit",nintHit,minHit,maxHit) );
214  h_misidhit.push_back( ibook.book1D("num_chargemisid_hit","N of associated (recoToSim) charge misIDed tracks vs hit",nintHit,minHit,maxHit) );
215  //
216  h_recopu.push_back( ibook.book1D("num_reco_pu","N of reco track vs pu",nintPu,minPu,maxPu) );
217  h_assocpu.push_back( ibook.book1D("num_assoc(simToReco)_pu","N of associated tracks (simToReco) vs pu",nintPu,minPu,maxPu) );
218  h_assoc2pu.push_back( ibook.book1D("num_assoc(recoToSim)_pu","N of associated (recoToSim) tracks vs pu",nintPu,minPu,maxPu) );
219  h_simulpu.push_back( ibook.book1D("num_simul_pu","N of simulated tracks vs pu",nintPu,minPu,maxPu) );
220  h_looperpu.push_back( ibook.book1D("num_duplicate_pu","N of associated (recoToSim) duplicate tracks vs pu",nintPu,minPu,maxPu) );
221  h_misidpu.push_back( ibook.book1D("num_chargemisid_pu","N of associated (recoToSim) charge misIDed tracks vs pu",nintPu,minPu,maxPu) );
222  //
223  h_recophi.push_back( ibook.book1D("num_reco_phi","N of reco track vs phi",nintPhi,minPhi,maxPhi) );
224  h_assocphi.push_back( ibook.book1D("num_assoc(simToReco)_phi","N of associated tracks (simToReco) vs phi",nintPhi,minPhi,maxPhi) );
225  h_assoc2phi.push_back( ibook.book1D("num_assoc(recoToSim)_phi","N of associated (recoToSim) tracks vs phi",nintPhi,minPhi,maxPhi) );
226  h_simulphi.push_back( ibook.book1D("num_simul_phi","N of simulated tracks vs phi",nintPhi,minPhi,maxPhi) );
227  h_looperphi.push_back( ibook.book1D("num_duplicate_phi","N of associated (recoToSim) duplicate tracks vs phi",nintPhi,minPhi,maxPhi) );
228  h_misidphi.push_back( ibook.book1D("num_chargemisid_phi","N of associated (recoToSim) charge misIDed tracks vs phi",nintPhi,minPhi,maxPhi) );
229 
230  h_recodxy.push_back( ibook.book1D("num_reco_dxy","N of reco track vs dxy",nintDxy,minDxy,maxDxy) );
231  h_assocdxy.push_back( ibook.book1D("num_assoc(simToReco)_dxy","N of associated tracks (simToReco) vs dxy",nintDxy,minDxy,maxDxy) );
232  h_assoc2dxy.push_back( ibook.book1D("num_assoc(recoToSim)_dxy","N of associated (recoToSim) tracks vs dxy",nintDxy,minDxy,maxDxy) );
233  h_simuldxy.push_back( ibook.book1D("num_simul_dxy","N of simulated tracks vs dxy",nintDxy,minDxy,maxDxy) );
234  h_looperdxy.push_back( ibook.book1D("num_duplicate_dxy","N of associated (recoToSim) looper tracks vs dxy",nintDxy,minDxy,maxDxy) );
235  h_misiddxy.push_back( ibook.book1D("num_chargemisid_dxy","N of associated (recoToSim) charge misIDed tracks vs dxy",nintDxy,minDxy,maxDxy) );
236 
237  h_recodz.push_back( ibook.book1D("num_reco_dz","N of reco track vs dz",nintDz,minDz,maxDz) );
238  h_assocdz.push_back( ibook.book1D("num_assoc(simToReco)_dz","N of associated tracks (simToReco) vs dz",nintDz,minDz,maxDz) );
239  h_assoc2dz.push_back( ibook.book1D("num_assoc(recoToSim)_dz","N of associated (recoToSim) tracks vs dz",nintDz,minDz,maxDz) );
240  h_simuldz.push_back( ibook.book1D("num_simul_dz","N of simulated tracks vs dz",nintDz,minDz,maxDz) );
241  h_looperdz.push_back( ibook.book1D("num_duplicate_dz","N of associated (recoToSim) looper tracks vs dz",nintDz,minDz,maxDz) );
242  h_misiddz.push_back( ibook.book1D("num_chargemisid_versus_dz","N of associated (recoToSim) charge misIDed tracks vs dz",nintDz,minDz,maxDz) );
243 
244  h_assocvertpos.push_back( ibook.book1D("num_assoc(simToReco)_vertpos",
245  "N of associated tracks (simToReco) vs transverse vert position",
247  h_simulvertpos.push_back( ibook.book1D("num_simul_vertpos","N of simulated tracks vs transverse vert position",
249 
250  h_assoczpos.push_back( ibook.book1D("num_assoc(simToReco)_zpos","N of associated tracks (simToReco) vs z vert position",
252  h_simulzpos.push_back( ibook.book1D("num_simul_zpos","N of simulated tracks vs z vert position",nintZpos,minZpos,maxZpos) );
253 
254  h_recodr.push_back( ibook.book1D("num_reco_dr","N of reconstructed tracks vs dR",nintdr,log10(mindr),log10(maxdr)) );
255  h_assocdr.push_back( ibook.book1D("num_assoc(simToReco)_dr","N of associated tracks (simToReco) vs dR",nintdr,log10(mindr),log10(maxdr)) );
256  h_assoc2dr.push_back( ibook.book1D("num_assoc(recoToSim)_dr","N of associated tracks (recoToSim) vs dR",nintdr,log10(mindr),log10(maxdr)) );
257  h_simuldr.push_back( ibook.book1D("num_simul_dr","N of simulated tracks vs dR",nintdr,log10(mindr),log10(maxdr)) );
258  BinLogX(h_recodr.back()->getTH1F());
259  BinLogX(h_assocdr.back()->getTH1F());
260  BinLogX(h_assoc2dr.back()->getTH1F());
261  BinLogX(h_simuldr.back()->getTH1F());
262 
264 
265  h_eta.push_back( ibook.book1D("eta", "pseudorapidity residue", 1000, -0.1, 0.1 ) );
266  h_pt.push_back( ibook.book1D("pullPt", "pull of p_{t}", 100, -10, 10 ) );
267  h_pullTheta.push_back( ibook.book1D("pullTheta","pull of #theta parameter",250,-25,25) );
268  h_pullPhi.push_back( ibook.book1D("pullPhi","pull of #phi parameter",250,-25,25) );
269  h_pullDxy.push_back( ibook.book1D("pullDxy","pull of dxy parameter",250,-25,25) );
270  h_pullDz.push_back( ibook.book1D("pullDz","pull of dz parameter",250,-25,25) );
271  h_pullQoverp.push_back( ibook.book1D("pullQoverp","pull of qoverp parameter",250,-25,25) );
272 
273  /* TO BE FIXED -----------
274  if (associators[ww]=="TrackAssociatorByChi2"){
275  h_assochi2.push_back( ibook.book1D("assocChi2","track association #chi^{2}",1000000,0,100000) );
276  h_assochi2_prob.push_back(ibook.book1D("assocChi2_prob","probability of association #chi^{2}",100,0,1));
277  } else if (associators[ww]=="quickTrackAssociatorByHits"){
278  h_assocFraction.push_back( ibook.book1D("assocFraction","fraction of shared hits",200,0,2) );
279  h_assocSharedHit.push_back(ibook.book1D("assocSharedHit","number of shared hits",20,0,20));
280  }
281  */
282  h_assocFraction.push_back( ibook.book1D("assocFraction","fraction of shared hits",200,0,2) );
283  h_assocSharedHit.push_back(ibook.book1D("assocSharedHit","number of shared hits",41,-0.5,40.5));
284  // ----------------------
285 
286  chi2_vs_nhits.push_back( ibook.book2D("chi2_vs_nhits","#chi^{2} vs nhits",25,0,25,100,0,10) );
287 
288  etares_vs_eta.push_back( ibook.book2D("etares_vs_eta","etaresidue vs eta",nintEta,minEta,maxEta,200,-0.1,0.1) );
289  nrec_vs_nsim.push_back( ibook.book2D("nrec_vs_nsim","nrec vs nsim",401,-0.5,400.5,401,-0.5,400.5) );
290 
291  chi2_vs_eta.push_back( ibook.book2D("chi2_vs_eta","chi2_vs_eta",nintEta,minEta,maxEta, 200, 0, 20 ));
292  chi2_vs_phi.push_back( ibook.book2D("chi2_vs_phi","#chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20 ) );
293 
294  nhits_vs_eta.push_back( ibook.book2D("nhits_vs_eta","nhits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
295  nPXBhits_vs_eta.push_back( ibook.book2D("nPXBhits_vs_eta","# PXB its vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
296  nPXFhits_vs_eta.push_back( ibook.book2D("nPXFhits_vs_eta","# PXF hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
297  nTIBhits_vs_eta.push_back( ibook.book2D("nTIBhits_vs_eta","# TIB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
298  nTIDhits_vs_eta.push_back( ibook.book2D("nTIDhits_vs_eta","# TID hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
299  nTOBhits_vs_eta.push_back( ibook.book2D("nTOBhits_vs_eta","# TOB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
300  nTEChits_vs_eta.push_back( ibook.book2D("nTEChits_vs_eta","# TEC hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
301 
302  nLayersWithMeas_vs_eta.push_back( ibook.book2D("nLayersWithMeas_vs_eta","# Layers with measurement vs eta",
304  nPXLlayersWithMeas_vs_eta.push_back( ibook.book2D("nPXLlayersWithMeas_vs_eta","# PXL Layers with measurement vs eta",
306  nSTRIPlayersWithMeas_vs_eta.push_back( ibook.book2D("nSTRIPlayersWithMeas_vs_eta","# STRIP Layers with measurement vs eta",
308  nSTRIPlayersWith1dMeas_vs_eta.push_back( ibook.book2D("nSTRIPlayersWith1dMeas_vs_eta","# STRIP Layers with 1D measurement vs eta",
310  nSTRIPlayersWith2dMeas_vs_eta.push_back( ibook.book2D("nSTRIPlayersWith2dMeas_vs_eta","# STRIP Layers with 2D measurement vs eta",
312 
313  nhits_vs_phi.push_back( ibook.book2D("nhits_vs_phi","#hits vs #phi",nintPhi,minPhi,maxPhi,nintHit,minHit,maxHit) );
314 
315  nlosthits_vs_eta.push_back( ibook.book2D("nlosthits_vs_eta","nlosthits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
316 
317  //resolution of track parameters
318  // dPt/Pt cotTheta Phi TIP LIP
319  // log10(pt)<0.5 100,0.1 240,0.08 100,0.015 100,0.1000 150,0.3000
320  // 0.5<log10(pt)<1.5 100,0.1 120,0.01 100,0.003 100,0.0100 150,0.0500
321  // >1.5 100,0.3 100,0.005 100,0.0008 100,0.0060 120,0.0300
322 
323  ptres_vs_eta.push_back(ibook.book2D("ptres_vs_eta","ptres_vs_eta",
325 
326  ptres_vs_phi.push_back( ibook.book2D("ptres_vs_phi","p_{t} res vs #phi",
328 
329  ptres_vs_pt.push_back(ibook.book2D("ptres_vs_pt","ptres_vs_pt",nintPt,minPt,maxPt, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
330 
331  cotThetares_vs_eta.push_back(ibook.book2D("cotThetares_vs_eta","cotThetares_vs_eta",
333 
334 
335  cotThetares_vs_pt.push_back(ibook.book2D("cotThetares_vs_pt","cotThetares_vs_pt",
337 
338 
339  phires_vs_eta.push_back(ibook.book2D("phires_vs_eta","phires_vs_eta",
341 
342  phires_vs_pt.push_back(ibook.book2D("phires_vs_pt","phires_vs_pt",
344 
345  phires_vs_phi.push_back(ibook.book2D("phires_vs_phi","#phi res vs #phi",
347 
348  dxyres_vs_eta.push_back(ibook.book2D("dxyres_vs_eta","dxyres_vs_eta",
350 
351  dxyres_vs_pt.push_back( ibook.book2D("dxyres_vs_pt","dxyres_vs_pt",
353 
354  dzres_vs_eta.push_back(ibook.book2D("dzres_vs_eta","dzres_vs_eta",
356 
357  dzres_vs_pt.push_back(ibook.book2D("dzres_vs_pt","dzres_vs_pt",nintPt,minPt,maxPt,dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
358 
359  ptmean_vs_eta_phi.push_back(ibook.bookProfile2D("ptmean_vs_eta_phi","mean p_{t} vs #eta and #phi",
360  nintPhi,minPhi,maxPhi,nintEta,minEta,maxEta,1000,0,1000));
361  phimean_vs_eta_phi.push_back(ibook.bookProfile2D("phimean_vs_eta_phi","mean #phi vs #eta and #phi",
363 
364  //pulls of track params vs eta: to be used with fitslicesytool
365  dxypull_vs_eta.push_back(ibook.book2D("dxypull_vs_eta","dxypull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
366  ptpull_vs_eta.push_back(ibook.book2D("ptpull_vs_eta","ptpull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
367  dzpull_vs_eta.push_back(ibook.book2D("dzpull_vs_eta","dzpull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
368  phipull_vs_eta.push_back(ibook.book2D("phipull_vs_eta","phipull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
369  thetapull_vs_eta.push_back(ibook.book2D("thetapull_vs_eta","thetapull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
370 
371  // h_ptshiftetamean.push_back( ibook.book1D("h_ptshifteta_Mean","<#deltapT/pT>[%] vs #eta",nintEta,minEta,maxEta) );
372 
373 
374  //pulls of track params vs phi
375  ptpull_vs_phi.push_back(ibook.book2D("ptpull_vs_phi","p_{t} pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
376  phipull_vs_phi.push_back(ibook.book2D("phipull_vs_phi","#phi pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
377  thetapull_vs_phi.push_back(ibook.book2D("thetapull_vs_phi","#theta pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
378 
379 
380  nrecHit_vs_nsimHit_sim2rec.push_back( ibook.book2D("nrecHit_vs_nsimHit_sim2rec","nrecHit vs nsimHit (Sim2RecAssoc)",
382  nrecHit_vs_nsimHit_rec2sim.push_back( ibook.book2D("nrecHit_vs_nsimHit_rec2sim","nrecHit vs nsimHit (Rec2simAssoc)",
384 
385  // dE/dx stuff
386  // FIXME: it would be nice to have an array
387  h_dedx_estim1.push_back( ibook.book1D("h_dedx_estim1","dE/dx estimator 1",nintDeDx,minDeDx,maxDeDx) );
388  h_dedx_estim2.push_back( ibook.book1D("h_dedx_estim2","dE/dx estimator 2",nintDeDx,minDeDx,maxDeDx) );
389  h_dedx_nom1.push_back( ibook.book1D("h_dedx_nom1","dE/dx number of measurements",nintHit,minHit,maxHit) );
390  h_dedx_nom2.push_back( ibook.book1D("h_dedx_nom2","dE/dx number of measurements",nintHit,minHit,maxHit) );
391  h_dedx_sat1.push_back( ibook.book1D("h_dedx_sat1","dE/dx number of measurements with saturation",nintHit,minHit,maxHit) );
392  h_dedx_sat2.push_back( ibook.book1D("h_dedx_sat2","dE/dx number of measurements with saturation",nintHit,minHit,maxHit) );
393 
394 
395  if(useLogPt){
396  BinLogX(dzres_vs_pt.back()->getTH2F());
397  BinLogX(dxyres_vs_pt.back()->getTH2F());
398  BinLogX(phires_vs_pt.back()->getTH2F());
399  BinLogX(cotThetares_vs_pt.back()->getTH2F());
400  BinLogX(ptres_vs_pt.back()->getTH2F());
401  BinLogX(h_looperpT.back()->getTH1F());
402  BinLogX(h_misidpT.back()->getTH1F());
403  BinLogX(h_recopT.back()->getTH1F());
404  BinLogX(h_assocpT.back()->getTH1F());
405  BinLogX(h_assoc2pT.back()->getTH1F());
406  BinLogX(h_simulpT.back()->getTH1F());
407  }
408 }
409 
411  h_effic.push_back( ibook.book1D("effic","efficiency vs #eta",nintEta,minEta,maxEta) );
412  h_efficPt.push_back( ibook.book1D("efficPt","efficiency vs pT",nintPt,minPt,maxPt) );
413  h_effic_vs_hit.push_back( ibook.book1D("effic_vs_hit","effic vs hit",nintHit,minHit,maxHit) );
414  h_effic_vs_pu.push_back( ibook.book1D("effic_vs_pu","effic vs pu",nintPu,minPu,maxPu) );
415  h_effic_vs_phi.push_back( ibook.book1D("effic_vs_phi","effic vs phi",nintPhi,minPhi,maxPhi) );
416  h_effic_vs_dxy.push_back( ibook.book1D("effic_vs_dxy","effic vs dxy",nintDxy,minDxy,maxDxy) );
417  h_effic_vs_dz.push_back( ibook.book1D("effic_vs_dz","effic vs dz",nintDz,minDz,maxDz) );
418  h_effic_vs_vertpos.push_back( ibook.book1D("effic_vs_vertpos","effic vs vertpos",nintVertpos,minVertpos,maxVertpos) );
419  h_effic_vs_zpos.push_back( ibook.book1D("effic_vs_zpos","effic vs zpos",nintZpos,minZpos,maxZpos) );
420  h_effic_vs_dr.push_back( ibook.book1D("effic_vs_dr","effic vs dr",nintdr,log10(mindr),log10(maxdr)) );
421  BinLogX(h_effic_vs_dr.back()->getTH1F());
422 
423  h_looprate.push_back( ibook.book1D("duplicatesRate","loop rate vs #eta",nintEta,minEta,maxEta) );
424  h_misidrate.push_back( ibook.book1D("chargeMisIdRate","misid rate vs #eta",nintEta,minEta,maxEta) );
425  h_fakerate.push_back( ibook.book1D("fakerate","fake rate vs #eta",nintEta,minEta,maxEta) );
426  h_loopratepT.push_back( ibook.book1D("duplicatesRate_Pt","loop rate vs pT",nintPt,minPt,maxPt) );
427  h_misidratepT.push_back( ibook.book1D("chargeMisIdRate_Pt","misid rate vs pT",nintPt,minPt,maxPt) );
428  h_fakeratePt.push_back( ibook.book1D("fakeratePt","fake rate vs pT",nintPt,minPt,maxPt) );
429  h_loopratehit.push_back( ibook.book1D("duplicatesRate_hit","loop rate vs hit",nintHit,minHit,maxHit) );
430  h_misidratehit.push_back( ibook.book1D("chargeMisIdRate_hit","misid rate vs hit",nintHit,minHit,maxHit) );
431  h_fake_vs_hit.push_back( ibook.book1D("fakerate_vs_hit","fake rate vs hit",nintHit,minHit,maxHit) );
432  h_loopratepu.push_back( ibook.book1D("duplicatesRate_pu","loop rate vs pu",nintPu,minPu,maxPu) );
433  h_misidratepu.push_back( ibook.book1D("chargeMisIdRate_pu","misid rate vs pu",nintPu,minPu,maxPu) );
434  h_fake_vs_pu.push_back( ibook.book1D("fakerate_vs_pu","fake rate vs pu",nintPu,minPu,maxPu) );
435  h_loopratephi.push_back( ibook.book1D("duplicatesRate_phi","loop rate vs #phi",nintPhi,minPhi,maxPhi) );
436  h_misidratephi.push_back( ibook.book1D("chargeMisIdRate_phi","misid rate vs #phi",nintPhi,minPhi,maxPhi) );
437  h_fake_vs_phi.push_back( ibook.book1D("fakerate_vs_phi","fake vs #phi",nintPhi,minPhi,maxPhi) );
438  h_loopratedxy.push_back( ibook.book1D("duplicatesRate_dxy","loop rate vs dxy",nintDxy,minDxy,maxDxy) );
439  h_misidratedxy.push_back( ibook.book1D("chargeMisIdRate_dxy","misid rate vs dxy",nintDxy,minDxy,maxDxy) );
440  h_fake_vs_dxy.push_back( ibook.book1D("fakerate_vs_dxy","fake rate vs dxy",nintDxy,minDxy,maxDxy) );
441  h_loopratedz.push_back( ibook.book1D("duplicatesRate_dz","loop rate vs dz",nintDz,minDz,maxDz) );
442  h_misidratedz.push_back( ibook.book1D("chargeMisIdRate_dz","misid rate vs dz",nintDz,minDz,maxDz) );
443  h_fake_vs_dz.push_back( ibook.book1D("fakerate_vs_dz","fake vs dz",nintDz,minDz,maxDz) );
444  h_fakerate_vs_dr.push_back( ibook.book1D("fakerate_vs_dr","fakerate vs dr",nintdr,log10(mindr),log10(maxdr)) );
445  BinLogX(h_fakerate_vs_dr.back()->getTH1F());
446 
447  h_chi2meanhitsh.push_back( ibook.bookProfile("chi2mean_vs_nhits","mean #chi^{2} vs nhits",25,0,25,100,0,10) );
448  h_chi2meanh.push_back( ibook.bookProfile("chi2mean","mean #chi^{2} vs #eta",nintEta,minEta,maxEta, 200, 0, 20) );
449  h_chi2mean_vs_phi.push_back( ibook.bookProfile("chi2mean_vs_phi","mean of #chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20) );
450 
451  h_hits_eta.push_back( ibook.bookProfile("hits_eta","mean #hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
452  h_PXBhits_eta.push_back( ibook.bookProfile("PXBhits_eta","mean # PXB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
453  h_PXFhits_eta.push_back( ibook.bookProfile("PXFhits_eta","mean # PXF hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
454  h_TIBhits_eta.push_back( ibook.bookProfile("TIBhits_eta","mean # TIB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
455  h_TIDhits_eta.push_back( ibook.bookProfile("TIDhits_eta","mean # TID hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
456  h_TOBhits_eta.push_back( ibook.bookProfile("TOBhits_eta","mean # TOB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
457  h_TEChits_eta.push_back( ibook.bookProfile("TEChits_eta","mean # TEC hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
458 
459  h_LayersWithMeas_eta.push_back(ibook.bookProfile("LayersWithMeas_eta","mean # LayersWithMeas vs eta",
461  h_PXLlayersWithMeas_eta.push_back(ibook.bookProfile("PXLlayersWith2dMeas_eta","mean # PXLlayersWithMeas vs eta",
463  h_STRIPlayersWithMeas_eta.push_back(ibook.bookProfile("STRIPlayersWithMeas_eta","mean # STRIPlayersWithMeas vs eta",
465  h_STRIPlayersWith1dMeas_eta.push_back(ibook.bookProfile("STRIPlayersWith1dMeas_eta","mean # STRIPlayersWith1dMeas vs eta",
467  h_STRIPlayersWith2dMeas_eta.push_back(ibook.bookProfile("STRIPlayersWith2dMeas_eta","mean # STRIPlayersWith2dMeas vs eta",
469  h_hits_phi.push_back( ibook.bookProfile("hits_phi","mean #hits vs #phi",nintPhi,minPhi,maxPhi, nintHit,minHit,maxHit) );
470  h_losthits_eta.push_back( ibook.bookProfile("losthits_eta","losthits_eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit) );
471 
472  h_ptrmsh.push_back( ibook.book1D("ptres_vs_eta_Sigma","#sigma(#deltap_{t}/p_{t}) vs #eta",nintEta,minEta,maxEta) );
473  h_ptmeanhPhi.push_back( ibook.book1D("ptres_vs_phi_Mean","mean of p_{t} resolution vs #phi",nintPhi,minPhi,maxPhi));
474  h_ptrmshPhi.push_back( ibook.book1D("ptres_vs_phi_Sigma","#sigma(#deltap_{t}/p_{t}) vs #phi",nintPhi,minPhi,maxPhi) );
475  h_ptmeanhPt.push_back( ibook.book1D("ptres_vs_pt_Mean","mean of p_{t} resolution vs p_{t}",nintPt,minPt,maxPt));
476  h_ptrmshPt.push_back( ibook.book1D("ptres_vs_pt_Sigma","#sigma(#deltap_{t}/p_{t}) vs pT",nintPt,minPt,maxPt) );
477  h_cotThetameanh.push_back( ibook.book1D("cotThetares_vs_eta_Mean","#sigma(cot(#theta)) vs #eta Mean",nintEta,minEta,maxEta) );
478  h_cotThetarmsh.push_back( ibook.book1D("cotThetares_vs_eta_Sigma","#sigma(cot(#theta)) vs #eta Sigma",nintEta,minEta,maxEta) );
479  h_cotThetameanhPt.push_back( ibook.book1D("cotThetares_vs_pt_Mean","#sigma(cot(#theta)) vs pT Mean",nintPt,minPt,maxPt) );
480  h_cotThetarmshPt.push_back( ibook.book1D("cotThetares_vs_pt_Sigma","#sigma(cot(#theta)) vs pT Sigma",nintPt,minPt,maxPt) );
481  h_phimeanh.push_back(ibook.book1D("phires_vs_eta_Mean","mean of #phi res vs #eta",nintEta,minEta,maxEta));
482  h_phirmsh.push_back( ibook.book1D("phires_vs_eta_Sigma","#sigma(#delta#phi) vs #eta",nintEta,minEta,maxEta) );
483  h_phimeanhPt.push_back(ibook.book1D("phires_vs_pt_Mean","mean of #phi res vs pT",nintPt,minPt,maxPt));
484  h_phirmshPt.push_back( ibook.book1D("phires_vs_pt_Sigma","#sigma(#delta#phi) vs pT",nintPt,minPt,maxPt) );
485  h_phimeanhPhi.push_back(ibook.book1D("phires_vs_phi_Mean","mean of #phi res vs #phi",nintPhi,minPhi,maxPhi));
486  h_phirmshPhi.push_back( ibook.book1D("phires_vs_phi_Sigma","#sigma(#delta#phi) vs #phi",nintPhi,minPhi,maxPhi) );
487  h_dxymeanh.push_back( ibook.book1D("dxyres_vs_eta_Mean","mean of dxyres vs #eta",nintEta,minEta,maxEta) );
488  h_dxyrmsh.push_back( ibook.book1D("dxyres_vs_eta_Sigma","#sigma(#deltadxy) vs #eta",nintEta,minEta,maxEta) );
489  h_dxymeanhPt.push_back( ibook.book1D("dxyres_vs_pt_Mean","mean of dxyres vs pT",nintPt,minPt,maxPt) );
490  h_dxyrmshPt.push_back( ibook.book1D("dxyres_vs_pt_Sigma","#sigmadxy vs pT",nintPt,minPt,maxPt) );
491  h_dzmeanh.push_back( ibook.book1D("dzres_vs_eta_Mean","mean of dzres vs #eta",nintEta,minEta,maxEta) );
492  h_dzrmsh.push_back( ibook.book1D("dzres_vs_eta_Sigma","#sigma(#deltadz) vs #eta",nintEta,minEta,maxEta) );
493  h_dzmeanhPt.push_back( ibook.book1D("dzres_vs_pt_Mean","mean of dzres vs pT",nintPt,minPt,maxPt) );
494  h_dzrmshPt.push_back( ibook.book1D("dzres_vs_pt_Sigma","#sigma(#deltadz vs pT",nintPt,minPt,maxPt) );
495  h_dxypulletamean.push_back( ibook.book1D("h_dxypulleta_Mean","mean of dxy pull vs #eta",nintEta,minEta,maxEta) );
496  h_ptpulletamean.push_back( ibook.book1D("h_ptpulleta_Mean","mean of p_{t} pull vs #eta",nintEta,minEta,maxEta) );
497  h_dzpulletamean.push_back( ibook.book1D("h_dzpulleta_Mean","mean of dz pull vs #eta",nintEta,minEta,maxEta) );
498  h_phipulletamean.push_back( ibook.book1D("h_phipulleta_Mean","mean of #phi pull vs #eta",nintEta,minEta,maxEta) );
499  h_thetapulletamean.push_back( ibook.book1D("h_thetapulleta_Mean","mean of #theta pull vs #eta",nintEta,minEta,maxEta) );
500  h_dxypulleta.push_back( ibook.book1D("h_dxypulleta_Sigma","#sigma of dxy pull vs #eta",nintEta,minEta,maxEta) );
501  h_ptpulleta.push_back( ibook.book1D("h_ptpulleta_Sigma","#sigma of p_{t} pull vs #eta",nintEta,minEta,maxEta) );
502  h_dzpulleta.push_back( ibook.book1D("h_dzpulleta_Sigma","#sigma of dz pull vs #eta",nintEta,minEta,maxEta) );
503  h_phipulleta.push_back( ibook.book1D("h_phipulleta_Sigma","#sigma of #phi pull vs #eta",nintEta,minEta,maxEta) );
504  h_thetapulleta.push_back( ibook.book1D("h_thetapulleta_Sigma","#sigma of #theta pull vs #eta",nintEta,minEta,maxEta) );
505  h_ptshifteta.push_back( ibook.book1D("ptres_vs_eta_Mean","<#deltapT/pT>[%] vs #eta",nintEta,minEta,maxEta) );
506  h_ptpullphimean.push_back( ibook.book1D("h_ptpullphi_Mean","mean of p_{t} pull vs #phi",nintPhi,minPhi,maxPhi) );
507  h_phipullphimean.push_back( ibook.book1D("h_phipullphi_Mean","mean of #phi pull vs #phi",nintPhi,minPhi,maxPhi) );
508  h_thetapullphimean.push_back( ibook.book1D("h_thetapullphi_Mean","mean of #theta pull vs #phi",nintPhi,minPhi,maxPhi) );
509  h_ptpullphi.push_back( ibook.book1D("h_ptpullphi_Sigma","#sigma of p_{t} pull vs #phi",nintPhi,minPhi,maxPhi) );
510  h_phipullphi.push_back( ibook.book1D("h_phipullphi_Sigma","#sigma of #phi pull vs #phi",nintPhi,minPhi,maxPhi) );
511  h_thetapullphi.push_back( ibook.book1D("h_thetapullphi_Sigma","#sigma of #theta pull vs #phi",nintPhi,minPhi,maxPhi) );
512 
513  if(useLogPt){
514  BinLogX(h_dzmeanhPt.back()->getTH1F());
515  BinLogX(h_dzrmshPt.back()->getTH1F());
516  BinLogX(h_dxymeanhPt.back()->getTH1F());
517  BinLogX(h_dxyrmshPt.back()->getTH1F());
518  BinLogX(h_phimeanhPt.back()->getTH1F());
519  BinLogX(h_phirmshPt.back()->getTH1F());
520  BinLogX(h_cotThetameanhPt.back()->getTH1F());
521  BinLogX(h_cotThetarmshPt.back()->getTH1F());
522  BinLogX(h_ptmeanhPt.back()->getTH1F());
523  BinLogX(h_ptrmshPt.back()->getTH1F());
524  BinLogX(h_efficPt.back()->getTH1F());
525  BinLogX(h_fakeratePt.back()->getTH1F());
526  BinLogX(h_loopratepT.back()->getTH1F());
527  BinLogX(h_misidratepT.back()->getTH1F());
528  }
529 }
530 
532  const TrackingParticle::Vector& momentumTP,
533  const TrackingParticle::Point& vertexTP,
534  int bx){
535  h_ptSIM[count]->Fill(sqrt(momentumTP.perp2()));
536  h_etaSIM[count]->Fill(momentumTP.eta());
537  h_vertposSIM[count]->Fill(sqrt(vertexTP.perp2()));
538  h_bunchxSIM[count]->Fill(bx);
539 }
540 
541 
542 
544  const TrackingParticle& tp,
545  const TrackingParticle::Vector& momentumTP,
546  const TrackingParticle::Point& vertexTP,
547  double dxySim, double dzSim, int nSimHits,
548  const reco::Track* track,
549  int numVertices,
550  double dR){
551  bool isMatched = track;
552 
553  if((*TpSelectorForEfficiencyVsEta)(tp)){
554  //effic vs eta
555  fillPlotNoFlow(h_simuleta[count],getEta(momentumTP.eta()));
556  if (isMatched) fillPlotNoFlow(h_assoceta[count],getEta(momentumTP.eta()));
557  //effic vs hits
558  fillPlotNoFlow(h_simulhit[count],(int)nSimHits);
559  if(isMatched) {
560  fillPlotNoFlow(h_assochit[count],(int)nSimHits);
561  nrecHit_vs_nsimHit_sim2rec[count]->Fill( track->numberOfValidHits(),nSimHits);
562  }
563  //effic vs pu
564  fillPlotNoFlow(h_simulpu[count],(int)numVertices);
565  if(isMatched) fillPlotNoFlow(h_assocpu[count],numVertices);
566  //efficiency vs dR
567  fillPlotNoFlow(h_simuldr[count],dR);
568  if (isMatched) fillPlotNoFlow(h_assocdr[count],dR);
569  }
570 
571  if((*TpSelectorForEfficiencyVsPhi)(tp)){
572  fillPlotNoFlow(h_simulphi[count],momentumTP.phi());
573  if (isMatched) fillPlotNoFlow(h_assocphi[count],momentumTP.phi());
574  }
575 
576  if((*TpSelectorForEfficiencyVsPt)(tp)){
577  fillPlotNoFlow(h_simulpT[count],getPt(sqrt(momentumTP.perp2())));
578  if (isMatched) fillPlotNoFlow(h_assocpT[count],getPt(sqrt(momentumTP.perp2())));
579  }
580 
582  fillPlotNoFlow(h_simuldxy[count],dxySim);
583  if (isMatched) fillPlotNoFlow(h_assocdxy[count],dxySim);
584 
585  fillPlotNoFlow(h_simulvertpos[count],sqrt(vertexTP.perp2()));
586  if (isMatched) fillPlotNoFlow(h_assocvertpos[count],sqrt(vertexTP.perp2()));
587  }
588 
589 
591  fillPlotNoFlow(h_simuldz[count],dzSim);
592  if (isMatched) fillPlotNoFlow(h_assocdz[count],dzSim);
593 
594  fillPlotNoFlow(h_simulzpos[count],vertexTP.z());
595  if (isMatched) fillPlotNoFlow(h_assoczpos[count],vertexTP.z());
596  }
597 
598 }
599 
600 // dE/dx
602 //void MTVHistoProducerAlgoForTracker::fill_dedx_recoTrack_histos(reco::TrackRef trackref, std::vector< edm::ValueMap<reco::DeDxData> > v_dEdx) {
603  double dedx;
604  int nom;
605  int sat;
607  for (unsigned int i=0; i<v_dEdx.size(); i++) {
608  dEdxTrack = v_dEdx.at(i);
609  dedx = dEdxTrack[trackref].dEdx();
610  nom = dEdxTrack[trackref].numberOfMeasurements();
611  sat = dEdxTrack[trackref].numberOfSaturatedMeasurements();
612  if (i==0) {
613  h_dedx_estim1[count]->Fill(dedx);
614  h_dedx_nom1[count]->Fill(nom);
615  h_dedx_sat1[count]->Fill(sat);
616  } else if (i==1) {
617  h_dedx_estim2[count]->Fill(dedx);
618  h_dedx_nom2[count]->Fill(nom);
619  h_dedx_sat2[count]->Fill(sat);
620  }
621  }
622 }
623 
624 
626  const reco::Track& track,
627  const math::XYZPoint& bsPosition,
628  bool isMatched,
629  bool isSigMatched,
630  bool isChargeMatched,
631  int numAssocRecoTracks,
632  int numVertices,
633  int nSimHits,
634  double sharedFraction,
635  double dR){
636 
637  //Fill track algo histogram
638  if (track.algo()>=4 && track.algo()<=14) fillPlotNoFlow(h_algo[count],track.algo()-4);
639  int sharedHits = sharedFraction * track.numberOfValidHits();
640 
641  //Compute fake rate vs eta
642  fillPlotNoFlow(h_recoeta[count],getEta(track.momentum().eta()));
643  if (isMatched) {
644  fillPlotNoFlow(h_assoc2eta[count],getEta(track.momentum().eta()));
645  if (!isChargeMatched) fillPlotNoFlow(h_misideta[count],getEta(track.momentum().eta()));
646  if (numAssocRecoTracks>1) fillPlotNoFlow(h_loopereta[count],getEta(track.momentum().eta()));
647  nrecHit_vs_nsimHit_rec2sim[count]->Fill( track.numberOfValidHits(),nSimHits);
648  h_assocFraction[count]->Fill( sharedFraction);
649  h_assocSharedHit[count]->Fill( sharedHits);
650  }
651 
652  fillPlotNoFlow(h_recophi[count],track.momentum().phi());
653  if (isMatched) {
654  fillPlotNoFlow(h_assoc2phi[count],track.momentum().phi());
655  if (!isChargeMatched) fillPlotNoFlow(h_misidphi[count],track.momentum().phi());
656  if (numAssocRecoTracks>1) fillPlotNoFlow(h_looperphi[count],track.momentum().phi());
657  }
658 
659  fillPlotNoFlow(h_recopT[count],getPt(sqrt(track.momentum().perp2())));
660  if (isMatched) {
661  fillPlotNoFlow(h_assoc2pT[count],getPt(sqrt(track.momentum().perp2())));
662  if (!isChargeMatched) fillPlotNoFlow(h_misidpT[count],getPt(sqrt(track.momentum().perp2())));
663  if (numAssocRecoTracks>1) fillPlotNoFlow(h_looperpT[count],getPt(sqrt(track.momentum().perp2())));
664  }
665 
666  fillPlotNoFlow(h_recodxy[count],track.dxy(bsPosition));
667  if (isMatched) {
668  fillPlotNoFlow(h_assoc2dxy[count],track.dxy(bsPosition));
669  if (!isChargeMatched) fillPlotNoFlow(h_misiddxy[count],track.dxy(bsPosition));
670  if (numAssocRecoTracks>1) fillPlotNoFlow(h_looperdxy[count],track.dxy(bsPosition));
671  }
672 
673  fillPlotNoFlow(h_recodz[count],track.dz(bsPosition));
674  if (isMatched) {
675  fillPlotNoFlow(h_assoc2dz[count],track.dz(bsPosition));
676  if (!isChargeMatched) fillPlotNoFlow(h_misiddz[count],track.dz(bsPosition));
677  if (numAssocRecoTracks>1) fillPlotNoFlow(h_looperdz[count],track.dz(bsPosition));
678  }
679 
680 
681  fillPlotNoFlow(h_recohit[count],track.found());
682  if (isMatched) {
683  fillPlotNoFlow(h_assoc2hit[count],track.found());
684  if (!isChargeMatched) fillPlotNoFlow(h_misidhit[count],track.found());
685  if (numAssocRecoTracks>1) fillPlotNoFlow(h_looperhit[count],track.found());
686  }
687 
688  fillPlotNoFlow(h_recopu[count],numVertices);
689  if (isMatched) {
690  fillPlotNoFlow(h_assoc2pu[count],numVertices);
691  if (!isChargeMatched) fillPlotNoFlow(h_misidpu[count],numVertices);
692  if (numAssocRecoTracks>1) fillPlotNoFlow(h_looperpu[count],numVertices);
693  }
694 
695  //fakerate vs dR
696  h_recodr[count]->Fill(min(max(dR,h_recodr[count]->getTH1()->GetXaxis()->GetXmin()),h_recodr[count]->getTH1()->GetXaxis()->GetXmax()));
697  if (isMatched) h_assoc2dr[count]->Fill(min(max(dR,h_recodr[count]->getTH1()->GetXaxis()->GetXmin()),h_recodr[count]->getTH1()->GetXaxis()->GetXmax()));
698 }
699 
700 
702  const reco::Track& track){
703  //nchi2 and hits global distributions
704  h_nchi2[count]->Fill(track.normalizedChi2());
705  h_nchi2_prob[count]->Fill(TMath::Prob(track.chi2(),(int)track.ndof()));
706  h_hits[count]->Fill(track.numberOfValidHits());
707  h_losthits[count]->Fill(track.numberOfLostHits());
708  chi2_vs_nhits[count]->Fill(track.numberOfValidHits(),track.normalizedChi2());
709  h_charge[count]->Fill( track.charge() );
712 
713  //chi2 and #hit vs eta: fill 2D histos
714  chi2_vs_eta[count]->Fill(getEta(track.eta()),track.normalizedChi2());
715  nhits_vs_eta[count]->Fill(getEta(track.eta()),track.numberOfValidHits());
724  int LayersAll = track.hitPattern().stripLayersWithMeasurement();
725  int Layers2D = track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
726  int Layers1D = LayersAll - Layers2D;
727  nSTRIPlayersWithMeas_vs_eta[count]->Fill(getEta(track.eta()),LayersAll);
728  nSTRIPlayersWith1dMeas_vs_eta[count]->Fill(getEta(track.eta()),Layers1D);
729  nSTRIPlayersWith2dMeas_vs_eta[count]->Fill(getEta(track.eta()),Layers2D);
730 
731  nlosthits_vs_eta[count]->Fill(getEta(track.eta()),track.numberOfLostHits());
732 }
733 
734 
735 void MTVHistoProducerAlgoForTracker::fill_trackBased_histos(int count, int assTracks, int numRecoTracks, int numSimTracks){
736 
737  h_tracks[count]->Fill(assTracks);
738  h_fakes[count]->Fill(numRecoTracks-assTracks);
739  nrec_vs_nsim[count]->Fill(numRecoTracks,numSimTracks);
740 
741 }
742 
743 
744 
746  const TrackingParticle::Vector& momentumTP,
747  const TrackingParticle::Point& vertexTP,
748  int chargeTP,
749  const reco::Track& track,
750  const math::XYZPoint& bsPosition){
751 
752  // evaluation of TP parameters
753  double qoverpSim = chargeTP/sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
754  double lambdaSim = M_PI/2-momentumTP.theta();
755  double phiSim = momentumTP.phi();
756  double dxySim = (-vertexTP.x()*sin(momentumTP.phi())+vertexTP.y()*cos(momentumTP.phi()));
757  double dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/sqrt(momentumTP.perp2())
758  * momentumTP.z()/sqrt(momentumTP.perp2());
759 
760 
761  // reco::Track::ParameterVector rParameters = track.parameters(); // UNUSED
762 
763  double qoverpRec(0);
764  double qoverpErrorRec(0);
765  double ptRec(0);
766  double ptErrorRec(0);
767  double lambdaRec(0);
768  double lambdaErrorRec(0);
769  double phiRec(0);
770  double phiErrorRec(0);
771 
772  /* TO BE FIXED LATER -----------
773  //loop to decide whether to take gsfTrack (utilisation of mode-function) or common track
774  const GsfTrack* gsfTrack(0);
775  if(useGsf){
776  gsfTrack = dynamic_cast<const GsfTrack*>(&(*track));
777  if (gsfTrack==0) edm::LogInfo("TrackValidator") << "Trying to access mode for a non-GsfTrack";
778  }
779 
780  if (gsfTrack) {
781  // get values from mode
782  getRecoMomentum(*gsfTrack, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
783  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
784  }
785 
786  else {
787  // get values from track (without mode)
788  getRecoMomentum(*track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
789  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
790  }
791  */
792  getRecoMomentum(track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
793  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
794  // -------------
795 
796  double ptError = ptErrorRec;
797  double ptres=ptRec-sqrt(momentumTP.perp2());
798  double etares=track.eta()-momentumTP.Eta();
799 
800 
801  double dxyRec = track.dxy(bsPosition);
802  double dzRec = track.dz(bsPosition);
803 
804  // eta residue; pt, k, theta, phi, dxy, dz pulls
805  double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
806  double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
807  double phiPull=(phiRec-phiSim)/phiErrorRec;
808  double dxyPull=(dxyRec-dxySim)/track.dxyError();
809  double dzPull=(dzRec-dzSim)/track.dzError();
810 
811  double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
812  ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
813  double contrib_dxy = ((dxyRec-dxySim)/track.dxyError())*((dxyRec-dxySim)/track.dxyError())/5;
814  double contrib_dz = ((dzRec-dzSim)/track.dzError())*((dzRec-dzSim)/track.dzError())/5;
815  double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
816  ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
817  double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
818  ((phiRec-phiSim)/phiErrorRec)/5;
819 
820  LogTrace("TrackValidatorTEST")
821  //<< "assocChi2=" << tp.begin()->second << "\n"
822  << "" << "\n"
823  << "ptREC=" << ptRec << "\n" << "etaREC=" << track.eta() << "\n" << "qoverpREC=" << qoverpRec << "\n"
824  << "dxyREC=" << dxyRec << "\n" << "dzREC=" << dzRec << "\n"
825  << "thetaREC=" << track.theta() << "\n" << "phiREC=" << phiRec << "\n"
826  << "" << "\n"
827  << "qoverpError()=" << qoverpErrorRec << "\n" << "dxyError()=" << track.dxyError() << "\n"<< "dzError()="
828  << track.dzError() << "\n"
829  << "thetaError()=" << lambdaErrorRec << "\n" << "phiError()=" << phiErrorRec << "\n"
830  << "" << "\n"
831  << "ptSIM=" << sqrt(momentumTP.perp2()) << "\n"<< "etaSIM=" << momentumTP.Eta() << "\n"<< "qoverpSIM=" << qoverpSim << "\n"
832  << "dxySIM=" << dxySim << "\n"<< "dzSIM=" << dzSim << "\n" << "thetaSIM=" << M_PI/2-lambdaSim << "\n"
833  << "phiSIM=" << phiSim << "\n"
834  << "" << "\n"
835  << "contrib_Qoverp=" << contrib_Qoverp << "\n"<< "contrib_dxy=" << contrib_dxy << "\n"<< "contrib_dz=" << contrib_dz << "\n"
836  << "contrib_theta=" << contrib_theta << "\n"<< "contrib_phi=" << contrib_phi << "\n"
837  << "" << "\n"
838  <<"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<"\n";
839 
840  h_pullQoverp[count]->Fill(qoverpPull);
841  h_pullTheta[count]->Fill(thetaPull);
842  h_pullPhi[count]->Fill(phiPull);
843  h_pullDxy[count]->Fill(dxyPull);
844  h_pullDz[count]->Fill(dzPull);
845 
846 
847  h_pt[count]->Fill(ptres/ptError);
848  h_eta[count]->Fill(etares);
849  //etares_vs_eta[count]->Fill(getEta(track.eta()),etares);
850  etares_vs_eta[count]->Fill(getEta(momentumTP.eta()),etares);
851 
852  //resolution of track params: fill 2D histos
853  dxyres_vs_eta[count]->Fill(getEta(momentumTP.eta()),dxyRec-dxySim);
854  ptres_vs_eta[count]->Fill(getEta(momentumTP.eta()),(ptRec-sqrt(momentumTP.perp2()))/ptRec);
855  dzres_vs_eta[count]->Fill(getEta(momentumTP.eta()),dzRec-dzSim);
856  phires_vs_eta[count]->Fill(getEta(momentumTP.eta()),phiRec-phiSim);
857  cotThetares_vs_eta[count]->Fill(getEta(momentumTP.eta()),1/tan(M_PI*0.5-lambdaRec)-1/tan(M_PI*0.5-lambdaSim));
858 
859  //same as before but vs pT
860  dxyres_vs_pt[count]->Fill(getPt(sqrt(momentumTP.perp2())),dxyRec-dxySim);
861  ptres_vs_pt[count]->Fill(getPt(sqrt(momentumTP.perp2())),(ptRec-sqrt(momentumTP.perp2()))/ptRec);
862  dzres_vs_pt[count]->Fill(getPt(sqrt(momentumTP.perp2())),dzRec-dzSim);
863  phires_vs_pt[count]->Fill(getPt(sqrt(momentumTP.perp2())),phiRec-phiSim);
864  cotThetares_vs_pt[count]->Fill(getPt(sqrt(momentumTP.perp2())),1/tan(M_PI*0.5-lambdaRec)-1/tan(M_PI*0.5-lambdaSim));
865 
866  //pulls of track params vs eta: fill 2D histos
867  dxypull_vs_eta[count]->Fill(getEta(momentumTP.eta()),dxyPull);
868  ptpull_vs_eta[count]->Fill(getEta(momentumTP.eta()),ptres/ptError);
869  dzpull_vs_eta[count]->Fill(getEta(momentumTP.eta()),dzPull);
870  phipull_vs_eta[count]->Fill(getEta(momentumTP.eta()),phiPull);
871  thetapull_vs_eta[count]->Fill(getEta(momentumTP.eta()),thetaPull);
872 
873  //plots vs phi
874  nhits_vs_phi[count]->Fill(phiRec,track.numberOfValidHits());
875  chi2_vs_phi[count]->Fill(phiRec,track.normalizedChi2());
876  ptmean_vs_eta_phi[count]->Fill(phiRec,getEta(track.eta()),ptRec);
877  phimean_vs_eta_phi[count]->Fill(phiRec,getEta(track.eta()),phiRec);
878 
879  ptres_vs_phi[count]->Fill(momentumTP.phi(),(ptRec-sqrt(momentumTP.perp2()))/ptRec);
880  phires_vs_phi[count]->Fill(momentumTP.phi(),phiRec-phiSim);
881  ptpull_vs_phi[count]->Fill(momentumTP.phi(),ptres/ptError);
882  phipull_vs_phi[count]->Fill(momentumTP.phi(),phiPull);
883  thetapull_vs_phi[count]->Fill(momentumTP.phi(),thetaPull);
884 
885 
886 }
887 
888 
889 
890 void
891 MTVHistoProducerAlgoForTracker::getRecoMomentum (const reco::Track& track, double& pt, double& ptError,
892  double& qoverp, double& qoverpError, double& lambda,double& lambdaError,
893  double& phi, double& phiError ) const {
894  pt = track.pt();
895  ptError = track.ptError();
896  qoverp = track.qoverp();
897  qoverpError = track.qoverpError();
898  lambda = track.lambda();
899  lambdaError = track.lambdaError();
900  phi = track.phi();
901  phiError = track.phiError();
902  // cout <<"test1" << endl;
903 
904 
905 
906 }
907 
908 void
909 MTVHistoProducerAlgoForTracker::getRecoMomentum (const reco::GsfTrack& gsfTrack, double& pt, double& ptError,
910  double& qoverp, double& qoverpError, double& lambda,double& lambdaError,
911  double& phi, double& phiError ) const {
912 
913  pt = gsfTrack.ptMode();
914  ptError = gsfTrack.ptModeError();
915  qoverp = gsfTrack.qoverpMode();
916  qoverpError = gsfTrack.qoverpModeError();
917  lambda = gsfTrack.lambdaMode();
918  lambdaError = gsfTrack.lambdaModeError();
919  phi = gsfTrack.phiMode();
920  phiError = gsfTrack.phiModeError();
921  // cout <<"test2" << endl;
922 
923 }
924 
925 double
927  if (useFabsEta) return fabs(eta);
928  else return eta;
929 }
930 
931 double
933  if (useInvPt && pt!=0) return 1/pt;
934  else return pt;
935 }
936 
937 
939  //resolution of track params: get sigma from 2D histos
940  FitSlicesYTool fsyt_dxy(dxyres_vs_eta[counter]);
941  fsyt_dxy.getFittedSigmaWithError(h_dxyrmsh[counter]);
942  fsyt_dxy.getFittedMeanWithError(h_dxymeanh[counter]);
943  FitSlicesYTool fsyt_dxyPt(dxyres_vs_pt[counter]);
944  fsyt_dxyPt.getFittedSigmaWithError(h_dxyrmshPt[counter]);
945  fsyt_dxyPt.getFittedMeanWithError(h_dxymeanhPt[counter]);
946  FitSlicesYTool fsyt_pt(ptres_vs_eta[counter]);
947  fsyt_pt.getFittedSigmaWithError(h_ptrmsh[counter]);
948  fsyt_pt.getFittedMeanWithError(h_ptshifteta[counter]);
949  FitSlicesYTool fsyt_ptPt(ptres_vs_pt[counter]);
950  fsyt_ptPt.getFittedSigmaWithError(h_ptrmshPt[counter]);
951  fsyt_ptPt.getFittedMeanWithError(h_ptmeanhPt[counter]);
952  FitSlicesYTool fsyt_ptPhi(ptres_vs_phi[counter]);
953  fsyt_ptPhi.getFittedSigmaWithError(h_ptrmshPhi[counter]);
954  fsyt_ptPhi.getFittedMeanWithError(h_ptmeanhPhi[counter]);
955  FitSlicesYTool fsyt_dz(dzres_vs_eta[counter]);
956  fsyt_dz.getFittedSigmaWithError(h_dzrmsh[counter]);
957  fsyt_dz.getFittedMeanWithError(h_dzmeanh[counter]);
958  FitSlicesYTool fsyt_dzPt(dzres_vs_pt[counter]);
959  fsyt_dzPt.getFittedSigmaWithError(h_dzrmshPt[counter]);
960  fsyt_dzPt.getFittedMeanWithError(h_dzmeanhPt[counter]);
961  FitSlicesYTool fsyt_phi(phires_vs_eta[counter]);
962  fsyt_phi.getFittedSigmaWithError(h_phirmsh[counter]);
963  fsyt_phi.getFittedMeanWithError(h_phimeanh[counter]);
964  FitSlicesYTool fsyt_phiPt(phires_vs_pt[counter]);
965  fsyt_phiPt.getFittedSigmaWithError(h_phirmshPt[counter]);
966  fsyt_phiPt.getFittedMeanWithError(h_phimeanhPt[counter]);
967  FitSlicesYTool fsyt_phiPhi(phires_vs_phi[counter]);
968  fsyt_phiPhi.getFittedSigmaWithError(h_phirmshPhi[counter]);
969  fsyt_phiPhi.getFittedMeanWithError(h_phimeanhPhi[counter]);
970  FitSlicesYTool fsyt_cotTheta(cotThetares_vs_eta[counter]);
971  fsyt_cotTheta.getFittedSigmaWithError(h_cotThetarmsh[counter]);
972  fsyt_cotTheta.getFittedMeanWithError(h_cotThetameanh[counter]);
973  FitSlicesYTool fsyt_cotThetaPt(cotThetares_vs_pt[counter]);
974  fsyt_cotThetaPt.getFittedSigmaWithError(h_cotThetarmshPt[counter]);
975  fsyt_cotThetaPt.getFittedMeanWithError(h_cotThetameanhPt[counter]);
976 
977  //pulls of track params vs eta: get sigma from 2D histos
978  FitSlicesYTool fsyt_dxyp(dxypull_vs_eta[counter]);
979  fsyt_dxyp.getFittedSigmaWithError(h_dxypulleta[counter]);
980  fsyt_dxyp.getFittedMeanWithError(h_dxypulletamean[counter]);
981  FitSlicesYTool fsyt_ptp(ptpull_vs_eta[counter]);
982  fsyt_ptp.getFittedSigmaWithError(h_ptpulleta[counter]);
983  fsyt_ptp.getFittedMeanWithError(h_ptpulletamean[counter]);
984  FitSlicesYTool fsyt_dzp(dzpull_vs_eta[counter]);
985  fsyt_dzp.getFittedSigmaWithError(h_dzpulleta[counter]);
986  fsyt_dzp.getFittedMeanWithError(h_dzpulletamean[counter]);
987  FitSlicesYTool fsyt_phip(phipull_vs_eta[counter]);
988  fsyt_phip.getFittedSigmaWithError(h_phipulleta[counter]);
989  fsyt_phip.getFittedMeanWithError(h_phipulletamean[counter]);
990  FitSlicesYTool fsyt_thetap(thetapull_vs_eta[counter]);
991  fsyt_thetap.getFittedSigmaWithError(h_thetapulleta[counter]);
992  fsyt_thetap.getFittedMeanWithError(h_thetapulletamean[counter]);
993  //vs phi
994  FitSlicesYTool fsyt_ptpPhi(ptpull_vs_phi[counter]);
995  fsyt_ptpPhi.getFittedSigmaWithError(h_ptpullphi[counter]);
996  fsyt_ptpPhi.getFittedMeanWithError(h_ptpullphimean[counter]);
997  FitSlicesYTool fsyt_phipPhi(phipull_vs_phi[counter]);
998  fsyt_phipPhi.getFittedSigmaWithError(h_phipullphi[counter]);
999  fsyt_phipPhi.getFittedMeanWithError(h_phipullphimean[counter]);
1000  FitSlicesYTool fsyt_thetapPhi(thetapull_vs_phi[counter]);
1001  fsyt_thetapPhi.getFittedSigmaWithError(h_thetapullphi[counter]);
1002  fsyt_thetapPhi.getFittedMeanWithError(h_thetapullphimean[counter]);
1003 
1004  //effic&fake;
1005  fillPlotFromPlots(h_effic[counter],h_assoceta[counter]->getTH1(),h_simuleta[counter]->getTH1(),"effic");
1006  fillPlotFromPlots(h_fakerate[counter],h_assoc2eta[counter]->getTH1(),h_recoeta[counter]->getTH1(),"fakerate");
1007  fillPlotFromPlots(h_looprate[counter],h_loopereta[counter]->getTH1(),h_recoeta[counter]->getTH1(),"effic");
1008  fillPlotFromPlots(h_misidrate[counter],h_misideta[counter]->getTH1(),h_recoeta[counter]->getTH1(),"effic");
1009  fillPlotFromPlots(h_efficPt[counter],h_assocpT[counter]->getTH1(),h_simulpT[counter]->getTH1(),"effic");
1010  fillPlotFromPlots(h_fakeratePt[counter],h_assoc2pT[counter]->getTH1(),h_recopT[counter]->getTH1(),"fakerate");
1011  fillPlotFromPlots(h_loopratepT[counter],h_looperpT[counter]->getTH1(),h_recopT[counter]->getTH1(),"effic");
1012  fillPlotFromPlots(h_misidratepT[counter],h_misidpT[counter]->getTH1(),h_recopT[counter]->getTH1(),"effic");
1013  fillPlotFromPlots(h_effic_vs_hit[counter],h_assochit[counter]->getTH1(),h_simulhit[counter]->getTH1(),"effic");
1014  fillPlotFromPlots(h_fake_vs_hit[counter],h_assoc2hit[counter]->getTH1(),h_recohit[counter]->getTH1(),"fakerate");
1015  fillPlotFromPlots(h_loopratehit[counter],h_looperhit[counter]->getTH1(),h_recohit[counter]->getTH1(),"effic");
1016  fillPlotFromPlots(h_misidratehit[counter],h_misidhit[counter]->getTH1(),h_recohit[counter]->getTH1(),"effic");
1017  fillPlotFromPlots(h_effic_vs_pu[counter],h_assocpu[counter]->getTH1(),h_simulpu[counter]->getTH1(),"effic");
1018  fillPlotFromPlots(h_fake_vs_pu[counter],h_assoc2pu[counter]->getTH1(),h_recopu[counter]->getTH1(),"fakerate");
1019  fillPlotFromPlots(h_loopratepu[counter],h_looperpu[counter]->getTH1(),h_recopu[counter]->getTH1(),"effic");
1020  fillPlotFromPlots(h_misidratepu[counter],h_misidpu[counter]->getTH1(),h_recopu[counter]->getTH1(),"effic");
1021  fillPlotFromPlots(h_effic_vs_phi[counter],h_assocphi[counter]->getTH1(),h_simulphi[counter]->getTH1(),"effic");
1022  fillPlotFromPlots(h_fake_vs_phi[counter],h_assoc2phi[counter]->getTH1(),h_recophi[counter]->getTH1(),"fakerate");
1023  fillPlotFromPlots(h_loopratephi[counter],h_looperphi[counter]->getTH1(),h_recophi[counter]->getTH1(),"effic");
1024  fillPlotFromPlots(h_misidratephi[counter],h_misidphi[counter]->getTH1(),h_recophi[counter]->getTH1(),"effic");
1025  fillPlotFromPlots(h_effic_vs_dxy[counter],h_assocdxy[counter]->getTH1(),h_simuldxy[counter]->getTH1(),"effic");
1026  fillPlotFromPlots(h_fake_vs_dxy[counter],h_assoc2dxy[counter]->getTH1(),h_recodxy[counter]->getTH1(),"fakerate");
1027  fillPlotFromPlots(h_loopratedxy[counter],h_looperdxy[counter]->getTH1(),h_recodxy[counter]->getTH1(),"effic");
1028  fillPlotFromPlots(h_misidratedxy[counter],h_misiddxy[counter]->getTH1(),h_recodxy[counter]->getTH1(),"effic");
1029  fillPlotFromPlots(h_effic_vs_dz[counter],h_assocdz[counter]->getTH1(),h_simuldz[counter]->getTH1(),"effic");
1030  fillPlotFromPlots(h_fake_vs_dz[counter],h_assoc2dz[counter]->getTH1(),h_recodz[counter]->getTH1(),"fakerate");
1031  fillPlotFromPlots(h_loopratedz[counter],h_looperdz[counter]->getTH1(),h_recodz[counter]->getTH1(),"effic");
1032  fillPlotFromPlots(h_misidratedz[counter],h_misiddz[counter]->getTH1(),h_recodz[counter]->getTH1(),"effic");
1033  fillPlotFromPlots(h_effic_vs_vertpos[counter],h_assocvertpos[counter]->getTH1(),h_simulvertpos[counter]->getTH1(),"effic");
1034  fillPlotFromPlots(h_effic_vs_zpos[counter],h_assoczpos[counter]->getTH1(),h_simulzpos[counter]->getTH1(),"effic");
1035  fillPlotFromPlots(h_effic_vs_dr[counter],h_assocdr[counter]->getTH1(),h_simuldr[counter]->getTH1(),"effic");
1036  fillPlotFromPlots(h_fakerate_vs_dr[counter],h_assoc2dr[counter]->getTH1(),h_recodr[counter]->getTH1(),"fakerate");
1037 }
1038 
1040  //chi2 and #hit vs eta: get mean from 2D histos
1041  doProfileX(chi2_vs_eta[counter],h_chi2meanh[counter]);
1042  doProfileX(nhits_vs_eta[counter],h_hits_eta[counter]);
1043  doProfileX(nPXBhits_vs_eta[counter],h_PXBhits_eta[counter]);
1044  doProfileX(nPXFhits_vs_eta[counter],h_PXFhits_eta[counter]);
1045  doProfileX(nTIBhits_vs_eta[counter],h_TIBhits_eta[counter]);
1046  doProfileX(nTIDhits_vs_eta[counter],h_TIDhits_eta[counter]);
1047  doProfileX(nTOBhits_vs_eta[counter],h_TOBhits_eta[counter]);
1048  doProfileX(nTEChits_vs_eta[counter],h_TEChits_eta[counter]);
1049 
1055 
1056 
1057 
1058  doProfileX(nlosthits_vs_eta[counter],h_losthits_eta[counter]);
1059  //vs phi
1060  doProfileX(chi2_vs_nhits[counter],h_chi2meanhitsh[counter]);
1061  // doProfileX(ptres_vs_eta[counter],h_ptresmean_vs_eta[counter]);
1062  // doProfileX(phires_vs_eta[counter],h_phiresmean_vs_eta[counter]);
1063  doProfileX(chi2_vs_phi[counter],h_chi2mean_vs_phi[counter]);
1064  doProfileX(nhits_vs_phi[counter],h_hits_phi[counter]);
1065  // doProfileX(ptres_vs_phi[counter],h_ptresmean_vs_phi[counter]);
1066  // doProfileX(phires_vs_phi[counter],h_phiresmean_vs_phi[counter]);
1067 }
1068 
1069 
1071  const reco::GenParticle& tp,
1072  const TrackingParticle::Vector& momentumTP,
1073  const TrackingParticle::Point& vertexTP,
1074  double dxySim, double dzSim, int nSimHits,
1075  const reco::Track* track,
1076  int numVertices){
1077 
1078  bool isMatched = track;
1079 
1080  if((*GpSelectorForEfficiencyVsEta)(tp)){
1081  //effic vs eta
1082  fillPlotNoFlow(h_simuleta[count],getEta(momentumTP.eta()));
1083  if (isMatched) fillPlotNoFlow(h_assoceta[count],getEta(momentumTP.eta()));
1084  //effic vs hits
1085  fillPlotNoFlow(h_simulhit[count],(int)nSimHits);
1086  if(isMatched) {
1087  fillPlotNoFlow(h_assochit[count],(int)nSimHits);
1088  nrecHit_vs_nsimHit_sim2rec[count]->Fill( track->numberOfValidHits(),nSimHits);
1089  }
1090  //effic vs pu
1091  fillPlotNoFlow(h_simulpu[count],numVertices);
1092  if (isMatched) fillPlotNoFlow(h_assocpu[count],numVertices);
1093  //efficiency vs dR
1094  //not implemented for now
1095  }
1096 
1097  if((*GpSelectorForEfficiencyVsPhi)(tp)){
1098  fillPlotNoFlow(h_simulphi[count],momentumTP.phi());
1099  if (isMatched) fillPlotNoFlow(h_assocphi[count],momentumTP.phi());
1100  }
1101 
1102  if((*GpSelectorForEfficiencyVsPt)(tp)){
1103  fillPlotNoFlow(h_simulpT[count],getPt(sqrt(momentumTP.perp2())));
1104  if (isMatched) fillPlotNoFlow(h_assocpT[count],getPt(sqrt(momentumTP.perp2())));
1105  }
1106 
1107  if((*GpSelectorForEfficiencyVsVTXR)(tp)){
1108  fillPlotNoFlow(h_simuldxy[count],dxySim);
1109  if (isMatched) fillPlotNoFlow(h_assocdxy[count],dxySim);
1110 
1111  fillPlotNoFlow(h_simulvertpos[count],sqrt(vertexTP.perp2()));
1112  if (isMatched) fillPlotNoFlow(h_assocvertpos[count],sqrt(vertexTP.perp2()));
1113  }
1114 
1115  if((*GpSelectorForEfficiencyVsVTXZ)(tp)){
1116  fillPlotNoFlow(h_simuldz[count],dzSim);
1117  if (isMatched) fillPlotNoFlow(h_assocdz[count],dzSim);
1118 
1119  fillPlotNoFlow(h_simulzpos[count],vertexTP.z());
1120  if (isMatched) fillPlotNoFlow(h_assoczpos[count],vertexTP.z());
1121  }
1122 
1123 }
double qoverp() const
q / p
Definition: TrackBase.h:549
double phiModeError() const
error on phi from mode
Definition: GsfTrack.h:94
std::vector< MonitorElement * > h_looperhit
std::vector< MonitorElement * > h_loopratephi
T getParameter(std::string const &) const
std::vector< MonitorElement * > h_assoc2hit
T getUntrackedParameter(std::string const &, T const &) const
std::vector< MonitorElement * > h_misidratepu
std::vector< MonitorElement * > h_dedx_estim2
int i
Definition: DBlmapReader.cc:9
std::vector< MonitorElement * > h_dzpulletamean
std::vector< MonitorElement * > h_recodxy
std::vector< MonitorElement * > h_assochit
std::vector< MonitorElement * > h_efficPt
std::vector< MonitorElement * > h_fakes
std::vector< MonitorElement * > h_loopratedxy
std::vector< MonitorElement * > h_PXFhits_eta
std::vector< MonitorElement * > h_nchi2_prob
void fill_dedx_recoTrack_histos(int count, edm::RefToBase< reco::Track > &trackref, const std::vector< edm::ValueMap< reco::DeDxData > > &v_dEdx)
std::vector< MonitorElement * > h_looperpT
std::vector< MonitorElement * > h_pullDz
void getFittedSigmaWithError(MonitorElement *)
Fill the ME with the sigma value (with error) of the gaussian fit in each slice.
TrackingParticleSelector * TpSelectorForEfficiencyVsPhi
std::vector< MonitorElement * > ptpull_vs_phi
std::vector< MonitorElement * > h_assoczpos
std::vector< MonitorElement * > nPXFhits_vs_eta
std::vector< MonitorElement * > h_fake_vs_hit
void fillPlotNoFlow(MonitorElement *h, T val)
std::vector< MonitorElement * > h_dzmeanh
std::vector< MonitorElement * > h_misidratephi
void doProfileX(TH2 *th2, MonitorElement *me)
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_ptshifteta
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:537
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 * > nTEChits_vs_eta
std::vector< MonitorElement * > h_fake_vs_dz
std::vector< MonitorElement * > h_hits
std::vector< MonitorElement * > h_effic_vs_vertpos
double theta() const
polar angle
Definition: TrackBase.h:555
double dxyError() const
error on dxy
Definition: TrackBase.h:772
std::vector< MonitorElement * > nLayersWithMeas_vs_eta
std::vector< MonitorElement * > h_pullPhi
std::vector< MonitorElement * > h_fake_vs_dxy
std::vector< MonitorElement * > phipull_vs_phi
std::vector< MonitorElement * > h_dedx_sat1
std::vector< MonitorElement * > h_hits_eta
std::vector< MonitorElement * > h_thetapullphi
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
std::vector< MonitorElement * > nrec_vs_nsim
std::vector< MonitorElement * > h_ptrmshPt
std::vector< MonitorElement * > h_algo
std::vector< MonitorElement * > h_assocdz
int pixelLayersWithMeasurement() const
Definition: HitPattern.h:917
std::vector< MonitorElement * > nTIDhits_vs_eta
std::vector< MonitorElement * > h_ptSIM
std::vector< MonitorElement * > h_dxypulletamean
std::vector< MonitorElement * > phires_vs_eta
std::vector< MonitorElement * > h_pullDxy
std::vector< MonitorElement * > h_assoc2phi
std::vector< MonitorElement * > h_phipullphi
std::vector< MonitorElement * > h_nchi2
std::vector< MonitorElement * > h_assoc2pu
std::vector< MonitorElement * > h_fakeratePt
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:621
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
Definition: TrackBase.h:802
TrackingParticleSelector * TpSelectorForEfficiencyVsVTXZ
std::vector< MonitorElement * > h_dxyrmsh
std::vector< MonitorElement * > h_dzrmshPt
std::vector< MonitorElement * > h_vertposSIM
std::vector< MonitorElement * > h_looperdxy
std::vector< MonitorElement * > h_simuleta
std::vector< MonitorElement * > h_misidratepT
std::vector< MonitorElement * > h_ptpulleta
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:651
T eta() const
std::vector< MonitorElement * > h_TIBhits_eta
std::vector< MonitorElement * > h_thetapullphimean
std::vector< MonitorElement * > h_cotThetameanhPt
std::vector< MonitorElement * > h_fakerate_vs_dr
void fill_recoAssociated_simTrack_histos(int count, const TrackingParticle &tp, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, double dxy, double dz, int nSimHits, const reco::Track *track, int numVertices, double dR)
std::vector< MonitorElement * > h_phimeanhPhi
void fill_trackBased_histos(int count, int assTracks, int numRecoTracks, int numSimTracks)
std::vector< MonitorElement * > h_misidratedz
std::vector< MonitorElement * > h_assoc2dz
std::vector< MonitorElement * > chi2_vs_phi
std::vector< MonitorElement * > h_LayersWithMeas_eta
int numberOfValidStripTOBHits() const
Definition: HitPattern.h:782
std::vector< MonitorElement * > h_chi2mean_vs_phi
std::vector< MonitorElement * > h_assocphi
int sharedHits(const reco::GsfTrackRef &, const reco::GsfTrackRef &)
std::vector< MonitorElement * > h_cotThetarmsh
std::vector< MonitorElement * > phires_vs_phi
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, edm::ConsumesCollector &&iC)
std::vector< MonitorElement * > dzres_vs_eta
std::vector< MonitorElement * > h_losthits_eta
double qoverpMode() const
q/p from mode
Definition: GsfTrack.h:41
std::vector< MonitorElement * > h_ptmeanhPhi
std::vector< MonitorElement * > h_misideta
std::vector< MonitorElement * > nlosthits_vs_eta
GenParticleCustomSelector * GpSelectorForEfficiencyVsVTXZ
std::vector< MonitorElement * > nSTRIPlayersWith1dMeas_vs_eta
std::vector< MonitorElement * > h_phimeanh
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:403
std::vector< MonitorElement * > h_thetapulleta
math::XYZPointD Point
point in the space
std::vector< MonitorElement * > h_phipullphimean
std::vector< MonitorElement * > h_dedx_estim1
std::vector< MonitorElement * > h_hits_phi
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_STRIPlayersWithMeas_eta
std::vector< MonitorElement * > nPXBhits_vs_eta
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:627
int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
Definition: HitPattern.cc:298
std::vector< MonitorElement * > h_looperpu
std::vector< MonitorElement * > h_assoc2dxy
std::vector< MonitorElement * > h_dxyrmshPt
std::vector< MonitorElement * > h_STRIPlayersWith1dMeas_eta
std::vector< MonitorElement * > h_pullQoverp
int numberOfValidPixelBarrelHits() const
Definition: HitPattern.h:757
std::vector< MonitorElement * > h_simulpu
std::vector< MonitorElement * > h_fake_vs_phi
std::vector< MonitorElement * > h_ptpulletamean
const T & max(const T &a, const T &b)
double chi2() const
chi-squared of the fit
Definition: TrackBase.h:525
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:531
int trackerLayersWithMeasurement() const
Definition: HitPattern.h:912
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:597
std::vector< MonitorElement * > h_recophi
std::vector< MonitorElement * > h_misidratehit
std::vector< MonitorElement * > h_assocpT
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
std::vector< MonitorElement * > h_ptpullphimean
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:739
std::vector< MonitorElement * > nSTRIPlayersWith2dMeas_vs_eta
std::vector< MonitorElement * > h_tracks
std::vector< MonitorElement * > h_chi2meanh
double phiError() const
error on phi
Definition: TrackBase.h:766
std::vector< MonitorElement * > h_TIDhits_eta
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
std::vector< MonitorElement * > h_tracksSIM
std::vector< MonitorElement * > h_effic
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
int numberOfValidStripTIDHits() const
Definition: HitPattern.h:777
double lambda() const
Lambda angle.
Definition: TrackBase.h:561
std::vector< MonitorElement * > h_ptmeanhPt
std::vector< MonitorElement * > h_phirmsh
std::vector< MonitorElement * > nrecHit_vs_nsimHit_sim2rec
bool isMatched(TrackingRecHit const &hit)
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:796
void fill_simAssociated_recoTrack_histos(int count, const reco::Track &track)
int numberOfValidStripTECHits() const
Definition: HitPattern.h:787
std::vector< MonitorElement * > h_phirmshPt
std::vector< MonitorElement * > phimean_vs_eta_phi
std::vector< MonitorElement * > h_charge
std::vector< MonitorElement * > h_misidpu
std::vector< MonitorElement * > h_loopratehit
std::vector< MonitorElement * > h_loopereta
std::vector< MonitorElement * > h_misiddz
#define LogTrace(id)
#define M_PI
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 * > h_bunchxSIM
std::vector< MonitorElement * > h_fakerate
double qoverpError() const
error on signed transverse curvature
Definition: TrackBase.h:733
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:585
double dzError() const
error on dz
Definition: TrackBase.h:790
std::vector< MonitorElement * > h_ptpullphi
std::vector< MonitorElement * > thetapull_vs_phi
TrackingParticleSelector * TpSelectorForEfficiencyVsPt
void bookRecoHistosForStandaloneRunning(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > h_simulvertpos
std::vector< MonitorElement * > h_STRIPlayersWith2dMeas_eta
std::vector< MonitorElement * > dxyres_vs_eta
std::vector< MonitorElement * > h_effic_vs_phi
std::vector< MonitorElement * > h_ptrmsh
std::vector< MonitorElement * > h_chi2meanhitsh
std::vector< MonitorElement * > h_dxymeanhPt
std::vector< MonitorElement * > h_dzpulleta
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:364
std::vector< MonitorElement * > h_dxypulleta
std::vector< MonitorElement * > h_effic_vs_dz
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
std::vector< MonitorElement * > h_phirmshPhi
double qoverpModeError() const
error on signed transverse curvature from mode
Definition: GsfTrack.h:79
std::vector< MonitorElement * > h_loopratepu
int stripLayersWithMeasurement() const
Definition: HitPattern.h:922
std::vector< MonitorElement * > h_eta
std::vector< MonitorElement * > h_effic_vs_dr
void getFittedMeanWithError(MonitorElement *)
Fill the ME with the mean value (with error) of the gaussian fit in each slice.
std::vector< MonitorElement * > h_pt
std::vector< MonitorElement * > h_PXBhits_eta
std::vector< MonitorElement * > h_phimeanhPt
std::vector< MonitorElement * > h_dedx_nom2
std::vector< MonitorElement * > cotThetares_vs_pt
std::vector< MonitorElement * > h_effic_vs_zpos
std::vector< MonitorElement * > h_etaSIM
int numberOfValidStripTIBHits() const
Definition: HitPattern.h:772
std::vector< MonitorElement * > h_simulphi
void fillPlotFromPlots(MonitorElement *h, TH1 *numerator, TH1 *denominator, std::string type)
void bookRecoHistos(DQMStore::IBooker &ibook)
int numberOfValidPixelEndcapHits() const
Definition: HitPattern.h:762
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:754
std::vector< MonitorElement * > h_assoc2dr
std::vector< MonitorElement * > dxypull_vs_eta
std::vector< MonitorElement * > ptres_vs_eta
std::vector< MonitorElement * > h_cotThetameanh
std::vector< MonitorElement * > h_dzrmsh
static std::atomic< unsigned int > counter
GenParticleCustomSelector * generalGpSelector
std::vector< MonitorElement * > h_effic_vs_dxy
std::vector< MonitorElement * > phipull_vs_eta
unsigned short found() const
Number of valid hits on track.
Definition: Track.h:194
std::vector< MonitorElement * > h_TOBhits_eta
GenParticleCustomSelector * GpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_misidrate
std::vector< MonitorElement * > h_TEChits_eta
std::vector< MonitorElement * > h_simulhit
GenParticleCustomSelector * GpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_dzmeanhPt
std::vector< MonitorElement * > h_recopT
std::vector< MonitorElement * > h_looperdz
std::vector< MonitorElement * > h_assocdxy
double phiMode() const
azimuthal angle of momentum vector from mode
Definition: GsfTrack.h:57
Monte Carlo truth information used for tracking validation.
int charge() const
track electric charge
Definition: TrackBase.h:543
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)
std::vector< MonitorElement * > h_fake_vs_pu
std::vector< MonitorElement * > h_loopratedz
std::vector< MonitorElement * > h_cotThetarmshPt
GenParticleCustomSelector * GpSelectorForEfficiencyVsEta
double lambdaModeError() const
error on lambda from mode
Definition: GsfTrack.h:90
std::vector< MonitorElement * > h_recodz
std::vector< MonitorElement * > ptres_vs_pt
SingleObjectSelector< GenParticleCollection,::GenParticleCustomSelector > GenParticleCustomSelector
std::vector< MonitorElement * > h_dedx_sat2
math::XYZVectorD Vector
point in the space
std::vector< MonitorElement * > h_phipulleta
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:567
std::vector< MonitorElement * > h_assoceta
std::vector< MonitorElement * > h_looprate
std::vector< MonitorElement * > ptres_vs_phi
TrackingParticleSelector * TpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_assocSharedHit
std::vector< MonitorElement * > h_dxymeanh
std::vector< MonitorElement * > nhits_vs_eta
std::vector< MonitorElement * > h_ptrmshPhi
double ptMode() const
track transverse momentum from mode
Definition: GsfTrack.h:49
std::vector< MonitorElement * > h_effic_vs_hit
std::vector< MonitorElement * > h_simuldxy
std::vector< MonitorElement * > h_assocdr
std::vector< MonitorElement * > h_assocvertpos
std::vector< MonitorElement * > h_loopratepT
std::vector< MonitorElement * > h_recoeta
std::vector< MonitorElement * > thetapull_vs_eta
std::vector< MonitorElement * > chi2_vs_eta
std::vector< MonitorElement * > h_phipulletamean
void bookSimHistos(DQMStore::IBooker &ibook)
int numberOfHits(HitCategory category) const
Definition: HitPattern.h:721
std::vector< MonitorElement * > h_PXLlayersWithMeas_eta
std::vector< MonitorElement * > h_effic_vs_pu
std::vector< MonitorElement * > dxyres_vs_pt
std::vector< MonitorElement * > h_misidratedxy
std::vector< MonitorElement * > h_dedx_nom1
std::vector< MonitorElement * > h_losthits
TrackingParticleSelector * TpSelectorForEfficiencyVsEta
std::vector< MonitorElement * > h_assoc2eta
std::vector< MonitorElement * > h_thetapulletamean
std::vector< MonitorElement * > h_misidphi
Definition: DDAxes.h:10
std::vector< MonitorElement * > dzres_vs_pt