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