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 
16 namespace {
17  void BinLogX(TH1 *h) {
18  TAxis *axis = h->GetXaxis();
19  int bins = axis->GetNbins();
20 
21  float from = axis->GetXmin();
22  float to = axis->GetXmax();
23  float width = (to - from) / bins;
24  std::vector<float> new_bins(bins+1, 0);
25 
26  for (int i = 0; i <= bins; i++) {
27  new_bins[i] = TMath::Power(10, from + i * width);
28  }
29  axis->Set(bins, new_bins.data());
30  }
31 
32  template<typename T> void fillPlotNoFlow(MonitorElement *h, T val) {
33  h->Fill(std::min(std::max(val,((T) h->getTH1()->GetXaxis()->GetXmin())),((T) h->getTH1()->GetXaxis()->GetXmax())));
34  }
35 }
36 
38  h_ptSIM(nullptr), h_etaSIM(nullptr), h_tracksSIM(nullptr), h_vertposSIM(nullptr), h_bunchxSIM(nullptr)
39 {
40  //parameters for _vs_eta plots
41  minEta = pset.getParameter<double>("minEta");
42  maxEta = pset.getParameter<double>("maxEta");
43  nintEta = pset.getParameter<int>("nintEta");
44  useFabsEta = pset.getParameter<bool>("useFabsEta");
45 
46  //parameters for _vs_pt plots
47  minPt = pset.getParameter<double>("minPt");
48  maxPt = pset.getParameter<double>("maxPt");
49  nintPt = pset.getParameter<int>("nintPt");
50  useInvPt = pset.getParameter<bool>("useInvPt");
51  useLogPt = pset.getUntrackedParameter<bool>("useLogPt",false);
52 
53  //parameters for _vs_Hit plots
54  minHit = pset.getParameter<double>("minHit");
55  maxHit = pset.getParameter<double>("maxHit");
56  nintHit = pset.getParameter<int>("nintHit");
57 
58  //parameters for _vs_Pu plots
59  minPu = pset.getParameter<double>("minPu");
60  maxPu = pset.getParameter<double>("maxPu");
61  nintPu = pset.getParameter<int>("nintPu");
62 
63  //parameters for _vs_Layer plots
64  minLayers = pset.getParameter<double>("minLayers");
65  maxLayers = pset.getParameter<double>("maxLayers");
66  nintLayers = pset.getParameter<int>("nintLayers");
67 
68  //parameters for _vs_phi plots
69  minPhi = pset.getParameter<double>("minPhi");
70  maxPhi = pset.getParameter<double>("maxPhi");
71  nintPhi = pset.getParameter<int>("nintPhi");
72 
73  //parameters for _vs_Dxy plots
74  minDxy = pset.getParameter<double>("minDxy");
75  maxDxy = pset.getParameter<double>("maxDxy");
76  nintDxy = pset.getParameter<int>("nintDxy");
77 
78  //parameters for _vs_Dz plots
79  minDz = pset.getParameter<double>("minDz");
80  maxDz = pset.getParameter<double>("maxDz");
81  nintDz = pset.getParameter<int>("nintDz");
82 
83  //parameters for _vs_ProductionVertexTransvPosition plots
84  minVertpos = pset.getParameter<double>("minVertpos");
85  maxVertpos = pset.getParameter<double>("maxVertpos");
86  nintVertpos = pset.getParameter<int>("nintVertpos");
87 
88  //parameters for _vs_ProductionVertexZPosition plots
89  minZpos = pset.getParameter<double>("minZpos");
90  maxZpos = pset.getParameter<double>("maxZpos");
91  nintZpos = pset.getParameter<int>("nintZpos");
92 
93  //parameters for _vs_dR plots
94  mindr = pset.getParameter<double>("mindr");
95  maxdr = pset.getParameter<double>("maxdr");
96  nintdr = pset.getParameter<int>("nintdr");
97 
98  // paramers for _vs_chi2 plots
99  minChi2 = pset.getParameter<double>("minChi2");
100  maxChi2 = pset.getParameter<double>("maxChi2");
101  nintChi2 = pset.getParameter<int>("nintChi2");
102 
103  //parameters for dE/dx plots
104  minDeDx = pset.getParameter<double>("minDeDx");
105  maxDeDx = pset.getParameter<double>("maxDeDx");
106  nintDeDx = pset.getParameter<int>("nintDeDx");
107 
108  //parameters for Pileup plots
109  minVertcount = pset.getParameter<double>("minVertcount");
110  maxVertcount = pset.getParameter<double>("maxVertcount");
111  nintVertcount = pset.getParameter<int>("nintVertcount");
112 
113  //parameters for number of tracks plots
114  minTracks = pset.getParameter<double>("minTracks");
115  maxTracks = pset.getParameter<double>("maxTracks");
116  nintTracks = pset.getParameter<int>("nintTracks");
117 
118  //parameters for resolution plots
119  ptRes_rangeMin = pset.getParameter<double>("ptRes_rangeMin");
120  ptRes_rangeMax = pset.getParameter<double>("ptRes_rangeMax");
121  ptRes_nbin = pset.getParameter<int>("ptRes_nbin");
122 
123  phiRes_rangeMin = pset.getParameter<double>("phiRes_rangeMin");
124  phiRes_rangeMax = pset.getParameter<double>("phiRes_rangeMax");
125  phiRes_nbin = pset.getParameter<int>("phiRes_nbin");
126 
127  cotThetaRes_rangeMin = pset.getParameter<double>("cotThetaRes_rangeMin");
128  cotThetaRes_rangeMax = pset.getParameter<double>("cotThetaRes_rangeMax");
129  cotThetaRes_nbin = pset.getParameter<int>("cotThetaRes_nbin");
130 
131  dxyRes_rangeMin = pset.getParameter<double>("dxyRes_rangeMin");
132  dxyRes_rangeMax = pset.getParameter<double>("dxyRes_rangeMax");
133  dxyRes_nbin = pset.getParameter<int>("dxyRes_nbin");
134 
135  dzRes_rangeMin = pset.getParameter<double>("dzRes_rangeMin");
136  dzRes_rangeMax = pset.getParameter<double>("dzRes_rangeMax");
137  dzRes_nbin = pset.getParameter<int>("dzRes_nbin");
138 
139 
140  maxDzpvCum = pset.getParameter<double>("maxDzpvCumulative");
141  nintDzpvCum = pset.getParameter<int>("nintDzpvCumulative");
142 
143  maxDzpvsigCum = pset.getParameter<double>("maxDzpvsigCumulative");
144  nintDzpvsigCum = pset.getParameter<int>("nintDzpvsigCumulative");
145 
146  //--- tracking particle selectors for efficiency measurements
147  using namespace edm;
148  using namespace reco::modules;
149  auto initTPselector = [&](auto& sel, auto& name) {
150  sel = std::make_unique<TrackingParticleSelector>(ParameterAdapter<TrackingParticleSelector>::make(pset.getParameter<ParameterSet>(name), iC));
151  };
152  auto initGPselector = [&](auto& sel, auto& name) {
153  sel = std::make_unique<GenParticleCustomSelector>(ParameterAdapter<GenParticleCustomSelector>::make(pset.getParameter<ParameterSet>(name), iC));
154  };
155 
156  initTPselector(generalTpSelector, "generalTpSelector");
157  initTPselector(TpSelectorForEfficiencyVsEta, "TpSelectorForEfficiencyVsEta");
158  initTPselector(TpSelectorForEfficiencyVsPhi, "TpSelectorForEfficiencyVsPhi");
159  initTPselector(TpSelectorForEfficiencyVsPt, "TpSelectorForEfficiencyVsPt");
160  initTPselector(TpSelectorForEfficiencyVsVTXR, "TpSelectorForEfficiencyVsVTXR");
161  initTPselector(TpSelectorForEfficiencyVsVTXZ, "TpSelectorForEfficiencyVsVTXZ");
162 
163  initGPselector(generalGpSelector, "generalGpSelector");
164  initGPselector(GpSelectorForEfficiencyVsEta, "GpSelectorForEfficiencyVsEta");
165  initGPselector(GpSelectorForEfficiencyVsPhi, "GpSelectorForEfficiencyVsPhi");
166  initGPselector(GpSelectorForEfficiencyVsPt, "GpSelectorForEfficiencyVsPt");
167  initGPselector(GpSelectorForEfficiencyVsVTXR, "GpSelectorForEfficiencyVsVTXR");
168  initGPselector(GpSelectorForEfficiencyVsVTXZ, "GpSelectorForEfficiencyVsVTXZ");
169 
170  // fix for the LogScale by Ryan
171  if(useLogPt){
172  maxPt=log10(maxPt);
173  if(minPt > 0){
174  minPt=log10(minPt);
175  }
176  else{
177  edm::LogWarning("MultiTrackValidator")
178  << "minPt = "
179  << minPt << " <= 0 out of range while requesting log scale. Using minPt = 0.1.";
180  minPt=log10(0.1);
181  }
182  }
183 
184 }
185 
187 
189  if(h_ptSIM != nullptr)
190  throw cms::Exception("LogicError") << "bookSimHistos() has already been called";
191 
192  h_ptSIM = ibook.book1D("ptSIM", "generated p_{t}", nintPt, minPt, maxPt);
193  h_etaSIM = ibook.book1D("etaSIM", "generated pseudorapidity", nintEta, minEta, maxEta);
194  h_tracksSIM = ibook.book1D("tracksSIM","number of simulated tracks", nintTracks, minTracks, maxTracks*10);
195  h_vertposSIM = ibook.book1D("vertposSIM","Transverse position of sim vertices", nintVertpos, minVertpos, maxVertpos);
196  h_bunchxSIM = ibook.book1D("bunchxSIM", "bunch crossing", 21, -15.5, 5.5 );
197 
198  if(useLogPt) {
199  BinLogX(h_ptSIM->getTH1F());
200  }
201 }
202 
204  h_assoceta.push_back( ibook.book1D("num_assoc(simToReco)_eta","N of associated tracks (simToReco) vs eta",nintEta,minEta,maxEta) );
205  h_simuleta.push_back( ibook.book1D("num_simul_eta","N of simulated tracks vs eta",nintEta,minEta,maxEta) );
206 
207  h_assocpT.push_back( ibook.book1D("num_assoc(simToReco)_pT","N of associated tracks (simToReco) 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 
210  h_assochit.push_back( ibook.book1D("num_assoc(simToReco)_hit","N of associated tracks (simToReco) vs hit",nintHit,minHit,maxHit) );
211  h_simulhit.push_back( ibook.book1D("num_simul_hit","N of simulated tracks vs hit",nintHit,minHit,maxHit) );
212 
213  h_assoclayer.push_back( ibook.book1D("num_assoc(simToReco)_layer","N of associated tracks (simToReco) vs layer",nintLayers,minLayers,maxLayers) );
214  h_simullayer.push_back( ibook.book1D("num_simul_layer","N of simulated tracks vs layer",nintLayers,minLayers,maxLayers) );
215 
216  h_assocpixellayer.push_back( ibook.book1D("num_assoc(simToReco)_pixellayer","N of associated tracks (simToReco) vs pixel layer",nintLayers,minLayers,maxLayers) );
217  h_simulpixellayer.push_back( ibook.book1D("num_simul_pixellayer","N of simulated tracks vs pixel layer",nintLayers,minLayers,maxLayers) );
218 
219  h_assoc3Dlayer.push_back( ibook.book1D("num_assoc(simToReco)_3Dlayer","N of associated tracks (simToReco) vs 3D layer",nintLayers,minLayers,maxLayers) );
220  h_simul3Dlayer.push_back( ibook.book1D("num_simul_3Dlayer","N of simulated tracks vs 3D layer",nintLayers,minLayers,maxLayers) );
221 
222  h_assocpu.push_back( ibook.book1D("num_assoc(simToReco)_pu","N of associated tracks (simToReco) vs pu",nintPu,minPu,maxPu) );
223  h_simulpu.push_back( ibook.book1D("num_simul_pu","N of simulated tracks vs pu",nintPu,minPu,maxPu) );
224 
225  h_assocphi.push_back( ibook.book1D("num_assoc(simToReco)_phi","N of associated tracks (simToReco) 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 
228  h_assocdxy.push_back( ibook.book1D("num_assoc(simToReco)_dxy","N of associated tracks (simToReco) vs dxy",nintDxy,minDxy,maxDxy) );
229  h_simuldxy.push_back( ibook.book1D("num_simul_dxy","N of simulated tracks vs dxy",nintDxy,minDxy,maxDxy) );
230 
231  h_assocdz.push_back( ibook.book1D("num_assoc(simToReco)_dz","N of associated tracks (simToReco) vs dz",nintDz,minDz,maxDz) );
232  h_simuldz.push_back( ibook.book1D("num_simul_dz","N of simulated tracks vs dz",nintDz,minDz,maxDz) );
233 
234  h_assocvertpos.push_back( ibook.book1D("num_assoc(simToReco)_vertpos",
235  "N of associated tracks (simToReco) vs transverse vert position",
237  h_simulvertpos.push_back( ibook.book1D("num_simul_vertpos","N of simulated tracks vs transverse vert position",
239 
240  h_assoczpos.push_back( ibook.book1D("num_assoc(simToReco)_zpos","N of associated tracks (simToReco) vs z vert position",
242  h_simulzpos.push_back( ibook.book1D("num_simul_zpos","N of simulated tracks vs z vert position",nintZpos,minZpos,maxZpos) );
243 
244  h_assocdr.push_back( ibook.book1D("num_assoc(simToReco)_dr","N of associated tracks (simToReco) vs dR",nintdr,log10(mindr),log10(maxdr)) );
245  h_simuldr.push_back( ibook.book1D("num_simul_dr","N of simulated tracks vs dR",nintdr,log10(mindr),log10(maxdr)) );
246  BinLogX(h_assocdr.back()->getTH1F());
247  BinLogX(h_simuldr.back()->getTH1F());
248 
249  nrecHit_vs_nsimHit_sim2rec.push_back( ibook.book2D("nrecHit_vs_nsimHit_sim2rec","nrecHit vs nsimHit (Sim2RecAssoc)",
251 
252  if(useLogPt){
253  BinLogX(h_assocpT.back()->getTH1F());
254  BinLogX(h_simulpT.back()->getTH1F());
255  }
256 }
257 
259  h_assocdxypv.push_back( ibook.book1D("num_assoc(simToReco)_dxypv","N of associated tracks (simToReco) vs dxy(PV)",nintDxy,minDxy,maxDxy) );
260  h_simuldxypv.push_back( ibook.book1D("num_simul_dxypv","N of simulated tracks vs dxy(PV)",nintDxy,minDxy,maxDxy) );
261 
262  h_assocdzpv.push_back( ibook.book1D("num_assoc(simToReco)_dzpv","N of associated tracks (simToReco) vs dz(PV)",nintDz,minDz,maxDz) );
263  h_simuldzpv.push_back( ibook.book1D("num_simul_dzpv","N of simulated tracks vs dz(PV)",nintDz,minDz,maxDz) );
264 
265  h_assoc_dzpvcut.push_back( ibook.book1D("num_assoc(simToReco)_dzpvcut","N of associated tracks (simToReco) vs dz(PV)",nintDzpvCum,0,maxDzpvCum) );
266  h_simul_dzpvcut.push_back( ibook.book1D("num_simul_dzpvcut","N of simulated tracks from sim PV",nintDzpvCum,0,maxDzpvCum) );
267  h_simul2_dzpvcut.push_back( ibook.book1D("num_simul2_dzpvcut","N of simulated tracks (associated to any track) from sim PV",nintDzpvCum,0,maxDzpvCum) );
268 
269  h_assoc_dzpvcut_pt.push_back( ibook.book1D("num_assoc(simToReco)_dzpvcut_pt","#sump_{T} of associated tracks (simToReco) vs dz(PV)",nintDzpvCum,0,maxDzpvCum) );
270  h_simul_dzpvcut_pt.push_back( ibook.book1D("num_simul_dzpvcut_pt","#sump_{T} of simulated tracks from sim PV",nintDzpvCum,0,maxDzpvCum) );
271  h_simul2_dzpvcut_pt.push_back( ibook.book1D("num_simul2_dzpvcut_pt","#sump_{T} of simulated tracks (associated to any track) from sim PV",nintDzpvCum,0,maxDzpvCum) );
272  h_assoc_dzpvcut_pt.back()->getTH1()->Sumw2();
273  h_simul_dzpvcut_pt.back()->getTH1()->Sumw2();
274  h_simul2_dzpvcut_pt.back()->getTH1()->Sumw2();
275 
276  h_assoc_dzpvsigcut.push_back( ibook.book1D("num_assoc(simToReco)_dzpvsigcut","N of associated tracks (simToReco) vs dz(PV)/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
277  h_simul_dzpvsigcut.push_back( ibook.book1D("num_simul_dzpvsigcut","N of simulated tracks from sim PV/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
278  h_simul2_dzpvsigcut.push_back( ibook.book1D("num_simul2_dzpvsigcut","N of simulated tracks (associated to any track) from sim PV/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
279 
280  h_assoc_dzpvsigcut_pt.push_back( ibook.book1D("num_assoc(simToReco)_dzpvsigcut_pt","#sump_{T} of associated tracks (simToReco) vs dz(PV)/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
281  h_simul_dzpvsigcut_pt.push_back( ibook.book1D("num_simul_dzpvsigcut_pt","#sump_{T} of simulated tracks from sim PV/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
282  h_simul2_dzpvsigcut_pt.push_back( ibook.book1D("num_simul2_dzpvsigcut_pt","#sump_{T} of simulated tracks (associated to any track) from sim PV/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
283  h_assoc_dzpvsigcut_pt.back()->getTH1()->Sumw2();
284  h_simul_dzpvsigcut_pt.back()->getTH1()->Sumw2();
285  h_simul2_dzpvsigcut_pt.back()->getTH1()->Sumw2();
286 }
287 
289  h_tracks.push_back( ibook.book1D("tracks","number of reconstructed tracks", nintTracks, minTracks, maxTracks) );
290  h_fakes.push_back( ibook.book1D("fakes","number of fake reco tracks", nintTracks, minTracks, maxTracks) );
291  h_charge.push_back( ibook.book1D("charge","charge",3,-1.5,1.5) );
292 
293  h_hits.push_back( ibook.book1D("hits", "number of hits per track", nintHit,minHit,maxHit ) );
294  h_losthits.push_back( ibook.book1D("losthits", "number of lost hits per track", nintHit,minHit,maxHit) );
295  h_nchi2.push_back( ibook.book1D("chi2", "normalized #chi^{2}", 200, 0, 20 ) );
296  h_nchi2_prob.push_back( ibook.book1D("chi2_prob", "normalized #chi^{2} probability",100,0,1));
297 
298  h_nmisslayers_inner.push_back( ibook.book1D("missing_inner_layers", "number of missing inner layers", nintLayers,minLayers,maxLayers ) );
299  h_nmisslayers_outer.push_back( ibook.book1D("missing_outer_layers", "number of missing outer layers", nintLayers,minLayers,maxLayers ) );
300 
301  h_algo.push_back( ibook.book1D("h_algo","Tracks by algo",reco::TrackBase::algoSize, 0., double(reco::TrackBase::algoSize) ) );
302  for (size_t ibin=0; ibin<reco::TrackBase::algoSize-1; ibin++)
303  h_algo.back()->setBinLabel(ibin+1,reco::TrackBase::algoNames[ibin]);
304  // h_algo.setBinLabel(ibin+1,reco::TrackBase::algoNames[ibin]);
305 
307  h_recoeta.push_back( ibook.book1D("num_reco_eta","N of reco track vs eta",nintEta,minEta,maxEta) );
308  h_assoc2eta.push_back( ibook.book1D("num_assoc(recoToSim)_eta","N of associated (recoToSim) tracks vs eta",nintEta,minEta,maxEta) );
309  h_loopereta.push_back( ibook.book1D("num_duplicate_eta","N of associated (recoToSim) duplicate tracks vs eta",nintEta,minEta,maxEta) );
310  h_misideta.push_back( ibook.book1D("num_chargemisid_eta","N of associated (recoToSim) charge misIDed tracks vs eta",nintEta,minEta,maxEta) );
311  h_pileupeta.push_back( ibook.book1D("num_pileup_eta","N of associated (recoToSim) pileup tracks vs eta",nintEta,minEta,maxEta) );
312  //
313  h_recopT.push_back( ibook.book1D("num_reco_pT","N of reco track vs pT",nintPt,minPt,maxPt) );
314  h_assoc2pT.push_back( ibook.book1D("num_assoc(recoToSim)_pT","N of associated (recoToSim) tracks vs pT",nintPt,minPt,maxPt) );
315  h_looperpT.push_back( ibook.book1D("num_duplicate_pT","N of associated (recoToSim) duplicate tracks vs pT",nintPt,minPt,maxPt) );
316  h_misidpT.push_back( ibook.book1D("num_chargemisid_pT","N of associated (recoToSim) charge misIDed tracks vs pT",nintPt,minPt,maxPt) );
317  h_pileuppT.push_back( ibook.book1D("num_pileup_pT","N of associated (recoToSim) pileup tracks vs pT",nintPt,minPt,maxPt) );
318  //
319  h_recohit.push_back( ibook.book1D("num_reco_hit","N of reco track vs hit",nintHit,minHit,maxHit) );
320  h_assoc2hit.push_back( ibook.book1D("num_assoc(recoToSim)_hit","N of associated (recoToSim) tracks vs hit",nintHit,minHit,maxHit) );
321  h_looperhit.push_back( ibook.book1D("num_duplicate_hit","N of associated (recoToSim) duplicate tracks vs hit",nintHit,minHit,maxHit) );
322  h_misidhit.push_back( ibook.book1D("num_chargemisid_hit","N of associated (recoToSim) charge misIDed tracks vs hit",nintHit,minHit,maxHit) );
323  h_pileuphit.push_back( ibook.book1D("num_pileup_hit","N of associated (recoToSim) pileup tracks vs hit",nintHit,minHit,maxHit) );
324  //
325  h_recolayer.push_back( ibook.book1D("num_reco_layer","N of reco track vs layer",nintLayers,minLayers,maxLayers) );
326  h_assoc2layer.push_back( ibook.book1D("num_assoc(recoToSim)_layer","N of associated (recoToSim) tracks vs layer",nintLayers,minLayers,maxLayers) );
327  h_looperlayer.push_back( ibook.book1D("num_duplicate_layer","N of associated (recoToSim) duplicate tracks vs layer",nintLayers,minLayers,maxLayers) );
328  h_misidlayer.push_back( ibook.book1D("num_chargemisid_layer","N of associated (recoToSim) charge misIDed tracks vs layer",nintLayers,minLayers,maxLayers) );
329  h_pileuplayer.push_back( ibook.book1D("num_pileup_layer","N of associated (recoToSim) pileup tracks vs layer",nintLayers,minLayers,maxLayers) );
330  //
331  h_recopixellayer.push_back( ibook.book1D("num_reco_pixellayer","N of reco track vs pixellayer",nintLayers,minLayers,maxLayers) );
332  h_assoc2pixellayer.push_back( ibook.book1D("num_assoc(recoToSim)_pixellayer","N of associated (recoToSim) tracks vs pixellayer",nintLayers,minLayers,maxLayers) );
333  h_looperpixellayer.push_back( ibook.book1D("num_duplicate_pixellayer","N of associated (recoToSim) duplicate tracks vs pixellayer",nintLayers,minLayers,maxLayers) );
334  h_misidpixellayer.push_back( ibook.book1D("num_chargemisid_pixellayer","N of associated (recoToSim) charge misIDed tracks vs pixellayer",nintLayers,minLayers,maxLayers) );
335  h_pileuppixellayer.push_back( ibook.book1D("num_pileup_pixellayer","N of associated (recoToSim) pileup tracks vs pixellayer",nintLayers,minLayers,maxLayers) );
336  //
337  h_reco3Dlayer.push_back( ibook.book1D("num_reco_3Dlayer","N of reco track vs 3D layer",nintLayers,minLayers,maxLayers) );
338  h_assoc23Dlayer.push_back( ibook.book1D("num_assoc(recoToSim)_3Dlayer","N of associated (recoToSim) tracks vs 3D layer",nintLayers,minLayers,maxLayers) );
339  h_looper3Dlayer.push_back( ibook.book1D("num_duplicate_3Dlayer","N of associated (recoToSim) duplicate tracks vs 3D layer",nintLayers,minLayers,maxLayers) );
340  h_misid3Dlayer.push_back( ibook.book1D("num_chargemisid_3Dlayer","N of associated (recoToSim) charge misIDed tracks vs 3D layer",nintLayers,minLayers,maxLayers) );
341  h_pileup3Dlayer.push_back( ibook.book1D("num_pileup_3Dlayer","N of associated (recoToSim) pileup tracks vs 3D layer",nintLayers,minLayers,maxLayers) );
342  //
343  h_recopu.push_back( ibook.book1D("num_reco_pu","N of reco track vs pu",nintPu,minPu,maxPu) );
344  h_assoc2pu.push_back( ibook.book1D("num_assoc(recoToSim)_pu","N of associated (recoToSim) tracks vs pu",nintPu,minPu,maxPu) );
345  h_looperpu.push_back( ibook.book1D("num_duplicate_pu","N of associated (recoToSim) duplicate tracks vs pu",nintPu,minPu,maxPu) );
346  h_misidpu.push_back( ibook.book1D("num_chargemisid_pu","N of associated (recoToSim) charge misIDed tracks vs pu",nintPu,minPu,maxPu) );
347  h_pileuppu.push_back( ibook.book1D("num_pileup_pu","N of associated (recoToSim) pileup tracks vs pu",nintPu,minPu,maxPu) );
348  //
349  h_recophi.push_back( ibook.book1D("num_reco_phi","N of reco track vs phi",nintPhi,minPhi,maxPhi) );
350  h_assoc2phi.push_back( ibook.book1D("num_assoc(recoToSim)_phi","N of associated (recoToSim) tracks vs phi",nintPhi,minPhi,maxPhi) );
351  h_looperphi.push_back( ibook.book1D("num_duplicate_phi","N of associated (recoToSim) duplicate tracks vs phi",nintPhi,minPhi,maxPhi) );
352  h_misidphi.push_back( ibook.book1D("num_chargemisid_phi","N of associated (recoToSim) charge misIDed tracks vs phi",nintPhi,minPhi,maxPhi) );
353  h_pileupphi.push_back( ibook.book1D("num_pileup_phi","N of associated (recoToSim) pileup tracks vs phi",nintPhi,minPhi,maxPhi) );
354 
355  h_recodxy.push_back( ibook.book1D("num_reco_dxy","N of reco track vs dxy",nintDxy,minDxy,maxDxy) );
356  h_assoc2dxy.push_back( ibook.book1D("num_assoc(recoToSim)_dxy","N of associated (recoToSim) tracks vs dxy",nintDxy,minDxy,maxDxy) );
357  h_looperdxy.push_back( ibook.book1D("num_duplicate_dxy","N of associated (recoToSim) looper tracks vs dxy",nintDxy,minDxy,maxDxy) );
358  h_misiddxy.push_back( ibook.book1D("num_chargemisid_dxy","N of associated (recoToSim) charge misIDed tracks vs dxy",nintDxy,minDxy,maxDxy) );
359  h_pileupdxy.push_back( ibook.book1D("num_pileup_dxy","N of associated (recoToSim) pileup tracks vs dxy",nintDxy,minDxy,maxDxy) );
360 
361  h_recodz.push_back( ibook.book1D("num_reco_dz","N of reco track vs dz",nintDz,minDz,maxDz) );
362  h_assoc2dz.push_back( ibook.book1D("num_assoc(recoToSim)_dz","N of associated (recoToSim) tracks vs dz",nintDz,minDz,maxDz) );
363  h_looperdz.push_back( ibook.book1D("num_duplicate_dz","N of associated (recoToSim) looper tracks vs dz",nintDz,minDz,maxDz) );
364  h_misiddz.push_back( ibook.book1D("num_chargemisid_versus_dz","N of associated (recoToSim) charge misIDed tracks vs dz",nintDz,minDz,maxDz) );
365  h_pileupdz.push_back( ibook.book1D("num_pileup_dz","N of associated (recoToSim) pileup tracks vs dz",nintDz,minDz,maxDz) );
366 
367  h_recovertpos.push_back( ibook.book1D("num_reco_vertpos","N of reconstructed tracks vs transverse ref point position",nintVertpos,minVertpos,maxVertpos) );
368  h_assoc2vertpos.push_back( ibook.book1D("num_assoc(recoToSim)_vertpos","N of associated (recoToSim) tracks vs transverse ref point position",nintVertpos,minVertpos,maxVertpos) );
369  h_loopervertpos.push_back( ibook.book1D("num_duplicate_vertpos","N of associated (recoToSim) looper tracks vs transverse ref point position",nintVertpos,minVertpos,maxVertpos) );
370  h_pileupvertpos.push_back( ibook.book1D("num_pileup_vertpos","N of associated (recoToSim) pileup tracks vs transverse ref point position",nintVertpos,minVertpos,maxVertpos) );
371 
372  h_recozpos.push_back( ibook.book1D("num_reco_zpos","N of reconstructed tracks vs transverse ref point position",nintZpos,minZpos,maxZpos) );
373  h_assoc2zpos.push_back( ibook.book1D("num_assoc(recoToSim)_zpos","N of associated (recoToSim) tracks vs transverse ref point position",nintZpos,minZpos,maxZpos) );
374  h_looperzpos.push_back( ibook.book1D("num_duplicate_zpos","N of associated (recoToSim) looper tracks vs transverse ref point position",nintZpos,minZpos,maxZpos) );
375  h_pileupzpos.push_back( ibook.book1D("num_pileup_zpos","N of associated (recoToSim) pileup tracks vs transverse ref point position",nintZpos,minZpos,maxZpos) );
376 
377  h_recodr.push_back( ibook.book1D("num_reco_dr","N of reconstructed tracks vs dR",nintdr,log10(mindr),log10(maxdr)) );
378  h_assoc2dr.push_back( ibook.book1D("num_assoc(recoToSim)_dr","N of associated tracks (recoToSim) vs dR",nintdr,log10(mindr),log10(maxdr)) );
379  h_looperdr.push_back( ibook.book1D("num_duplicate_dr","N of associated (recoToSim) looper tracks vs dR",nintdr,log10(mindr),log10(maxdr)) );
380  h_pileupdr.push_back( ibook.book1D("num_pileup_dr","N of associated (recoToSim) pileup tracks vs dR",nintdr,log10(mindr),log10(maxdr)) );
381  BinLogX(h_recodr.back()->getTH1F());
382  BinLogX(h_assoc2dr.back()->getTH1F());
383  BinLogX(h_looperdr.back()->getTH1F());
384  BinLogX(h_pileupdr.back()->getTH1F());
385 
386  h_recochi2.push_back( ibook.book1D("num_reco_chi2","N of reco track vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
387  h_assoc2chi2.push_back( ibook.book1D("num_assoc(recoToSim)_chi2","N of associated (recoToSim) tracks vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
388  h_looperchi2.push_back( ibook.book1D("num_duplicate_chi2","N of associated (recoToSim) looper tracks vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
389  h_misidchi2.push_back( ibook.book1D("num_chargemisid_chi2","N of associated (recoToSim) charge misIDed tracks vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
390  h_pileupchi2.push_back( ibook.book1D("num_pileup_chi2","N of associated (recoToSim) pileup tracks vs normalized #chi^{2}",nintChi2,minChi2,maxChi2) );
391 
393 
394  h_eta.push_back( ibook.book1D("eta", "pseudorapidity residue", 1000, -0.1, 0.1 ) );
395  h_pt.push_back( ibook.book1D("pullPt", "pull of p_{t}", 100, -10, 10 ) );
396  h_pullTheta.push_back( ibook.book1D("pullTheta","pull of #theta parameter",250,-25,25) );
397  h_pullPhi.push_back( ibook.book1D("pullPhi","pull of #phi parameter",250,-25,25) );
398  h_pullDxy.push_back( ibook.book1D("pullDxy","pull of dxy parameter",250,-25,25) );
399  h_pullDz.push_back( ibook.book1D("pullDz","pull of dz parameter",250,-25,25) );
400  h_pullQoverp.push_back( ibook.book1D("pullQoverp","pull of qoverp parameter",250,-25,25) );
401 
402  /* TO BE FIXED -----------
403  if (associators[ww]=="TrackAssociatorByChi2"){
404  h_assochi2.push_back( ibook.book1D("assocChi2","track association #chi^{2}",1000000,0,100000) );
405  h_assochi2_prob.push_back(ibook.book1D("assocChi2_prob","probability of association #chi^{2}",100,0,1));
406  } else if (associators[ww]=="quickTrackAssociatorByHits"){
407  h_assocFraction.push_back( ibook.book1D("assocFraction","fraction of shared hits",200,0,2) );
408  h_assocSharedHit.push_back(ibook.book1D("assocSharedHit","number of shared hits",20,0,20));
409  }
410  */
411  h_assocFraction.push_back( ibook.book1D("assocFraction","fraction of shared hits",200,0,2) );
412  h_assocSharedHit.push_back(ibook.book1D("assocSharedHit","number of shared hits",41,-0.5,40.5));
413  // ----------------------
414 
415  // use the standard error of the mean as the errors in the profile
416  chi2_vs_nhits.push_back( ibook.bookProfile("chi2mean_vs_nhits","mean #chi^{2} vs nhits",nintHit,minHit,maxHit, 100,0,10, " ") );
417 
418  etares_vs_eta.push_back( ibook.book2D("etares_vs_eta","etaresidue vs eta",nintEta,minEta,maxEta,200,-0.1,0.1) );
419  nrec_vs_nsim.push_back( ibook.book2D("nrec_vs_nsim","nrec vs nsim", nintTracks,minTracks,maxTracks, nintTracks,minTracks,maxTracks) );
420 
421  chi2_vs_eta.push_back( ibook.bookProfile("chi2mean","mean #chi^{2} vs #eta",nintEta,minEta,maxEta, 200, 0, 20, " " ));
422  chi2_vs_phi.push_back( ibook.bookProfile("chi2mean_vs_phi","mean #chi^{2} vs #phi",nintPhi,minPhi,maxPhi, 200, 0, 20, " " ) );
423 
424  nhits_vs_eta.push_back( ibook.bookProfile("hits_eta","mean hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
425  nPXBhits_vs_eta.push_back( ibook.bookProfile("PXBhits_vs_eta","mean # PXB its vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
426  nPXFhits_vs_eta.push_back( ibook.bookProfile("PXFhits_vs_eta","mean # PXF hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
427  nTIBhits_vs_eta.push_back( ibook.bookProfile("TIBhits_vs_eta","mean # TIB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
428  nTIDhits_vs_eta.push_back( ibook.bookProfile("TIDhits_vs_eta","mean # TID hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
429  nTOBhits_vs_eta.push_back( ibook.bookProfile("TOBhits_vs_eta","mean # TOB hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
430  nTEChits_vs_eta.push_back( ibook.bookProfile("TEChits_vs_eta","mean # TEC hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
431 
432  nLayersWithMeas_vs_eta.push_back( ibook.bookProfile("LayersWithMeas_eta","mean # Layers with measurement vs eta",
434  nPXLlayersWithMeas_vs_eta.push_back( ibook.bookProfile("PXLlayersWithMeas_vs_eta","mean # PXL Layers with measurement vs eta",
436  nSTRIPlayersWithMeas_vs_eta.push_back( ibook.bookProfile("STRIPlayersWithMeas_vs_eta","mean # STRIP Layers with measurement vs eta",
438  nSTRIPlayersWith1dMeas_vs_eta.push_back( ibook.bookProfile("STRIPlayersWith1dMeas_vs_eta","mean # STRIP Layers with 1D measurement vs eta",
440  nSTRIPlayersWith2dMeas_vs_eta.push_back( ibook.bookProfile("STRIPlayersWith2dMeas_vs_eta","mean # STRIP Layers with 2D measurement vs eta",
442 
443  nhits_vs_phi.push_back( ibook.bookProfile("hits_phi","mean # hits vs #phi",nintPhi,minPhi,maxPhi,nintHit,minHit,maxHit, " ") );
444 
445  nlosthits_vs_eta.push_back( ibook.bookProfile("losthits_vs_eta","mean # lost hits vs eta",nintEta,minEta,maxEta,nintHit,minHit,maxHit, " ") );
446 
447  //resolution of track parameters
448  // dPt/Pt cotTheta Phi TIP LIP
449  // log10(pt)<0.5 100,0.1 240,0.08 100,0.015 100,0.1000 150,0.3000
450  // 0.5<log10(pt)<1.5 100,0.1 120,0.01 100,0.003 100,0.0100 150,0.0500
451  // >1.5 100,0.3 100,0.005 100,0.0008 100,0.0060 120,0.0300
452 
453  ptres_vs_eta.push_back(ibook.book2D("ptres_vs_eta","ptres_vs_eta",
455 
456  ptres_vs_phi.push_back( ibook.book2D("ptres_vs_phi","p_{t} res vs #phi",
458 
459  ptres_vs_pt.push_back(ibook.book2D("ptres_vs_pt","ptres_vs_pt",nintPt,minPt,maxPt, ptRes_nbin, ptRes_rangeMin, ptRes_rangeMax));
460 
461  cotThetares_vs_eta.push_back(ibook.book2D("cotThetares_vs_eta","cotThetares_vs_eta",
463 
464 
465  cotThetares_vs_pt.push_back(ibook.book2D("cotThetares_vs_pt","cotThetares_vs_pt",
467 
468 
469  phires_vs_eta.push_back(ibook.book2D("phires_vs_eta","phires_vs_eta",
471 
472  phires_vs_pt.push_back(ibook.book2D("phires_vs_pt","phires_vs_pt",
474 
475  phires_vs_phi.push_back(ibook.book2D("phires_vs_phi","#phi res vs #phi",
477 
478  dxyres_vs_eta.push_back(ibook.book2D("dxyres_vs_eta","dxyres_vs_eta",
480 
481  dxyres_vs_pt.push_back( ibook.book2D("dxyres_vs_pt","dxyres_vs_pt",
483 
484  dzres_vs_eta.push_back(ibook.book2D("dzres_vs_eta","dzres_vs_eta",
486 
487  dzres_vs_pt.push_back(ibook.book2D("dzres_vs_pt","dzres_vs_pt",nintPt,minPt,maxPt,dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
488 
489  ptmean_vs_eta_phi.push_back(ibook.bookProfile2D("ptmean_vs_eta_phi","mean p_{t} vs #eta and #phi",
490  nintPhi,minPhi,maxPhi,nintEta,minEta,maxEta,1000,0,1000));
491  phimean_vs_eta_phi.push_back(ibook.bookProfile2D("phimean_vs_eta_phi","mean #phi vs #eta and #phi",
493 
494  //pulls of track params vs eta: to be used with fitslicesytool
495  dxypull_vs_eta.push_back(ibook.book2D("dxypull_vs_eta","dxypull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
496  ptpull_vs_eta.push_back(ibook.book2D("ptpull_vs_eta","ptpull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
497  dzpull_vs_eta.push_back(ibook.book2D("dzpull_vs_eta","dzpull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
498  phipull_vs_eta.push_back(ibook.book2D("phipull_vs_eta","phipull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
499  thetapull_vs_eta.push_back(ibook.book2D("thetapull_vs_eta","thetapull_vs_eta",nintEta,minEta,maxEta,100,-10,10));
500 
501  // h_ptshiftetamean.push_back( ibook.book1D("h_ptshifteta_Mean","<#deltapT/pT>[%] vs #eta",nintEta,minEta,maxEta) );
502 
503 
504  //pulls of track params vs phi
505  ptpull_vs_phi.push_back(ibook.book2D("ptpull_vs_phi","p_{t} pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
506  phipull_vs_phi.push_back(ibook.book2D("phipull_vs_phi","#phi pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
507  thetapull_vs_phi.push_back(ibook.book2D("thetapull_vs_phi","#theta pull vs #phi",nintPhi,minPhi,maxPhi,100,-10,10));
508 
509 
510  nrecHit_vs_nsimHit_rec2sim.push_back( ibook.book2D("nrecHit_vs_nsimHit_rec2sim","nrecHit vs nsimHit (Rec2simAssoc)",
512 
513  if(useLogPt){
514  BinLogX(dzres_vs_pt.back()->getTH2F());
515  BinLogX(dxyres_vs_pt.back()->getTH2F());
516  BinLogX(phires_vs_pt.back()->getTH2F());
517  BinLogX(cotThetares_vs_pt.back()->getTH2F());
518  BinLogX(ptres_vs_pt.back()->getTH2F());
519  BinLogX(h_looperpT.back()->getTH1F());
520  BinLogX(h_misidpT.back()->getTH1F());
521  BinLogX(h_recopT.back()->getTH1F());
522  BinLogX(h_assoc2pT.back()->getTH1F());
523  BinLogX(h_pileuppT.back()->getTH1F());
524  }
525 }
526 
528  h_recodxypv.push_back( ibook.book1D("num_reco_dxypv","N of reco track vs dxy(PV)",nintDxy,minDxy,maxDxy) );
529  h_assoc2dxypv.push_back( ibook.book1D("num_assoc(recoToSim)_dxypv","N of associated (recoToSim) tracks vs dxy(PV)",nintDxy,minDxy,maxDxy) );
530  h_looperdxypv.push_back( ibook.book1D("num_duplicate_dxypv","N of associated (recoToSim) looper tracks vs dxy(PV)",nintDxy,minDxy,maxDxy) );
531  h_misiddxypv.push_back( ibook.book1D("num_chargemisid_dxypv","N of associated (recoToSim) charge misIDed tracks vs dxy(PV)",nintDxy,minDxy,maxDxy) );
532  h_pileupdxypv.push_back( ibook.book1D("num_pileup_dxypv","N of associated (recoToSim) pileup tracks vs dxy(PV)",nintDxy,minDxy,maxDxy) );
533 
534  h_recodzpv.push_back( ibook.book1D("num_reco_dzpv","N of reco track vs dz(PV)",nintDz,minDz,maxDz) );
535  h_assoc2dzpv.push_back( ibook.book1D("num_assoc(recoToSim)_dzpv","N of associated (recoToSim) tracks vs dz(PV)",nintDz,minDz,maxDz) );
536  h_looperdzpv.push_back( ibook.book1D("num_duplicate_dzpv","N of associated (recoToSim) looper tracks vs dz(PV)",nintDz,minDz,maxDz) );
537  h_misiddzpv.push_back( ibook.book1D("num_chargemisid_versus_dzpv","N of associated (recoToSim) charge misIDed tracks vs dz(PV)",nintDz,minDz,maxDz) );
538  h_pileupdzpv.push_back( ibook.book1D("num_pileup_dzpv","N of associated (recoToSim) pileup tracks vs dz(PV)",nintDz,minDz,maxDz) );
539 
540  h_reco_dzpvcut.push_back( ibook.book1D("num_reco_dzpvcut","N of reco track vs dz(PV)",nintDzpvCum,0,maxDzpvCum) );
541  h_assoc2_dzpvcut.push_back( ibook.book1D("num_assoc(recoToSim)_dzpvcut","N of associated (recoToSim) tracks vs dz(PV)",nintDzpvCum,0,maxDzpvCum) );
542  h_pileup_dzpvcut.push_back( ibook.book1D("num_pileup_dzpvcut", "N of associated (recoToSim) pileup tracks vs dz(PV)",nintDzpvCum,0,maxDzpvCum) );
543 
544  h_reco_dzpvcut_pt.push_back( ibook.book1D("num_reco_dzpvcut_pt","#sump_{T} of reco track vs dz(PV)",nintDzpvCum,0,maxDzpvCum) );
545  h_assoc2_dzpvcut_pt.push_back( ibook.book1D("num_assoc(recoToSim)_dzpvcut_pt","#sump_{T} of associated (recoToSim) tracks vs dz(PV)",nintDzpvCum,0,maxDzpvCum) );
546  h_pileup_dzpvcut_pt.push_back( ibook.book1D("num_pileup_dzpvcut_pt", "#sump_{T} of associated (recoToSim) pileup tracks vs dz(PV)",nintDzpvCum,0,maxDzpvCum) );
547  h_reco_dzpvcut_pt.back()->getTH1()->Sumw2();
548  h_assoc2_dzpvcut_pt.back()->getTH1()->Sumw2();
549  h_pileup_dzpvcut_pt.back()->getTH1()->Sumw2();
550 
551  h_reco_dzpvsigcut.push_back( ibook.book1D("num_reco_dzpvsigcut","N of reco track vs dz(PV)/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
552  h_assoc2_dzpvsigcut.push_back( ibook.book1D("num_assoc(recoToSim)_dzpvsigcut","N of associated (recoToSim) tracks vs dz(PV)/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
553  h_pileup_dzpvsigcut.push_back( ibook.book1D("num_pileup_dzpvsigcut","N of associated (recoToSim) pileup tracks vs dz(PV)/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
554 
555  h_reco_dzpvsigcut_pt.push_back( ibook.book1D("num_reco_dzpvsigcut_pt","#sump_{T} of reco track vs dz(PV)/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
556  h_assoc2_dzpvsigcut_pt.push_back( ibook.book1D("num_assoc(recoToSim)_dzpvsigcut_pt","#sump_{T} of associated (recoToSim) tracks vs dz(PV)/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
557  h_pileup_dzpvsigcut_pt.push_back( ibook.book1D("num_pileup_dzpvsigcut_pt","#sump_{T} of associated (recoToSim) pileup tracks vs dz(PV)/dzError",nintDzpvsigCum,0,maxDzpvsigCum) );
558  h_reco_dzpvsigcut_pt.back()->getTH1()->Sumw2();
559  h_assoc2_dzpvsigcut_pt.back()->getTH1()->Sumw2();
560  h_pileup_dzpvsigcut_pt.back()->getTH1()->Sumw2();
561 
562 }
563 
565  // dE/dx stuff
566  h_dedx_estim.emplace_back(std::initializer_list<MonitorElement*>{
567  ibook.book1D("h_dedx_estim1","dE/dx estimator 1",nintDeDx,minDeDx,maxDeDx),
568  ibook.book1D("h_dedx_estim2","dE/dx estimator 2",nintDeDx,minDeDx,maxDeDx)
569  });
570  h_dedx_nom.emplace_back(std::initializer_list<MonitorElement*>{
571  ibook.book1D("h_dedx_nom1","dE/dx number of measurements",nintHit,minHit,maxHit),
572  ibook.book1D("h_dedx_nom2","dE/dx number of measurements",nintHit,minHit,maxHit)
573  });
574  h_dedx_sat.emplace_back(std::initializer_list<MonitorElement*>{
575  ibook.book1D("h_dedx_sat1","dE/dx number of measurements with saturation",nintHit,minHit,maxHit),
576  ibook.book1D("h_dedx_sat2","dE/dx number of measurements with saturation",nintHit,minHit,maxHit)
577  });
578 }
579 
581  h_seedsFitFailed.push_back(ibook.book1D("seeds_fitFailed", "Number of seeds for which the fit failed", nintTracks, minTracks, maxTracks));
582  h_seedsFitFailedFraction.push_back(ibook.book1D("seeds_fitFailedFraction", "Fraction of seeds for which the fit failed", 100, 0, 1));
583 }
584 
586  const TrackingParticle::Point& vertexTP,
587  int bx){
588  if(bx == 0) {
589  h_ptSIM->Fill(sqrt(momentumTP.perp2()));
590  h_etaSIM->Fill(momentumTP.eta());
591  h_vertposSIM->Fill(sqrt(vertexTP.perp2()));
592  }
593  h_bunchxSIM->Fill(bx);
594 }
595 
596 
597 
599  const TrackingParticle& tp,
600  const TrackingParticle::Vector& momentumTP,
601  const TrackingParticle::Point& vertexTP,
602  double dxySim, double dzSim,
603  double dxyPVSim, double dzPVSim,
604  int nSimHits,
605  int nSimLayers, int nSimPixelLayers, int nSimStripMonoAndStereoLayers,
606  const reco::Track* track,
607  int numVertices,
608  double dR,
609  const math::XYZPoint *pvPosition){
610  bool isMatched = track;
611  const auto eta = getEta(momentumTP.eta());
612  const auto phi = momentumTP.phi();
613  const auto pt = getPt(sqrt(momentumTP.perp2()));
614  const auto nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
615  const auto vertxy = sqrt(vertexTP.perp2());
616  const auto vertz = vertexTP.z();
617 
618  if((*TpSelectorForEfficiencyVsEta)(tp)){
619  //effic vs eta
620  fillPlotNoFlow(h_simuleta[count], eta);
621  if (isMatched) fillPlotNoFlow(h_assoceta[count], eta);
622  }
623 
624  if((*TpSelectorForEfficiencyVsPhi)(tp)){
625  fillPlotNoFlow(h_simulphi[count], phi);
626  if (isMatched) fillPlotNoFlow(h_assocphi[count], phi);
627  //effic vs hits
628  fillPlotNoFlow(h_simulhit[count], nSimHits);
629  fillPlotNoFlow(h_simullayer[count], nSimLayers);
630  fillPlotNoFlow(h_simulpixellayer[count], nSimPixelLayers);
631  fillPlotNoFlow(h_simul3Dlayer[count], nSim3DLayers);
632  if(isMatched) {
633  fillPlotNoFlow(h_assochit[count], nSimHits);
634  fillPlotNoFlow(h_assoclayer[count], nSimLayers);
635  fillPlotNoFlow(h_assocpixellayer[count], nSimPixelLayers);
636  fillPlotNoFlow(h_assoc3Dlayer[count], nSim3DLayers);
637  nrecHit_vs_nsimHit_sim2rec[count]->Fill( track->numberOfValidHits(),nSimHits);
638  }
639  //effic vs pu
640  fillPlotNoFlow(h_simulpu[count], numVertices);
641  if(isMatched) fillPlotNoFlow(h_assocpu[count],numVertices);
642  //efficiency vs dR
643  fillPlotNoFlow(h_simuldr[count],dR);
644  if (isMatched) fillPlotNoFlow(h_assocdr[count],dR);
645  }
646 
647  if((*TpSelectorForEfficiencyVsPt)(tp)){
648  fillPlotNoFlow(h_simulpT[count], pt);
649  if (isMatched) fillPlotNoFlow(h_assocpT[count], pt);
650  }
651 
653  fillPlotNoFlow(h_simuldxy[count],dxySim);
654  if (isMatched) fillPlotNoFlow(h_assocdxy[count],dxySim);
655  if(pvPosition) {
656  fillPlotNoFlow(h_simuldxypv[count], dxyPVSim);
657  if (isMatched) fillPlotNoFlow(h_assocdxypv[count], dxyPVSim);
658  }
659 
660  fillPlotNoFlow(h_simulvertpos[count], vertxy);
661  if (isMatched) fillPlotNoFlow(h_assocvertpos[count], vertxy);
662  }
663 
664 
666  fillPlotNoFlow(h_simuldz[count],dzSim);
667  if (isMatched) fillPlotNoFlow(h_assocdz[count],dzSim);
668 
669  fillPlotNoFlow(h_simulzpos[count], vertz);
670  if (isMatched) fillPlotNoFlow(h_assoczpos[count], vertz);
671 
672  if(pvPosition) {
673  fillPlotNoFlow(h_simuldzpv[count], dzPVSim);
674 
675  h_simul_dzpvcut[count]->Fill(0);
676  h_simul_dzpvsigcut[count]->Fill(0);
677  h_simul_dzpvcut_pt[count]->Fill(0, pt);
678  h_simul_dzpvsigcut_pt[count]->Fill(0, pt);
679  if(isMatched) {
680  fillPlotNoFlow(h_assocdzpv[count], dzPVSim);
681 
682  h_simul2_dzpvcut[count]->Fill(0);
683  h_simul2_dzpvsigcut[count]->Fill(0);
684  h_simul2_dzpvcut_pt[count]->Fill(0, pt);
685  h_simul2_dzpvsigcut_pt[count]->Fill(0, pt);
686  const double dzpvcut = std::abs(track->dz(*pvPosition));
687  const double dzpvsigcut = dzpvcut / track->dzError();
688  h_assoc_dzpvcut[count]->Fill(dzpvcut);
689  h_assoc_dzpvsigcut[count]->Fill(dzpvsigcut);
690  h_assoc_dzpvcut_pt[count]->Fill(dzpvcut, pt);
691  h_assoc_dzpvsigcut_pt[count]->Fill(dzpvsigcut, pt);
692  }
693  }
694  }
695 
696 }
697 
699  h_tracksSIM->Fill(numSimTracks);
700 }
701 
702 // dE/dx
704  for (unsigned int i=0; i<v_dEdx.size(); i++) {
705  const edm::ValueMap<reco::DeDxData>& dEdxTrack = *(v_dEdx[i]);
706  const reco::DeDxData& dedx = dEdxTrack[trackref];
707  h_dedx_estim[count][i]->Fill(dedx.dEdx());
708  h_dedx_nom[count][i]->Fill(dedx.numberOfMeasurements());
710  }
711 }
712 
713 
715  const reco::Track& track,
716  const math::XYZPoint& bsPosition,
717  const math::XYZPoint *pvPosition,
718  bool isMatched,
719  bool isSigMatched,
720  bool isChargeMatched,
721  int numAssocRecoTracks,
722  int numVertices,
723  int nSimHits,
724  double sharedFraction,
725  double dR){
726 
727  //Fill track algo histogram
728  fillPlotNoFlow(h_algo[count],track.algo());
729  int sharedHits = sharedFraction * track.numberOfValidHits();
730 
731  //Compute fake rate vs eta
732  const auto eta = getEta(track.momentum().eta());
733  const auto phi = track.momentum().phi();
734  const auto pt = getPt(sqrt(track.momentum().perp2()));
735  const auto dxy = track.dxy(bsPosition);
736  const auto dz = track.dz(bsPosition);
737  const auto dxypv = pvPosition ? track.dxy(*pvPosition) : 0.0;
738  const auto dzpv = pvPosition ? track.dz(*pvPosition) : 0.0;
739  const auto dzpvsig = pvPosition ? dzpv / track.dzError() : 0.0;
740  const auto nhits = track.found();
741  const auto nlayers = track.hitPattern().trackerLayersWithMeasurement();
742  const auto nPixelLayers = track.hitPattern().pixelLayersWithMeasurement();
743  const auto n3DLayers = nPixelLayers + track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
744  const auto vertxy = std::sqrt(track.referencePoint().perp2());
745  const auto vertz = track.referencePoint().z();
746  const auto deltar = min(max(dR,h_recodr[count]->getTH1()->GetXaxis()->GetXmin()),h_recodr[count]->getTH1()->GetXaxis()->GetXmax());
747  const auto chi2 = track.normalizedChi2();
748 
749  fillPlotNoFlow(h_recoeta[count], eta);
750  fillPlotNoFlow(h_recophi[count], phi);
751  fillPlotNoFlow(h_recopT[count], pt);
752  fillPlotNoFlow(h_recodxy[count], dxy);
753  fillPlotNoFlow(h_recodz[count], dz);
754  fillPlotNoFlow(h_recohit[count], nhits);
755  fillPlotNoFlow(h_recolayer[count], nlayers);
756  fillPlotNoFlow(h_recopixellayer[count], nPixelLayers);
757  fillPlotNoFlow(h_reco3Dlayer[count], n3DLayers);
758  fillPlotNoFlow(h_recopu[count],numVertices);
759  fillPlotNoFlow(h_recochi2[count], chi2);
760  fillPlotNoFlow(h_recovertpos[count], vertxy);
761  fillPlotNoFlow(h_recozpos[count], vertz);
762  h_recodr[count]->Fill(deltar);
763  if(pvPosition) {
764  fillPlotNoFlow(h_recodxypv[count], dxypv);
765  fillPlotNoFlow(h_recodzpv[count], dzpv);
766 
767  h_reco_dzpvcut[count]->Fill(std::abs(dzpv));
768  h_reco_dzpvsigcut[count]->Fill(std::abs(dzpvsig));
769  h_reco_dzpvcut_pt[count]->Fill(std::abs(dzpv), pt);
770  h_reco_dzpvsigcut_pt[count]->Fill(std::abs(dzpvsig), pt);
771  }
772 
773  if (isMatched) {
774  fillPlotNoFlow(h_assoc2eta[count], eta);
775  fillPlotNoFlow(h_assoc2phi[count], phi);
776  fillPlotNoFlow(h_assoc2pT[count], pt);
777  fillPlotNoFlow(h_assoc2dxy[count], dxy);
778  fillPlotNoFlow(h_assoc2dz[count], dz);
779  fillPlotNoFlow(h_assoc2hit[count], nhits);
780  fillPlotNoFlow(h_assoc2layer[count], nlayers);
781  fillPlotNoFlow(h_assoc2pixellayer[count], nPixelLayers);
782  fillPlotNoFlow(h_assoc23Dlayer[count], n3DLayers);
783  fillPlotNoFlow(h_assoc2pu[count],numVertices);
784  fillPlotNoFlow(h_assoc2chi2[count], chi2);
785  fillPlotNoFlow(h_assoc2vertpos[count], vertxy);
786  fillPlotNoFlow(h_assoc2zpos[count], vertz);
787  h_assoc2dr[count]->Fill(deltar);
788  if(pvPosition) {
789  fillPlotNoFlow(h_assoc2dxypv[count], dxypv);
790  fillPlotNoFlow(h_assoc2dzpv[count], dzpv);
791 
792  h_assoc2_dzpvcut[count]->Fill(std::abs(dzpv));
793  h_assoc2_dzpvsigcut[count]->Fill(std::abs(dzpvsig));
794  h_assoc2_dzpvcut_pt[count]->Fill(std::abs(dzpv), pt);
795  h_assoc2_dzpvsigcut_pt[count]->Fill(std::abs(dzpvsig), pt);
796  }
797 
798  nrecHit_vs_nsimHit_rec2sim[count]->Fill( track.numberOfValidHits(),nSimHits);
799  h_assocFraction[count]->Fill( sharedFraction);
800  h_assocSharedHit[count]->Fill( sharedHits);
801 
802  if (!isChargeMatched) {
803  fillPlotNoFlow(h_misideta[count], eta);
804  fillPlotNoFlow(h_misidphi[count], phi);
805  fillPlotNoFlow(h_misidpT[count], pt);
806  fillPlotNoFlow(h_misiddxy[count], dxy);
807  fillPlotNoFlow(h_misiddz[count], dz);
808  fillPlotNoFlow(h_misidhit[count], nhits);
809  fillPlotNoFlow(h_misidlayer[count], nlayers);
810  fillPlotNoFlow(h_misidpixellayer[count], nPixelLayers);
811  fillPlotNoFlow(h_misid3Dlayer[count], n3DLayers);
812  fillPlotNoFlow(h_misidpu[count], numVertices);
813  fillPlotNoFlow(h_misidchi2[count], chi2);
814  if(pvPosition) {
815  fillPlotNoFlow(h_misiddxypv[count], dxypv);
816  fillPlotNoFlow(h_misiddzpv[count], dzpv);
817  }
818  }
819 
820  if (numAssocRecoTracks>1) {
821  fillPlotNoFlow(h_loopereta[count], eta);
822  fillPlotNoFlow(h_looperphi[count], phi);
823  fillPlotNoFlow(h_looperpT[count], pt);
824  fillPlotNoFlow(h_looperdxy[count], dxy);
825  fillPlotNoFlow(h_looperdz[count], dz);
826  fillPlotNoFlow(h_looperhit[count], nhits);
827  fillPlotNoFlow(h_looperlayer[count], nlayers);
828  fillPlotNoFlow(h_looperpixellayer[count], nPixelLayers);
829  fillPlotNoFlow(h_looper3Dlayer[count], n3DLayers);
830  fillPlotNoFlow(h_looperpu[count], numVertices);
831  fillPlotNoFlow(h_looperchi2[count], chi2);
832  fillPlotNoFlow(h_loopervertpos[count], vertxy);
833  fillPlotNoFlow(h_looperzpos[count], vertz);
834  h_looperdr[count]->Fill(deltar);
835  if(pvPosition) {
836  fillPlotNoFlow(h_looperdxypv[count], dxypv);
837  fillPlotNoFlow(h_looperdzpv[count], dzpv);
838  }
839  }
840  if(!isSigMatched) {
841  fillPlotNoFlow(h_pileupeta[count], eta);
842  fillPlotNoFlow(h_pileupphi[count], phi);
843  fillPlotNoFlow(h_pileuppT[count], pt);
844  fillPlotNoFlow(h_pileupdxy[count], dxy);
845  fillPlotNoFlow(h_pileupdz[count], dz);
846  fillPlotNoFlow(h_pileuphit[count], nhits);
847  fillPlotNoFlow(h_pileuplayer[count], nlayers);
848  fillPlotNoFlow(h_pileuppixellayer[count], nPixelLayers);
849  fillPlotNoFlow(h_pileup3Dlayer[count], n3DLayers);
850  fillPlotNoFlow(h_pileuppu[count], numVertices);
851  fillPlotNoFlow(h_pileupchi2[count], chi2);
852  fillPlotNoFlow(h_pileupvertpos[count], vertxy);
853  fillPlotNoFlow(h_pileupzpos[count], vertz);
854  h_pileupdr[count]->Fill(deltar);
855  if(pvPosition) {
856  fillPlotNoFlow(h_pileupdxypv[count], dxypv);
857  fillPlotNoFlow(h_pileupdzpv[count], dzpv);
858 
859  h_pileup_dzpvcut[count]->Fill(std::abs(dzpv));
860  h_pileup_dzpvsigcut[count]->Fill(std::abs(dzpvsig));
861  h_pileup_dzpvcut_pt[count]->Fill(std::abs(dzpv), pt);
862  h_pileup_dzpvsigcut_pt[count]->Fill(std::abs(dzpvsig), pt);
863  }
864  }
865  }
866 }
867 
868 
870  const reco::Track& track){
871  //nchi2 and hits global distributions
872  h_nchi2[count]->Fill(track.normalizedChi2());
873  h_nchi2_prob[count]->Fill(TMath::Prob(track.chi2(),(int)track.ndof()));
874  h_hits[count]->Fill(track.numberOfValidHits());
875  h_losthits[count]->Fill(track.numberOfLostHits());
876  chi2_vs_nhits[count]->Fill(track.numberOfValidHits(),track.normalizedChi2());
877  h_charge[count]->Fill( track.charge() );
880 
881  //chi2 and #hit vs eta: fill 2D histos
882  const auto eta = getEta(track.eta());
883  chi2_vs_eta[count]->Fill(eta, track.normalizedChi2());
884  nhits_vs_eta[count]->Fill(eta, track.numberOfValidHits());
893  int LayersAll = track.hitPattern().stripLayersWithMeasurement();
894  int Layers2D = track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
895  int Layers1D = LayersAll - Layers2D;
896  nSTRIPlayersWithMeas_vs_eta[count]->Fill(eta, LayersAll);
897  nSTRIPlayersWith1dMeas_vs_eta[count]->Fill(eta, Layers1D);
898  nSTRIPlayersWith2dMeas_vs_eta[count]->Fill(eta, Layers2D);
899 
900  nlosthits_vs_eta[count]->Fill(eta, track.numberOfLostHits());
901 }
902 
903 
904 void MTVHistoProducerAlgoForTracker::fill_trackBased_histos(int count, int assTracks, int numRecoTracks, int numSimTracks){
905 
906  h_tracks[count]->Fill(assTracks);
907  h_fakes[count]->Fill(numRecoTracks-assTracks);
908  nrec_vs_nsim[count]->Fill(numRecoTracks,numSimTracks);
909 
910 }
911 
912 
913 
915  const TrackingParticle::Vector& momentumTP,
916  const TrackingParticle::Point& vertexTP,
917  int chargeTP,
918  const reco::Track& track,
919  const math::XYZPoint& bsPosition){
920 
921  // evaluation of TP parameters
922  double qoverpSim = chargeTP/sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
923  double lambdaSim = M_PI/2-momentumTP.theta();
924  double phiSim = momentumTP.phi();
925  double dxySim = (-vertexTP.x()*sin(momentumTP.phi())+vertexTP.y()*cos(momentumTP.phi()));
926  double dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/sqrt(momentumTP.perp2())
927  * momentumTP.z()/sqrt(momentumTP.perp2());
928 
929 
930  // reco::Track::ParameterVector rParameters = track.parameters(); // UNUSED
931 
932  double qoverpRec(0);
933  double qoverpErrorRec(0);
934  double ptRec(0);
935  double ptErrorRec(0);
936  double lambdaRec(0);
937  double lambdaErrorRec(0);
938  double phiRec(0);
939  double phiErrorRec(0);
940 
941  /* TO BE FIXED LATER -----------
942  //loop to decide whether to take gsfTrack (utilisation of mode-function) or common track
943  const GsfTrack* gsfTrack(0);
944  if(useGsf){
945  gsfTrack = dynamic_cast<const GsfTrack*>(&(*track));
946  if (gsfTrack==0) edm::LogInfo("TrackValidator") << "Trying to access mode for a non-GsfTrack";
947  }
948 
949  if (gsfTrack) {
950  // get values from mode
951  getRecoMomentum(*gsfTrack, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
952  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
953  }
954 
955  else {
956  // get values from track (without mode)
957  getRecoMomentum(*track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
958  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
959  }
960  */
961  getRecoMomentum(track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
962  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
963  // -------------
964 
965  double ptError = ptErrorRec;
966  double ptres=ptRec-sqrt(momentumTP.perp2());
967  double etares=track.eta()-momentumTP.Eta();
968 
969 
970  double dxyRec = track.dxy(bsPosition);
971  double dzRec = track.dz(bsPosition);
972 
973  const auto phiRes = phiRec-phiSim;
974  const auto dxyRes = dxyRec-dxySim;
975  const auto dzRes = dzRec-dzSim;
976  const auto cotThetaRes = 1/tan(M_PI*0.5-lambdaRec)-1/tan(M_PI*0.5-lambdaSim);
977 
978  // eta residue; pt, k, theta, phi, dxy, dz pulls
979  double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
980  double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
981  double phiPull=phiRes/phiErrorRec;
982  double dxyPull=dxyRes/track.dxyError();
983  double dzPull=dzRes/track.dzError();
984 
985 #ifdef EDM_ML_DEBUG
986  double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
987  ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
988  double contrib_dxy = ((dxyRec-dxySim)/track.dxyError())*((dxyRec-dxySim)/track.dxyError())/5;
989  double contrib_dz = ((dzRec-dzSim)/track.dzError())*((dzRec-dzSim)/track.dzError())/5;
990  double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
991  ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
992  double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
993  ((phiRec-phiSim)/phiErrorRec)/5;
994 
995  LogTrace("TrackValidatorTEST")
996  //<< "assocChi2=" << tp.begin()->second << "\n"
997  << "" << "\n"
998  << "ptREC=" << ptRec << "\n" << "etaREC=" << track.eta() << "\n" << "qoverpREC=" << qoverpRec << "\n"
999  << "dxyREC=" << dxyRec << "\n" << "dzREC=" << dzRec << "\n"
1000  << "thetaREC=" << track.theta() << "\n" << "phiREC=" << phiRec << "\n"
1001  << "" << "\n"
1002  << "qoverpError()=" << qoverpErrorRec << "\n" << "dxyError()=" << track.dxyError() << "\n"<< "dzError()="
1003  << track.dzError() << "\n"
1004  << "thetaError()=" << lambdaErrorRec << "\n" << "phiError()=" << phiErrorRec << "\n"
1005  << "" << "\n"
1006  << "ptSIM=" << sqrt(momentumTP.perp2()) << "\n"<< "etaSIM=" << momentumTP.Eta() << "\n"<< "qoverpSIM=" << qoverpSim << "\n"
1007  << "dxySIM=" << dxySim << "\n"<< "dzSIM=" << dzSim << "\n" << "thetaSIM=" << M_PI/2-lambdaSim << "\n"
1008  << "phiSIM=" << phiSim << "\n"
1009  << "" << "\n"
1010  << "contrib_Qoverp=" << contrib_Qoverp << "\n"<< "contrib_dxy=" << contrib_dxy << "\n"<< "contrib_dz=" << contrib_dz << "\n"
1011  << "contrib_theta=" << contrib_theta << "\n"<< "contrib_phi=" << contrib_phi << "\n"
1012  << "" << "\n"
1013  <<"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<"\n";
1014 #endif
1015 
1016  h_pullQoverp[count]->Fill(qoverpPull);
1017  h_pullTheta[count]->Fill(thetaPull);
1018  h_pullPhi[count]->Fill(phiPull);
1019  h_pullDxy[count]->Fill(dxyPull);
1020  h_pullDz[count]->Fill(dzPull);
1021 
1022  const auto etaSim = getEta(momentumTP.eta());
1023  const auto ptSim = getPt(sqrt(momentumTP.perp2()));
1024 
1025  h_pt[count]->Fill(ptres/ptError);
1026  h_eta[count]->Fill(etares);
1027  //etares_vs_eta[count]->Fill(getEta(track.eta()),etares);
1028  etares_vs_eta[count]->Fill(etaSim, etares);
1029 
1030  //resolution of track params: fill 2D histos
1031  dxyres_vs_eta[count]->Fill(etaSim, dxyRes);
1032  ptres_vs_eta[count]->Fill(etaSim, ptres/ptRec);
1033  dzres_vs_eta[count]->Fill(etaSim, dzRes);
1034  phires_vs_eta[count]->Fill(etaSim, phiRes);
1035  cotThetares_vs_eta[count]->Fill(etaSim, cotThetaRes);
1036 
1037  //same as before but vs pT
1038  dxyres_vs_pt[count]->Fill(ptSim, dxyRes);
1039  ptres_vs_pt[count]->Fill(ptSim, ptres/ptRec);
1040  dzres_vs_pt[count]->Fill(ptSim, dzRes);
1041  phires_vs_pt[count]->Fill(ptSim, phiRes);
1042  cotThetares_vs_pt[count]->Fill(ptSim, cotThetaRes);
1043 
1044  //pulls of track params vs eta: fill 2D histos
1045  dxypull_vs_eta[count]->Fill(etaSim, dxyPull);
1046  ptpull_vs_eta[count]->Fill(etaSim, ptres/ptError);
1047  dzpull_vs_eta[count]->Fill(etaSim, dzPull);
1048  phipull_vs_eta[count]->Fill(etaSim, phiPull);
1049  thetapull_vs_eta[count]->Fill(etaSim, thetaPull);
1050 
1051  //plots vs phi
1052  nhits_vs_phi[count]->Fill(phiRec,track.numberOfValidHits());
1053  chi2_vs_phi[count]->Fill(phiRec,track.normalizedChi2());
1054  ptmean_vs_eta_phi[count]->Fill(phiRec,getEta(track.eta()),ptRec);
1055  phimean_vs_eta_phi[count]->Fill(phiRec,getEta(track.eta()),phiRec);
1056 
1057  ptres_vs_phi[count]->Fill(phiSim, ptres/ptRec);
1058  phires_vs_phi[count]->Fill(phiSim, phiRes);
1059  ptpull_vs_phi[count]->Fill(phiSim, ptres/ptError);
1060  phipull_vs_phi[count]->Fill(phiSim, phiPull);
1061  thetapull_vs_phi[count]->Fill(phiSim, thetaPull);
1062 
1063 
1064 }
1065 
1066 
1067 
1068 void
1069 MTVHistoProducerAlgoForTracker::getRecoMomentum (const reco::Track& track, double& pt, double& ptError,
1070  double& qoverp, double& qoverpError, double& lambda,double& lambdaError,
1071  double& phi, double& phiError ) const {
1072  pt = track.pt();
1073  ptError = track.ptError();
1074  qoverp = track.qoverp();
1075  qoverpError = track.qoverpError();
1076  lambda = track.lambda();
1077  lambdaError = track.lambdaError();
1078  phi = track.phi();
1079  phiError = track.phiError();
1080  // cout <<"test1" << endl;
1081 
1082 
1083 
1084 }
1085 
1086 void
1087 MTVHistoProducerAlgoForTracker::getRecoMomentum (const reco::GsfTrack& gsfTrack, double& pt, double& ptError,
1088  double& qoverp, double& qoverpError, double& lambda,double& lambdaError,
1089  double& phi, double& phiError ) const {
1090 
1091  pt = gsfTrack.ptMode();
1092  ptError = gsfTrack.ptModeError();
1093  qoverp = gsfTrack.qoverpMode();
1094  qoverpError = gsfTrack.qoverpModeError();
1095  lambda = gsfTrack.lambdaMode();
1096  lambdaError = gsfTrack.lambdaModeError();
1097  phi = gsfTrack.phiMode();
1098  phiError = gsfTrack.phiModeError();
1099  // cout <<"test2" << endl;
1100 
1101 }
1102 
1103 double
1105  if (useFabsEta) return fabs(eta);
1106  else return eta;
1107 }
1108 
1109 double
1111  if (useInvPt && pt!=0) return 1/pt;
1112  else return pt;
1113 }
1114 
1115 
1117  const reco::GenParticle& tp,
1118  const TrackingParticle::Vector& momentumTP,
1119  const TrackingParticle::Point& vertexTP,
1120  double dxySim, double dzSim, int nSimHits,
1121  const reco::Track* track,
1122  int numVertices){
1123 
1124  bool isMatched = track;
1125 
1126  if((*GpSelectorForEfficiencyVsEta)(tp)){
1127  //effic vs eta
1128  fillPlotNoFlow(h_simuleta[count],getEta(momentumTP.eta()));
1129  if (isMatched) fillPlotNoFlow(h_assoceta[count],getEta(momentumTP.eta()));
1130  }
1131 
1132  if((*GpSelectorForEfficiencyVsPhi)(tp)){
1133  fillPlotNoFlow(h_simulphi[count],momentumTP.phi());
1134  if (isMatched) fillPlotNoFlow(h_assocphi[count],momentumTP.phi());
1135  //effic vs hits
1136  fillPlotNoFlow(h_simulhit[count],(int)nSimHits);
1137  if(isMatched) {
1138  fillPlotNoFlow(h_assochit[count],(int)nSimHits);
1139  nrecHit_vs_nsimHit_sim2rec[count]->Fill( track->numberOfValidHits(),nSimHits);
1140  }
1141  //effic vs pu
1142  fillPlotNoFlow(h_simulpu[count],numVertices);
1143  if (isMatched) fillPlotNoFlow(h_assocpu[count],numVertices);
1144  //efficiency vs dR
1145  //not implemented for now
1146  }
1147 
1148  if((*GpSelectorForEfficiencyVsPt)(tp)){
1149  fillPlotNoFlow(h_simulpT[count],getPt(sqrt(momentumTP.perp2())));
1150  if (isMatched) fillPlotNoFlow(h_assocpT[count],getPt(sqrt(momentumTP.perp2())));
1151  }
1152 
1153  if((*GpSelectorForEfficiencyVsVTXR)(tp)){
1154  fillPlotNoFlow(h_simuldxy[count],dxySim);
1155  if (isMatched) fillPlotNoFlow(h_assocdxy[count],dxySim);
1156 
1157  fillPlotNoFlow(h_simulvertpos[count],sqrt(vertexTP.perp2()));
1158  if (isMatched) fillPlotNoFlow(h_assocvertpos[count],sqrt(vertexTP.perp2()));
1159  }
1160 
1161  if((*GpSelectorForEfficiencyVsVTXZ)(tp)){
1162  fillPlotNoFlow(h_simuldz[count],dzSim);
1163  if (isMatched) fillPlotNoFlow(h_assocdz[count],dzSim);
1164 
1165  fillPlotNoFlow(h_simulzpos[count],vertexTP.z());
1166  if (isMatched) fillPlotNoFlow(h_assoczpos[count],vertexTP.z());
1167  }
1168 
1169 }
1170 
1172  int seedsFitFailed,
1173  int seedsTotal) {
1174  fillPlotNoFlow(h_seedsFitFailed[count], seedsFitFailed);
1175  h_seedsFitFailedFraction[count]->Fill(static_cast<double>(seedsFitFailed)/seedsTotal);
1176 }
double qoverp() const
q / p
Definition: TrackBase.h:568
double phiModeError() const
error on phi from mode
Definition: GsfTrack.h:94
std::vector< MonitorElement * > h_looperhit
std::vector< MonitorElement * > h_simul2_dzpvcut
T getParameter(std::string const &) const
std::vector< MonitorElement * > h_assoc2hit
T getUntrackedParameter(std::string const &, T const &) const
const Point & referencePoint() const
Reference point on the track.
Definition: TrackBase.h:676
int i
Definition: DBlmapReader.cc:9
std::vector< MonitorElement * > h_pileupdxypv
std::vector< MonitorElement * > h_recodxy
std::vector< MonitorElement * > h_looperzpos
std::vector< MonitorElement * > h_assochit
void bookSimTrackPVAssociationHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > h_fakes
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_nchi2_prob
std::vector< MonitorElement * > h_looperpT
std::vector< MonitorElement * > h_pullDz
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsEta
std::vector< MonitorElement * > h_misidlayer
std::vector< MonitorElement * > h_assoc_dzpvsigcut_pt
std::vector< MonitorElement * > ptpull_vs_phi
void bookRecoPVAssociationHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > h_looperchi2
std::vector< MonitorElement * > h_assoczpos
std::vector< MonitorElement * > nPXFhits_vs_eta
std::vector< MonitorElement * > h_assoc2zpos
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_simulzpos
std::vector< MonitorElement * > nrecHit_vs_nsimHit_rec2sim
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::vector< MonitorElement * > h_assoc2pT
std::vector< MonitorElement * > h_nmisslayers_inner
double lambdaMode() const
Lambda angle from mode.
Definition: GsfTrack.h:45
std::vector< MonitorElement * > h_simulpT
std::vector< MonitorElement * > h_looperpixellayer
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:556
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) ...
std::vector< MonitorElement * > h_simul_dzpvsigcut
std::vector< MonitorElement * > h_pileuphit
std::vector< MonitorElement * > h_pileupdr
std::vector< MonitorElement * > nTEChits_vs_eta
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_hits
double theta() const
polar angle
Definition: TrackBase.h:574
double dxyError() const
error on dxy
Definition: TrackBase.h:791
std::vector< MonitorElement * > nLayersWithMeas_vs_eta
std::vector< MonitorElement * > h_pullPhi
std::vector< MonitorElement * > phipull_vs_phi
std::vector< std::vector< MonitorElement * > > h_dedx_estim
std::vector< MonitorElement * > h_assoc_dzpvcut_pt
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
std::vector< MonitorElement * > nrec_vs_nsim
std::vector< MonitorElement * > h_pileup_dzpvsigcut_pt
std::vector< MonitorElement * > h_pileuppT
S make(const edm::ParameterSet &cfg)
std::vector< MonitorElement * > h_algo
std::vector< MonitorElement * > h_simul_dzpvcut_pt
std::vector< MonitorElement * > h_assocdz
std::vector< MonitorElement * > h_recovertpos
std::vector< MonitorElement * > nTIDhits_vs_eta
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXZ
void bookSimTrackHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > phires_vs_eta
std::vector< MonitorElement * > h_pullDxy
std::vector< MonitorElement * > h_assoc2phi
std::vector< MonitorElement * > h_nchi2
std::vector< MonitorElement * > h_assoc2pu
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:640
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
Definition: TrackBase.h:821
std::vector< MonitorElement * > h_misidchi2
std::vector< MonitorElement * > h_assoc2_dzpvcut
std::vector< MonitorElement * > h_looperdxy
std::vector< MonitorElement * > h_simuleta
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_assoc3Dlayer
std::vector< MonitorElement * > h_looper3Dlayer
std::vector< MonitorElement * > h_simul2_dzpvsigcut_pt
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:508
std::vector< MonitorElement * > h_reco_dzpvcut
const Vector & momentum() const
track momentum vector
Definition: TrackBase.h:670
std::vector< MonitorElement * > h_reco3Dlayer
#define nullptr
std::vector< MonitorElement * > h_loopervertpos
std::vector< MonitorElement * > h_looperdr
std::vector< MonitorElement * > h_pileupchi2
void fill_trackBased_histos(int count, int assTracks, int numRecoTracks, int numSimTracks)
std::vector< MonitorElement * > h_assoc2dz
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:527
std::vector< MonitorElement * > chi2_vs_phi
int numberOfValidStripTOBHits() const
Definition: HitPattern.h:868
std::vector< MonitorElement * > h_assocdzpv
std::vector< MonitorElement * > h_assocphi
int sharedHits(const reco::GsfTrackRef &, const reco::GsfTrackRef &)
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPhi
std::vector< MonitorElement * > phires_vs_phi
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, edm::ConsumesCollector &&iC)
std::vector< MonitorElement * > dzres_vs_eta
void Fill(long long x)
double qoverpMode() const
q/p from mode
Definition: GsfTrack.h:41
float dEdx() const
Definition: DeDxData.cc:26
std::vector< MonitorElement * > h_misideta
std::vector< MonitorElement * > nlosthits_vs_eta
std::vector< MonitorElement * > nSTRIPlayersWith1dMeas_vs_eta
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
Definition: GsfTrack.h:81
std::vector< MonitorElement * > h_recohit
TrackAlgorithm algo() const
Definition: TrackBase.h:492
std::vector< MonitorElement * > h_simul2_dzpvcut_pt
math::XYZPointD Point
point in the space
std::vector< MonitorElement * > h_looperlayer
std::vector< MonitorElement * > phires_vs_pt
void fill_seed_histos(int count, int seedsFitFailed, int seedsTotal)
std::vector< MonitorElement * > h_assoc2_dzpvsigcut
void fill_generic_recoTrack_histos(int count, const reco::Track &track, const math::XYZPoint &bsPosition, const math::XYZPoint *pvPosition, bool isMatched, bool isSigMatched, bool isChargeMatched, int numAssocRecoTracks, int numVertices, int nSimHits, double sharedFraction, double dR)
void fill_ResoAndPull_recoTrack_histos(int count, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, int chargeTP, const reco::Track &track, const math::XYZPoint &bsPosition)
std::vector< MonitorElement * > h_assocpu
std::vector< MonitorElement * > h_assoc2layer
std::vector< MonitorElement * > h_assoc23Dlayer
unsigned int numberOfMeasurements() const
Definition: DeDxData.cc:37
std::vector< MonitorElement * > nPXBhits_vs_eta
std::vector< std::vector< MonitorElement * > > h_dedx_sat
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:646
int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
Definition: HitPattern.cc:350
std::vector< MonitorElement * > h_looperpu
std::vector< MonitorElement * > h_assoc2dxypv
std::vector< MonitorElement * > h_assoc2dxy
std::vector< MonitorElement * > h_pullQoverp
int numberOfValidPixelBarrelHits() const
Definition: HitPattern.h:843
std::vector< MonitorElement * > h_simulpu
std::vector< MonitorElement * > h_assoc2chi2
std::vector< MonitorElement * > h_simuldzpv
double chi2() const
chi-squared of the fit
Definition: TrackBase.h:544
std::vector< MonitorElement * > h_simuldr
std::vector< MonitorElement * > h_misidhit
std::vector< MonitorElement * > nSTRIPlayersWithMeas_vs_eta
std::vector< MonitorElement * > h_pileup_dzpvcut_pt
MonitorElement * bookProfile2D(Args &&...args)
Definition: DQMStore.h:163
std::vector< MonitorElement * > h_reco_dzpvcut_pt
void fill_recoAssociated_simTrack_histos(int count, const TrackingParticle &tp, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, double dxy, double dz, double dxyPV, double dzPV, int nSimHits, int nSimLayers, int nSimPixelLayers, int nSimStripMonoAndStereoLayers, const reco::Track *track, int numVertices, double dR, const math::XYZPoint *pvPosition)
std::vector< MonitorElement * > nTOBhits_vs_eta
double ndof() const
number of degrees of freedom of the fit
Definition: TrackBase.h:550
T sqrt(T t)
Definition: SSEVec.h:18
std::vector< MonitorElement * > ptpull_vs_eta
std::vector< MonitorElement * > etares_vs_eta
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsEta
std::vector< MonitorElement * > h_recozpos
double pt() const
track transverse momentum
Definition: TrackBase.h:616
std::vector< MonitorElement * > h_recophi
std::vector< MonitorElement * > h_assocpT
std::unique_ptr< TrackingParticleSelector > generalTpSelector
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:758
std::vector< MonitorElement * > h_seedsFitFailedFraction
std::vector< MonitorElement * > nSTRIPlayersWith2dMeas_vs_eta
std::vector< MonitorElement * > h_tracks
double phiError() const
error on phi
Definition: TrackBase.h:785
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
std::vector< MonitorElement * > nhits_vs_phi
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< MonitorElement * > h_assoc2pixellayer
int numberOfValidStripTIDHits() const
Definition: HitPattern.h:863
double lambda() const
Lambda angle.
Definition: TrackBase.h:580
TH1 * getTH1(void) const
std::vector< MonitorElement * > h_misid3Dlayer
std::vector< MonitorElement * > nrecHit_vs_nsimHit_sim2rec
bool isMatched(TrackingRecHit const &hit)
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:815
void fill_simAssociated_recoTrack_histos(int count, const reco::Track &track)
int numberOfValidStripTECHits() const
Definition: HitPattern.h:873
T min(T a, T b)
Definition: MathUtil.h:58
std::vector< MonitorElement * > phimean_vs_eta_phi
std::vector< MonitorElement * > h_looperdxypv
std::vector< MonitorElement * > h_charge
std::vector< MonitorElement * > h_misidpu
std::vector< MonitorElement * > h_loopereta
std::vector< MonitorElement * > h_misiddz
std::vector< MonitorElement * > h_pileupvertpos
#define LogTrace(id)
std::vector< MonitorElement * > h_simullayer
std::vector< MonitorElement * > h_pileupphi
std::vector< MonitorElement * > chi2_vs_nhits
std::vector< MonitorElement * > h_recodr
std::vector< MonitorElement * > h_assoc2vertpos
std::vector< MonitorElement * > dzpull_vs_eta
#define M_PI
std::vector< MonitorElement * > h_simuldz
std::vector< MonitorElement * > h_misiddxy
double qoverpError() const
error on signed transverse curvature
Definition: TrackBase.h:752
std::vector< MonitorElement * > h_seedsFitFailed
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:604
double dzError() const
error on dz
Definition: TrackBase.h:809
std::vector< MonitorElement * > thetapull_vs_phi
std::vector< MonitorElement * > h_recolayer
std::vector< MonitorElement * > h_assoc2_dzpvsigcut_pt
std::vector< MonitorElement * > h_simulvertpos
std::vector< MonitorElement * > dxyres_vs_eta
std::vector< MonitorElement * > h_simuldxypv
std::vector< MonitorElement * > h_reco_dzpvsigcut_pt
std::vector< MonitorElement * > h_simulpixellayer
std::vector< MonitorElement * > h_simul_dzpvcut
std::vector< MonitorElement * > h_recopu
std::vector< MonitorElement * > h_misidpT
std::vector< MonitorElement * > h_assoc_dzpvsigcut
std::vector< MonitorElement * > h_nmisslayers_outer
std::vector< MonitorElement * > nPXLlayersWithMeas_vs_eta
std::vector< MonitorElement * > h_misiddzpv
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPhi
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:445
void fill_generic_simTrack_histos(const TrackingParticle::Vector &, const TrackingParticle::Point &vertex, int bx)
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
double qoverpModeError() const
error on signed transverse curvature from mode
Definition: GsfTrack.h:79
std::vector< MonitorElement * > h_simul_dzpvsigcut_pt
int stripLayersWithMeasurement() const
Definition: HitPattern.h:1035
std::vector< MonitorElement * > h_eta
TH1F * getTH1F(void) const
std::vector< MonitorElement * > h_pt
std::vector< MonitorElement * > cotThetares_vs_pt
std::vector< MonitorElement * > h_recodzpv
std::vector< MonitorElement * > h_pileuppixellayer
int numberOfValidStripTIBHits() const
Definition: HitPattern.h:858
std::vector< MonitorElement * > h_simulphi
std::vector< MonitorElement * > h_pileup_dzpvcut
static const std::string algoNames[]
Definition: TrackBase.h:148
void bookRecoHistos(DQMStore::IBooker &ibook)
int numberOfValidPixelEndcapHits() const
Definition: HitPattern.h:848
std::vector< MonitorElement * > h_pullTheta
std::vector< MonitorElement * > h_looperdzpv
std::vector< MonitorElement * > ptmean_vs_eta_phi
std::vector< MonitorElement * > h_looperphi
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXZ
double lambdaError() const
error on lambda
Definition: TrackBase.h:773
std::vector< MonitorElement * > h_recodxypv
std::vector< MonitorElement * > h_assoc2dr
std::vector< MonitorElement * > h_simul2_dzpvsigcut
std::vector< MonitorElement * > dxypull_vs_eta
void bookSeedHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > ptres_vs_eta
std::vector< MonitorElement * > phipull_vs_eta
unsigned short found() const
Number of valid hits on track.
Definition: Track.h:194
std::vector< MonitorElement * > h_simulhit
std::vector< MonitorElement * > h_recopixellayer
std::vector< MonitorElement * > h_pileup_dzpvsigcut
std::vector< MonitorElement * > h_recopT
std::vector< MonitorElement * > h_pileup3Dlayer
std::vector< MonitorElement * > h_looperdz
std::vector< MonitorElement * > h_pileupzpos
std::vector< MonitorElement * > h_misiddxypv
std::vector< MonitorElement * > h_assocdxy
std::vector< MonitorElement * > h_misidpixellayer
double phiMode() const
azimuthal angle of momentum vector from mode
Definition: GsfTrack.h:57
void bookRecodEdxHistos(DQMStore::IBooker &ibook)
Monte Carlo truth information used for tracking validation.
std::vector< MonitorElement * > h_pileuplayer
int charge() const
track electric charge
Definition: TrackBase.h:562
std::vector< MonitorElement * > cotThetares_vs_eta
std::vector< MonitorElement * > h_assocFraction
std::vector< MonitorElement * > h_reco_dzpvsigcut
std::vector< MonitorElement * > h_assoc2_dzpvcut_pt
void fill_dedx_recoTrack_histos(int count, const edm::RefToBase< reco::Track > &trackref, const std::vector< const edm::ValueMap< reco::DeDxData > * > &v_dEdx)
double lambdaModeError() const
error on lambda from mode
Definition: GsfTrack.h:90
std::unique_ptr< GenParticleCustomSelector > generalGpSelector
std::vector< MonitorElement * > h_pileupdxy
std::vector< MonitorElement * > h_recodz
std::vector< MonitorElement * > ptres_vs_pt
std::vector< MonitorElement * > h_pileupdzpv
std::vector< MonitorElement * > h_pileupdz
math::XYZVectorD Vector
point in the space
std::vector< std::vector< MonitorElement * > > h_dedx_nom
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:586
std::vector< MonitorElement * > h_assoclayer
long double T
std::vector< MonitorElement * > h_recochi2
std::vector< MonitorElement * > h_assoceta
std::vector< MonitorElement * > ptres_vs_phi
std::vector< MonitorElement * > h_assocSharedHit
std::vector< MonitorElement * > h_simul3Dlayer
std::vector< MonitorElement * > nhits_vs_eta
std::vector< MonitorElement * > h_assoc2dzpv
double ptMode() const
track transverse momentum from mode
Definition: GsfTrack.h:49
int numberOfSaturatedMeasurements() const
Definition: DeDxData.cc:42
std::vector< MonitorElement * > h_pileupeta
std::vector< MonitorElement * > h_simuldxy
std::vector< MonitorElement * > h_assocdr
std::vector< MonitorElement * > h_assocvertpos
std::vector< MonitorElement * > h_assocpixellayer
std::vector< MonitorElement * > h_recoeta
std::vector< MonitorElement * > thetapull_vs_eta
std::vector< MonitorElement * > h_assoc_dzpvcut
std::vector< MonitorElement * > chi2_vs_eta
void bookSimHistos(DQMStore::IBooker &ibook)
int numberOfHits(HitCategory category) const
Definition: HitPattern.h:807
std::vector< MonitorElement * > h_assocdxypv
std::vector< MonitorElement * > dxyres_vs_pt
std::vector< MonitorElement * > h_losthits
std::vector< MonitorElement * > h_assoc2eta
std::vector< MonitorElement * > h_misidphi
std::vector< MonitorElement * > dzres_vs_pt
std::vector< MonitorElement * > h_pileuppu