CMS 3D CMS Logo

MTVHistoProducerAlgoForTracker.cc
Go to the documentation of this file.
4 
9 
11 
12 #include "TMath.h"
13 #include <TF1.h>
14 
15 using namespace std;
16 
17 namespace {
19 
20  void BinLogX(TH1* h) {
21  TAxis* axis = h->GetXaxis();
22  int bins = axis->GetNbins();
23 
24  float from = axis->GetXmin();
25  float to = axis->GetXmax();
26  float width = (to - from) / bins;
27  std::vector<float> new_bins(bins + 1, 0);
28 
29  for (int i = 0; i <= bins; i++) {
30  new_bins[i] = TMath::Power(10, from + i * width);
31  }
32  axis->Set(bins, new_bins.data());
33  }
34 
35  void BinLogY(TH1* h) {
36  TAxis* axis = h->GetYaxis();
37  int bins = axis->GetNbins();
38 
39  float from = axis->GetXmin();
40  float to = axis->GetXmax();
41  float width = (to - from) / bins;
42  std::vector<float> new_bins(bins + 1, 0);
43 
44  for (int i = 0; i <= bins; i++) {
45  new_bins[i] = TMath::Power(10, from + i * width);
46  }
47  axis->Set(bins, new_bins.data());
48  }
49 
50  template <typename... Args>
51  dqm::reco::MonitorElement* make1DIfLogX(DQMStore::IBooker& ibook, bool logx, Args&&... args) {
52  auto h = std::make_unique<TH1F>(std::forward<Args>(args)...);
53  if (logx)
54  BinLogX(h.get());
55  const auto& name = h->GetName();
56  return ibook.book1D(name, h.release());
57  }
58 
59  template <typename... Args>
60  dqm::reco::MonitorElement* makeProfileIfLogX(DQMStore::IBooker& ibook, bool logx, Args&&... args) {
61  auto h = std::make_unique<TProfile>(std::forward<Args>(args)...);
62  if (logx)
63  BinLogX(h.get());
64  const auto& name = h->GetName();
65  return ibook.bookProfile(name, h.release());
66  }
67 
68  template <typename... Args>
69  dqm::reco::MonitorElement* make2DIfLogX(DQMStore::IBooker& ibook, bool logx, Args&&... args) {
70  auto h = std::make_unique<TH2F>(std::forward<Args>(args)...);
71  if (logx)
72  BinLogX(h.get());
73  const auto& name = h->GetName();
74  return ibook.book2D(name, h.release());
75  }
76 
77  template <typename... Args>
78  dqm::reco::MonitorElement* make2DIfLogY(DQMStore::IBooker& ibook, bool logy, Args&&... args) {
79  auto h = std::make_unique<TH2F>(std::forward<Args>(args)...);
80  if (logy)
81  BinLogY(h.get());
82  const auto& name = h->GetName();
83  return ibook.book2D(name, h.release());
84  }
85 
86  void setBinLabels(dqm::reco::MonitorElement*& h, const std::vector<std::string>& labels) {
87  for (size_t i = 0; i < labels.size(); ++i) {
88  h->setBinLabel(i + 1, labels[i]);
89  }
90  h->disableAlphanumeric();
91  }
92 
93  void setBinLabelsAlgo(dqm::reco::MonitorElement*& h, int axis = 1) {
94  for (size_t i = 0; i < reco::TrackBase::algoSize; ++i) {
95  h->setBinLabel(i + 1, reco::TrackBase::algoName(static_cast<reco::TrackBase::TrackAlgorithm>(i)), axis);
96  }
97  h->disableAlphanumeric();
98  }
99 
100  void fillMVAHistos(const std::vector<dqm::reco::MonitorElement*>& h_mva,
101  const std::vector<dqm::reco::MonitorElement*>& h_mvacut,
102  const std::vector<dqm::reco::MonitorElement*>& h_mva_hp,
103  const std::vector<dqm::reco::MonitorElement*>& h_mvacut_hp,
104  const std::vector<float>& mvas,
105  unsigned int selectsLoose,
106  unsigned int selectsHP) {
107  // Fill MVA1 histos with all tracks, MVA2 histos only with tracks
108  // not selected by MVA1, etc.
109  for (size_t i = 0; i < mvas.size(); ++i) {
110  if (i <= selectsLoose) {
111  h_mva[i]->Fill(mvas[i]);
112  h_mvacut[i]->Fill(mvas[i]);
113  }
114  if (i >= 1 && i <= selectsHP) {
115  h_mva_hp[i]->Fill(mvas[i]);
116  h_mvacut_hp[i]->Fill(mvas[i]);
117  }
118  }
119  }
120 
121  void fillMVAHistos(double xval,
122  const std::vector<dqm::reco::MonitorElement*>& h_mva,
123  const std::vector<dqm::reco::MonitorElement*>& h_mva_hp,
124  const std::vector<float>& mvas,
125  unsigned int selectsLoose,
126  unsigned int selectsHP) {
127  // Fill MVA1 histos with all tracks, MVA2 histos only with tracks
128  // not selected by MVA1, etc.
129  for (size_t i = 0; i < mvas.size(); ++i) {
130  if (i <= selectsLoose) {
131  h_mva[i]->Fill(xval, mvas[i]);
132  }
133  if (i >= 1 && i <= selectsHP) {
134  h_mva_hp[i]->Fill(xval, mvas[i]);
135  }
136  }
137  }
138 } // namespace
139 
141  : doSeedPlots_(doSeedPlots), doMTDPlots_(pset.getUntrackedParameter<bool>("doMTDPlots")) {
142  //parameters for _vs_eta plots
143  minEta = pset.getParameter<double>("minEta");
144  maxEta = pset.getParameter<double>("maxEta");
145  nintEta = pset.getParameter<int>("nintEta");
146  useFabsEta = pset.getParameter<bool>("useFabsEta");
147 
148  //parameters for _vs_pt plots
149  minPt = pset.getParameter<double>("minPt");
150  maxPt = pset.getParameter<double>("maxPt");
151  nintPt = pset.getParameter<int>("nintPt");
152  useInvPt = pset.getParameter<bool>("useInvPt");
153  useLogPt = pset.getUntrackedParameter<bool>("useLogPt", false);
154 
155  //parameters for _vs_Hit plots
156  minHit = pset.getParameter<double>("minHit");
157  maxHit = pset.getParameter<double>("maxHit");
158  nintHit = pset.getParameter<int>("nintHit");
159 
160  //parameters for _vs_Pu plots
161  minPu = pset.getParameter<double>("minPu");
162  maxPu = pset.getParameter<double>("maxPu");
163  nintPu = pset.getParameter<int>("nintPu");
164 
165  //parameters for _vs_Layer plots
166  minLayers = pset.getParameter<double>("minLayers");
167  maxLayers = pset.getParameter<double>("maxLayers");
168  nintLayers = pset.getParameter<int>("nintLayers");
169 
170  //parameters for _vs_phi plots
171  minPhi = pset.getParameter<double>("minPhi");
172  maxPhi = pset.getParameter<double>("maxPhi");
173  nintPhi = pset.getParameter<int>("nintPhi");
174 
175  //parameters for _vs_Dxy plots
176  minDxy = pset.getParameter<double>("minDxy");
177  maxDxy = pset.getParameter<double>("maxDxy");
178  nintDxy = pset.getParameter<int>("nintDxy");
179 
180  //parameters for _vs_Dz plots
181  minDz = pset.getParameter<double>("minDz");
182  maxDz = pset.getParameter<double>("maxDz");
183  nintDz = pset.getParameter<int>("nintDz");
184 
185  dxyDzZoom = pset.getParameter<double>("dxyDzZoom");
186 
187  //parameters for _vs_ProductionVertexTransvPosition plots
188  minVertpos = pset.getParameter<double>("minVertpos");
189  maxVertpos = pset.getParameter<double>("maxVertpos");
190  nintVertpos = pset.getParameter<int>("nintVertpos");
191  useLogVertpos = pset.getUntrackedParameter<bool>("useLogVertpos");
192 
193  //parameters for _vs_ProductionVertexZPosition plots
194  minZpos = pset.getParameter<double>("minZpos");
195  maxZpos = pset.getParameter<double>("maxZpos");
196  nintZpos = pset.getParameter<int>("nintZpos");
197 
198  //parameters for _vs_dR plots
199  mindr = pset.getParameter<double>("mindr");
200  maxdr = pset.getParameter<double>("maxdr");
201  nintdr = pset.getParameter<int>("nintdr");
202 
203  //parameters for _vs_dR_jet plots
204  mindrj = pset.getParameter<double>("mindrj");
205  maxdrj = pset.getParameter<double>("maxdrj");
206  nintdrj = pset.getParameter<int>("nintdrj");
207 
208  // paramers for _vs_chi2 plots
209  minChi2 = pset.getParameter<double>("minChi2");
210  maxChi2 = pset.getParameter<double>("maxChi2");
211  nintChi2 = pset.getParameter<int>("nintChi2");
212 
213  //parameters for dE/dx plots
214  minDeDx = pset.getParameter<double>("minDeDx");
215  maxDeDx = pset.getParameter<double>("maxDeDx");
216  nintDeDx = pset.getParameter<int>("nintDeDx");
217 
218  //parameters for Pileup plots
219  minVertcount = pset.getParameter<double>("minVertcount");
220  maxVertcount = pset.getParameter<double>("maxVertcount");
221  nintVertcount = pset.getParameter<int>("nintVertcount");
222 
223  //parameters for number of tracks plots
224  minTracks = pset.getParameter<double>("minTracks");
225  maxTracks = pset.getParameter<double>("maxTracks");
226  nintTracks = pset.getParameter<int>("nintTracks");
227 
228  //parameters for vs. PV z plots
229  minPVz = pset.getParameter<double>("minPVz");
230  maxPVz = pset.getParameter<double>("maxPVz");
231  nintPVz = pset.getParameter<int>("nintPVz");
232 
233  //parameters for vs. MVA plots
234  minMVA = pset.getParameter<double>("minMVA");
235  maxMVA = pset.getParameter<double>("maxMVA");
236  nintMVA = pset.getParameter<int>("nintMVA");
237 
238  //parameters for resolution plots
239  ptRes_rangeMin = pset.getParameter<double>("ptRes_rangeMin");
240  ptRes_rangeMax = pset.getParameter<double>("ptRes_rangeMax");
241  ptRes_nbin = pset.getParameter<int>("ptRes_nbin");
242 
243  phiRes_rangeMin = pset.getParameter<double>("phiRes_rangeMin");
244  phiRes_rangeMax = pset.getParameter<double>("phiRes_rangeMax");
245  phiRes_nbin = pset.getParameter<int>("phiRes_nbin");
246 
247  cotThetaRes_rangeMin = pset.getParameter<double>("cotThetaRes_rangeMin");
248  cotThetaRes_rangeMax = pset.getParameter<double>("cotThetaRes_rangeMax");
249  cotThetaRes_nbin = pset.getParameter<int>("cotThetaRes_nbin");
250 
251  dxyRes_rangeMin = pset.getParameter<double>("dxyRes_rangeMin");
252  dxyRes_rangeMax = pset.getParameter<double>("dxyRes_rangeMax");
253  dxyRes_nbin = pset.getParameter<int>("dxyRes_nbin");
254 
255  dzRes_rangeMin = pset.getParameter<double>("dzRes_rangeMin");
256  dzRes_rangeMax = pset.getParameter<double>("dzRes_rangeMax");
257  dzRes_nbin = pset.getParameter<int>("dzRes_nbin");
258 
259  maxDzpvCum = pset.getParameter<double>("maxDzpvCumulative");
260  nintDzpvCum = pset.getParameter<int>("nintDzpvCumulative");
261 
262  maxDzpvsigCum = pset.getParameter<double>("maxDzpvsigCumulative");
263  nintDzpvsigCum = pset.getParameter<int>("nintDzpvsigCumulative");
264 
265  //--- tracking particle selectors for efficiency measurements
266  using namespace edm;
267  using namespace reco::modules;
268  auto initTPselector = [&](auto& sel, auto& name) {
269  sel = std::make_unique<TrackingParticleSelector>(
271  };
272  auto initTrackSelector = [&](auto& sel, auto& name) {
274  };
275  auto initGPselector = [&](auto& sel, auto& name) {
276  sel = std::make_unique<GenParticleCustomSelector>(
278  };
279 
280  initTPselector(generalTpSelector, "generalTpSelector");
281  initTPselector(TpSelectorForEfficiencyVsEta, "TpSelectorForEfficiencyVsEta");
282  initTPselector(TpSelectorForEfficiencyVsPhi, "TpSelectorForEfficiencyVsPhi");
283  initTPselector(TpSelectorForEfficiencyVsPt, "TpSelectorForEfficiencyVsPt");
284  initTPselector(TpSelectorForEfficiencyVsVTXR, "TpSelectorForEfficiencyVsVTXR");
285  initTPselector(TpSelectorForEfficiencyVsVTXZ, "TpSelectorForEfficiencyVsVTXZ");
286 
287  initTrackSelector(trackSelectorVsEta, "TpSelectorForEfficiencyVsEta");
288  initTrackSelector(trackSelectorVsPhi, "TpSelectorForEfficiencyVsPhi");
289  initTrackSelector(trackSelectorVsPt, "TpSelectorForEfficiencyVsPt");
290 
291  initGPselector(generalGpSelector, "generalGpSelector");
292  initGPselector(GpSelectorForEfficiencyVsEta, "GpSelectorForEfficiencyVsEta");
293  initGPselector(GpSelectorForEfficiencyVsPhi, "GpSelectorForEfficiencyVsPhi");
294  initGPselector(GpSelectorForEfficiencyVsPt, "GpSelectorForEfficiencyVsPt");
295  initGPselector(GpSelectorForEfficiencyVsVTXR, "GpSelectorForEfficiencyVsVTXR");
296  initGPselector(GpSelectorForEfficiencyVsVTXZ, "GpSelectorForEfficiencyVsVTXZ");
297 
298  // SeedingLayerSets
299  // If enabled, use last bin to denote other or unknown cases
300  seedingLayerSetNames = pset.getParameter<std::vector<std::string>>("seedingLayerSets");
301  std::vector<std::pair<SeedingLayerSetId, std::string>> stripPairSets;
302  if (!seedingLayerSetNames.empty()) {
303  std::vector<std::vector<std::string>> layerSets = SeedingLayerSetsBuilder::layerNamesInSets(seedingLayerSetNames);
304  for (size_t i = 0; i < layerSets.size(); ++i) {
305  const auto& layerSet = layerSets[i];
306  if (layerSet.size() > std::tuple_size<SeedingLayerSetId>::value) {
307  throw cms::Exception("Configuration")
308  << "Got seedingLayerSet " << seedingLayerSetNames[i] << " with " << layerSet.size()
309  << " elements, but I have a hard-coded maximum of " << std::tuple_size<SeedingLayerSetId>::value
310  << ". Please increase the maximum in MTVHistoProducerAlgoForTracker.h";
311  }
312  SeedingLayerSetId setId;
313  for (size_t j = 0; j < layerSet.size(); ++j) {
314  // SeedingLayerSetsBuilder::fillDescriptions() kind-of
315  // suggests that the 'M' prefix stands for strip mono hits
316  // (maybe it should force), so making the assumption here is
317  // (still) a bit ugly. But, this is the easiest way.
318  bool isStripMono = !layerSet[j].empty() && layerSet[j][0] == 'M';
319  setId[j] = std::make_tuple(SeedingLayerSetsBuilder::nameToEnumId(layerSet[j]), isStripMono);
320  }
321  // Account for the fact that strip triplet seeding may give pairs
322  if (layerSet.size() == 3 && isTrackerStrip(std::get<GeomDetEnumerators::SubDetector>(std::get<0>(setId[0])))) {
323  SeedingLayerSetId pairId;
324  pairId[0] = setId[0];
325  pairId[1] = setId[1];
326  stripPairSets.emplace_back(pairId, layerSet[0] + "+" + layerSet[1]);
327  }
328 
329  auto inserted = seedingLayerSetToBin.insert(std::make_pair(setId, i));
330  if (!inserted.second)
331  throw cms::Exception("Configuration") << "SeedingLayerSet " << seedingLayerSetNames[i]
332  << " is specified twice, while the set list should be unique.";
333  }
334 
335  // Add the "strip pairs from strip triplets" if they don't otherwise exist
336  for (const auto& setIdName : stripPairSets) {
337  auto inserted = seedingLayerSetToBin.insert(std::make_pair(setIdName.first, seedingLayerSetNames.size()));
338  if (inserted.second)
339  seedingLayerSetNames.push_back(setIdName.second);
340  }
341 
342  seedingLayerSetNames.emplace_back("Other/Unknown");
343  }
344 
345  // fix for the LogScale by Ryan
346  if (useLogPt) {
347  maxPt = log10(maxPt);
348  if (minPt > 0) {
349  minPt = log10(minPt);
350  } else {
351  edm::LogWarning("MultiTrackValidator")
352  << "minPt = " << minPt << " <= 0 out of range while requesting log scale. Using minPt = 0.1.";
353  minPt = log10(0.1);
354  }
355  }
356  if (useLogVertpos) {
357  maxVertpos = std::log10(maxVertpos);
358  if (minVertpos > 0) {
359  minVertpos = std::log10(minVertpos);
360  } else {
361  edm::LogWarning("MultiTrackValidator")
362  << "minVertpos = " << minVertpos << " <= 0 out of range while requesting log scale. Using minVertpos = 0.1.";
363  minVertpos = -1;
364  }
365  }
366 }
367 
369 
371  const edm::ParameterSet& pset) {
372  edm::ParameterSet psetTrack;
373  psetTrack.copyForModify(pset);
374  psetTrack.eraseSimpleParameter("minHit");
375  psetTrack.eraseSimpleParameter("signalOnly");
376  psetTrack.eraseSimpleParameter("intimeOnly");
377  psetTrack.eraseSimpleParameter("chargedOnly");
378  psetTrack.eraseSimpleParameter("stableOnly");
379  psetTrack.addParameter("maxChi2", 1e10);
380  psetTrack.addParameter("minHit", 0);
381  psetTrack.addParameter("minPixelHit", 0);
382  psetTrack.addParameter("minLayer", 0);
383  psetTrack.addParameter("min3DLayer", 0);
384  psetTrack.addParameter("quality", std::vector<std::string>{});
385  psetTrack.addParameter("algorithm", std::vector<std::string>{});
386  psetTrack.addParameter("originalAlgorithm", std::vector<std::string>{});
387  psetTrack.addParameter("algorithmMaskContains", std::vector<std::string>{});
388  psetTrack.addParameter("invertRapidityCut", false);
389  psetTrack.addParameter("minPhi", -3.2);
390  psetTrack.addParameter("maxPhi", 3.2);
391  return std::make_unique<RecoTrackSelectorBase>(psetTrack);
392 }
393 
395  histograms.h_ptSIM = make1DIfLogX(ibook, useLogPt, "ptSIM", "generated p_{t}", nintPt, minPt, maxPt);
396  histograms.h_etaSIM = ibook.book1D("etaSIM", "generated pseudorapidity", nintEta, minEta, maxEta);
397  histograms.h_phiSIM = ibook.book1D("phiSIM", "generated phi", nintPhi, minPhi, maxPhi);
398  histograms.h_tracksSIM =
399  ibook.book1D("tracksSIM", "number of simulated tracks", nintTracks, minTracks, maxTracks * 10);
400  histograms.h_vertposSIM =
401  ibook.book1D("vertposSIM", "Transverse position of sim vertices", nintVertpos, minVertpos, maxVertpos);
402  histograms.h_bunchxSIM = ibook.book1D("bunchxSIM", "bunch crossing", 21, -15.5, 5.5);
403 }
404 
407  bool doResolutionPlots) {
408  histograms.h_assoceta.push_back(
409  ibook.book1D("num_assoc(simToReco)_eta", "N of associated tracks (simToReco) vs eta", nintEta, minEta, maxEta));
410  histograms.h_simuleta.push_back(
411  ibook.book1D("num_simul_eta", "N of simulated tracks vs eta", nintEta, minEta, maxEta));
412 
413  histograms.h_assocpT.push_back(make1DIfLogX(
414  ibook, useLogPt, "num_assoc(simToReco)_pT", "N of associated tracks (simToReco) vs pT", nintPt, minPt, maxPt));
415  histograms.h_simulpT.push_back(
416  make1DIfLogX(ibook, useLogPt, "num_simul_pT", "N of simulated tracks vs pT", nintPt, minPt, maxPt));
417 
418  histograms.h_assocpTvseta.push_back(make2DIfLogY(ibook,
419  useLogPt,
420  "num_assoc(simToReco)_pTvseta",
421  "N of associated tracks (simToReco) in (pT-eta) please",
422  nintEta,
423  minEta,
424  maxEta,
425  nintPt,
426  minPt,
427  maxPt));
428  histograms.h_simulpTvseta.push_back(make2DIfLogY(ibook,
429  useLogPt,
430  "num_simul_pTvseta",
431  "N of simulated tracks in (pT-eta) plane",
432  nintEta,
433  minEta,
434  maxEta,
435  nintPt,
436  minPt,
437  maxPt));
438 
439  histograms.h_assochit.push_back(
440  ibook.book1D("num_assoc(simToReco)_hit", "N of associated tracks (simToReco) vs hit", nintHit, minHit, maxHit));
441  histograms.h_simulhit.push_back(
442  ibook.book1D("num_simul_hit", "N of simulated tracks vs hit", nintHit, minHit, maxHit));
443 
444  histograms.h_assoclayer.push_back(ibook.book1D(
445  "num_assoc(simToReco)_layer", "N of associated tracks (simToReco) vs layer", nintLayers, minLayers, maxLayers));
446  histograms.h_simullayer.push_back(
447  ibook.book1D("num_simul_layer", "N of simulated tracks vs layer", nintLayers, minLayers, maxLayers));
448 
449  histograms.h_assocpixellayer.push_back(ibook.book1D("num_assoc(simToReco)_pixellayer",
450  "N of associated tracks (simToReco) vs pixel layer",
451  nintLayers,
452  minLayers,
453  maxLayers));
454  histograms.h_simulpixellayer.push_back(
455  ibook.book1D("num_simul_pixellayer", "N of simulated tracks vs pixel layer", nintLayers, minLayers, maxLayers));
456 
457  histograms.h_assoc3Dlayer.push_back(ibook.book1D("num_assoc(simToReco)_3Dlayer",
458  "N of associated tracks (simToReco) vs 3D layer",
459  nintLayers,
460  minLayers,
461  maxLayers));
462  histograms.h_simul3Dlayer.push_back(
463  ibook.book1D("num_simul_3Dlayer", "N of simulated tracks vs 3D layer", nintLayers, minLayers, maxLayers));
464 
465  histograms.h_assocpu.push_back(
466  ibook.book1D("num_assoc(simToReco)_pu", "N of associated tracks (simToReco) vs pu", nintPu, minPu, maxPu));
467  histograms.h_simulpu.push_back(ibook.book1D("num_simul_pu", "N of simulated tracks vs pu", nintPu, minPu, maxPu));
468 
469  histograms.h_assocphi.push_back(
470  ibook.book1D("num_assoc(simToReco)_phi", "N of associated tracks (simToReco) vs phi", nintPhi, minPhi, maxPhi));
471  histograms.h_simulphi.push_back(
472  ibook.book1D("num_simul_phi", "N of simulated tracks vs phi", nintPhi, minPhi, maxPhi));
473 
474  histograms.h_assocdxy.push_back(
475  ibook.book1D("num_assoc(simToReco)_dxy", "N of associated tracks (simToReco) vs dxy", nintDxy, minDxy, maxDxy));
476  histograms.h_simuldxy.push_back(
477  ibook.book1D("num_simul_dxy", "N of simulated tracks vs dxy", nintDxy, minDxy, maxDxy));
478 
479  histograms.h_assocdz.push_back(
480  ibook.book1D("num_assoc(simToReco)_dz", "N of associated tracks (simToReco) vs dz", nintDz, minDz, maxDz));
481  histograms.h_simuldz.push_back(ibook.book1D("num_simul_dz", "N of simulated tracks vs dz", nintDz, minDz, maxDz));
482 
483  histograms.h_assocvertpos.push_back(make1DIfLogX(ibook,
485  "num_assoc(simToReco)_vertpos",
486  "N of associated tracks (simToReco) vs transverse vert position",
487  nintVertpos,
488  minVertpos,
489  maxVertpos));
490  histograms.h_simulvertpos.push_back(make1DIfLogX(ibook,
492  "num_simul_vertpos",
493  "N of simulated tracks vs transverse vert position",
494  nintVertpos,
495  minVertpos,
496  maxVertpos));
497 
498  histograms.h_assoczpos.push_back(ibook.book1D(
499  "num_assoc(simToReco)_zpos", "N of associated tracks (simToReco) vs z vert position", nintZpos, minZpos, maxZpos));
500  histograms.h_simulzpos.push_back(
501  ibook.book1D("num_simul_zpos", "N of simulated tracks vs z vert position", nintZpos, minZpos, maxZpos));
502 
503  histograms.h_assocdr.push_back(make1DIfLogX(ibook,
504  true,
505  "num_assoc(simToReco)_dr",
506  "N of associated tracks (simToReco) vs dR",
507  nintdr,
508  log10(mindr),
509  log10(maxdr)));
510  histograms.h_simuldr.push_back(
511  make1DIfLogX(ibook, true, "num_simul_dr", "N of simulated tracks vs dR", nintdr, log10(mindr), log10(maxdr)));
512 
513  histograms.h_assocdrj.push_back(make1DIfLogX(ibook,
514  true,
515  "num_assoc(simToReco)_drj",
516  "N of associated tracks (simToReco) vs dR(TP,jet)",
517  nintdrj,
518  log10(mindrj),
519  log10(maxdrj)));
520  histograms.h_simuldrj.push_back(make1DIfLogX(
521  ibook, true, "num_simul_drj", "N of simulated tracks vs dR(TP,jet)", nintdrj, log10(mindrj), log10(maxdrj)));
522 
523  histograms.h_simul_simpvz.push_back(
524  ibook.book1D("num_simul_simpvz", "N of simulated tracks vs. sim PV z", nintPVz, minPVz, maxPVz));
525  histograms.h_assoc_simpvz.push_back(ibook.book1D(
526  "num_assoc(simToReco)_simpvz", "N of associated tracks (simToReco) vs. sim PV z", nintPVz, minPVz, maxPVz));
527 
528  histograms.nrecHit_vs_nsimHit_sim2rec.push_back(doResolutionPlots ? ibook.book2D("nrecHit_vs_nsimHit_sim2rec",
529  "nrecHit vs nsimHit (Sim2RecAssoc)",
530  nintHit,
531  minHit,
532  maxHit,
533  nintHit,
534  minHit,
535  maxHit)
536  : nullptr);
537 
538  // TODO: use the dynamic track algo priority order also here
539  constexpr auto nalgos = reco::TrackBase::algoSize;
540  histograms.h_duplicates_oriAlgo_vs_oriAlgo.push_back(ibook.book2D("duplicates_oriAlgo_vs_oriAlgo",
541  "Duplicate tracks: originalAlgo vs originalAlgo",
542  nalgos,
543  0,
544  nalgos,
545  nalgos,
546  0,
547  nalgos));
548  setBinLabelsAlgo(histograms.h_duplicates_oriAlgo_vs_oriAlgo.back(), 1);
549  setBinLabelsAlgo(histograms.h_duplicates_oriAlgo_vs_oriAlgo.back(), 2);
550 }
551 
553  histograms.h_assocdxypv.push_back(ibook.book1D(
554  "num_assoc(simToReco)_dxypv", "N of associated tracks (simToReco) vs dxy(PV)", nintDxy, minDxy, maxDxy));
555  histograms.h_simuldxypv.push_back(
556  ibook.book1D("num_simul_dxypv", "N of simulated tracks vs dxy(PV)", nintDxy, minDxy, maxDxy));
557 
558  histograms.h_assocdzpv.push_back(
559  ibook.book1D("num_assoc(simToReco)_dzpv", "N of associated tracks (simToReco) vs dz(PV)", nintDz, minDz, maxDz));
560  histograms.h_simuldzpv.push_back(
561  ibook.book1D("num_simul_dzpv", "N of simulated tracks vs dz(PV)", nintDz, minDz, maxDz));
562 
563  histograms.h_assocdxypvzoomed.push_back(ibook.book1D("num_assoc(simToReco)_dxypv_zoomed",
564  "N of associated tracks (simToReco) vs dxy(PV)",
565  nintDxy,
566  minDxy / dxyDzZoom,
567  maxDxy / dxyDzZoom));
568  histograms.h_simuldxypvzoomed.push_back(ibook.book1D(
569  "num_simul_dxypv_zoomed", "N of simulated tracks vs dxy(PV)", nintDxy, minDxy / dxyDzZoom, maxDxy / dxyDzZoom));
570 
571  histograms.h_assocdzpvzoomed.push_back(ibook.book1D("num_assoc(simToReco)_dzpv_zoomed",
572  "N of associated tracks (simToReco) vs dz(PV)",
573  nintDz,
574  minDz / dxyDzZoom,
575  maxDz / dxyDzZoom));
576  histograms.h_simuldzpvzoomed.push_back(ibook.book1D(
577  "num_simul_dzpv_zoomed", "N of simulated tracks vs dz(PV)", nintDz, minDz / dxyDzZoom, maxDz / dxyDzZoom));
578 
579  histograms.h_assoc_dzpvcut.push_back(ibook.book1D(
580  "num_assoc(simToReco)_dzpvcut", "N of associated tracks (simToReco) vs dz(PV)", nintDzpvCum, 0, maxDzpvCum));
581  histograms.h_simul_dzpvcut.push_back(
582  ibook.book1D("num_simul_dzpvcut", "N of simulated tracks from sim PV", nintDzpvCum, 0, maxDzpvCum));
583  histograms.h_simul2_dzpvcut.push_back(ibook.book1D(
584  "num_simul2_dzpvcut", "N of simulated tracks (associated to any track) from sim PV", nintDzpvCum, 0, maxDzpvCum));
585 
586  histograms.h_assoc_dzpvcut_pt.push_back(ibook.book1D("num_assoc(simToReco)_dzpvcut_pt",
587  "#sump_{T} of associated tracks (simToReco) vs dz(PV)",
588  nintDzpvCum,
589  0,
590  maxDzpvCum));
591  histograms.h_simul_dzpvcut_pt.push_back(
592  ibook.book1D("num_simul_dzpvcut_pt", "#sump_{T} of simulated tracks from sim PV", nintDzpvCum, 0, maxDzpvCum));
593  histograms.h_simul2_dzpvcut_pt.push_back(
594  ibook.book1D("num_simul2_dzpvcut_pt",
595  "#sump_{T} of simulated tracks (associated to any track) from sim PV",
596  nintDzpvCum,
597  0,
598  maxDzpvCum));
599  histograms.h_assoc_dzpvcut_pt.back()->enableSumw2();
600  histograms.h_simul_dzpvcut_pt.back()->enableSumw2();
601  histograms.h_simul2_dzpvcut_pt.back()->enableSumw2();
602 
603  histograms.h_assoc_dzpvsigcut.push_back(ibook.book1D("num_assoc(simToReco)_dzpvsigcut",
604  "N of associated tracks (simToReco) vs dz(PV)/dzError",
606  0,
607  maxDzpvsigCum));
608  histograms.h_simul_dzpvsigcut.push_back(ibook.book1D(
609  "num_simul_dzpvsigcut", "N of simulated tracks from sim PV/dzError", nintDzpvsigCum, 0, maxDzpvsigCum));
610  histograms.h_simul2_dzpvsigcut.push_back(
611  ibook.book1D("num_simul2_dzpvsigcut",
612  "N of simulated tracks (associated to any track) from sim PV/dzError",
614  0,
615  maxDzpvsigCum));
616 
617  histograms.h_assoc_dzpvsigcut_pt.push_back(
618  ibook.book1D("num_assoc(simToReco)_dzpvsigcut_pt",
619  "#sump_{T} of associated tracks (simToReco) vs dz(PV)/dzError",
621  0,
622  maxDzpvsigCum));
623  histograms.h_simul_dzpvsigcut_pt.push_back(ibook.book1D(
624  "num_simul_dzpvsigcut_pt", "#sump_{T} of simulated tracks from sim PV/dzError", nintDzpvsigCum, 0, maxDzpvsigCum));
625  histograms.h_simul2_dzpvsigcut_pt.push_back(
626  ibook.book1D("num_simul2_dzpvsigcut_pt",
627  "#sump_{T} of simulated tracks (associated to any track) from sim PV/dzError",
629  0,
630  maxDzpvsigCum));
631  histograms.h_assoc_dzpvsigcut_pt.back()->enableSumw2();
632  histograms.h_simul_dzpvsigcut_pt.back()->enableSumw2();
633  histograms.h_simul2_dzpvsigcut_pt.back()->enableSumw2();
634 }
635 
638  bool doResolutionPlots) {
639  histograms.h_tracks.push_back(
640  ibook.book1D("tracks", "number of reconstructed tracks", nintTracks, minTracks, maxTracks));
641  histograms.h_fakes.push_back(ibook.book1D("fakes", "number of fake reco tracks", nintTracks, minTracks, maxTracks));
642  histograms.h_charge.push_back(ibook.book1D("charge", "charge", 3, -1.5, 1.5));
643 
644  histograms.h_hits.push_back(ibook.book1D("hits", "number of hits per track", nintHit, minHit, maxHit));
645  histograms.h_losthits.push_back(ibook.book1D("losthits", "number of lost hits per track", nintHit, minHit, maxHit));
646  histograms.h_nchi2.push_back(ibook.book1D("chi2", "normalized #chi^{2}", 200, 0, 20));
647  histograms.h_nchi2_prob.push_back(ibook.book1D("chi2_prob", "normalized #chi^{2} probability", 100, 0, 1));
648 
649  histograms.h_nmisslayers_inner.push_back(
650  ibook.book1D("missing_inner_layers", "number of missing inner layers", nintLayers, minLayers, maxLayers));
651  histograms.h_nmisslayers_outer.push_back(
652  ibook.book1D("missing_outer_layers", "number of missing outer layers", nintLayers, minLayers, maxLayers));
653 
654  histograms.h_algo.push_back(
655  ibook.book1D("h_algo", "Tracks by algo", reco::TrackBase::algoSize, 0., double(reco::TrackBase::algoSize)));
656  for (size_t ibin = 0; ibin < reco::TrackBase::algoSize - 1; ibin++)
657  histograms.h_algo.back()->setBinLabel(ibin + 1, reco::TrackBase::algoNames[ibin]);
658  histograms.h_algo.back()->disableAlphanumeric();
659 
661  histograms.h_recoeta.push_back(ibook.book1D("num_reco_eta", "N of reco track vs eta", nintEta, minEta, maxEta));
662  histograms.h_reco2eta.push_back(
663  ibook.book1D("num_reco2_eta", "N of selected reco track vs eta", nintEta, minEta, maxEta));
664  histograms.h_assoc2eta.push_back(
665  ibook.book1D("num_assoc(recoToSim)_eta", "N of associated (recoToSim) tracks vs eta", nintEta, minEta, maxEta));
666  histograms.h_loopereta.push_back(ibook.book1D(
667  "num_duplicate_eta", "N of associated (recoToSim) duplicate tracks vs eta", nintEta, minEta, maxEta));
668  if (!doSeedPlots_)
669  histograms.h_misideta.push_back(ibook.book1D(
670  "num_chargemisid_eta", "N of associated (recoToSim) charge misIDed tracks vs eta", nintEta, minEta, maxEta));
671  histograms.h_pileupeta.push_back(
672  ibook.book1D("num_pileup_eta", "N of associated (recoToSim) pileup tracks vs eta", nintEta, minEta, maxEta));
673  //
674  histograms.h_recopT.push_back(
675  make1DIfLogX(ibook, useLogPt, "num_reco_pT", "N of reco track vs pT", nintPt, minPt, maxPt));
676  histograms.h_reco2pT.push_back(
677  make1DIfLogX(ibook, useLogPt, "num_reco2_pT", "N of selected reco track vs pT", nintPt, minPt, maxPt));
678  histograms.h_assoc2pT.push_back(make1DIfLogX(
679  ibook, useLogPt, "num_assoc(recoToSim)_pT", "N of associated (recoToSim) tracks vs pT", nintPt, minPt, maxPt));
680  histograms.h_looperpT.push_back(make1DIfLogX(
681  ibook, useLogPt, "num_duplicate_pT", "N of associated (recoToSim) duplicate tracks vs pT", nintPt, minPt, maxPt));
682  if (!doSeedPlots_)
683  histograms.h_misidpT.push_back(make1DIfLogX(ibook,
684  useLogPt,
685  "num_chargemisid_pT",
686  "N of associated (recoToSim) charge misIDed tracks vs pT",
687  nintPt,
688  minPt,
689  maxPt));
690  histograms.h_pileuppT.push_back(make1DIfLogX(
691  ibook, useLogPt, "num_pileup_pT", "N of associated (recoToSim) pileup tracks vs pT", nintPt, minPt, maxPt));
692  //
693  histograms.h_recopTvseta.push_back(make2DIfLogY(ibook,
694  useLogPt,
695  "num_reco_pTvseta",
696  "N of reco track in (pT-eta) plane",
697  nintEta,
698  minEta,
699  maxEta,
700  nintPt,
701  minPt,
702  maxPt));
703  histograms.h_reco2pTvseta.push_back(make2DIfLogY(ibook,
704  useLogPt,
705  "num_reco2_pTvseta",
706  "N of selected reco track in (pT-eta) plane",
707  nintEta,
708  minEta,
709  maxEta,
710  nintPt,
711  minPt,
712  maxPt));
713  histograms.h_assoc2pTvseta.push_back(make2DIfLogY(ibook,
714  useLogPt,
715  "num_assoc(recoToSim)_pTvseta",
716  "N of associated (recoToSim) tracks in (pT-eta) plane",
717  nintEta,
718  minEta,
719  maxEta,
720  nintPt,
721  minPt,
722  maxPt));
723  histograms.h_looperpTvseta.push_back(make2DIfLogY(ibook,
724  useLogPt,
725  "num_duplicate_pTvseta",
726  "N of associated (recoToSim) duplicate tracks in (pT-eta) plane",
727  nintEta,
728  minEta,
729  maxEta,
730  nintPt,
731  minPt,
732  maxPt));
733  if (!doSeedPlots_)
734  histograms.h_misidpTvseta.push_back(
735  make2DIfLogY(ibook,
736  useLogPt,
737  "num_chargemisid_pTvseta",
738  "N of associated (recoToSim) charge misIDed tracks in (pT-eta) plane",
739  nintEta,
740  minEta,
741  maxEta,
742  nintPt,
743  minPt,
744  maxPt));
745  histograms.h_pileuppTvseta.push_back(make2DIfLogY(ibook,
746  useLogPt,
747  "num_pileup_pTvseta",
748  "N of associated (recoToSim) pileup tracks in (pT-eta) plane",
749  nintEta,
750  minEta,
751  maxEta,
752  nintPt,
753  minPt,
754  maxPt));
755  //
756  histograms.h_recohit.push_back(ibook.book1D("num_reco_hit", "N of reco track vs hit", nintHit, minHit, maxHit));
757  histograms.h_assoc2hit.push_back(
758  ibook.book1D("num_assoc(recoToSim)_hit", "N of associated (recoToSim) tracks vs hit", nintHit, minHit, maxHit));
759  histograms.h_looperhit.push_back(ibook.book1D(
760  "num_duplicate_hit", "N of associated (recoToSim) duplicate tracks vs hit", nintHit, minHit, maxHit));
761  if (!doSeedPlots_)
762  histograms.h_misidhit.push_back(ibook.book1D(
763  "num_chargemisid_hit", "N of associated (recoToSim) charge misIDed tracks vs hit", nintHit, minHit, maxHit));
764  histograms.h_pileuphit.push_back(
765  ibook.book1D("num_pileup_hit", "N of associated (recoToSim) pileup tracks vs hit", nintHit, minHit, maxHit));
766  //
767  histograms.h_recolayer.push_back(
768  ibook.book1D("num_reco_layer", "N of reco track vs layer", nintLayers, minLayers, maxLayers));
769  histograms.h_assoc2layer.push_back(ibook.book1D(
770  "num_assoc(recoToSim)_layer", "N of associated (recoToSim) tracks vs layer", nintLayers, minLayers, maxLayers));
771  histograms.h_looperlayer.push_back(ibook.book1D(
772  "num_duplicate_layer", "N of associated (recoToSim) duplicate tracks vs layer", nintLayers, minLayers, maxLayers));
773  if (!doSeedPlots_)
774  histograms.h_misidlayer.push_back(ibook.book1D("num_chargemisid_layer",
775  "N of associated (recoToSim) charge misIDed tracks vs layer",
776  nintLayers,
777  minLayers,
778  maxLayers));
779  histograms.h_pileuplayer.push_back(ibook.book1D(
780  "num_pileup_layer", "N of associated (recoToSim) pileup tracks vs layer", nintLayers, minLayers, maxLayers));
781  //
782  histograms.h_recopixellayer.push_back(
783  ibook.book1D("num_reco_pixellayer", "N of reco track vs pixellayer", nintLayers, minLayers, maxLayers));
784  histograms.h_assoc2pixellayer.push_back(ibook.book1D("num_assoc(recoToSim)_pixellayer",
785  "N of associated (recoToSim) tracks vs pixellayer",
786  nintLayers,
787  minLayers,
788  maxLayers));
789  histograms.h_looperpixellayer.push_back(ibook.book1D("num_duplicate_pixellayer",
790  "N of associated (recoToSim) duplicate tracks vs pixellayer",
791  nintLayers,
792  minLayers,
793  maxLayers));
794  if (!doSeedPlots_)
795  histograms.h_misidpixellayer.push_back(
796  ibook.book1D("num_chargemisid_pixellayer",
797  "N of associated (recoToSim) charge misIDed tracks vs pixellayer",
798  nintLayers,
799  minLayers,
800  maxLayers));
801  histograms.h_pileuppixellayer.push_back(ibook.book1D("num_pileup_pixellayer",
802  "N of associated (recoToSim) pileup tracks vs pixellayer",
803  nintLayers,
804  minLayers,
805  maxLayers));
806  //
807  histograms.h_reco3Dlayer.push_back(
808  ibook.book1D("num_reco_3Dlayer", "N of reco track vs 3D layer", nintLayers, minLayers, maxLayers));
809  histograms.h_assoc23Dlayer.push_back(ibook.book1D("num_assoc(recoToSim)_3Dlayer",
810  "N of associated (recoToSim) tracks vs 3D layer",
811  nintLayers,
812  minLayers,
813  maxLayers));
814  histograms.h_looper3Dlayer.push_back(ibook.book1D("num_duplicate_3Dlayer",
815  "N of associated (recoToSim) duplicate tracks vs 3D layer",
816  nintLayers,
817  minLayers,
818  maxLayers));
819  if (!doSeedPlots_)
820  histograms.h_misid3Dlayer.push_back(ibook.book1D("num_chargemisid_3Dlayer",
821  "N of associated (recoToSim) charge misIDed tracks vs 3D layer",
822  nintLayers,
823  minLayers,
824  maxLayers));
825  histograms.h_pileup3Dlayer.push_back(ibook.book1D(
826  "num_pileup_3Dlayer", "N of associated (recoToSim) pileup tracks vs 3D layer", nintLayers, minLayers, maxLayers));
827  //
828  histograms.h_recopu.push_back(ibook.book1D("num_reco_pu", "N of reco track vs pu", nintPu, minPu, maxPu));
829  histograms.h_reco2pu.push_back(ibook.book1D("num_reco2_pu", "N of selected reco track vs pu", nintPu, minPu, maxPu));
830  histograms.h_assoc2pu.push_back(
831  ibook.book1D("num_assoc(recoToSim)_pu", "N of associated (recoToSim) tracks vs pu", nintPu, minPu, maxPu));
832  histograms.h_looperpu.push_back(
833  ibook.book1D("num_duplicate_pu", "N of associated (recoToSim) duplicate tracks vs pu", nintPu, minPu, maxPu));
834  if (!doSeedPlots_)
835  histograms.h_misidpu.push_back(ibook.book1D(
836  "num_chargemisid_pu", "N of associated (recoToSim) charge misIDed tracks vs pu", nintPu, minPu, maxPu));
837  histograms.h_pileuppu.push_back(
838  ibook.book1D("num_pileup_pu", "N of associated (recoToSim) pileup tracks vs pu", nintPu, minPu, maxPu));
839  //
840  histograms.h_recophi.push_back(ibook.book1D("num_reco_phi", "N of reco track vs phi", nintPhi, minPhi, maxPhi));
841  histograms.h_assoc2phi.push_back(
842  ibook.book1D("num_assoc(recoToSim)_phi", "N of associated (recoToSim) tracks vs phi", nintPhi, minPhi, maxPhi));
843  histograms.h_looperphi.push_back(ibook.book1D(
844  "num_duplicate_phi", "N of associated (recoToSim) duplicate tracks vs phi", nintPhi, minPhi, maxPhi));
845  if (!doSeedPlots_)
846  histograms.h_misidphi.push_back(ibook.book1D(
847  "num_chargemisid_phi", "N of associated (recoToSim) charge misIDed tracks vs phi", nintPhi, minPhi, maxPhi));
848  histograms.h_pileupphi.push_back(
849  ibook.book1D("num_pileup_phi", "N of associated (recoToSim) pileup tracks vs phi", nintPhi, minPhi, maxPhi));
850 
851  histograms.h_recodxy.push_back(ibook.book1D("num_reco_dxy", "N of reco track vs dxy", nintDxy, minDxy, maxDxy));
852  histograms.h_assoc2dxy.push_back(
853  ibook.book1D("num_assoc(recoToSim)_dxy", "N of associated (recoToSim) tracks vs dxy", nintDxy, minDxy, maxDxy));
854  histograms.h_looperdxy.push_back(
855  ibook.book1D("num_duplicate_dxy", "N of associated (recoToSim) looper tracks vs dxy", nintDxy, minDxy, maxDxy));
856  if (!doSeedPlots_)
857  histograms.h_misiddxy.push_back(ibook.book1D(
858  "num_chargemisid_dxy", "N of associated (recoToSim) charge misIDed tracks vs dxy", nintDxy, minDxy, maxDxy));
859  histograms.h_pileupdxy.push_back(
860  ibook.book1D("num_pileup_dxy", "N of associated (recoToSim) pileup tracks vs dxy", nintDxy, minDxy, maxDxy));
861 
862  histograms.h_recodz.push_back(ibook.book1D("num_reco_dz", "N of reco track vs dz", nintDz, minDz, maxDz));
863  histograms.h_assoc2dz.push_back(
864  ibook.book1D("num_assoc(recoToSim)_dz", "N of associated (recoToSim) tracks vs dz", nintDz, minDz, maxDz));
865  histograms.h_looperdz.push_back(
866  ibook.book1D("num_duplicate_dz", "N of associated (recoToSim) looper tracks vs dz", nintDz, minDz, maxDz));
867  if (!doSeedPlots_)
868  histograms.h_misiddz.push_back(ibook.book1D(
869  "num_chargemisid_versus_dz", "N of associated (recoToSim) charge misIDed tracks vs dz", nintDz, minDz, maxDz));
870  histograms.h_pileupdz.push_back(
871  ibook.book1D("num_pileup_dz", "N of associated (recoToSim) pileup tracks vs dz", nintDz, minDz, maxDz));
872 
873  histograms.h_recovertpos.push_back(make1DIfLogX(ibook,
875  "num_reco_vertpos",
876  "N of reconstructed tracks vs transverse ref point position",
877  nintVertpos,
878  minVertpos,
879  maxVertpos));
880  histograms.h_assoc2vertpos.push_back(
881  make1DIfLogX(ibook,
883  "num_assoc(recoToSim)_vertpos",
884  "N of associated (recoToSim) tracks vs transverse ref point position",
885  nintVertpos,
886  minVertpos,
887  maxVertpos));
888  histograms.h_loopervertpos.push_back(
889  make1DIfLogX(ibook,
891  "num_duplicate_vertpos",
892  "N of associated (recoToSim) looper tracks vs transverse ref point position",
893  nintVertpos,
894  minVertpos,
895  maxVertpos));
896  histograms.h_pileupvertpos.push_back(
897  make1DIfLogX(ibook,
899  "num_pileup_vertpos",
900  "N of associated (recoToSim) pileup tracks vs transverse ref point position",
901  nintVertpos,
902  minVertpos,
903  maxVertpos));
904 
905  histograms.h_recozpos.push_back(ibook.book1D(
906  "num_reco_zpos", "N of reconstructed tracks vs transverse ref point position", nintZpos, minZpos, maxZpos));
907  histograms.h_assoc2zpos.push_back(ibook.book1D("num_assoc(recoToSim)_zpos",
908  "N of associated (recoToSim) tracks vs transverse ref point position",
909  nintZpos,
910  minZpos,
911  maxZpos));
912  histograms.h_looperzpos.push_back(
913  ibook.book1D("num_duplicate_zpos",
914  "N of associated (recoToSim) looper tracks vs transverse ref point position",
915  nintZpos,
916  minZpos,
917  maxZpos));
918  histograms.h_pileupzpos.push_back(
919  ibook.book1D("num_pileup_zpos",
920  "N of associated (recoToSim) pileup tracks vs transverse ref point position",
921  nintZpos,
922  minZpos,
923  maxZpos));
924 
925  histograms.h_recodr.push_back(
926  make1DIfLogX(ibook, true, "num_reco_dr", "N of reconstructed tracks vs dR", nintdr, log10(mindr), log10(maxdr)));
927  histograms.h_assoc2dr.push_back(make1DIfLogX(ibook,
928  true,
929  "num_assoc(recoToSim)_dr",
930  "N of associated tracks (recoToSim) vs dR",
931  nintdr,
932  log10(mindr),
933  log10(maxdr)));
934  histograms.h_looperdr.push_back(make1DIfLogX(ibook,
935  true,
936  "num_duplicate_dr",
937  "N of associated (recoToSim) looper tracks vs dR",
938  nintdr,
939  log10(mindr),
940  log10(maxdr)));
941  histograms.h_pileupdr.push_back(make1DIfLogX(ibook,
942  true,
943  "num_pileup_dr",
944  "N of associated (recoToSim) pileup tracks vs dR",
945  nintdr,
946  log10(mindr),
947  log10(maxdr)));
948 
949  histograms.h_recodrj.push_back(make1DIfLogX(
950  ibook, true, "num_reco_drj", "N of reconstructed tracks vs dR(track,jet)", nintdrj, log10(mindrj), log10(maxdrj)));
951  histograms.h_assoc2drj.push_back(make1DIfLogX(ibook,
952  true,
953  "num_assoc(recoToSim)_drj",
954  "N of associated tracks (recoToSim) vs dR(track,jet)",
955  nintdrj,
956  log10(mindrj),
957  log10(maxdrj)));
958  histograms.h_looperdrj.push_back(make1DIfLogX(ibook,
959  true,
960  "num_duplicate_drj",
961  "N of associated (recoToSim) looper tracks vs dR(track,jet)",
962  nintdrj,
963  log10(mindrj),
964  log10(maxdrj)));
965  histograms.h_pileupdrj.push_back(make1DIfLogX(ibook,
966  true,
967  "num_pileup_drj",
968  "N of associated (recoToSim) pileup tracks vs dR(track,jet)",
969  nintdrj,
970  log10(mindrj),
971  log10(maxdrj)));
972 
973  histograms.h_reco_simpvz.push_back(
974  ibook.book1D("num_reco_simpvz", "N of reco track vs. sim PV z", nintPVz, minPVz, maxPVz));
975  histograms.h_assoc2_simpvz.push_back(ibook.book1D(
976  "num_assoc(recoToSim)_simpvz", "N of associated tracks (recoToSim) vs. sim PV z", nintPVz, minPVz, maxPVz));
977  histograms.h_looper_simpvz.push_back(ibook.book1D(
978  "num_duplicate_simpvz", "N of associated (recoToSim) looper tracks vs. sim PV z", nintPVz, minPVz, maxPVz));
979  histograms.h_pileup_simpvz.push_back(ibook.book1D(
980  "num_pileup_simpvz", "N of associated (recoToSim) pileup tracks vs. sim PV z", nintPVz, minPVz, maxPVz));
981 
982  histograms.h_recochi2.push_back(
983  ibook.book1D("num_reco_chi2", "N of reco track vs normalized #chi^{2}", nintChi2, minChi2, maxChi2));
984  histograms.h_assoc2chi2.push_back(ibook.book1D("num_assoc(recoToSim)_chi2",
985  "N of associated (recoToSim) tracks vs normalized #chi^{2}",
986  nintChi2,
987  minChi2,
988  maxChi2));
989  histograms.h_looperchi2.push_back(ibook.book1D("num_duplicate_chi2",
990  "N of associated (recoToSim) looper tracks vs normalized #chi^{2}",
991  nintChi2,
992  minChi2,
993  maxChi2));
994  if (!doSeedPlots_)
995  histograms.h_misidchi2.push_back(
996  ibook.book1D("num_chargemisid_chi2",
997  "N of associated (recoToSim) charge misIDed tracks vs normalized #chi^{2}",
998  nintChi2,
999  minChi2,
1000  maxChi2));
1001  histograms.h_pileupchi2.push_back(ibook.book1D("num_pileup_chi2",
1002  "N of associated (recoToSim) pileup tracks vs normalized #chi^{2}",
1003  nintChi2,
1004  minChi2,
1005  maxChi2));
1006 
1007  histograms.h_recochi2prob.push_back(
1008  ibook.book1D("num_reco_chi2prob", "N of reco track vs normalized #chi^{2}", 100, 0., 1.));
1009  histograms.h_assoc2chi2prob.push_back(ibook.book1D(
1010  "num_assoc(recoToSim)_chi2prob", "N of associated (recoToSim) tracks vs normalized #chi^{2}", 100, 0., 1.));
1011  histograms.h_looperchi2prob.push_back(ibook.book1D(
1012  "num_duplicate_chi2prob", "N of associated (recoToSim) looper tracks vs normalized #chi^{2}", 100, 0., 1.));
1013  if (!doSeedPlots_)
1014  histograms.h_misidchi2prob.push_back(
1015  ibook.book1D("num_chargemisid_chi2prob",
1016  "N of associated (recoToSim) charge misIDed tracks vs normalized #chi^{2}",
1017  100,
1018  0.,
1019  1.));
1020  histograms.h_pileupchi2prob.push_back(ibook.book1D(
1021  "num_pileup_chi2prob", "N of associated (recoToSim) pileup tracks vs normalized #chi^{2}", 100, 0., 1.));
1022 
1023  if (!seedingLayerSetNames.empty()) {
1024  const auto size = seedingLayerSetNames.size();
1025  histograms.h_reco_seedingLayerSet.push_back(
1026  ibook.book1D("num_reco_seedingLayerSet", "N of reco track vs. seedingLayerSet", size, 0, size));
1027  histograms.h_assoc2_seedingLayerSet.push_back(
1028  ibook.book1D("num_assoc(recoToSim)_seedingLayerSet",
1029  "N of associated track (recoToSim) tracks vs. seedingLayerSet",
1030  size,
1031  0,
1032  size));
1033  histograms.h_looper_seedingLayerSet.push_back(ibook.book1D(
1034  "num_duplicate_seedingLayerSet", "N of reco associated (recoToSim) looper vs. seedingLayerSet", size, 0, size));
1035  histograms.h_pileup_seedingLayerSet.push_back(ibook.book1D(
1036  "num_pileup_seedingLayerSet", "N of reco associated (recoToSim) pileup vs. seedingLayerSet", size, 0, size));
1037 
1038  setBinLabels(histograms.h_reco_seedingLayerSet.back(), seedingLayerSetNames);
1039  setBinLabels(histograms.h_assoc2_seedingLayerSet.back(), seedingLayerSetNames);
1040  setBinLabels(histograms.h_looper_seedingLayerSet.back(), seedingLayerSetNames);
1041  setBinLabels(histograms.h_pileup_seedingLayerSet.back(), seedingLayerSetNames);
1042  }
1043 
1045 
1046  auto bookResolutionPlots1D = [&](std::vector<dqm::reco::MonitorElement*>& vec, auto&&... params) {
1047  vec.push_back(doResolutionPlots ? ibook.book1D(std::forward<decltype(params)>(params)...) : nullptr);
1048  };
1049  auto bookResolutionPlots2D = [&](std::vector<dqm::reco::MonitorElement*>& vec, bool logx, auto&&... params) {
1050  vec.push_back(doResolutionPlots ? make2DIfLogX(ibook, logx, std::forward<decltype(params)>(params)...) : nullptr);
1051  };
1052  auto bookResolutionPlotsProfile2D = [&](std::vector<dqm::reco::MonitorElement*>& vec, auto&&... params) {
1053  vec.push_back(doResolutionPlots ? ibook.bookProfile2D(std::forward<decltype(params)>(params)...) : nullptr);
1054  };
1055 
1056  bookResolutionPlots1D(histograms.h_eta, "eta", "pseudorapidity residue", 1000, -0.1, 0.1);
1057  bookResolutionPlots1D(histograms.h_pt, "pullPt", "pull of p_{t}", 100, -10, 10);
1058  bookResolutionPlots1D(histograms.h_pullTheta, "pullTheta", "pull of #theta parameter", 250, -25, 25);
1059  bookResolutionPlots1D(histograms.h_pullPhi, "pullPhi", "pull of #phi parameter", 250, -25, 25);
1060  bookResolutionPlots1D(histograms.h_pullDxy, "pullDxy", "pull of dxy parameter", 250, -25, 25);
1061  bookResolutionPlots1D(histograms.h_pullDz, "pullDz", "pull of dz parameter", 250, -25, 25);
1062  bookResolutionPlots1D(histograms.h_pullQoverp, "pullQoverp", "pull of qoverp parameter", 250, -25, 25);
1063 
1064  /* TO BE FIXED -----------
1065  if (associators[ww]=="TrackAssociatorByChi2"){
1066  histograms.h_assochi2.push_back( ibook.book1D("assocChi2","track association #chi^{2}",1000000,0,100000) );
1067  histograms.h_assochi2_prob.push_back(ibook.book1D("assocChi2_prob","probability of association #chi^{2}",100,0,1));
1068  } else if (associators[ww]=="quickTrackAssociatorByHits"){
1069  histograms.h_assocFraction.push_back( ibook.book1D("assocFraction","fraction of shared hits",200,0,2) );
1070  histograms.h_assocSharedHit.push_back(ibook.book1D("assocSharedHit","number of shared hits",20,0,20));
1071  }
1072  */
1073  histograms.h_assocFraction.push_back(ibook.book1D("assocFraction", "fraction of shared hits", 200, 0, 2));
1074  histograms.h_assocSharedHit.push_back(ibook.book1D("assocSharedHit", "number of shared hits", 41, -0.5, 40.5));
1075  // ----------------------
1076 
1077  // use the standard error of the mean as the errors in the profile
1078  histograms.chi2_vs_nhits.push_back(
1079  ibook.bookProfile("chi2mean_vs_nhits", "mean #chi^{2} vs nhits", nintHit, minHit, maxHit, 100, 0, 10, " "));
1080 
1081  bookResolutionPlots2D(
1082  histograms.etares_vs_eta, false, "etares_vs_eta", "etaresidue vs eta", nintEta, minEta, maxEta, 200, -0.1, 0.1);
1083  bookResolutionPlots2D(
1084  histograms.nrec_vs_nsim,
1085  false,
1086  "nrec_vs_nsim",
1087  "Number of selected reco tracks vs. number of selected sim tracks;TrackingParticles;Reco tracks",
1088  nintTracks,
1089  minTracks,
1090  maxTracks,
1091  nintTracks,
1092  minTracks,
1093  maxTracks);
1094 
1095  histograms.chi2_vs_eta.push_back(
1096  ibook.bookProfile("chi2mean", "mean #chi^{2} vs #eta", nintEta, minEta, maxEta, 200, 0, 20, " "));
1097  histograms.chi2_vs_phi.push_back(
1098  ibook.bookProfile("chi2mean_vs_phi", "mean #chi^{2} vs #phi", nintPhi, minPhi, maxPhi, 200, 0, 20, " "));
1099  histograms.chi2_vs_pt.push_back(
1100  makeProfileIfLogX(ibook, useLogPt, "chi2mean_vs_pt", "mean #chi^{2} vs p_{T}", nintPt, minPt, maxPt, 0, 20));
1101 
1102  histograms.assoc_chi2_vs_eta.push_back(
1103  ibook.bookProfile("assoc_chi2mean", "mean #chi^{2} vs #eta", nintEta, minEta, maxEta, 200, 0., 20., " "));
1104  histograms.assoc_chi2prob_vs_eta.push_back(ibook.bookProfile(
1105  "assoc_chi2prob_vs_eta", "mean #chi^{2} probability vs #eta", nintEta, minEta, maxEta, 100, 0., 1., " "));
1106  histograms.assoc_chi2_vs_pt.push_back(makeProfileIfLogX(
1107  ibook, useLogPt, "assoc_chi2mean_vs_pt", "mean #chi^{2} vs p_{T}", nintPt, minPt, maxPt, 0., 20.));
1108  histograms.assoc_chi2prob_vs_pt.push_back(makeProfileIfLogX(
1109  ibook, useLogPt, "assoc_chi2prob_vs_pt", "mean #chi^{2} probability vs p_{T}", nintPt, minPt, maxPt, 0., 20.));
1110 
1111  histograms.nhits_vs_eta.push_back(
1112  ibook.bookProfile("hits_eta", "mean hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1113  histograms.nPXBhits_vs_eta.push_back(ibook.bookProfile(
1114  "PXBhits_vs_eta", "mean # PXB its vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1115  histograms.nPXFhits_vs_eta.push_back(ibook.bookProfile(
1116  "PXFhits_vs_eta", "mean # PXF hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1117  histograms.nPXLhits_vs_eta.push_back(ibook.bookProfile(
1118  "PXLhits_vs_eta", "mean # PXL hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1119  histograms.nTIBhits_vs_eta.push_back(ibook.bookProfile(
1120  "TIBhits_vs_eta", "mean # TIB hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1121  histograms.nTIDhits_vs_eta.push_back(ibook.bookProfile(
1122  "TIDhits_vs_eta", "mean # TID hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1123  histograms.nTOBhits_vs_eta.push_back(ibook.bookProfile(
1124  "TOBhits_vs_eta", "mean # TOB hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1125  histograms.nTEChits_vs_eta.push_back(ibook.bookProfile(
1126  "TEChits_vs_eta", "mean # TEC hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1127  histograms.nSTRIPhits_vs_eta.push_back(ibook.bookProfile(
1128  "STRIPhits_vs_eta", "mean # STRIP hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1129 
1130  histograms.nLayersWithMeas_vs_eta.push_back(ibook.bookProfile("LayersWithMeas_eta",
1131  "mean # Layers with measurement vs eta",
1132  nintEta,
1133  minEta,
1134  maxEta,
1135  nintLayers,
1136  minLayers,
1137  maxLayers,
1138  " "));
1139  histograms.nPXLlayersWithMeas_vs_eta.push_back(ibook.bookProfile("PXLlayersWithMeas_vs_eta",
1140  "mean # PXL Layers with measurement vs eta",
1141  nintEta,
1142  minEta,
1143  maxEta,
1144  nintLayers,
1145  minLayers,
1146  maxLayers,
1147  " "));
1148  histograms.nSTRIPlayersWithMeas_vs_eta.push_back(ibook.bookProfile("STRIPlayersWithMeas_vs_eta",
1149  "mean # STRIP Layers with measurement vs eta",
1150  nintEta,
1151  minEta,
1152  maxEta,
1153  nintLayers,
1154  minLayers,
1155  maxLayers,
1156  " "));
1157  histograms.nSTRIPlayersWith1dMeas_vs_eta.push_back(ibook.bookProfile("STRIPlayersWith1dMeas_vs_eta",
1158  "mean # STRIP Layers with 1D measurement vs eta",
1159  nintEta,
1160  minEta,
1161  maxEta,
1162  nintLayers,
1163  minLayers,
1164  maxLayers,
1165  " "));
1166  histograms.nSTRIPlayersWith2dMeas_vs_eta.push_back(ibook.bookProfile("STRIPlayersWith2dMeas_vs_eta",
1167  "mean # STRIP Layers with 2D measurement vs eta",
1168  nintEta,
1169  minEta,
1170  maxEta,
1171  nintLayers,
1172  minLayers,
1173  maxLayers,
1174  " "));
1175 
1176  if (doMTDPlots_) {
1177  histograms.nMTDhits_vs_eta.push_back(ibook.bookProfile(
1178  "MTDhits_vs_eta", "mean # MTD hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1179 
1180  histograms.nBTLhits_vs_eta.push_back(ibook.bookProfile(
1181  "BTLhits_vs_eta", "mean # BTL hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1182 
1183  histograms.nETLhits_vs_eta.push_back(ibook.bookProfile(
1184  "ETLhits_vs_eta", "mean # ETL hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1185  }
1186 
1187  histograms.nhits_vs_phi.push_back(
1188  ibook.bookProfile("hits_phi", "mean # hits vs #phi", nintPhi, minPhi, maxPhi, nintHit, minHit, maxHit, " "));
1189 
1190  histograms.nlosthits_vs_eta.push_back(ibook.bookProfile(
1191  "losthits_vs_eta", "mean # lost hits vs eta", nintEta, minEta, maxEta, nintHit, minHit, maxHit, " "));
1192 
1193  //resolution of track parameters
1194  // dPt/Pt cotTheta Phi TIP LIP
1195  // log10(pt)<0.5 100,0.1 240,0.08 100,0.015 100,0.1000 150,0.3000
1196  // 0.5<log10(pt)<1.5 100,0.1 120,0.01 100,0.003 100,0.0100 150,0.0500
1197  // >1.5 100,0.3 100,0.005 100,0.0008 100,0.0060 120,0.0300
1198 
1199  bookResolutionPlots2D(histograms.ptres_vs_eta,
1200  false,
1201  "ptres_vs_eta",
1202  "ptres_vs_eta",
1203  nintEta,
1204  minEta,
1205  maxEta,
1206  ptRes_nbin,
1208  ptRes_rangeMax);
1209 
1210  bookResolutionPlots2D(histograms.ptres_vs_phi,
1211  false,
1212  "ptres_vs_phi",
1213  "p_{t} res vs #phi",
1214  nintPhi,
1215  minPhi,
1216  maxPhi,
1217  ptRes_nbin,
1219  ptRes_rangeMax);
1220 
1221  bookResolutionPlots2D(histograms.ptres_vs_pt,
1222  useLogPt,
1223  "ptres_vs_pt",
1224  "ptres_vs_pt",
1225  nintPt,
1226  minPt,
1227  maxPt,
1228  ptRes_nbin,
1230  ptRes_rangeMax);
1231 
1232  bookResolutionPlots2D(histograms.cotThetares_vs_eta,
1233  false,
1234  "cotThetares_vs_eta",
1235  "cotThetares_vs_eta",
1236  nintEta,
1237  minEta,
1238  maxEta,
1242 
1243  bookResolutionPlots2D(histograms.cotThetares_vs_pt,
1244  useLogPt,
1245  "cotThetares_vs_pt",
1246  "cotThetares_vs_pt",
1247  nintPt,
1248  minPt,
1249  maxPt,
1253 
1254  bookResolutionPlots2D(histograms.phires_vs_eta,
1255  false,
1256  "phires_vs_eta",
1257  "phires_vs_eta",
1258  nintEta,
1259  minEta,
1260  maxEta,
1261  phiRes_nbin,
1263  phiRes_rangeMax);
1264 
1265  bookResolutionPlots2D(histograms.phires_vs_pt,
1266  useLogPt,
1267  "phires_vs_pt",
1268  "phires_vs_pt",
1269  nintPt,
1270  minPt,
1271  maxPt,
1272  phiRes_nbin,
1274  phiRes_rangeMax);
1275 
1276  bookResolutionPlots2D(histograms.phires_vs_phi,
1277  false,
1278  "phires_vs_phi",
1279  "#phi res vs #phi",
1280  nintPhi,
1281  minPhi,
1282  maxPhi,
1283  phiRes_nbin,
1285  phiRes_rangeMax);
1286 
1287  bookResolutionPlots2D(histograms.dxyres_vs_eta,
1288  false,
1289  "dxyres_vs_eta",
1290  "dxyres_vs_eta",
1291  nintEta,
1292  minEta,
1293  maxEta,
1294  dxyRes_nbin,
1296  dxyRes_rangeMax);
1297 
1298  bookResolutionPlots2D(histograms.dxyres_vs_pt,
1299  useLogPt,
1300  "dxyres_vs_pt",
1301  "dxyres_vs_pt",
1302  nintPt,
1303  minPt,
1304  maxPt,
1305  dxyRes_nbin,
1307  dxyRes_rangeMax);
1308 
1309  bookResolutionPlots2D(histograms.dxyres_vs_phi,
1310  false,
1311  "dxyres_vs_phi",
1312  "dxyres_vs_phi",
1313  nintPhi,
1314  minPhi,
1315  maxPhi,
1316  dxyRes_nbin,
1318  dxyRes_rangeMax);
1319 
1320  bookResolutionPlots2D(histograms.dzres_vs_eta,
1321  false,
1322  "dzres_vs_eta",
1323  "dzres_vs_eta",
1324  nintEta,
1325  minEta,
1326  maxEta,
1327  dzRes_nbin,
1329  dzRes_rangeMax);
1330 
1331  bookResolutionPlots2D(histograms.dzres_vs_pt,
1332  useLogPt,
1333  "dzres_vs_pt",
1334  "dzres_vs_pt",
1335  nintPt,
1336  minPt,
1337  maxPt,
1338  dzRes_nbin,
1340  dzRes_rangeMax);
1341 
1342  bookResolutionPlots2D(histograms.dzres_vs_phi,
1343  false,
1344  "dzres_vs_phi",
1345  "dzres_vs_phi",
1346  nintPhi,
1347  minPhi,
1348  maxPhi,
1349  dzRes_nbin,
1351  dzRes_rangeMax);
1352 
1353  bookResolutionPlotsProfile2D(histograms.ptmean_vs_eta_phi,
1354  "ptmean_vs_eta_phi",
1355  "mean p_{t} vs #eta and #phi",
1356  nintPhi,
1357  minPhi,
1358  maxPhi,
1359  nintEta,
1360  minEta,
1361  maxEta,
1362  1000,
1363  0,
1364  1000);
1365  bookResolutionPlotsProfile2D(histograms.phimean_vs_eta_phi,
1366  "phimean_vs_eta_phi",
1367  "mean #phi vs #eta and #phi",
1368  nintPhi,
1369  minPhi,
1370  maxPhi,
1371  nintEta,
1372  minEta,
1373  maxEta,
1374  nintPhi,
1375  minPhi,
1376  maxPhi);
1377 
1378  //pulls of track params vs eta: to be used with fitslicesytool
1379  bookResolutionPlots2D(
1380  histograms.dxypull_vs_eta, false, "dxypull_vs_eta", "dxypull_vs_eta", nintEta, minEta, maxEta, 100, -10, 10);
1381  bookResolutionPlots2D(
1382  histograms.ptpull_vs_eta, false, "ptpull_vs_eta", "ptpull_vs_eta", nintEta, minEta, maxEta, 100, -10, 10);
1383  bookResolutionPlots2D(
1384  histograms.dzpull_vs_eta, false, "dzpull_vs_eta", "dzpull_vs_eta", nintEta, minEta, maxEta, 100, -10, 10);
1385  bookResolutionPlots2D(
1386  histograms.phipull_vs_eta, false, "phipull_vs_eta", "phipull_vs_eta", nintEta, minEta, maxEta, 100, -10, 10);
1387  bookResolutionPlots2D(
1388  histograms.thetapull_vs_eta, false, "thetapull_vs_eta", "thetapull_vs_eta", nintEta, minEta, maxEta, 100, -10, 10);
1389 
1390  // histograms.h_ptshiftetamean.push_back( ibook.book1D("h_ptshifteta_Mean","<#deltapT/pT>[%] vs #eta",nintEta,minEta,maxEta) );
1391 
1392  //pulls of track params vs phi
1393  bookResolutionPlots2D(
1394  histograms.ptpull_vs_phi, false, "ptpull_vs_phi", "p_{t} pull vs #phi", nintPhi, minPhi, maxPhi, 100, -10, 10);
1395  bookResolutionPlots2D(
1396  histograms.phipull_vs_phi, false, "phipull_vs_phi", "#phi pull vs #phi", nintPhi, minPhi, maxPhi, 100, -10, 10);
1397  bookResolutionPlots2D(histograms.thetapull_vs_phi,
1398  false,
1399  "thetapull_vs_phi",
1400  "#theta pull vs #phi",
1401  nintPhi,
1402  minPhi,
1403  maxPhi,
1404  100,
1405  -10,
1406  10);
1407 
1408  bookResolutionPlots2D(histograms.nrecHit_vs_nsimHit_rec2sim,
1409  false,
1410  "nrecHit_vs_nsimHit_rec2sim",
1411  "nrecHit vs nsimHit (Rec2simAssoc)",
1412  nintHit,
1413  minHit,
1414  maxHit,
1415  nintHit,
1416  minHit,
1417  maxHit);
1418 }
1419 
1421  histograms.h_recodxypv.push_back(
1422  ibook.book1D("num_reco_dxypv", "N of reco track vs dxy(PV)", nintDxy, minDxy, maxDxy));
1423  histograms.h_assoc2dxypv.push_back(ibook.book1D(
1424  "num_assoc(recoToSim)_dxypv", "N of associated (recoToSim) tracks vs dxy(PV)", nintDxy, minDxy, maxDxy));
1425  histograms.h_looperdxypv.push_back(ibook.book1D(
1426  "num_duplicate_dxypv", "N of associated (recoToSim) looper tracks vs dxy(PV)", nintDxy, minDxy, maxDxy));
1427  if (!doSeedPlots_)
1428  histograms.h_misiddxypv.push_back(ibook.book1D("num_chargemisid_dxypv",
1429  "N of associated (recoToSim) charge misIDed tracks vs dxy(PV)",
1430  nintDxy,
1431  minDxy,
1432  maxDxy));
1433  histograms.h_pileupdxypv.push_back(ibook.book1D(
1434  "num_pileup_dxypv", "N of associated (recoToSim) pileup tracks vs dxy(PV)", nintDxy, minDxy, maxDxy));
1435 
1436  histograms.h_recodzpv.push_back(ibook.book1D("num_reco_dzpv", "N of reco track vs dz(PV)", nintDz, minDz, maxDz));
1437  histograms.h_assoc2dzpv.push_back(
1438  ibook.book1D("num_assoc(recoToSim)_dzpv", "N of associated (recoToSim) tracks vs dz(PV)", nintDz, minDz, maxDz));
1439  histograms.h_looperdzpv.push_back(
1440  ibook.book1D("num_duplicate_dzpv", "N of associated (recoToSim) looper tracks vs dz(PV)", nintDz, minDz, maxDz));
1441  if (!doSeedPlots_)
1442  histograms.h_misiddzpv.push_back(ibook.book1D("num_chargemisid_versus_dzpv",
1443  "N of associated (recoToSim) charge misIDed tracks vs dz(PV)",
1444  nintDz,
1445  minDz,
1446  maxDz));
1447  histograms.h_pileupdzpv.push_back(
1448  ibook.book1D("num_pileup_dzpv", "N of associated (recoToSim) pileup tracks vs dz(PV)", nintDz, minDz, maxDz));
1449 
1450  histograms.h_recodxypvzoomed.push_back(ibook.book1D(
1451  "num_reco_dxypv_zoomed", "N of reco track vs dxy(PV)", nintDxy, minDxy / dxyDzZoom, maxDxy / dxyDzZoom));
1452  histograms.h_assoc2dxypvzoomed.push_back(ibook.book1D("num_assoc(recoToSim)_dxypv_zoomed",
1453  "N of associated (recoToSim) tracks vs dxy(PV)",
1454  nintDxy,
1455  minDxy / dxyDzZoom,
1456  maxDxy / dxyDzZoom));
1457  histograms.h_looperdxypvzoomed.push_back(ibook.book1D("num_duplicate_dxypv_zoomed",
1458  "N of associated (recoToSim) looper tracks vs dxy(PV)",
1459  nintDxy,
1460  minDxy / dxyDzZoom,
1461  maxDxy / dxyDzZoom));
1462  if (!doSeedPlots_)
1463  histograms.h_misiddxypvzoomed.push_back(ibook.book1D("num_chargemisid_dxypv_zoomed",
1464  "N of associated (recoToSim) charge misIDed tracks vs dxy(PV)",
1465  nintDxy,
1466  minDxy / dxyDzZoom,
1467  maxDxy / dxyDzZoom));
1468  histograms.h_pileupdxypvzoomed.push_back(ibook.book1D("num_pileup_dxypv_zoomed",
1469  "N of associated (recoToSim) pileup tracks vs dxy(PV)",
1470  nintDxy,
1471  minDxy / dxyDzZoom,
1472  maxDxy / dxyDzZoom));
1473 
1474  histograms.h_recodzpvzoomed.push_back(
1475  ibook.book1D("num_reco_dzpv_zoomed", "N of reco track vs dz(PV)", nintDz, minDz / dxyDzZoom, maxDz / dxyDzZoom));
1476  histograms.h_assoc2dzpvzoomed.push_back(ibook.book1D("num_assoc(recoToSim)_dzpv_zoomed",
1477  "N of associated (recoToSim) tracks vs dz(PV)",
1478  nintDz,
1479  minDz / dxyDzZoom,
1480  maxDz / dxyDzZoom));
1481  histograms.h_looperdzpvzoomed.push_back(ibook.book1D("num_duplicate_dzpv_zoomed",
1482  "N of associated (recoToSim) looper tracks vs dz(PV)",
1483  nintDz,
1484  minDz / dxyDzZoom,
1485  maxDz / dxyDzZoom));
1486  if (!doSeedPlots_)
1487  histograms.h_misiddzpvzoomed.push_back(ibook.book1D("num_chargemisid_versus_dzpv_zoomed",
1488  "N of associated (recoToSim) charge misIDed tracks vs dz(PV)",
1489  nintDz,
1490  minDz / dxyDzZoom,
1491  maxDz / dxyDzZoom));
1492  histograms.h_pileupdzpvzoomed.push_back(ibook.book1D("num_pileup_dzpv_zoomed",
1493  "N of associated (recoToSim) pileup tracks vs dz(PV)",
1494  nintDz,
1495  minDz / dxyDzZoom,
1496  maxDz / dxyDzZoom));
1497 
1498  histograms.h_reco_dzpvcut.push_back(
1499  ibook.book1D("num_reco_dzpvcut", "N of reco track vs dz(PV)", nintDzpvCum, 0, maxDzpvCum));
1500  histograms.h_assoc2_dzpvcut.push_back(ibook.book1D(
1501  "num_assoc(recoToSim)_dzpvcut", "N of associated (recoToSim) tracks vs dz(PV)", nintDzpvCum, 0, maxDzpvCum));
1502  histograms.h_pileup_dzpvcut.push_back(ibook.book1D(
1503  "num_pileup_dzpvcut", "N of associated (recoToSim) pileup tracks vs dz(PV)", nintDzpvCum, 0, maxDzpvCum));
1504 
1505  histograms.h_reco_dzpvcut_pt.push_back(
1506  ibook.book1D("num_reco_dzpvcut_pt", "#sump_{T} of reco track vs dz(PV)", nintDzpvCum, 0, maxDzpvCum));
1507  histograms.h_assoc2_dzpvcut_pt.push_back(ibook.book1D("num_assoc(recoToSim)_dzpvcut_pt",
1508  "#sump_{T} of associated (recoToSim) tracks vs dz(PV)",
1509  nintDzpvCum,
1510  0,
1511  maxDzpvCum));
1512  histograms.h_pileup_dzpvcut_pt.push_back(ibook.book1D("num_pileup_dzpvcut_pt",
1513  "#sump_{T} of associated (recoToSim) pileup tracks vs dz(PV)",
1514  nintDzpvCum,
1515  0,
1516  maxDzpvCum));
1517  histograms.h_reco_dzpvcut_pt.back()->enableSumw2();
1518  histograms.h_assoc2_dzpvcut_pt.back()->enableSumw2();
1519  histograms.h_pileup_dzpvcut_pt.back()->enableSumw2();
1520 
1521  histograms.h_reco_dzpvsigcut.push_back(
1522  ibook.book1D("num_reco_dzpvsigcut", "N of reco track vs dz(PV)/dzError", nintDzpvsigCum, 0, maxDzpvsigCum));
1523  histograms.h_assoc2_dzpvsigcut.push_back(ibook.book1D("num_assoc(recoToSim)_dzpvsigcut",
1524  "N of associated (recoToSim) tracks vs dz(PV)/dzError",
1526  0,
1527  maxDzpvsigCum));
1528  histograms.h_pileup_dzpvsigcut.push_back(ibook.book1D("num_pileup_dzpvsigcut",
1529  "N of associated (recoToSim) pileup tracks vs dz(PV)/dzError",
1531  0,
1532  maxDzpvsigCum));
1533 
1534  histograms.h_reco_dzpvsigcut_pt.push_back(ibook.book1D(
1535  "num_reco_dzpvsigcut_pt", "#sump_{T} of reco track vs dz(PV)/dzError", nintDzpvsigCum, 0, maxDzpvsigCum));
1536  histograms.h_assoc2_dzpvsigcut_pt.push_back(
1537  ibook.book1D("num_assoc(recoToSim)_dzpvsigcut_pt",
1538  "#sump_{T} of associated (recoToSim) tracks vs dz(PV)/dzError",
1540  0,
1541  maxDzpvsigCum));
1542  histograms.h_pileup_dzpvsigcut_pt.push_back(
1543  ibook.book1D("num_pileup_dzpvsigcut_pt",
1544  "#sump_{T} of associated (recoToSim) pileup tracks vs dz(PV)/dzError",
1546  0,
1547  maxDzpvsigCum));
1548  histograms.h_reco_dzpvsigcut_pt.back()->enableSumw2();
1549  histograms.h_assoc2_dzpvsigcut_pt.back()->enableSumw2();
1550  histograms.h_pileup_dzpvsigcut_pt.back()->enableSumw2();
1551 }
1552 
1554  // dE/dx stuff
1555  histograms.h_dedx_estim.emplace_back();
1556  histograms.h_dedx_estim.back().push_back(
1557  ibook.book1D("h_dedx_estim1", "dE/dx estimator 1", nintDeDx, minDeDx, maxDeDx));
1558  histograms.h_dedx_estim.back().push_back(
1559  ibook.book1D("h_dedx_estim2", "dE/dx estimator 2", nintDeDx, minDeDx, maxDeDx));
1560 
1561  histograms.h_dedx_nom.emplace_back();
1562  histograms.h_dedx_nom.back().push_back(
1563  ibook.book1D("h_dedx_nom1", "dE/dx number of measurements", nintHit, minHit, maxHit));
1564  histograms.h_dedx_nom.back().push_back(
1565  ibook.book1D("h_dedx_nom2", "dE/dx number of measurements", nintHit, minHit, maxHit));
1566 
1567  histograms.h_dedx_sat.emplace_back();
1568  histograms.h_dedx_sat.back().push_back(
1569  ibook.book1D("h_dedx_sat1", "dE/dx number of measurements with saturation", nintHit, minHit, maxHit));
1570  histograms.h_dedx_sat.back().push_back(
1571  ibook.book1D("h_dedx_sat2", "dE/dx number of measurements with saturation", nintHit, minHit, maxHit));
1572 }
1573 
1575  histograms.h_seedsFitFailed.push_back(
1576  ibook.book1D("seeds_fitFailed", "Number of seeds for which the fit failed", nintTracks, minTracks, maxTracks));
1577  histograms.h_seedsFitFailedFraction.push_back(
1578  ibook.book1D("seeds_fitFailedFraction", "Fraction of seeds for which the fit failed", 100, 0, 1));
1579 }
1580 
1582  histograms.h_reco_mva.emplace_back();
1583  histograms.h_assoc2_mva.emplace_back();
1584 
1585  histograms.h_reco_mvacut.emplace_back();
1586  histograms.h_assoc_mvacut.emplace_back();
1587  histograms.h_assoc2_mvacut.emplace_back();
1588  histograms.h_simul2_mvacut.emplace_back();
1589 
1590  histograms.h_reco_mva_hp.emplace_back();
1591  histograms.h_assoc2_mva_hp.emplace_back();
1592 
1593  histograms.h_reco_mvacut_hp.emplace_back();
1594  histograms.h_assoc_mvacut_hp.emplace_back();
1595  histograms.h_assoc2_mvacut_hp.emplace_back();
1596  histograms.h_simul2_mvacut_hp.emplace_back();
1597 
1598  histograms.h_assoc2_mva_vs_pt.emplace_back();
1599  histograms.h_fake_mva_vs_pt.emplace_back();
1600  histograms.h_assoc2_mva_vs_pt_hp.emplace_back();
1601  histograms.h_fake_mva_vs_pt_hp.emplace_back();
1602  histograms.h_assoc2_mva_vs_eta.emplace_back();
1603  histograms.h_fake_mva_vs_eta.emplace_back();
1604  histograms.h_assoc2_mva_vs_eta_hp.emplace_back();
1605  histograms.h_fake_mva_vs_eta_hp.emplace_back();
1606 
1607  for (size_t i = 1; i <= nMVAs; ++i) {
1608  auto istr = std::to_string(i);
1609  std::string pfix;
1610 
1611  if (i == 1) {
1612  histograms.h_reco_mva_hp.back().emplace_back();
1613  histograms.h_assoc2_mva_hp.back().emplace_back();
1614 
1615  histograms.h_reco_mvacut_hp.back().emplace_back();
1616  histograms.h_assoc_mvacut_hp.back().emplace_back();
1617  histograms.h_assoc2_mvacut_hp.back().emplace_back();
1618  histograms.h_simul2_mvacut_hp.back().emplace_back();
1619 
1620  histograms.h_assoc2_mva_vs_pt_hp.back().emplace_back();
1621  histograms.h_fake_mva_vs_pt_hp.back().emplace_back();
1622  histograms.h_assoc2_mva_vs_eta_hp.back().emplace_back();
1623  histograms.h_fake_mva_vs_eta_hp.back().emplace_back();
1624  } else {
1625  pfix = " (not loose-selected)";
1626  std::string pfix2 = " (not HP-selected)";
1627 
1628  histograms.h_reco_mva_hp.back().push_back(ibook.book1D(
1629  "num_reco_mva" + istr + "_hp", "N of reco track after vs MVA" + istr + pfix2, nintMVA, minMVA, maxMVA));
1630  histograms.h_assoc2_mva_hp.back().push_back(
1631  ibook.book1D("num_assoc(recoToSim)_mva" + istr + "_hp",
1632  "N of associated tracks (recoToSim) vs MVA" + istr + pfix2,
1633  nintMVA,
1634  minMVA,
1635  maxMVA));
1636 
1637  histograms.h_reco_mvacut_hp.back().push_back(ibook.book1D("num_reco_mva" + istr + "cut" + "_hp",
1638  "N of reco track vs cut on MVA" + istr + pfix2,
1639  nintMVA,
1640  minMVA,
1641  maxMVA));
1642  histograms.h_assoc_mvacut_hp.back().push_back(
1643  ibook.book1D("num_assoc(simToReco)_mva" + istr + "cut_hp",
1644  "N of associated tracks (simToReco) vs cut on MVA" + istr + pfix2,
1645  nintMVA,
1646  minMVA,
1647  maxMVA));
1648  histograms.h_assoc2_mvacut_hp.back().push_back(
1649  ibook.book1D("num_assoc(recoToSim)_mva" + istr + "cut_hp",
1650  "N of associated tracks (recoToSim) vs cut on MVA" + istr + pfix2,
1651  nintMVA,
1652  minMVA,
1653  maxMVA));
1654  histograms.h_simul2_mvacut_hp.back().push_back(
1655  ibook.book1D("num_simul2_mva" + istr + "cut_hp",
1656  "N of simulated tracks (associated to any track) vs cut on MVA" + istr + pfix2,
1657  nintMVA,
1658  minMVA,
1659  maxMVA));
1660 
1661  histograms.h_assoc2_mva_vs_pt_hp.back().push_back(
1662  makeProfileIfLogX(ibook,
1663  useLogPt,
1664  ("mva_assoc(recoToSim)_mva" + istr + "_pT_hp").c_str(),
1665  ("MVA" + istr + " of associated tracks (recoToSim) vs. track p_{T}" + pfix2).c_str(),
1666  nintPt,
1667  minPt,
1668  maxPt,
1669  minMVA,
1670  maxMVA));
1671  histograms.h_fake_mva_vs_pt_hp.back().push_back(
1672  makeProfileIfLogX(ibook,
1673  useLogPt,
1674  ("mva_fake_mva" + istr + "pT_hp").c_str(),
1675  ("MVA" + istr + " of non-associated tracks (recoToSim) vs. track p_{T}" + pfix2).c_str(),
1676  nintPt,
1677  minPt,
1678  maxPt,
1679  minMVA,
1680  maxMVA));
1681  histograms.h_assoc2_mva_vs_eta_hp.back().push_back(
1682  ibook.bookProfile("mva_assoc(recoToSim)_mva" + istr + "_eta_hp",
1683  "MVA" + istr + " of associated tracks (recoToSim) vs. track #eta" + pfix2,
1684  nintEta,
1685  minEta,
1686  maxEta,
1687  nintMVA,
1688  minMVA,
1689  maxMVA));
1690  histograms.h_fake_mva_vs_eta_hp.back().push_back(
1691  ibook.bookProfile("mva_fake_mva" + istr + "eta_hp",
1692  "MVA" + istr + " of non-associated tracks (recoToSim) vs. track #eta" + pfix2,
1693  nintEta,
1694  minEta,
1695  maxEta,
1696  nintMVA,
1697  minMVA,
1698  maxMVA));
1699  }
1700 
1701  histograms.h_reco_mva.back().push_back(
1702  ibook.book1D("num_reco_mva" + istr, "N of reco track vs MVA" + istr + pfix, nintMVA, minMVA, maxMVA));
1703  histograms.h_assoc2_mva.back().push_back(ibook.book1D("num_assoc(recoToSim)_mva" + istr,
1704  "N of associated tracks (recoToSim) vs MVA" + istr + pfix,
1705  nintMVA,
1706  minMVA,
1707  maxMVA));
1708 
1709  histograms.h_reco_mvacut.back().push_back(ibook.book1D(
1710  "num_reco_mva" + istr + "cut", "N of reco track vs cut on MVA" + istr + pfix, nintMVA, minMVA, maxMVA));
1711  histograms.h_assoc_mvacut.back().push_back(
1712  ibook.book1D("num_assoc(simToReco)_mva" + istr + "cut",
1713  "N of associated tracks (simToReco) vs cut on MVA" + istr + pfix,
1714  nintMVA,
1715  minMVA,
1716  maxMVA));
1717  histograms.h_assoc2_mvacut.back().push_back(
1718  ibook.book1D("num_assoc(recoToSim)_mva" + istr + "cut",
1719  "N of associated tracks (recoToSim) vs cut on MVA" + istr + pfix,
1720  nintMVA,
1721  minMVA,
1722  maxMVA));
1723  histograms.h_simul2_mvacut.back().push_back(
1724  ibook.book1D("num_simul2_mva" + istr + "cut",
1725  "N of simulated tracks (associated to any track) vs cut on MVA" + istr + pfix,
1726  nintMVA,
1727  minMVA,
1728  maxMVA));
1729 
1730  histograms.h_assoc2_mva_vs_pt.back().push_back(
1731  makeProfileIfLogX(ibook,
1732  useLogPt,
1733  ("mva_assoc(recoToSim)_mva" + istr + "_pT").c_str(),
1734  ("MVA" + istr + " of associated tracks (recoToSim) vs. track p_{T}" + pfix).c_str(),
1735  nintPt,
1736  minPt,
1737  maxPt,
1738  minMVA,
1739  maxMVA));
1740  histograms.h_fake_mva_vs_pt.back().push_back(
1741  makeProfileIfLogX(ibook,
1742  useLogPt,
1743  ("mva_fake_mva" + istr + "_pT").c_str(),
1744  ("MVA" + istr + " of non-associated tracks (recoToSim) vs. track p_{T}" + pfix).c_str(),
1745  nintPt,
1746  minPt,
1747  maxPt,
1748  minMVA,
1749  maxMVA));
1750  histograms.h_assoc2_mva_vs_eta.back().push_back(
1751  ibook.bookProfile("mva_assoc(recoToSim)_mva" + istr + "_eta",
1752  "MVA" + istr + " of associated tracks (recoToSim) vs. track #eta" + pfix,
1753  nintEta,
1754  minEta,
1755  maxEta,
1756  nintMVA,
1757  minMVA,
1758  maxMVA));
1759  histograms.h_fake_mva_vs_eta.back().push_back(
1760  ibook.bookProfile("mva_fake_mva" + istr + "_eta",
1761  "MVA" + istr + " of non-associated tracks (recoToSim) vs. track #eta" + pfix,
1762  nintEta,
1763  minEta,
1764  maxEta,
1765  nintMVA,
1766  minMVA,
1767  maxMVA));
1768  }
1769 }
1770 
1772  const TrackingParticle::Vector& momentumTP,
1773  const TrackingParticle::Point& vertexTP,
1774  int bx) const {
1775  if (bx == 0) {
1776  histograms.h_ptSIM->Fill(sqrt(momentumTP.perp2()));
1777  histograms.h_etaSIM->Fill(momentumTP.eta());
1778  histograms.h_phiSIM->Fill(momentumTP.phi());
1779  histograms.h_vertposSIM->Fill(sqrt(vertexTP.perp2()));
1780  }
1781  histograms.h_bunchxSIM->Fill(bx);
1782 }
1783 
1785  const Histograms& histograms,
1786  int count,
1787  const TrackingParticle& tp,
1788  const TrackingParticle::Vector& momentumTP,
1789  const TrackingParticle::Point& vertexTP,
1790  double dxySim,
1791  double dzSim,
1792  double dxyPVSim,
1793  double dzPVSim,
1794  int nSimHits,
1795  int nSimLayers,
1796  int nSimPixelLayers,
1797  int nSimStripMonoAndStereoLayers,
1798  const reco::Track* track,
1799  int numVertices,
1800  double dR,
1801  double dRJet,
1802  const math::XYZPoint* pvPosition,
1803  const TrackingVertex::LorentzVector* simPVPosition,
1804  const math::XYZPoint& bsPosition,
1805  const std::vector<float>& mvas,
1806  unsigned int selectsLoose,
1807  unsigned int selectsHP) const {
1808  bool isMatched = track;
1809  const auto eta = getEta(momentumTP.eta());
1810  const auto phi = momentumTP.phi();
1811  const auto pt = getPt(sqrt(momentumTP.perp2()));
1812  const auto nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
1813 
1814  const auto vertexTPwrtBS = vertexTP - bsPosition;
1815  const auto vertxy = std::sqrt(vertexTPwrtBS.perp2());
1816  const auto vertz = vertexTPwrtBS.z();
1817 
1818  //efficiency vs. cut on MVA
1819  //
1820  // Note that this includes also pileup TPs, as "signalOnly"
1821  // selection is applied only in the TpSelector*. Have to think if
1822  // this is really what we want.
1823  if (isMatched) {
1824  for (size_t i = 0; i < mvas.size(); ++i) {
1825  if (i <= selectsLoose) {
1826  histograms.h_simul2_mvacut[count][i]->Fill(maxMVA);
1827  histograms.h_assoc_mvacut[count][i]->Fill(mvas[i]);
1828  }
1829  if (i >= 1 && i <= selectsHP) {
1830  histograms.h_simul2_mvacut_hp[count][i]->Fill(maxMVA);
1831  histograms.h_assoc_mvacut_hp[count][i]->Fill(mvas[i]);
1832  }
1833  }
1834  }
1835 
1836  if ((*TpSelectorForEfficiencyVsEta)(tp)) {
1837  //effic vs eta
1838  histograms.h_simuleta[count]->Fill(eta);
1839  if (isMatched)
1840  histograms.h_assoceta[count]->Fill(eta);
1841  }
1842 
1843  if ((*TpSelectorForEfficiencyVsPhi)(tp)) {
1844  histograms.h_simulphi[count]->Fill(phi);
1845  if (isMatched)
1846  histograms.h_assocphi[count]->Fill(phi);
1847  //effic vs hits
1848  histograms.h_simulhit[count]->Fill(nSimHits);
1849  histograms.h_simullayer[count]->Fill(nSimLayers);
1850  histograms.h_simulpixellayer[count]->Fill(nSimPixelLayers);
1851  histograms.h_simul3Dlayer[count]->Fill(nSim3DLayers);
1852  if (isMatched) {
1853  histograms.h_assochit[count]->Fill(nSimHits);
1854  histograms.h_assoclayer[count]->Fill(nSimLayers);
1855  histograms.h_assocpixellayer[count]->Fill(nSimPixelLayers);
1856  histograms.h_assoc3Dlayer[count]->Fill(nSim3DLayers);
1857  if (histograms.nrecHit_vs_nsimHit_sim2rec[count])
1858  histograms.nrecHit_vs_nsimHit_sim2rec[count]->Fill(track->numberOfValidHits(), nSimHits);
1859  }
1860  //effic vs pu
1861  histograms.h_simulpu[count]->Fill(numVertices);
1862  if (isMatched)
1863  histograms.h_assocpu[count]->Fill(numVertices);
1864  //efficiency vs dR
1865  histograms.h_simuldr[count]->Fill(dR);
1866  if (isMatched)
1867  histograms.h_assocdr[count]->Fill(dR);
1868  //efficiency vs dR jet
1869  histograms.h_simuldrj[count]->Fill(dRJet);
1870  if (isMatched)
1871  histograms.h_assocdrj[count]->Fill(dRJet);
1872  }
1873 
1874  if ((*TpSelectorForEfficiencyVsPt)(tp)) {
1875  histograms.h_simulpT[count]->Fill(pt);
1876  if (isMatched)
1877  histograms.h_assocpT[count]->Fill(pt);
1878  }
1879 
1881  histograms.h_simuldxy[count]->Fill(dxySim);
1882  if (isMatched)
1883  histograms.h_assocdxy[count]->Fill(dxySim);
1884  if (pvPosition) {
1885  histograms.h_simuldxypv[count]->Fill(dxyPVSim);
1886  histograms.h_simuldxypvzoomed[count]->Fill(dxyPVSim);
1887  if (isMatched) {
1888  histograms.h_assocdxypv[count]->Fill(dxyPVSim);
1889  histograms.h_assocdxypvzoomed[count]->Fill(dxyPVSim);
1890  }
1891  }
1892 
1893  histograms.h_simulvertpos[count]->Fill(vertxy);
1894  if (isMatched)
1895  histograms.h_assocvertpos[count]->Fill(vertxy);
1896  }
1897 
1899  histograms.h_simuldz[count]->Fill(dzSim);
1900  if (isMatched)
1901  histograms.h_assocdz[count]->Fill(dzSim);
1902 
1903  histograms.h_simulzpos[count]->Fill(vertz);
1904  if (isMatched)
1905  histograms.h_assoczpos[count]->Fill(vertz);
1906 
1907  if (pvPosition) {
1908  histograms.h_simuldzpv[count]->Fill(dzPVSim);
1909  histograms.h_simuldzpvzoomed[count]->Fill(dzPVSim);
1910 
1911  histograms.h_simul_dzpvcut[count]->Fill(0);
1912  histograms.h_simul_dzpvsigcut[count]->Fill(0);
1913  histograms.h_simul_dzpvcut_pt[count]->Fill(0, pt);
1914  histograms.h_simul_dzpvsigcut_pt[count]->Fill(0, pt);
1915 
1916  if (isMatched) {
1917  histograms.h_assocdzpv[count]->Fill(dzPVSim);
1918  histograms.h_assocdzpvzoomed[count]->Fill(dzPVSim);
1919 
1920  histograms.h_simul2_dzpvcut[count]->Fill(0);
1921  histograms.h_simul2_dzpvsigcut[count]->Fill(0);
1922  histograms.h_simul2_dzpvcut_pt[count]->Fill(0, pt);
1923  histograms.h_simul2_dzpvsigcut_pt[count]->Fill(0, pt);
1924  const double dzpvcut = std::abs(track->dz(*pvPosition));
1925  const double dzpvsigcut = dzpvcut / track->dzError();
1926  histograms.h_assoc_dzpvcut[count]->Fill(dzpvcut);
1927  histograms.h_assoc_dzpvsigcut[count]->Fill(dzpvsigcut);
1928  histograms.h_assoc_dzpvcut_pt[count]->Fill(dzpvcut, pt);
1929  histograms.h_assoc_dzpvsigcut_pt[count]->Fill(dzpvsigcut, pt);
1930  }
1931  }
1932  if (simPVPosition) {
1933  const auto simpvz = simPVPosition->z();
1934  histograms.h_simul_simpvz[count]->Fill(simpvz);
1935  if (isMatched) {
1936  histograms.h_assoc_simpvz[count]->Fill(simpvz);
1937  }
1938  }
1939  }
1940 }
1941 
1943  int count,
1944  const reco::Track& track1,
1945  const reco::Track& track2) const {
1946  histograms.h_duplicates_oriAlgo_vs_oriAlgo[count]->Fill(track1.originalAlgo(), track2.originalAlgo());
1947 }
1948 
1950  histograms.h_tracksSIM->Fill(numSimTracks);
1951 }
1952 
1953 // dE/dx
1955  const Histograms& histograms,
1956  int count,
1957  const edm::RefToBase<reco::Track>& trackref,
1958  const std::vector<const edm::ValueMap<reco::DeDxData>*>& v_dEdx) const {
1959  for (unsigned int i = 0; i < v_dEdx.size(); i++) {
1960  const edm::ValueMap<reco::DeDxData>& dEdxTrack = *(v_dEdx[i]);
1961  const reco::DeDxData& dedx = dEdxTrack[trackref];
1962  histograms.h_dedx_estim[count][i]->Fill(dedx.dEdx());
1963  histograms.h_dedx_nom[count][i]->Fill(dedx.numberOfMeasurements());
1964  histograms.h_dedx_sat[count][i]->Fill(dedx.numberOfSaturatedMeasurements());
1965  }
1966 }
1967 
1969  int count,
1970  const reco::Track& track,
1971  const TrackerTopology& ttopo,
1972  const math::XYZPoint& bsPosition,
1973  const math::XYZPoint* pvPosition,
1974  const TrackingVertex::LorentzVector* simPVPosition,
1975  bool isMatched,
1976  bool isSigMatched,
1977  bool isChargeMatched,
1978  int numAssocRecoTracks,
1979  int numVertices,
1980  int nSimHits,
1981  double sharedFraction,
1982  double dR,
1983  double dRJet,
1984  const std::vector<float>& mvas,
1985  unsigned int selectsLoose,
1986  unsigned int selectsHP) const {
1987  //Fill track algo histogram
1988  histograms.h_algo[count]->Fill(track.algo());
1989  int sharedHits = sharedFraction * track.numberOfValidHits();
1990 
1991  //Compute fake rate vs eta
1992  const auto eta = getEta(track.momentum().eta());
1993  const auto phi = track.momentum().phi();
1994  const auto pt = getPt(sqrt(track.momentum().perp2()));
1995  const auto dxy = track.dxy(bsPosition);
1996  const auto dz = track.dz(bsPosition);
1997  const auto dxypv = pvPosition ? track.dxy(*pvPosition) : 0.0;
1998  const auto dzpv = pvPosition ? track.dz(*pvPosition) : 0.0;
1999  const auto dzpvsig = pvPosition ? dzpv / track.dzError() : 0.0;
2000  const auto nhits = track.found();
2001  const auto nlayers = track.hitPattern().trackerLayersWithMeasurement();
2002  const auto nPixelLayers = track.hitPattern().pixelLayersWithMeasurement();
2003  const auto n3DLayers = nPixelLayers + track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
2004  const auto refPointWrtBS = track.referencePoint() - bsPosition;
2005  const auto vertxy = std::sqrt(refPointWrtBS.perp2());
2006  const auto vertz = refPointWrtBS.z();
2007  const auto chi2 = track.normalizedChi2();
2008  const auto chi2prob = TMath::Prob(track.chi2(), (int)track.ndof());
2009  const bool fillSeedingLayerSets = !seedingLayerSetNames.empty();
2010  const unsigned int seedingLayerSetBin = fillSeedingLayerSets ? getSeedingLayerSetBin(track, ttopo) : 0;
2011  const auto simpvz = simPVPosition ? simPVPosition->z() : 0.0;
2012 
2013  const bool paramsValid = !trackFromSeedFitFailed(track);
2014 
2015  if (paramsValid) {
2016  histograms.h_recoeta[count]->Fill(eta);
2017  histograms.h_recophi[count]->Fill(phi);
2018  histograms.h_recopT[count]->Fill(pt);
2019  histograms.h_recopTvseta[count]->Fill(eta, pt);
2020  histograms.h_recodxy[count]->Fill(dxy);
2021  histograms.h_recodz[count]->Fill(dz);
2022  histograms.h_recochi2[count]->Fill(chi2);
2023  histograms.h_recochi2prob[count]->Fill(chi2prob);
2024  histograms.h_recovertpos[count]->Fill(vertxy);
2025  histograms.h_recozpos[count]->Fill(vertz);
2026  histograms.h_recodr[count]->Fill(dR);
2027  histograms.h_recodrj[count]->Fill(dRJet);
2028  if (fillSeedingLayerSets)
2029  histograms.h_reco_seedingLayerSet[count]->Fill(seedingLayerSetBin);
2030  if (pvPosition) {
2031  histograms.h_recodxypv[count]->Fill(dxypv);
2032  histograms.h_recodzpv[count]->Fill(dzpv);
2033  histograms.h_recodxypvzoomed[count]->Fill(dxypv);
2034  histograms.h_recodzpvzoomed[count]->Fill(dzpv);
2035 
2036  histograms.h_reco_dzpvcut[count]->Fill(std::abs(dzpv));
2037  histograms.h_reco_dzpvsigcut[count]->Fill(std::abs(dzpvsig));
2038  histograms.h_reco_dzpvcut_pt[count]->Fill(std::abs(dzpv), pt);
2039  histograms.h_reco_dzpvsigcut_pt[count]->Fill(std::abs(dzpvsig), pt);
2040  }
2041  if (simPVPosition) {
2042  histograms.h_reco_simpvz[count]->Fill(simpvz);
2043  }
2044  if ((*trackSelectorVsEta)(track, bsPosition)) {
2045  histograms.h_reco2eta[count]->Fill(eta);
2046  }
2047  if ((*trackSelectorVsPt)(track, bsPosition)) {
2048  histograms.h_reco2pT[count]->Fill(pt);
2049  histograms.h_reco2pTvseta[count]->Fill(eta, pt);
2050  }
2051  }
2052  histograms.h_recohit[count]->Fill(nhits);
2053  histograms.h_recolayer[count]->Fill(nlayers);
2054  histograms.h_recopixellayer[count]->Fill(nPixelLayers);
2055  histograms.h_reco3Dlayer[count]->Fill(n3DLayers);
2056  histograms.h_recopu[count]->Fill(numVertices);
2057  if ((*trackSelectorVsPhi)(track, bsPosition)) {
2058  histograms.h_reco2pu[count]->Fill(numVertices);
2059  }
2060 
2061  fillMVAHistos(histograms.h_reco_mva[count],
2062  histograms.h_reco_mvacut[count],
2063  histograms.h_reco_mva_hp[count],
2064  histograms.h_reco_mvacut_hp[count],
2065  mvas,
2066  selectsLoose,
2067  selectsHP);
2068 
2069  if (isMatched) {
2070  if (paramsValid) {
2071  histograms.h_assoc2eta[count]->Fill(eta);
2072  histograms.h_assoc2phi[count]->Fill(phi);
2073  histograms.h_assoc2pT[count]->Fill(pt);
2074  histograms.h_assoc2pTvseta[count]->Fill(eta, pt);
2075  histograms.h_assoc2dxy[count]->Fill(dxy);
2076  histograms.h_assoc2dz[count]->Fill(dz);
2077  histograms.h_assoc2hit[count]->Fill(nhits);
2078  histograms.h_assoc2chi2[count]->Fill(chi2);
2079  histograms.h_assoc2chi2prob[count]->Fill(chi2prob);
2080  histograms.assoc_chi2_vs_eta[count]->Fill(eta, chi2);
2081  histograms.assoc_chi2prob_vs_eta[count]->Fill(eta, chi2prob);
2082  histograms.assoc_chi2_vs_pt[count]->Fill(pt, chi2);
2083  histograms.assoc_chi2prob_vs_pt[count]->Fill(pt, chi2prob);
2084  histograms.h_assoc2vertpos[count]->Fill(vertxy);
2085  histograms.h_assoc2zpos[count]->Fill(vertz);
2086  histograms.h_assoc2dr[count]->Fill(dR);
2087  histograms.h_assoc2drj[count]->Fill(dRJet);
2088  if (fillSeedingLayerSets)
2089  histograms.h_assoc2_seedingLayerSet[count]->Fill(seedingLayerSetBin);
2090  if (pvPosition) {
2091  histograms.h_assoc2dxypv[count]->Fill(dxypv);
2092  histograms.h_assoc2dzpv[count]->Fill(dzpv);
2093  histograms.h_assoc2dxypvzoomed[count]->Fill(dxypv);
2094  histograms.h_assoc2dzpvzoomed[count]->Fill(dzpv);
2095 
2096  histograms.h_assoc2_dzpvcut[count]->Fill(std::abs(dzpv));
2097  histograms.h_assoc2_dzpvsigcut[count]->Fill(std::abs(dzpvsig));
2098  histograms.h_assoc2_dzpvcut_pt[count]->Fill(std::abs(dzpv), pt);
2099  histograms.h_assoc2_dzpvsigcut_pt[count]->Fill(std::abs(dzpvsig), pt);
2100  }
2101  if (simPVPosition) {
2102  histograms.h_assoc2_simpvz[count]->Fill(simpvz);
2103  }
2104  }
2105  histograms.h_assoc2layer[count]->Fill(nlayers);
2106  histograms.h_assoc2pixellayer[count]->Fill(nPixelLayers);
2107  histograms.h_assoc23Dlayer[count]->Fill(n3DLayers);
2108  histograms.h_assoc2pu[count]->Fill(numVertices);
2109 
2110  fillMVAHistos(histograms.h_assoc2_mva[count],
2111  histograms.h_assoc2_mvacut[count],
2112  histograms.h_assoc2_mva_hp[count],
2113  histograms.h_assoc2_mvacut_hp[count],
2114  mvas,
2115  selectsLoose,
2116  selectsHP);
2117  fillMVAHistos(pt,
2118  histograms.h_assoc2_mva_vs_pt[count],
2119  histograms.h_assoc2_mva_vs_pt_hp[count],
2120  mvas,
2121  selectsLoose,
2122  selectsHP);
2123  fillMVAHistos(eta,
2124  histograms.h_assoc2_mva_vs_eta[count],
2125  histograms.h_assoc2_mva_vs_eta_hp[count],
2126  mvas,
2127  selectsLoose,
2128  selectsHP);
2129 
2130  if (histograms.nrecHit_vs_nsimHit_rec2sim[count])
2131  histograms.nrecHit_vs_nsimHit_rec2sim[count]->Fill(track.numberOfValidHits(), nSimHits);
2132  histograms.h_assocFraction[count]->Fill(sharedFraction);
2133  histograms.h_assocSharedHit[count]->Fill(sharedHits);
2134 
2135  if (!doSeedPlots_ && !isChargeMatched) {
2136  histograms.h_misideta[count]->Fill(eta);
2137  histograms.h_misidphi[count]->Fill(phi);
2138  histograms.h_misidpT[count]->Fill(pt);
2139  histograms.h_misidpTvseta[count]->Fill(eta, pt);
2140  histograms.h_misiddxy[count]->Fill(dxy);
2141  histograms.h_misiddz[count]->Fill(dz);
2142  histograms.h_misidhit[count]->Fill(nhits);
2143  histograms.h_misidlayer[count]->Fill(nlayers);
2144  histograms.h_misidpixellayer[count]->Fill(nPixelLayers);
2145  histograms.h_misid3Dlayer[count]->Fill(n3DLayers);
2146  histograms.h_misidpu[count]->Fill(numVertices);
2147  histograms.h_misidchi2[count]->Fill(chi2);
2148  histograms.h_misidchi2prob[count]->Fill(chi2prob);
2149  if (pvPosition) {
2150  histograms.h_misiddxypv[count]->Fill(dxypv);
2151  histograms.h_misiddzpv[count]->Fill(dzpv);
2152  histograms.h_misiddxypvzoomed[count]->Fill(dxypv);
2153  histograms.h_misiddzpvzoomed[count]->Fill(dzpv);
2154  }
2155  }
2156 
2157  if (numAssocRecoTracks > 1) {
2158  if (paramsValid) {
2159  histograms.h_loopereta[count]->Fill(eta);
2160  histograms.h_looperphi[count]->Fill(phi);
2161  histograms.h_looperpT[count]->Fill(pt);
2162  histograms.h_looperpTvseta[count]->Fill(eta, pt);
2163  histograms.h_looperdxy[count]->Fill(dxy);
2164  histograms.h_looperdz[count]->Fill(dz);
2165  histograms.h_looperchi2[count]->Fill(chi2);
2166  histograms.h_looperchi2prob[count]->Fill(chi2prob);
2167  histograms.h_loopervertpos[count]->Fill(vertxy);
2168  histograms.h_looperzpos[count]->Fill(vertz);
2169  histograms.h_looperdr[count]->Fill(dR);
2170  histograms.h_looperdrj[count]->Fill(dRJet);
2171  if (fillSeedingLayerSets)
2172  histograms.h_looper_seedingLayerSet[count]->Fill(seedingLayerSetBin);
2173  if (pvPosition) {
2174  histograms.h_looperdxypv[count]->Fill(dxypv);
2175  histograms.h_looperdzpv[count]->Fill(dzpv);
2176  histograms.h_looperdxypvzoomed[count]->Fill(dxypv);
2177  histograms.h_looperdzpvzoomed[count]->Fill(dzpv);
2178  }
2179  if (simPVPosition) {
2180  histograms.h_looper_simpvz[count]->Fill(simpvz);
2181  }
2182  }
2183  histograms.h_looperhit[count]->Fill(nhits);
2184  histograms.h_looperlayer[count]->Fill(nlayers);
2185  histograms.h_looperpixellayer[count]->Fill(nPixelLayers);
2186  histograms.h_looper3Dlayer[count]->Fill(n3DLayers);
2187  histograms.h_looperpu[count]->Fill(numVertices);
2188  }
2189  if (!isSigMatched) {
2190  if (paramsValid) {
2191  histograms.h_pileupeta[count]->Fill(eta);
2192  histograms.h_pileupphi[count]->Fill(phi);
2193  histograms.h_pileuppT[count]->Fill(pt);
2194  histograms.h_pileuppTvseta[count]->Fill(eta, pt);
2195  histograms.h_pileupdxy[count]->Fill(dxy);
2196  histograms.h_pileupdz[count]->Fill(dz);
2197  histograms.h_pileupchi2[count]->Fill(chi2);
2198  histograms.h_pileupchi2prob[count]->Fill(chi2prob);
2199  histograms.h_pileupvertpos[count]->Fill(vertxy);
2200  histograms.h_pileupzpos[count]->Fill(vertz);
2201  histograms.h_pileupdr[count]->Fill(dR);
2202  histograms.h_pileupdrj[count]->Fill(dRJet);
2203  if (fillSeedingLayerSets)
2204  histograms.h_pileup_seedingLayerSet[count]->Fill(seedingLayerSetBin);
2205  if (pvPosition) {
2206  histograms.h_pileupdxypv[count]->Fill(dxypv);
2207  histograms.h_pileupdzpv[count]->Fill(dzpv);
2208  histograms.h_pileupdxypvzoomed[count]->Fill(dxypv);
2209  histograms.h_pileupdzpvzoomed[count]->Fill(dzpv);
2210 
2211  histograms.h_pileup_dzpvcut[count]->Fill(std::abs(dzpv));
2212  histograms.h_pileup_dzpvsigcut[count]->Fill(std::abs(dzpvsig));
2213  histograms.h_pileup_dzpvcut_pt[count]->Fill(std::abs(dzpv), pt);
2214  histograms.h_pileup_dzpvsigcut_pt[count]->Fill(std::abs(dzpvsig), pt);
2215  }
2216  if (simPVPosition) {
2217  histograms.h_pileup_simpvz[count]->Fill(simpvz);
2218  }
2219  }
2220  histograms.h_pileuphit[count]->Fill(nhits);
2221  histograms.h_pileuplayer[count]->Fill(nlayers);
2222  histograms.h_pileuppixellayer[count]->Fill(nPixelLayers);
2223  histograms.h_pileup3Dlayer[count]->Fill(n3DLayers);
2224  histograms.h_pileuppu[count]->Fill(numVertices);
2225  }
2226  } else { // !isMatched
2227  fillMVAHistos(
2228  pt, histograms.h_fake_mva_vs_pt[count], histograms.h_fake_mva_vs_pt_hp[count], mvas, selectsLoose, selectsHP);
2229  fillMVAHistos(
2230  eta, histograms.h_fake_mva_vs_eta[count], histograms.h_fake_mva_vs_eta_hp[count], mvas, selectsLoose, selectsHP);
2231  }
2232 }
2233 
2235  int count,
2236  const reco::Track& track) const {
2237  //nchi2 and hits global distributions
2238  histograms.h_hits[count]->Fill(track.numberOfValidHits());
2239  histograms.h_losthits[count]->Fill(track.numberOfLostHits());
2240  histograms.h_nmisslayers_inner[count]->Fill(
2241  track.hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS));
2242  histograms.h_nmisslayers_outer[count]->Fill(
2243  track.hitPattern().numberOfLostHits(reco::HitPattern::MISSING_OUTER_HITS));
2245  return;
2246 
2247  histograms.h_nchi2[count]->Fill(track.normalizedChi2());
2248  histograms.h_nchi2_prob[count]->Fill(TMath::Prob(track.chi2(), (int)track.ndof()));
2249  histograms.chi2_vs_nhits[count]->Fill(track.numberOfValidHits(), track.normalizedChi2());
2250  histograms.h_charge[count]->Fill(track.charge());
2251 
2252  //chi2 and #hit vs eta: fill 2D histos
2253  const auto eta = getEta(track.eta());
2254  histograms.chi2_vs_eta[count]->Fill(eta, track.normalizedChi2());
2255  histograms.nhits_vs_eta[count]->Fill(eta, track.numberOfValidHits());
2256  const auto pt = getPt(sqrt(track.momentum().perp2()));
2257  histograms.chi2_vs_pt[count]->Fill(pt, track.normalizedChi2());
2258  const auto pxbHits = track.hitPattern().numberOfValidPixelBarrelHits();
2259  const auto pxfHits = track.hitPattern().numberOfValidPixelEndcapHits();
2260  const auto tibHits = track.hitPattern().numberOfValidStripTIBHits();
2261  const auto tidHits = track.hitPattern().numberOfValidStripTIDHits();
2262  const auto tobHits = track.hitPattern().numberOfValidStripTOBHits();
2263  const auto tecHits = track.hitPattern().numberOfValidStripTECHits();
2264  histograms.nPXBhits_vs_eta[count]->Fill(eta, pxbHits);
2265  histograms.nPXFhits_vs_eta[count]->Fill(eta, pxfHits);
2266  histograms.nPXLhits_vs_eta[count]->Fill(eta, pxbHits + pxfHits);
2267  histograms.nTIBhits_vs_eta[count]->Fill(eta, tibHits);
2268  histograms.nTIDhits_vs_eta[count]->Fill(eta, tidHits);
2269  histograms.nTOBhits_vs_eta[count]->Fill(eta, tobHits);
2270  histograms.nTEChits_vs_eta[count]->Fill(eta, tecHits);
2271  histograms.nSTRIPhits_vs_eta[count]->Fill(eta, tibHits + tidHits + tobHits + tecHits);
2272  histograms.nLayersWithMeas_vs_eta[count]->Fill(eta, track.hitPattern().trackerLayersWithMeasurement());
2273  histograms.nPXLlayersWithMeas_vs_eta[count]->Fill(eta, track.hitPattern().pixelLayersWithMeasurement());
2274  if (doMTDPlots_) {
2275  // const auto mtdHits = track.hitPattern().numberOfValidTimingHits();
2276  const auto btlHits = track.hitPattern().numberOfValidTimingBTLHits();
2277  const auto etlHits = track.hitPattern().numberOfValidTimingETLHits();
2278  histograms.nMTDhits_vs_eta[count]->Fill(eta, btlHits + etlHits);
2279  histograms.nBTLhits_vs_eta[count]->Fill(eta, btlHits);
2280  histograms.nETLhits_vs_eta[count]->Fill(eta, etlHits);
2281  }
2282  int LayersAll = track.hitPattern().stripLayersWithMeasurement();
2283  int Layers2D = track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
2284  int Layers1D = LayersAll - Layers2D;
2285  histograms.nSTRIPlayersWithMeas_vs_eta[count]->Fill(eta, LayersAll);
2286  histograms.nSTRIPlayersWith1dMeas_vs_eta[count]->Fill(eta, Layers1D);
2287  histograms.nSTRIPlayersWith2dMeas_vs_eta[count]->Fill(eta, Layers2D);
2288 
2289  histograms.nlosthits_vs_eta[count]->Fill(eta, track.numberOfLostHits());
2290 }
2291 
2293  int count,
2294  int assTracks,
2295  int numRecoTracks,
2296  int numRecoTracksSelected,
2297  int numSimTracksSelected) const {
2298  histograms.h_tracks[count]->Fill(assTracks);
2299  histograms.h_fakes[count]->Fill(numRecoTracks - assTracks);
2300  if (histograms.nrec_vs_nsim[count])
2301  histograms.nrec_vs_nsim[count]->Fill(numSimTracksSelected, numRecoTracksSelected);
2302 }
2303 
2305  int count,
2306  const TrackingParticle::Vector& momentumTP,
2307  const TrackingParticle::Point& vertexTP,
2308  int chargeTP,
2309  const reco::Track& track,
2310  const math::XYZPoint& bsPosition) const {
2312  return;
2313 
2314  // evaluation of TP parameters
2315  double qoverpSim = chargeTP / sqrt(momentumTP.x() * momentumTP.x() + momentumTP.y() * momentumTP.y() +
2316  momentumTP.z() * momentumTP.z());
2317  double lambdaSim = M_PI / 2 - momentumTP.theta();
2318  double phiSim = momentumTP.phi();
2319  double dxySim = TrackingParticleIP::dxy(vertexTP, momentumTP, bsPosition);
2320  double dzSim = TrackingParticleIP::dz(vertexTP, momentumTP, bsPosition);
2321 
2322  // reco::Track::ParameterVector rParameters = track.parameters(); // UNUSED
2323 
2324  double qoverpRec(0);
2325  double qoverpErrorRec(0);
2326  double ptRec(0);
2327  double ptErrorRec(0);
2328  double lambdaRec(0);
2329  double lambdaErrorRec(0);
2330  double phiRec(0);
2331  double phiErrorRec(0);
2332 
2333  /* TO BE FIXED LATER -----------
2334  //loop to decide whether to take gsfTrack (utilisation of mode-function) or common track
2335  const GsfTrack* gsfTrack(0);
2336  if(useGsf){
2337  gsfTrack = dynamic_cast<const GsfTrack*>(&(*track));
2338  if (gsfTrack==0) edm::LogInfo("TrackValidator") << "Trying to access mode for a non-GsfTrack";
2339  }
2340 
2341  if (gsfTrack) {
2342  // get values from mode
2343  getRecoMomentum(*gsfTrack, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
2344  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
2345  }
2346 
2347  else {
2348  // get values from track (without mode)
2349  getRecoMomentum(*track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec,
2350  lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
2351  }
2352  */
2353  getRecoMomentum(track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec, lambdaRec, lambdaErrorRec, phiRec, phiErrorRec);
2354  // -------------
2355 
2356  double ptError = ptErrorRec;
2357  double ptres = ptRec - sqrt(momentumTP.perp2());
2358  double etares = track.eta() - momentumTP.Eta();
2359 
2360  double dxyRec = track.dxy(bsPosition);
2361  double dzRec = track.dz(bsPosition);
2362 
2363  const auto phiRes = phiRec - phiSim;
2364  const auto dxyRes = dxyRec - dxySim;
2365  const auto dzRes = dzRec - dzSim;
2366  const auto cotThetaRes = 1 / tan(M_PI * 0.5 - lambdaRec) - 1 / tan(M_PI * 0.5 - lambdaSim);
2367 
2368  // eta residue; pt, k, theta, phi, dxy, dz pulls
2369  double qoverpPull = (qoverpRec - qoverpSim) / qoverpErrorRec;
2370  double thetaPull = (lambdaRec - lambdaSim) / lambdaErrorRec;
2371  double phiPull = phiRes / phiErrorRec;
2372  double dxyPull = dxyRes / track.dxyError();
2373  double dzPull = dzRes / track.dzError();
2374 
2375 #ifdef EDM_ML_DEBUG
2376  double contrib_Qoverp = ((qoverpRec - qoverpSim) / qoverpErrorRec) * ((qoverpRec - qoverpSim) / qoverpErrorRec) / 5;
2377  double contrib_dxy = ((dxyRec - dxySim) / track.dxyError()) * ((dxyRec - dxySim) / track.dxyError()) / 5;
2378  double contrib_dz = ((dzRec - dzSim) / track.dzError()) * ((dzRec - dzSim) / track.dzError()) / 5;
2379  double contrib_theta = ((lambdaRec - lambdaSim) / lambdaErrorRec) * ((lambdaRec - lambdaSim) / lambdaErrorRec) / 5;
2380  double contrib_phi = ((phiRec - phiSim) / phiErrorRec) * ((phiRec - phiSim) / phiErrorRec) / 5;
2381 
2382  LogTrace("TrackValidatorTEST")
2383  //<< "assocChi2=" << tp.begin()->second << "\n"
2384  << ""
2385  << "\n"
2386  << "ptREC=" << ptRec << "\n"
2387  << "etaREC=" << track.eta() << "\n"
2388  << "qoverpREC=" << qoverpRec << "\n"
2389  << "dxyREC=" << dxyRec << "\n"
2390  << "dzREC=" << dzRec << "\n"
2391  << "thetaREC=" << track.theta() << "\n"
2392  << "phiREC=" << phiRec << "\n"
2393  << ""
2394  << "\n"
2395  << "qoverpError()=" << qoverpErrorRec << "\n"
2396  << "dxyError()=" << track.dxyError() << "\n"
2397  << "dzError()=" << track.dzError() << "\n"
2398  << "thetaError()=" << lambdaErrorRec << "\n"
2399  << "phiError()=" << phiErrorRec << "\n"
2400  << ""
2401  << "\n"
2402  << "ptSIM=" << sqrt(momentumTP.perp2()) << "\n"
2403  << "etaSIM=" << momentumTP.Eta() << "\n"
2404  << "qoverpSIM=" << qoverpSim << "\n"
2405  << "dxySIM=" << dxySim << "\n"
2406  << "dzSIM=" << dzSim << "\n"
2407  << "thetaSIM=" << M_PI / 2 - lambdaSim << "\n"
2408  << "phiSIM=" << phiSim << "\n"
2409  << ""
2410  << "\n"
2411  << "contrib_Qoverp=" << contrib_Qoverp << "\n"
2412  << "contrib_dxy=" << contrib_dxy << "\n"
2413  << "contrib_dz=" << contrib_dz << "\n"
2414  << "contrib_theta=" << contrib_theta << "\n"
2415  << "contrib_phi=" << contrib_phi << "\n"
2416  << ""
2417  << "\n"
2418  << "chi2PULL=" << contrib_Qoverp + contrib_dxy + contrib_dz + contrib_theta + contrib_phi << "\n";
2419 #endif
2420 
2421  histograms.h_pullQoverp[count]->Fill(qoverpPull);
2422  histograms.h_pullTheta[count]->Fill(thetaPull);
2423  histograms.h_pullPhi[count]->Fill(phiPull);
2424  histograms.h_pullDxy[count]->Fill(dxyPull);
2425  histograms.h_pullDz[count]->Fill(dzPull);
2426 
2427  const auto etaSim = getEta(momentumTP.eta());
2428  const auto ptSim = getPt(sqrt(momentumTP.perp2()));
2429 
2430  histograms.h_pt[count]->Fill(ptres / ptError);
2431  histograms.h_eta[count]->Fill(etares);
2432  //histograms.etares_vs_eta[count]->Fill(getEta(track.eta()),etares);
2433  histograms.etares_vs_eta[count]->Fill(etaSim, etares);
2434 
2435  //resolution of track params: fill 2D histos
2436  histograms.dxyres_vs_eta[count]->Fill(etaSim, dxyRes);
2437  histograms.ptres_vs_eta[count]->Fill(etaSim, ptres / ptRec);
2438  histograms.dzres_vs_eta[count]->Fill(etaSim, dzRes);
2439  histograms.phires_vs_eta[count]->Fill(etaSim, phiRes);
2440  histograms.cotThetares_vs_eta[count]->Fill(etaSim, cotThetaRes);
2441 
2442  //same as before but vs pT
2443  histograms.dxyres_vs_pt[count]->Fill(ptSim, dxyRes);
2444  histograms.ptres_vs_pt[count]->Fill(ptSim, ptres / ptRec);
2445  histograms.dzres_vs_pt[count]->Fill(ptSim, dzRes);
2446  histograms.phires_vs_pt[count]->Fill(ptSim, phiRes);
2447  histograms.cotThetares_vs_pt[count]->Fill(ptSim, cotThetaRes);
2448 
2449  //pulls of track params vs eta: fill 2D histos
2450  histograms.dxypull_vs_eta[count]->Fill(etaSim, dxyPull);
2451  histograms.ptpull_vs_eta[count]->Fill(etaSim, ptres / ptError);
2452  histograms.dzpull_vs_eta[count]->Fill(etaSim, dzPull);
2453  histograms.phipull_vs_eta[count]->Fill(etaSim, phiPull);
2454  histograms.thetapull_vs_eta[count]->Fill(etaSim, thetaPull);
2455 
2456  //plots vs phi
2457  histograms.nhits_vs_phi[count]->Fill(phiRec, track.numberOfValidHits());
2458  histograms.chi2_vs_phi[count]->Fill(phiRec, track.normalizedChi2());
2459  histograms.ptmean_vs_eta_phi[count]->Fill(phiRec, getEta(track.eta()), ptRec);
2460  histograms.phimean_vs_eta_phi[count]->Fill(phiRec, getEta(track.eta()), phiRec);
2461 
2462  histograms.dxyres_vs_phi[count]->Fill(phiSim, dxyRes);
2463  histograms.ptres_vs_phi[count]->Fill(phiSim, ptres / ptRec);
2464  histograms.dzres_vs_phi[count]->Fill(phiSim, dzRes);
2465  histograms.phires_vs_phi[count]->Fill(phiSim, phiRes);
2466 
2467  histograms.ptpull_vs_phi[count]->Fill(phiSim, ptres / ptError);
2468  histograms.phipull_vs_phi[count]->Fill(phiSim, phiPull);
2469  histograms.thetapull_vs_phi[count]->Fill(phiSim, thetaPull);
2470 }
2471 
2473  double& pt,
2474  double& ptError,
2475  double& qoverp,
2476  double& qoverpError,
2477  double& lambda,
2478  double& lambdaError,
2479  double& phi,
2480  double& phiError) const {
2481  pt = track.pt();
2482  ptError = track.ptError();
2483  qoverp = track.qoverp();
2484  qoverpError = track.qoverpError();
2485  lambda = track.lambda();
2486  lambdaError = track.lambdaError();
2487  phi = track.phi();
2488  phiError = track.phiError();
2489  // cout <<"test1" << endl;
2490 }
2491 
2493  double& pt,
2494  double& ptError,
2495  double& qoverp,
2496  double& qoverpError,
2497  double& lambda,
2498  double& lambdaError,
2499  double& phi,
2500  double& phiError) const {
2501  pt = gsfTrack.ptMode();
2502  ptError = gsfTrack.ptModeError();
2503  qoverp = gsfTrack.qoverpMode();
2504  qoverpError = gsfTrack.qoverpModeError();
2505  lambda = gsfTrack.lambdaMode();
2506  lambdaError = gsfTrack.lambdaModeError();
2507  phi = gsfTrack.phiMode();
2508  phiError = gsfTrack.phiModeError();
2509  // cout <<"test2" << endl;
2510 }
2511 
2513  if (useFabsEta)
2514  return fabs(eta);
2515  else
2516  return eta;
2517 }
2518 
2520  if (useInvPt && pt != 0)
2521  return 1 / pt;
2522  else
2523  return pt;
2524 }
2525 
2527  const TrackerTopology& ttopo) const {
2528  if (track.seedRef().isNull() || !track.seedRef().isAvailable())
2529  return seedingLayerSetNames.size() - 1;
2530 
2531  const TrajectorySeed& seed = *(track.seedRef());
2532  const auto hitRange = seed.recHits();
2533  SeedingLayerSetId searchId;
2534  const int nhits = std::distance(hitRange.first, hitRange.second);
2535  if (nhits > static_cast<int>(std::tuple_size<SeedingLayerSetId>::value)) {
2536  LogDebug("TrackValidator") << "Got seed with " << nhits << " hits, but I have a hard-coded maximum of "
2538  << ", classifying the seed as 'unknown'. Please increase the maximum in "
2539  "MTVHistoProducerAlgoForTracker.h if needed.";
2540  return seedingLayerSetNames.size() - 1;
2541  }
2542  int i = 0;
2543  for (auto iHit = hitRange.first; iHit != hitRange.second; ++iHit, ++i) {
2544  DetId detId = iHit->geographicalId();
2545 
2546  if (detId.det() != DetId::Tracker) {
2547  throw cms::Exception("LogicError") << "Encountered seed hit detId " << detId.rawId() << " not from Tracker, but "
2548  << detId.det();
2549  }
2550 
2552  bool subdetStrip = false;
2553  switch (detId.subdetId()) {
2556  break;
2559  break;
2560  case StripSubdetector::TIB:
2561  subdet = GeomDetEnumerators::TIB;
2562  subdetStrip = true;
2563  break;
2564  case StripSubdetector::TID:
2565  subdet = GeomDetEnumerators::TID;
2566  subdetStrip = true;
2567  break;
2568  case StripSubdetector::TOB:
2569  subdet = GeomDetEnumerators::TOB;
2570  subdetStrip = true;
2571  break;
2572  case StripSubdetector::TEC:
2573  subdet = GeomDetEnumerators::TEC;
2574  subdetStrip = true;
2575  break;
2576  default:
2577  throw cms::Exception("LogicError") << "Unknown subdetId " << detId.subdetId();
2578  };
2579 
2580  TrackerDetSide side = static_cast<TrackerDetSide>(ttopo.side(detId));
2581 
2582  // Even with the recent addition of
2583  // SeedingLayerSetsBuilder::fillDescription() this assumption is a
2584  // bit ugly.
2585  const bool isStripMono = subdetStrip && trackerHitRTTI::isSingle(*iHit);
2586  searchId[i] =
2587  SeedingLayerId(SeedingLayerSetsBuilder::SeedingLayerId(subdet, side, ttopo.layer(detId)), isStripMono);
2588  }
2589  auto found = seedingLayerSetToBin.find(searchId);
2590  if (found == seedingLayerSetToBin.end()) {
2591  return seedingLayerSetNames.size() - 1;
2592  }
2593  return found->second;
2594 }
2595 
2597  int count,
2598  const reco::GenParticle& tp,
2599  const TrackingParticle::Vector& momentumTP,
2600  const TrackingParticle::Point& vertexTP,
2601  double dxySim,
2602  double dzSim,
2603  int nSimHits,
2604  const reco::Track* track,
2605  int numVertices) const {
2606  bool isMatched = track;
2607 
2608  if ((*GpSelectorForEfficiencyVsEta)(tp)) {
2609  //effic vs eta
2610  histograms.h_simuleta[count]->Fill(getEta(momentumTP.eta()));
2611  if (isMatched)
2612  histograms.h_assoceta[count]->Fill(getEta(momentumTP.eta()));
2613  }
2614 
2615  if ((*GpSelectorForEfficiencyVsPhi)(tp)) {
2616  histograms.h_simulphi[count]->Fill(momentumTP.phi());
2617  if (isMatched)
2618  histograms.h_assocphi[count]->Fill(momentumTP.phi());
2619  //effic vs hits
2620  histograms.h_simulhit[count]->Fill((int)nSimHits);
2621  if (isMatched) {
2622  histograms.h_assochit[count]->Fill((int)nSimHits);
2623  if (histograms.nrecHit_vs_nsimHit_sim2rec[count])
2624  histograms.nrecHit_vs_nsimHit_sim2rec[count]->Fill(track->numberOfValidHits(), nSimHits);
2625  }
2626  //effic vs pu
2627  histograms.h_simulpu[count]->Fill(numVertices);
2628  if (isMatched)
2629  histograms.h_assocpu[count]->Fill(numVertices);
2630  //efficiency vs dR
2631  //not implemented for now
2632  }
2633 
2634  if ((*GpSelectorForEfficiencyVsPt)(tp)) {
2635  histograms.h_simulpT[count]->Fill(getPt(sqrt(momentumTP.perp2())));
2636  histograms.h_simulpTvseta[count]->Fill(getEta(momentumTP.eta()), getPt(sqrt(momentumTP.perp2())));
2637  if (isMatched) {
2638  histograms.h_assocpT[count]->Fill(getPt(sqrt(momentumTP.perp2())));
2639  histograms.h_assocpTvseta[count]->Fill(getEta(momentumTP.eta()), getPt(sqrt(momentumTP.perp2())));
2640  }
2641  }
2642 
2644  histograms.h_simuldxy[count]->Fill(dxySim);
2645  if (isMatched)
2646  histograms.h_assocdxy[count]->Fill(dxySim);
2647 
2648  histograms.h_simulvertpos[count]->Fill(sqrt(vertexTP.perp2()));
2649  if (isMatched)
2650  histograms.h_assocvertpos[count]->Fill(sqrt(vertexTP.perp2()));
2651  }
2652 
2654  histograms.h_simuldz[count]->Fill(dzSim);
2655  if (isMatched)
2656  histograms.h_assocdz[count]->Fill(dzSim);
2657 
2658  histograms.h_simulzpos[count]->Fill(vertexTP.z());
2659  if (isMatched)
2660  histograms.h_assoczpos[count]->Fill(vertexTP.z());
2661  }
2662 }
2663 
2665  int count,
2666  int seedsFitFailed,
2667  int seedsTotal) const {
2668  histograms.h_seedsFitFailed[count]->Fill(seedsFitFailed);
2669  histograms.h_seedsFitFailedFraction[count]->Fill(static_cast<double>(seedsFitFailed) / seedsTotal);
2670 }
MTVHistoProducerAlgoForTracker::trackSelectorVsEta
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsEta
Definition: MTVHistoProducerAlgoForTracker.h:289
reco::GsfTrack::ptMode
double ptMode() const
track transverse momentum from mode
Definition: GsfTrack.h:47
MTVHistoProducerAlgoForTracker::maxPt
double maxPt
Definition: MTVHistoProducerAlgoForTracker.h:303
SummaryClient_cfi.labels
labels
Definition: SummaryClient_cfi.py:61
writedatasetfile.args
args
Definition: writedatasetfile.py:18
GeomDetEnumerators::SubDetector
SubDetector
Definition: GeomDetEnumerators.h:10
reco::HitPattern::MISSING_OUTER_HITS
Definition: HitPattern.h:155
MTVHistoProducerAlgoForTracker::bookRecoPVAssociationHistos
void bookRecoPVAssociationHistos(DQMStore::IBooker &ibook, Histograms &histograms)
Definition: MTVHistoProducerAlgoForTracker.cc:1420
dqm::impl::MonitorElement
Definition: MonitorElement.h:98
reco::GsfTrack::lambdaModeError
double lambdaModeError() const
error on lambda from mode
Definition: GsfTrack.h:92
MTVHistoProducerAlgoForTracker::maxHit
double maxHit
Definition: MTVHistoProducerAlgoForTracker.h:307
TrackerTopology::side
unsigned int side(const DetId &id) const
Definition: TrackerTopology.cc:28
reco::GsfTrack::phiModeError
double phiModeError() const
error on phi from mode
Definition: GsfTrack.h:96
ApeEstimator_cff.width
width
Definition: ApeEstimator_cff.py:24
MTVHistoProducerAlgoForTracker::nintTracks
int nintTracks
Definition: MTVHistoProducerAlgoForTracker.h:336
MTVHistoProducerAlgoForTracker::useInvPt
bool useInvPt
Definition: MTVHistoProducerAlgoForTracker.h:305
MTVHistoProducerAlgoForTracker::maxTracks
double maxTracks
Definition: MTVHistoProducerAlgoForTracker.h:335
electrons_cff.bool
bool
Definition: electrons_cff.py:372
mps_fire.i
i
Definition: mps_fire.py:355
MTVHistoProducerAlgoForTracker::minPu
double minPu
Definition: MTVHistoProducerAlgoForTracker.h:309
MTVHistoProducerAlgoForTracker::fill_duplicate_histos
void fill_duplicate_histos(const Histograms &histograms, int count, const reco::Track &track1, const reco::Track &track2) const
Definition: MTVHistoProducerAlgoForTracker.cc:1942
MTVHistoProducerAlgoForTracker::generalGpSelector
std::unique_ptr< GenParticleCustomSelector > generalGpSelector
Definition: MTVHistoProducerAlgoForTracker.h:293
MTVHistoProducerAlgoForTracker::minDxy
double minDxy
Definition: MTVHistoProducerAlgoForTracker.h:315
reco::GsfTrack::qoverpMode
double qoverpMode() const
q/p from mode
Definition: GsfTrack.h:39
MessageLogger.h
MTVHistoProducerAlgoForTracker::getSeedingLayerSetBin
unsigned int getSeedingLayerSetBin(const reco::Track &track, const TrackerTopology &ttopo) const
Definition: MTVHistoProducerAlgoForTracker.cc:2526
PixelSubdetector::PixelEndcap
Definition: PixelSubdetector.h:11
MTVHistoProducerAlgoForTracker::minDz
double minDz
Definition: MTVHistoProducerAlgoForTracker.h:317
PixelSubdetector::PixelBarrel
Definition: PixelSubdetector.h:11
GeomDetEnumerators::TID
Definition: GeomDetEnumerators.h:15
DeDxData.h
MTVHistoProducerAlgoForTracker::phiRes_rangeMin
double phiRes_rangeMin
Definition: MTVHistoProducerAlgoForTracker.h:348
MTVHistoProducerAlgoForTracker::bookSeedHistos
void bookSeedHistos(DQMStore::IBooker &ibook, Histograms &histograms)
Definition: MTVHistoProducerAlgoForTracker.cc:1574
MTVHistoProducerAlgoForTracker::GpSelectorForEfficiencyVsEta
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsEta
Definition: MTVHistoProducerAlgoForTracker.h:294
trackerHitRTTI::isSingle
bool isSingle(TrackingRecHit const &hit)
Definition: trackerHitRTTI.h:25
reco::GenParticle
Definition: GenParticle.h:21
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
MTVHistoProducerAlgoForTracker::TpSelectorForEfficiencyVsVTXR
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXR
Definition: MTVHistoProducerAlgoForTracker.h:286
MTVHistoProducerAlgoForTracker::nintDeDx
int nintDeDx
Definition: MTVHistoProducerAlgoForTracker.h:332
MTVHistoProducerAlgoForTracker::useFabsEta
bool useFabsEta
Definition: MTVHistoProducerAlgoForTracker.h:302
CalibrationSummaryClient_cfi.params
params
Definition: CalibrationSummaryClient_cfi.py:14
MTVHistoProducerAlgoForTracker::useLogPt
bool useLogPt
Definition: MTVHistoProducerAlgoForTracker.h:306
MTVHistoProducerAlgoForTracker::GpSelectorForEfficiencyVsPt
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPt
Definition: MTVHistoProducerAlgoForTracker.h:296
MTVHistoProducerAlgoForTracker::GpSelectorForEfficiencyVsVTXZ
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXZ
Definition: MTVHistoProducerAlgoForTracker.h:298
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackerTopology
Definition: TrackerTopology.h:16
dqm::implementation::IBooker::bookProfile2D
MonitorElement * bookProfile2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, double lowZ, double highZ, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:399
DetId::det
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
reco::GsfTrack::lambdaMode
double lambdaMode() const
Lambda angle from mode.
Definition: GsfTrack.h:43
GeomDetEnumerators::TIB
Definition: GeomDetEnumerators.h:13
MTVHistoProducerAlgoForTracker::maxMVA
double maxMVA
Definition: MTVHistoProducerAlgoForTracker.h:339
MTVHistoProducerAlgoForTracker::maxDeDx
double maxDeDx
Definition: MTVHistoProducerAlgoForTracker.h:331
l1GtPatternGenerator_cfi.bx
bx
Definition: l1GtPatternGenerator_cfi.py:18
MTVHistoProducerAlgoForTracker::fill_trackBased_histos
void fill_trackBased_histos(const Histograms &histograms, int count, int assTracks, int numRecoTracks, int numRecoTracksSelected, int numSimTracksSelected) const
Definition: MTVHistoProducerAlgoForTracker.cc:2292
MTVHistoProducerAlgoForTracker::maxLayers
double maxLayers
Definition: MTVHistoProducerAlgoForTracker.h:311
to
HLT_2018_cff.distance
distance
Definition: HLT_2018_cff.py:6417
MTVHistoProducerAlgoForTracker::maxdr
double maxdr
Definition: MTVHistoProducerAlgoForTracker.h:325
TrackerTopology::layer
unsigned int layer(const DetId &id) const
Definition: TrackerTopology.cc:47
GeomDetEnumerators::TOB
Definition: GeomDetEnumerators.h:14
MTVHistoProducerAlgoForTracker::TpSelectorForEfficiencyVsEta
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsEta
Definition: MTVHistoProducerAlgoForTracker.h:283
MTVHistoProducerAlgoForTracker::nintDzpvCum
int nintDzpvCum
Definition: MTVHistoProducerAlgoForTracker.h:358
MTVHistoProducerAlgoForTracker::trackSelectorVsPhi
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPhi
Definition: MTVHistoProducerAlgoForTracker.h:290
MTVHistoProducerAlgoForTracker::fill_ResoAndPull_recoTrack_histos
void fill_ResoAndPull_recoTrack_histos(const Histograms &histograms, int count, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, int chargeTP, const reco::Track &track, const math::XYZPoint &bsPosition) const
Definition: MTVHistoProducerAlgoForTracker.cc:2304
MTVHistoProducerAlgoForTracker::TpSelectorForEfficiencyVsPt
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPt
Definition: MTVHistoProducerAlgoForTracker.h:285
reco::TrackBase::originalAlgo
TrackAlgorithm originalAlgo() const
Definition: TrackBase.h:533
MTVHistoProducerAlgoForTracker::maxChi2
double maxChi2
Definition: MTVHistoProducerAlgoForTracker.h:329
TrackingParticle::Vector
math::XYZVectorD Vector
point in the space
Definition: TrackingParticle.h:37
edm::ParameterSet::copyForModify
void copyForModify(ParameterSet const &other)
Definition: ParameterSet.cc:93
reco::GsfTrack::phiMode
double phiMode() const
azimuthal angle of momentum vector from mode
Definition: GsfTrack.h:55
hltPixelTracks_cff.chi2
chi2
Definition: hltPixelTracks_cff.py:25
muonCosmicCompatibility_cfi.sharedHits
sharedHits
Definition: muonCosmicCompatibility_cfi.py:31
newFWLiteAna.found
found
Definition: newFWLiteAna.py:118
MTVHistoProducerAlgoForTracker::GpSelectorForEfficiencyVsPhi
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPhi
Definition: MTVHistoProducerAlgoForTracker.h:295
MTVHistoProducerAlgoForTracker::minHit
double minHit
Definition: MTVHistoProducerAlgoForTracker.h:307
MTVHistoProducerAlgoForTracker::dxyRes_rangeMax
double dxyRes_rangeMax
Definition: MTVHistoProducerAlgoForTracker.h:352
DetId
Definition: DetId.h:17
GeomDetEnumerators::PixelBarrel
Definition: GeomDetEnumerators.h:11
MTVHistoProducerAlgoForTracker::nintEta
int nintEta
Definition: MTVHistoProducerAlgoForTracker.h:301
MTVHistoProducerAlgoForTracker::minPt
double minPt
Definition: MTVHistoProducerAlgoForTracker.h:303
reco::GsfTrack
Definition: GsfTrack.h:12
MTVHistoProducerAlgoForTracker::nintPt
int nintPt
Definition: MTVHistoProducerAlgoForTracker.h:304
TrackingParticleIP::dxy
auto dxy(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
Definition: TrackingParticleIP.h:11
h
MTVHistoProducerAlgoForTracker::mindr
double mindr
Definition: MTVHistoProducerAlgoForTracker.h:325
TrackFwd.h
dqm::reco::DQMStore
dqm::legacy::DQMStore DQMStore
Definition: DQMStore.h:736
MTVHistoProducerAlgoForTracker::maxEta
double maxEta
Definition: MTVHistoProducerAlgoForTracker.h:300
dqm::legacy::DQMStore
Definition: DQMStore.h:727
MTVHistoProducerAlgoForTracker::bookSimTrackPVAssociationHistos
void bookSimTrackPVAssociationHistos(DQMStore::IBooker &ibook, Histograms &histograms)
Definition: MTVHistoProducerAlgoForTracker.cc:552
MTVHistoProducerAlgoForTracker::dzRes_rangeMin
double dzRes_rangeMin
Definition: MTVHistoProducerAlgoForTracker.h:354
MTVHistoProducerAlgoForTracker::minEta
double minEta
Definition: MTVHistoProducerAlgoForTracker.h:300
PVValHelper::eta
Definition: PVValidationHelpers.h:69
MTVHistoProducerAlgoForTracker::minZpos
double minZpos
Definition: MTVHistoProducerAlgoForTracker.h:323
MTVHistoProducerAlgoForTracker::phiRes_nbin
int phiRes_nbin
Definition: MTVHistoProducerAlgoForTracker.h:349
reco::DeDxData::numberOfMeasurements
unsigned int numberOfMeasurements() const
Definition: DeDxData.cc:18
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
TrackingParticle
Monte Carlo truth information used for tracking validation.
Definition: TrackingParticle.h:29
MTVHistoProducerAlgoForTracker::minVertpos
double minVertpos
Definition: MTVHistoProducerAlgoForTracker.h:320
MTVHistoProducerAlgoForTracker::nintLayers
int nintLayers
Definition: MTVHistoProducerAlgoForTracker.h:312
reco::DeDxData::numberOfSaturatedMeasurements
int numberOfSaturatedMeasurements() const
Definition: DeDxData.cc:20
reco::Track
Definition: Track.h:27
TrackerDetSide
TrackerDetSide
Definition: TrackerDetSide.h:4
dqm::implementation::IBooker::bookProfile
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:322
MTVHistoProducerAlgoForTracker::bookSimHistos
void bookSimHistos(DQMStore::IBooker &ibook, Histograms &histograms)
Definition: MTVHistoProducerAlgoForTracker.cc:394
MTVHistoProducerAlgoForTracker::maxZpos
double maxZpos
Definition: MTVHistoProducerAlgoForTracker.h:323
MTVHistoProducerAlgoForTracker::nintDz
int nintDz
Definition: MTVHistoProducerAlgoForTracker.h:318
MTVHistoProducerAlgoForTracker.h
SeedingLayerSetsBuilder::SeedingLayerId
std::tuple< GeomDetEnumerators::SubDetector, TrackerDetSide, int > SeedingLayerId
Definition: SeedingLayerSetsBuilder.h:33
MTVHistoProducerAlgoForTracker::nintDxy
int nintDxy
Definition: MTVHistoProducerAlgoForTracker.h:316
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
reco::TrackBase::algoName
std::string algoName() const
Definition: TrackBase.h:535
MTVHistoProducerAlgoForTracker::minPhi
double minPhi
Definition: MTVHistoProducerAlgoForTracker.h:313
MTVHistoProducerAlgoForTracker::fill_simTrackBased_histos
void fill_simTrackBased_histos(const Histograms &histograms, int numSimTracks) const
Definition: MTVHistoProducerAlgoForTracker.cc:1949
nhits
Definition: HIMultiTrackSelector.h:42
Args
Definition: hcalPublishConditions.cc:31
cmsswSequenceInfo.tp
tp
Definition: cmsswSequenceInfo.py:17
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
MTVHistoProducerAlgoForTracker::minVertcount
double minVertcount
Definition: MTVHistoProducerAlgoForTracker.h:333
MTVHistoProducerAlgoForTracker::maxPVz
double maxPVz
Definition: MTVHistoProducerAlgoForTracker.h:337
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
MTVHistoProducerAlgoForTracker::nintVertpos
int nintVertpos
Definition: MTVHistoProducerAlgoForTracker.h:321
edm::LogWarning
Definition: MessageLogger.h:141
MTVHistoProducerAlgoForTracker::bookMVAHistos
void bookMVAHistos(DQMStore::IBooker &ibook, Histograms &histograms, size_t nMVAs)
Definition: MTVHistoProducerAlgoForTracker.cc:1581
edm::ParameterSet::eraseSimpleParameter
void eraseSimpleParameter(std::string const &name)
Definition: ParameterSet.cc:124
trackFromSeedFitFailed
bool trackFromSeedFitFailed(const reco::Track &track)
Definition: trackFromSeedFitFailed.h:6
trackerHitRTTI::isMatched
bool isMatched(TrackingRecHit const &hit)
Definition: trackerHitRTTI.h:32
LogDebug
#define LogDebug(id)
Definition: MessageLogger.h:670
trackFromSeedFitFailed.h
MTVHistoProducerAlgoForTracker::minPVz
double minPVz
Definition: MTVHistoProducerAlgoForTracker.h:337
edm::ParameterSet
Definition: ParameterSet.h:36
math::XYZPoint
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
reco::modules
Definition: IMASelector.h:46
DetId::Tracker
Definition: DetId.h:25
MTVHistoProducerAlgoForTracker::phiRes_rangeMax
double phiRes_rangeMax
Definition: MTVHistoProducerAlgoForTracker.h:348
MTVHistoProducerAlgoForTracker::minLayers
double minLayers
Definition: MTVHistoProducerAlgoForTracker.h:311
MTVHistoProducerAlgoForTracker::doMTDPlots_
const bool doMTDPlots_
Definition: MTVHistoProducerAlgoForTracker.h:343
MTVHistoProducerAlgoForTracker::doSeedPlots_
const bool doSeedPlots_
Definition: MTVHistoProducerAlgoForTracker.h:342
MultiTrackValidator_cfi.doSeedPlots
doSeedPlots
Definition: MultiTrackValidator_cfi.py:97
MTVHistoProducerAlgoForTracker::SeedingLayerSetId
std::array< SeedingLayerId, 4 > SeedingLayerSetId
Definition: MTVHistoProducerAlgoForTracker.h:365
MTVHistoProducerAlgoForTracker::trackSelectorVsPt
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPt
Definition: MTVHistoProducerAlgoForTracker.h:291
MTVHistoProducerAlgoForTracker::SeedingLayerId
std::tuple< SeedingLayerSetsBuilder::SeedingLayerId, bool > SeedingLayerId
Definition: MTVHistoProducerAlgoForTracker.h:364
GeomDetEnumerators::TEC
Definition: GeomDetEnumerators.h:16
KineDebug3::count
void count()
Definition: KinematicConstrainedVertexUpdatorT.h:21
MTVHistoProducerAlgoForTracker::minMVA
double minMVA
Definition: MTVHistoProducerAlgoForTracker.h:339
MTVHistoProducerAlgoForTracker::nintPhi
int nintPhi
Definition: MTVHistoProducerAlgoForTracker.h:314
MTVHistoProducerAlgoForTracker::maxVertcount
double maxVertcount
Definition: MTVHistoProducerAlgoForTracker.h:333
MTVHistoProducerAlgoForTracker::maxDz
double maxDz
Definition: MTVHistoProducerAlgoForTracker.h:317
edm::ParameterSet::addParameter
void addParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:124
funct::tan
Tan< T >::type tan(const T &t)
Definition: Tan.h:22
MTVHistoProducerAlgoForTracker::maxVertpos
double maxVertpos
Definition: MTVHistoProducerAlgoForTracker.h:320
createfilelist.int
int
Definition: createfilelist.py:10
MTVHistoProducerAlgoForTracker::maxDxy
double maxDxy
Definition: MTVHistoProducerAlgoForTracker.h:315
MTVHistoProducerAlgoForTracker::nintdrj
int nintdrj
Definition: MTVHistoProducerAlgoForTracker.h:328
MTVHistoProducerAlgoForTracker::TpSelectorForEfficiencyVsVTXZ
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXZ
Definition: MTVHistoProducerAlgoForTracker.h:287
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:50
HcalObjRepresent::setBinLabels
void setBinLabels(std::vector< TH2F > &depth)
Definition: HcalObjRepresent.h:548
MTVHistoProducerAlgoForTracker::maxDzpvCum
double maxDzpvCum
Definition: MTVHistoProducerAlgoForTracker.h:357
histograms
Definition: histograms.py:1
MTVHistoProducerAlgoForTracker::cotThetaRes_rangeMin
double cotThetaRes_rangeMin
Definition: MTVHistoProducerAlgoForTracker.h:350
MTVHistoProducerAlgoForTracker::nintdr
int nintdr
Definition: MTVHistoProducerAlgoForTracker.h:326
MTVHistoProducerAlgoForTracker::useLogVertpos
bool useLogVertpos
Definition: MTVHistoProducerAlgoForTracker.h:322
MTVHistoProducerAlgoForTrackerHistograms
Definition: MTVHistoProducerAlgoForTracker.h:29
SeedingLayerSetsBuilder::nameToEnumId
static SeedingLayerId nameToEnumId(const std::string &name)
Definition: SeedingLayerSetsBuilder.cc:32
MTVHistoProducerAlgoForTracker::getRecoMomentum
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)
Definition: MTVHistoProducerAlgoForTracker.cc:2472
ValueMap.h
MTVHistoProducerAlgoForTracker::minDeDx
double minDeDx
Definition: MTVHistoProducerAlgoForTracker.h:331
MTVHistoProducerAlgoForTracker::nintHit
int nintHit
Definition: MTVHistoProducerAlgoForTracker.h:308
DDAxes::phi
MTVHistoProducerAlgoForTracker::mindrj
double mindrj
Definition: MTVHistoProducerAlgoForTracker.h:327
MTVHistoProducerAlgoForTracker::getEta
double getEta(double eta) const
Definition: MTVHistoProducerAlgoForTracker.cc:2512
MTVHistoProducerAlgoForTracker::minTracks
double minTracks
Definition: MTVHistoProducerAlgoForTracker.h:335
MTVHistoProducerAlgoForTracker::fill_dedx_recoTrack_histos
void fill_dedx_recoTrack_histos(const Histograms &histograms, int count, const edm::RefToBase< reco::Track > &trackref, const std::vector< const edm::ValueMap< reco::DeDxData > * > &v_dEdx) const
Definition: MTVHistoProducerAlgoForTracker.cc:1954
std
Definition: JetResolutionObject.h:76
DetId::rawId
constexpr uint32_t rawId() const
get the raw id
Definition: DetId.h:57
Ref.h
MTVHistoProducerAlgoForTracker::ptRes_rangeMin
double ptRes_rangeMin
Definition: MTVHistoProducerAlgoForTracker.h:346
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
MTVHistoProducerAlgoForTracker::getPt
double getPt(double pt) const
Definition: MTVHistoProducerAlgoForTracker.cc:2519
reco::DeDxData::dEdx
float dEdx() const
Definition: DeDxData.cc:11
PVValHelper::dxy
Definition: PVValidationHelpers.h:47
MTVHistoProducerAlgoForTracker::dxyDzZoom
double dxyDzZoom
Definition: MTVHistoProducerAlgoForTracker.h:319
MTVHistoProducerAlgoForTracker::nintZpos
int nintZpos
Definition: MTVHistoProducerAlgoForTracker.h:324
reco::TrackBase::algoSize
Definition: TrackBase.h:141
MTVHistoProducerAlgoForTracker::fill_generic_recoTrack_histos
void fill_generic_recoTrack_histos(const Histograms &histograms, int count, const reco::Track &track, const TrackerTopology &ttopo, const math::XYZPoint &bsPosition, const math::XYZPoint *pvPosition, const TrackingVertex::LorentzVector *simPVPosition, bool isMatched, bool isSigMatched, bool isChargeMatched, int numAssocRecoTracks, int numVertices, int nSimHits, double sharedFraction, double dR, double dR_jet, const std::vector< float > &mvas, unsigned int selectsLoose, unsigned int selectsHP) const
Definition: MTVHistoProducerAlgoForTracker.cc:1968
PVValHelper::dz
Definition: PVValidationHelpers.h:50
edm::ValueMap
Definition: ValueMap.h:107
relativeConstraints.value
value
Definition: relativeConstraints.py:53
dqm::implementation::IBooker::book2D
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
Exception
Definition: hltDiff.cc:246
reco::HitPattern::MISSING_INNER_HITS
Definition: HitPattern.h:155
MTVHistoProducerAlgoForTracker::nintPu
int nintPu
Definition: MTVHistoProducerAlgoForTracker.h:310
MTVHistoProducerAlgoForTracker::nintDzpvsigCum
int nintDzpvsigCum
Definition: MTVHistoProducerAlgoForTracker.h:360
MTVHistoProducerAlgoForTracker::seedingLayerSetNames
std::vector< std::string > seedingLayerSetNames
Definition: MTVHistoProducerAlgoForTracker.h:362
MTVHistoProducerAlgoForTracker::generalTpSelector
std::unique_ptr< TrackingParticleSelector > generalTpSelector
Definition: MTVHistoProducerAlgoForTracker.h:282
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
SeedingLayerSetsBuilder::layerNamesInSets
static std::vector< std::vector< std::string > > layerNamesInSets(const std::vector< std::string > &namesPSet)
Definition: SeedingLayerSetsBuilder.cc:272
TrajectorySeed
Definition: TrajectorySeed.h:17
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
edm::RefToBase< reco::Track >
GeomDetEnumerators::PixelEndcap
Definition: GeomDetEnumerators.h:12
MTVHistoProducerAlgoForTracker::nintChi2
int nintChi2
Definition: MTVHistoProducerAlgoForTracker.h:330
dqm::implementation::IBooker
Definition: DQMStore.h:43
MTVHistoProducerAlgoForTracker::ptRes_rangeMax
double ptRes_rangeMax
Definition: MTVHistoProducerAlgoForTracker.h:346
MTVHistoProducerAlgoForTracker::nintMVA
int nintMVA
Definition: MTVHistoProducerAlgoForTracker.h:340
minChi2
Definition: JetCombinatorics.h:265
MTVHistoProducerAlgoForTracker::nintPVz
int nintPVz
Definition: MTVHistoProducerAlgoForTracker.h:338
HLT_2018_cff.track
track
Definition: HLT_2018_cff.py:10352
MTVHistoProducerAlgoForTracker::ptRes_nbin
int ptRes_nbin
Definition: MTVHistoProducerAlgoForTracker.h:347
MTVHistoProducerAlgoForTracker::maxdrj
double maxdrj
Definition: MTVHistoProducerAlgoForTracker.h:327
reco::DeDxData
Definition: DeDxData.h:8
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
reco::GsfTrack::ptModeError
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
Definition: GsfTrack.h:81
MTVHistoProducerAlgoForTracker::fill_generic_simTrack_histos
void fill_generic_simTrack_histos(const Histograms &histograms, const TrackingParticle::Vector &, const TrackingParticle::Point &vertex, int bx) const
Definition: MTVHistoProducerAlgoForTracker.cc:1771
MTVHistoProducerAlgoForTracker::bookSimTrackHistos
void bookSimTrackHistos(DQMStore::IBooker &ibook, Histograms &histograms, bool doResolutionPlots)
Definition: MTVHistoProducerAlgoForTracker.cc:405
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:671
trigObjTnPSource_cfi.bins
bins
Definition: trigObjTnPSource_cfi.py:20
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
MTVHistoProducerAlgoForTracker::dzRes_rangeMax
double dzRes_rangeMax
Definition: MTVHistoProducerAlgoForTracker.h:354
MTVHistoProducerAlgoForTracker::nintVertcount
int nintVertcount
Definition: MTVHistoProducerAlgoForTracker.h:334
EgammaValidation_Wenu_cff.sel
sel
Definition: EgammaValidation_Wenu_cff.py:33
MTVHistoProducerAlgoForTracker::maxPu
double maxPu
Definition: MTVHistoProducerAlgoForTracker.h:309
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
MTVHistoProducerAlgoForTracker::dxyRes_nbin
int dxyRes_nbin
Definition: MTVHistoProducerAlgoForTracker.h:353
MTVHistoProducerAlgoForTracker::cotThetaRes_nbin
int cotThetaRes_nbin
Definition: MTVHistoProducerAlgoForTracker.h:351
TrackingParticle::Point
math::XYZPointD Point
point in the space
Definition: TrackingParticle.h:36
TrackingParticleIP.h
MTVHistoProducerAlgoForTracker::GpSelectorForEfficiencyVsVTXR
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXR
Definition: MTVHistoProducerAlgoForTracker.h:297
reco::TrackBase::algoNames
static const std::string algoNames[]
Definition: TrackBase.h:147
MTVHistoProducerAlgoForTracker::fill_simAssociated_recoTrack_histos
void fill_simAssociated_recoTrack_histos(const Histograms &histograms, int count, const reco::Track &track) const
Definition: MTVHistoProducerAlgoForTracker.cc:2234
MTVHistoProducerAlgoForTracker::makeRecoTrackSelectorFromTPSelectorParameters
static std::unique_ptr< RecoTrackSelectorBase > makeRecoTrackSelectorFromTPSelectorParameters(const edm::ParameterSet &pset)
Definition: MTVHistoProducerAlgoForTracker.cc:370
MTVHistoProducerAlgoForTracker::MTVHistoProducerAlgoForTracker
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, const bool doSeedPlots)
Definition: MTVHistoProducerAlgoForTracker.cc:140
MTVHistoProducerAlgoForTracker::dzRes_nbin
int dzRes_nbin
Definition: MTVHistoProducerAlgoForTracker.h:355
MTVHistoProducerAlgoForTracker::bookRecoHistos
void bookRecoHistos(DQMStore::IBooker &ibook, Histograms &histograms, bool doResolutionPlots)
Definition: MTVHistoProducerAlgoForTracker.cc:636
GeomDetEnumerators::isTrackerStrip
bool isTrackerStrip(GeomDetEnumerators::SubDetector m)
Definition: GeomDetEnumerators.cc:64
MTVHistoProducerAlgoForTracker::cotThetaRes_rangeMax
double cotThetaRes_rangeMax
Definition: MTVHistoProducerAlgoForTracker.h:350
MTVHistoProducerAlgoForTracker::maxDzpvsigCum
double maxDzpvsigCum
Definition: MTVHistoProducerAlgoForTracker.h:359
MTVHistoProducerAlgoForTracker::~MTVHistoProducerAlgoForTracker
~MTVHistoProducerAlgoForTracker()
Definition: MTVHistoProducerAlgoForTracker.cc:368
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
reco::modules::ParameterAdapter
Definition: ParameterAdapter.h:12
MTVHistoProducerAlgoForTracker::dxyRes_rangeMin
double dxyRes_rangeMin
Definition: MTVHistoProducerAlgoForTracker.h:352
SurveyInfoScenario_cff.seed
seed
Definition: SurveyInfoScenario_cff.py:295
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
reco::GsfTrack::qoverpModeError
double qoverpModeError() const
error on signed transverse curvature from mode
Definition: GsfTrack.h:79
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MTVHistoProducerAlgoForTracker::bookRecodEdxHistos
void bookRecodEdxHistos(DQMStore::IBooker &ibook, Histograms &histograms)
Definition: MTVHistoProducerAlgoForTracker.cc:1553
MTVHistoProducerAlgoForTracker::seedingLayerSetToBin
std::map< SeedingLayerSetId, unsigned int > seedingLayerSetToBin
Definition: MTVHistoProducerAlgoForTracker.h:366
muonME0PseudoDigis_cfi.phiError
phiError
Definition: muonME0PseudoDigis_cfi.py:9
TrackingVertex::LorentzVector
math::XYZTLorentzVectorD LorentzVector
Definition: TrackingVertex.h:28
MTVHistoProducerAlgoForTracker::TpSelectorForEfficiencyVsPhi
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPhi
Definition: MTVHistoProducerAlgoForTracker.h:284
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
nlayers
Definition: HIMultiTrackSelector.h:48
MTVHistoProducerAlgoForTracker::maxPhi
double maxPhi
Definition: MTVHistoProducerAlgoForTracker.h:313
TrackingParticleIP::dz
auto dz(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
Definition: TrackingParticleIP.h:16
MTVHistoProducerAlgoForTracker::fill_seed_histos
void fill_seed_histos(const Histograms &histograms, int count, int seedsFitFailed, int seedsTotal) const
Definition: MTVHistoProducerAlgoForTracker.cc:2664
MTVHistoProducerAlgoForTracker::fill_recoAssociated_simTrack_histos
void fill_recoAssociated_simTrack_histos(const Histograms &histograms, 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, double dR_jet, const math::XYZPoint *pvPosition, const TrackingVertex::LorentzVector *simPVPosition, const math::XYZPoint &bsPosition, const std::vector< float > &mvas, unsigned int selectsLoose, unsigned int selectsHP) const
Definition: MTVHistoProducerAlgoForTracker.cc:1784