CMS 3D CMS Logo

TrackBuildingAnalyzer.cc
Go to the documentation of this file.
12 
15 
20 #include <string>
21 #include "TMath.h"
22 
23 #include <iostream>
24 
26  : doAllPlots(iConfig.getParameter<bool>("doAllPlots")),
27  doAllSeedPlots(iConfig.getParameter<bool>("doSeedParameterHistos")),
28  doTCPlots(iConfig.getParameter<bool>("doTrackCandHistos")),
29  doAllTCPlots(iConfig.getParameter<bool>("doAllTrackCandHistos")),
30  doPT(iConfig.getParameter<bool>("doSeedPTHisto")),
31  doETA(iConfig.getParameter<bool>("doSeedETAHisto")),
32  doPHI(iConfig.getParameter<bool>("doSeedPHIHisto")),
33  doPHIVsETA(iConfig.getParameter<bool>("doSeedPHIVsETAHisto")),
34  doTheta(iConfig.getParameter<bool>("doSeedThetaHisto")),
35  doQ(iConfig.getParameter<bool>("doSeedQHisto")),
36  doDxy(iConfig.getParameter<bool>("doSeedDxyHisto")),
37  doDz(iConfig.getParameter<bool>("doSeedDzHisto")),
38  doNRecHits(iConfig.getParameter<bool>("doSeedNRecHitsHisto")),
39  doProfPHI(iConfig.getParameter<bool>("doSeedNVsPhiProf")),
40  doProfETA(iConfig.getParameter<bool>("doSeedNVsEtaProf")),
41  doStopSource(iConfig.getParameter<bool>("doStopSource")),
42  doMVAPlots(iConfig.getParameter<bool>("doMVAPlots")),
43  doRegionPlots(iConfig.getParameter<bool>("doRegionPlots")),
44  doRegionCandidatePlots(iConfig.getParameter<bool>("doRegionCandidatePlots")) {}
45 
47  // parameters from the configuration
48  std::string AlgoName = iConfig.getParameter<std::string>("AlgoName");
49  std::string MEFolderName = iConfig.getParameter<std::string>("FolderName");
50 
51  // std::cout << "[TrackBuildingAnalyzer::beginRun] AlgoName: " << AlgoName << std::endl;
52 
53  // use the AlgoName and Quality Name
54  const std::string& CatagoryName = AlgoName;
55 
56  // get binning from the configuration
57  int TrackPtBin = iConfig.getParameter<int>("TrackPtBin");
58  double TrackPtMin = iConfig.getParameter<double>("TrackPtMin");
59  double TrackPtMax = iConfig.getParameter<double>("TrackPtMax");
60 
61  int PhiBin = iConfig.getParameter<int>("PhiBin");
62  double PhiMin = iConfig.getParameter<double>("PhiMin");
63  double PhiMax = iConfig.getParameter<double>("PhiMax");
64  phiBinWidth = PhiBin > 0 ? (PhiMax - PhiMin) / PhiBin : 0.;
65 
66  int EtaBin = iConfig.getParameter<int>("EtaBin");
67  double EtaMin = iConfig.getParameter<double>("EtaMin");
68  double EtaMax = iConfig.getParameter<double>("EtaMax");
69  etaBinWidth = EtaBin > 0 ? (EtaMax - EtaMin) / EtaBin : 0.;
70 
71  int ThetaBin = iConfig.getParameter<int>("ThetaBin");
72  double ThetaMin = iConfig.getParameter<double>("ThetaMin");
73  double ThetaMax = iConfig.getParameter<double>("ThetaMax");
74 
75  int TrackQBin = iConfig.getParameter<int>("TrackQBin");
76  double TrackQMin = iConfig.getParameter<double>("TrackQMin");
77  double TrackQMax = iConfig.getParameter<double>("TrackQMax");
78 
79  int SeedDxyBin = iConfig.getParameter<int>("SeedDxyBin");
80  double SeedDxyMin = iConfig.getParameter<double>("SeedDxyMin");
81  double SeedDxyMax = iConfig.getParameter<double>("SeedDxyMax");
82 
83  int SeedDzBin = iConfig.getParameter<int>("SeedDzBin");
84  double SeedDzMin = iConfig.getParameter<double>("SeedDzMin");
85  double SeedDzMax = iConfig.getParameter<double>("SeedDzMax");
86 
87  int SeedHitBin = iConfig.getParameter<int>("SeedHitBin");
88  double SeedHitMin = iConfig.getParameter<double>("SeedHitMin");
89  double SeedHitMax = iConfig.getParameter<double>("SeedHitMax");
90 
91  int TCDxyBin = iConfig.getParameter<int>("TCDxyBin");
92  double TCDxyMin = iConfig.getParameter<double>("TCDxyMin");
93  double TCDxyMax = iConfig.getParameter<double>("TCDxyMax");
94 
95  int TCDzBin = iConfig.getParameter<int>("TCDzBin");
96  double TCDzMin = iConfig.getParameter<double>("TCDzMin");
97  double TCDzMax = iConfig.getParameter<double>("TCDzMax");
98 
99  int TCHitBin = iConfig.getParameter<int>("TCHitBin");
100  double TCHitMin = iConfig.getParameter<double>("TCHitMin");
101  double TCHitMax = iConfig.getParameter<double>("TCHitMax");
102 
103  int MVABin = iConfig.getParameter<int>("MVABin");
104  double MVAMin = iConfig.getParameter<double>("MVAMin");
105  double MVAMax = iConfig.getParameter<double>("MVAMax");
106 
107  edm::InputTag seedProducer = iConfig.getParameter<edm::InputTag>("SeedProducer");
108  edm::InputTag tcProducer = iConfig.getParameter<edm::InputTag>("TCProducer");
109  std::vector<std::string> mvaProducers = iConfig.getParameter<std::vector<std::string> >("MVAProducers");
110  edm::InputTag regionProducer = iConfig.getParameter<edm::InputTag>("RegionProducer");
111 
112  // if (doAllPlots){doAllSeedPlots=true; doTCPlots=true;}
113 
114  ibooker.setCurrentFolder(MEFolderName);
115 
116  // book the Seed histograms
117  // ---------------------------------------------------------------------------------//
118  // std::cout << "[TrackBuildingAnalyzer::beginRun] MEFolderName: " << MEFolderName << std::endl;
119  ibooker.setCurrentFolder(MEFolderName + "/TrackBuilding");
120 
121  if (doAllSeedPlots || doPT) {
122  histname = "SeedPt_" + seedProducer.label() + "_";
123  SeedPt = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, TrackPtBin, TrackPtMin, TrackPtMax);
124  SeedPt->setAxisTitle("Seed p_{T} (GeV/c)", 1);
125  SeedPt->setAxisTitle("Number of Seeds", 2);
126  }
127 
128  if (doAllSeedPlots || doETA) {
129  histname = "SeedEta_" + seedProducer.label() + "_";
130  SeedEta = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax);
131  SeedEta->setAxisTitle("Seed #eta", 1);
132  SeedEta->setAxisTitle("Number of Seeds", 2);
133  }
134 
135  if (doAllSeedPlots || doPHI) {
136  histname = "SeedPhi_" + seedProducer.label() + "_";
137  SeedPhi = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, PhiBin, PhiMin, PhiMax);
138  SeedPhi->setAxisTitle("Seed #phi", 1);
139  SeedPhi->setAxisTitle("Number of Seed", 2);
140  }
141 
142  if (doAllSeedPlots || doPHIVsETA) {
143  histname = "SeedPhiVsEta_" + seedProducer.label() + "_";
144  SeedPhiVsEta = ibooker.book2D(
145  histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax);
146  SeedPhiVsEta->setAxisTitle("Seed #eta", 1);
147  SeedPhiVsEta->setAxisTitle("Seed #phi", 2);
148  }
149 
150  if (doAllSeedPlots || doTheta) {
151  histname = "SeedTheta_" + seedProducer.label() + "_";
152  SeedTheta = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, ThetaBin, ThetaMin, ThetaMax);
153  SeedTheta->setAxisTitle("Seed #theta", 1);
154  SeedTheta->setAxisTitle("Number of Seeds", 2);
155  }
156 
157  if (doAllSeedPlots || doQ) {
158  histname = "SeedQ_" + seedProducer.label() + "_";
159  SeedQ = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, TrackQBin, TrackQMin, TrackQMax);
160  SeedQ->setAxisTitle("Seed Charge", 1);
161  SeedQ->setAxisTitle("Number of Seeds", 2);
162  }
163 
164  if (doAllSeedPlots || doDxy) {
165  histname = "SeedDxy_" + seedProducer.label() + "_";
166  SeedDxy = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, SeedDxyBin, SeedDxyMin, SeedDxyMax);
167  SeedDxy->setAxisTitle("Seed d_{xy} (cm)", 1);
168  SeedDxy->setAxisTitle("Number of Seeds", 2);
169  }
170 
171  if (doAllSeedPlots || doDz) {
172  histname = "SeedDz_" + seedProducer.label() + "_";
173  SeedDz = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, SeedDzBin, SeedDzMin, SeedDzMax);
174  SeedDz->setAxisTitle("Seed d_{z} (cm)", 1);
175  SeedDz->setAxisTitle("Number of Seeds", 2);
176  }
177 
178  if (doAllSeedPlots || doNRecHits) {
179  histname = "NumberOfRecHitsPerSeed_" + seedProducer.label() + "_";
181  ibooker.book1D(histname + CatagoryName, histname + CatagoryName, SeedHitBin, SeedHitMin, SeedHitMax);
182  NumberOfRecHitsPerSeed->setAxisTitle("Number of RecHits per Seed", 1);
183  NumberOfRecHitsPerSeed->setAxisTitle("Number of Seeds", 2);
184  }
185 
186  if (doAllSeedPlots || doProfPHI) {
187  histname = "NumberOfRecHitsPerSeedVsPhiProfile_" + seedProducer.label() + "_";
189  histname + CatagoryName,
190  PhiBin,
191  PhiMin,
192  PhiMax,
193  SeedHitBin,
194  SeedHitMin,
195  SeedHitMax,
196  "s");
198  NumberOfRecHitsPerSeedVsPhiProfile->setAxisTitle("Number of RecHits of each Seed", 2);
199  }
200 
201  if (doAllSeedPlots || doProfETA) {
202  histname = "NumberOfRecHitsPerSeedVsEtaProfile_" + seedProducer.label() + "_";
204  histname + CatagoryName,
205  EtaBin,
206  EtaMin,
207  EtaMax,
208  SeedHitBin,
209  SeedHitMin,
210  SeedHitMax,
211  "s");
213  NumberOfRecHitsPerSeedVsEtaProfile->setAxisTitle("Number of RecHits of each Seed", 2);
214  }
215 
216  if (doRegionPlots) {
217  if (doAllSeedPlots || doETA) {
218  histname = "TrackingRegionEta_" + seedProducer.label() + "_";
219  TrackingRegionEta = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax);
220  TrackingRegionEta->setAxisTitle("TrackingRegion-covered #eta", 1);
221  TrackingRegionEta->setAxisTitle("Number of TrackingRegions", 2);
222  }
223 
224  if (doAllSeedPlots || doPHI) {
225  histname = "TrackingRegionPhi_" + seedProducer.label() + "_";
226  TrackingRegionPhi = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, PhiBin, PhiMin, PhiMax);
227  TrackingRegionPhi->setAxisTitle("TrackingRegion-covered #phi", 1);
228  TrackingRegionPhi->setAxisTitle("Number of TrackingRegions", 2);
229  }
230 
231  if (doAllSeedPlots || doPHIVsETA) {
232  histname = "TrackingRegionPhiVsEta_" + seedProducer.label() + "_";
233  TrackingRegionPhiVsEta = ibooker.book2D(
234  histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax);
235  TrackingRegionPhiVsEta->setAxisTitle("TrackingRegion-covered #eta", 1);
236  TrackingRegionPhiVsEta->setAxisTitle("TrackingRegion-covered #phi", 2);
237  }
238 
240  if (doAllSeedPlots || doPT) {
241  auto ptBin = iConfig.getParameter<int>("RegionCandidatePtBin");
242  auto ptMin = iConfig.getParameter<double>("RegionCandidatePtMin");
243  auto ptMax = iConfig.getParameter<double>("RegionCandidatePtMax");
244 
245  histname = "TrackingRegionCandidatePt_" + seedProducer.label() + "_";
247  ibooker.book1D(histname + CatagoryName, histname + CatagoryName, ptBin, ptMin, ptMax);
248  TrackingRegionCandidatePt->setAxisTitle("TrackingRegion Candidate p_{T} (GeV/c)", 1);
249  TrackingRegionCandidatePt->setAxisTitle("Number of TrackingRegion Candidates", 2);
250  }
251 
252  if (doAllSeedPlots || doETA) {
253  histname = "TrackingRegionCandidateEta_" + seedProducer.label() + "_";
255  ibooker.book1D(histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax);
256  TrackingRegionCandidateEta->setAxisTitle("TrackingRegion Candidate #eta", 1);
257  TrackingRegionCandidateEta->setAxisTitle("Number of TrackingRegion Candidates", 2);
258  }
259 
260  if (doAllSeedPlots || doPHI) {
261  histname = "TrackingRegionCandidatePhi_" + seedProducer.label() + "_";
263  ibooker.book1D(histname + CatagoryName, histname + CatagoryName, PhiBin, PhiMin, PhiMax);
264  TrackingRegionCandidatePhi->setAxisTitle("TrackingRegion Candidate #phi", 1);
265  TrackingRegionCandidatePhi->setAxisTitle("Number of TrackingRegion Candidates", 2);
266  }
267 
268  if (doAllSeedPlots || doPHIVsETA) {
269  histname = "TrackingRegionCandidatePhiVsEta_" + seedProducer.label() + "_";
271  histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax);
272  TrackingRegionCandidatePhiVsEta->setAxisTitle("TrackingRegion Candidate #eta", 1);
273  TrackingRegionCandidatePhiVsEta->setAxisTitle("TrackingRegion Candidate #phi", 2);
274  }
275  }
276  }
277 
278  if (doAllSeedPlots || doStopSource) {
279  const auto stopReasonSize = static_cast<unsigned int>(SeedStopReason::SIZE);
280 
281  const auto candsBin = iConfig.getParameter<int>("SeedCandBin");
282  const auto candsMin = iConfig.getParameter<double>("SeedCandMin");
283  const auto candsMax = iConfig.getParameter<double>("SeedCandMax");
284 
285  histname = "SeedStoppingSource_" + seedProducer.label() + "_";
287  ibooker.book1D(histname + CatagoryName, histname + CatagoryName, stopReasonSize, 0., stopReasonSize);
288  seedStoppingSource->setAxisTitle("Stopping reason", 1);
289  seedStoppingSource->setAxisTitle("Number of seeds", 2);
290 
291  histname = "SeedStoppingSourceVsPhi_" + seedProducer.label() + "_";
293  ibooker.bookProfile(histname + CatagoryName, histname + CatagoryName, PhiBin, PhiMin, PhiMax, 2, 0., 2.);
294  seedStoppingSourceVsPhi->setAxisTitle("seed #phi", 1);
295  seedStoppingSourceVsPhi->setAxisTitle("fraction stopped", 2);
296 
297  histname = "SeedStoppingSourceVsEta_" + seedProducer.label() + "_";
299  ibooker.bookProfile(histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax, 2, 0., 2.);
300  seedStoppingSourceVsEta->setAxisTitle("seed #eta", 1);
301  seedStoppingSourceVsEta->setAxisTitle("fraction stopped", 2);
302 
303  histname = "NumberOfTrajCandsPerSeed_" + seedProducer.label() + "_";
305  ibooker.book1D(histname + CatagoryName, histname + CatagoryName, candsBin, candsMin, candsMax);
306  numberOfTrajCandsPerSeed->setAxisTitle("Number of Trajectory Candidate for each Seed", 1);
307  numberOfTrajCandsPerSeed->setAxisTitle("Number of Seeds", 2);
308 
309  histname = "NumberOfTrajCandsPerSeedVsPhi_" + seedProducer.label() + "_";
311  histname + CatagoryName, histname + CatagoryName, PhiBin, PhiMin, PhiMax, candsBin, candsMin, candsMax);
313  numberOfTrajCandsPerSeedVsPhi->setAxisTitle("Number of Trajectory Candidates for each Seed", 2);
314 
315  histname = "NumberOfTrajCandsPerSeedVsEta_" + seedProducer.label() + "_";
317  histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax, candsBin, candsMin, candsMax);
319  numberOfTrajCandsPerSeedVsEta->setAxisTitle("Number of Trajectory Candidates for each Seed", 2);
320 
321  histname = "SeedStoppingSourceVsNumberOfTrajCandsPerSeed_" + seedProducer.label() + "_";
323  ibooker.bookProfile(histname + CatagoryName, histname + CatagoryName, candsBin, candsMin, candsMax, 2, 0., 2.);
324  seedStoppingSourceVsNumberOfTrajCandsPerSeed->setAxisTitle("Number of Trajectory Candidates for each Seed", 1);
326 
327  for (unsigned int i = 0; i < stopReasonSize; ++i) {
329  }
330  }
331 
332  if (doAllTCPlots || doStopSource) {
333  // DataFormats/TrackReco/interface/TrajectoryStopReasons.h
334  size_t StopReasonNameSize = sizeof(StopReasonName::StopReasonName) / sizeof(std::string);
335 
336  histname = "StoppingSource_" + seedProducer.label() + "_";
337  stoppingSource = ibooker.book1D(
338  histname + CatagoryName, histname + CatagoryName, StopReasonNameSize, 0., double(StopReasonNameSize));
339  stoppingSource->setAxisTitle("stopping reason", 1);
340  stoppingSource->setAxisTitle("Number of Tracks", 2);
341 
342  histname = "StoppingSourceVSeta_" + seedProducer.label() + "_";
344  ibooker.bookProfile(histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax, 2, 0., 2.);
345  stoppingSourceVSeta->setAxisTitle("track #eta", 1);
346  stoppingSourceVSeta->setAxisTitle("fraction stopped", 2);
347 
348  histname = "StoppingSourceVSphi_" + seedProducer.label() + "_";
350  ibooker.bookProfile(histname + CatagoryName, histname + CatagoryName, PhiBin, PhiMin, PhiMax, 2, 0., 2.);
351  stoppingSourceVSphi->setAxisTitle("track #phi", 1);
352  stoppingSourceVSphi->setAxisTitle("fraction stopped", 2);
353 
354  for (size_t ibin = 0; ibin < StopReasonNameSize; ibin++) {
356  }
357  }
358 
359  // book the TrackCandidate histograms
360  // ---------------------------------------------------------------------------------//
361 
362  if (doTCPlots) {
363  ibooker.setCurrentFolder(MEFolderName + "/TrackBuilding");
364 
365  histname = "TrackCandPt_" + tcProducer.label() + "_";
366  TrackCandPt = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, TrackPtBin, TrackPtMin, TrackPtMax);
367  TrackCandPt->setAxisTitle("Track Candidate p_{T} (GeV/c)", 1);
368  TrackCandPt->setAxisTitle("Number of Track Candidates", 2);
369 
370  histname = "TrackCandEta_" + tcProducer.label() + "_";
371  TrackCandEta = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax);
372  TrackCandEta->setAxisTitle("Track Candidate #eta", 1);
373  TrackCandEta->setAxisTitle("Number of Track Candidates", 2);
374 
375  histname = "TrackCandPhi_" + tcProducer.label() + "_";
376  TrackCandPhi = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, PhiBin, PhiMin, PhiMax);
377  TrackCandPhi->setAxisTitle("Track Candidate #phi", 1);
378  TrackCandPhi->setAxisTitle("Number of Track Candidates", 2);
379 
380  if (doTheta) {
381  histname = "TrackCandTheta_" + tcProducer.label() + "_";
382  TrackCandTheta = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, ThetaBin, ThetaMin, ThetaMax);
383  TrackCandTheta->setAxisTitle("Track Candidate #theta", 1);
384  TrackCandTheta->setAxisTitle("Number of Track Candidates", 2);
385  }
386 
387  if (doAllTCPlots) {
388  histname = "TrackCandQ_" + tcProducer.label() + "_";
389  TrackCandQ = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, TrackQBin, TrackQMin, TrackQMax);
390  TrackCandQ->setAxisTitle("Track Candidate Charge", 1);
391  TrackCandQ->setAxisTitle("Number of Track Candidates", 2);
392 
393  histname = "TrackCandDxy_" + tcProducer.label() + "_";
394  TrackCandDxy = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, TCDxyBin, TCDxyMin, TCDxyMax);
395  TrackCandDxy->setAxisTitle("Track Candidate d_{xy} (cm)", 1);
396  TrackCandDxy->setAxisTitle("Number of Track Candidates", 2);
397 
398  histname = "TrackCandDz_" + tcProducer.label() + "_";
399  TrackCandDz = ibooker.book1D(histname + CatagoryName, histname + CatagoryName, TCDzBin, TCDzMin, TCDzMax);
400  TrackCandDz->setAxisTitle("Track Candidate d_{z} (cm)", 1);
401  TrackCandDz->setAxisTitle("Number of Track Candidates", 2);
402 
403  histname = "NumberOfRecHitsPerTrackCand_" + tcProducer.label() + "_";
405  ibooker.book1D(histname + CatagoryName, histname + CatagoryName, TCHitBin, TCHitMin, TCHitMax);
406  NumberOfRecHitsPerTrackCand->setAxisTitle("Number of RecHits per Track Candidate", 1);
407  NumberOfRecHitsPerTrackCand->setAxisTitle("Number of Track Candidates", 2);
408 
409  histname = "NumberOfRecHitsPerTrackCandVsPhiProfile_" + tcProducer.label() + "_";
411  histname + CatagoryName, histname + CatagoryName, PhiBin, PhiMin, PhiMax, TCHitBin, TCHitMin, TCHitMax, "s");
412  NumberOfRecHitsPerTrackCandVsPhiProfile->setAxisTitle("Track Candidate #phi", 1);
413  NumberOfRecHitsPerTrackCandVsPhiProfile->setAxisTitle("Number of RecHits of each Track Candidate", 2);
414 
415  histname = "NumberOfRecHitsPerTrackCandVsEtaProfile_" + tcProducer.label() + "_";
417  histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax, TCHitBin, TCHitMin, TCHitMax, "s");
418  NumberOfRecHitsPerTrackCandVsEtaProfile->setAxisTitle("Track Candidate #eta", 1);
419  NumberOfRecHitsPerTrackCandVsEtaProfile->setAxisTitle("Number of RecHits of each Track Candidate", 2);
420  }
421 
422  histname = "TrackCandPhiVsEta_" + tcProducer.label() + "_";
423  TrackCandPhiVsEta = ibooker.book2D(
424  histname + CatagoryName, histname + CatagoryName, EtaBin, EtaMin, EtaMax, PhiBin, PhiMin, PhiMax);
425  TrackCandPhiVsEta->setAxisTitle("Track Candidate #eta", 1);
426  TrackCandPhiVsEta->setAxisTitle("Track Candidate #phi", 2);
427 
428  if (doAllTCPlots || doMVAPlots) {
429  for (size_t i = 1, end = mvaProducers.size(); i <= end; ++i) {
430  auto num = std::to_string(i);
431  std::string pfix;
432 
433  if (i == 1) {
434  trackMVAsHP.push_back(nullptr);
435  trackMVAsHPVsPtProfile.push_back(nullptr);
436  trackMVAsHPVsEtaProfile.push_back(nullptr);
437  } else {
438  pfix = " (not loose-selected)";
439  std::string pfix2 = " (not HP-selected)";
440  histname = "TrackMVA" + num + "HP_" + tcProducer.label() + "_";
441  trackMVAsHP.push_back(
442  ibooker.book1D(histname + CatagoryName, histname + CatagoryName + pfix2, MVABin, MVAMin, MVAMax));
443  trackMVAsHP.back()->setAxisTitle("Track selection MVA" + num, 1);
444  trackMVAsHP.back()->setAxisTitle("Number of tracks", 2);
445 
446  histname = "TrackMVA" + num + "HPVsPtProfile_" + tcProducer.label() + "_";
447  trackMVAsHPVsPtProfile.push_back(ibooker.bookProfile(histname + CatagoryName,
448  histname + CatagoryName + pfix2,
449  TrackPtBin,
450  TrackPtMin,
451  TrackPtMax,
452  MVABin,
453  MVAMin,
454  MVAMax));
455  trackMVAsHPVsPtProfile.back()->setAxisTitle("Track p_{T} (GeV/c)", 1);
456  trackMVAsHPVsPtProfile.back()->setAxisTitle("Track selection MVA" + num, 2);
457 
458  histname = "TrackMVA" + num + "HPVsEtaProfile_" + tcProducer.label() + "_";
459  trackMVAsHPVsEtaProfile.push_back(ibooker.bookProfile(
460  histname + CatagoryName, histname + CatagoryName + pfix2, EtaBin, EtaMin, EtaMax, MVABin, MVAMin, MVAMax));
461  trackMVAsHPVsEtaProfile.back()->setAxisTitle("Track #eta", 1);
462  trackMVAsHPVsEtaProfile.back()->setAxisTitle("Track selection MVA" + num, 2);
463  }
464 
465  histname = "TrackMVA" + num + "_" + tcProducer.label() + "_";
466  trackMVAs.push_back(
467  ibooker.book1D(histname + CatagoryName, histname + CatagoryName + pfix, MVABin, MVAMin, MVAMax));
468  trackMVAs.back()->setAxisTitle("Track selection MVA" + num, 1);
469  trackMVAs.back()->setAxisTitle("Number of tracks", 2);
470 
471  histname = "TrackMVA" + num + "VsPtProfile_" + tcProducer.label() + "_";
472  trackMVAsVsPtProfile.push_back(ibooker.bookProfile(histname + CatagoryName,
473  histname + CatagoryName + pfix,
474  TrackPtBin,
475  TrackPtMin,
476  TrackPtMax,
477  MVABin,
478  MVAMin,
479  MVAMax));
480  trackMVAsVsPtProfile.back()->setAxisTitle("Track p_{T} (GeV/c)", 1);
481  trackMVAsVsPtProfile.back()->setAxisTitle("Track selection MVA" + num, 2);
482 
483  histname = "TrackMVA" + num + "VsEtaProfile_" + tcProducer.label() + "_";
484  trackMVAsVsEtaProfile.push_back(ibooker.bookProfile(
485  histname + CatagoryName, histname + CatagoryName + pfix, EtaBin, EtaMin, EtaMax, MVABin, MVAMin, MVAMax));
486  trackMVAsVsEtaProfile.back()->setAxisTitle("Track #eta", 1);
487  trackMVAsVsEtaProfile.back()->setAxisTitle("Track selection MVA" + num, 2);
488  }
489  }
490  }
491 }
492 
493 // -- Analyse
494 // ---------------------------------------------------------------------------------//
496  const edm::EventSetup& iSetup,
497  const TrajectorySeed& candidate,
498  const SeedStopInfo& stopInfo,
499  const reco::BeamSpot& bs,
500  const MagneticField& theMF,
501  const TransientTrackingRecHitBuilder& theTTRHBuilder) {
502  TSCBLBuilderNoMaterial tscblBuilder;
503 
504  //get parameters and errors from the candidate state
505  auto const& theG = ((TkTransientTrackingRecHitBuilder const*)(&theTTRHBuilder))->geometry();
506  auto const& candSS = candidate.startingState();
508  trajectoryStateTransform::transientState(candSS, &(theG->idToDet(candSS.detId())->surface()), &theMF);
509  TrajectoryStateClosestToBeamLine tsAtClosestApproachSeed =
510  tscblBuilder(*state.freeState(), bs); //as in TrackProducerAlgorithm
511  if (!(tsAtClosestApproachSeed.isValid())) {
512  edm::LogVerbatim("TrackBuilding") << "TrajectoryStateClosestToBeamLine not valid";
513  return;
514  }
515  GlobalPoint v0 = tsAtClosestApproachSeed.trackStateAtPCA().position();
516  GlobalVector p = tsAtClosestApproachSeed.trackStateAtPCA().momentum();
517  GlobalPoint v(v0.x() - bs.x0(), v0.y() - bs.y0(), v0.z() - bs.z0());
518 
519  double pt = sqrt(state.globalMomentum().perp2());
520  double eta = state.globalPosition().eta();
521  double phi = state.globalPosition().phi();
522  double theta = state.globalPosition().theta();
523  //double pm = sqrt(state.globalMomentum().mag2());
524  //double pz = state.globalMomentum().z();
525  //double qoverp = tsAtClosestApproachSeed.trackStateAtPCA().charge()/p.mag();
526  //double theta = p.theta();
527  //double lambda = M_PI/2-p.theta();
528  double numberOfHits = candidate.recHits().second - candidate.recHits().first;
529  double dxy = (-v.x() * sin(p.phi()) + v.y() * cos(p.phi()));
530  double dz = v.z() - (v.x() * p.x() + v.y() * p.y()) / p.perp() * p.z() / p.perp();
531 
532  // fill the ME's
533  if (doAllSeedPlots || doQ)
534  SeedQ->Fill(state.charge());
535  if (doAllSeedPlots || doPT)
536  SeedPt->Fill(pt);
537  if (doAllSeedPlots || doETA)
538  SeedEta->Fill(eta);
539  if (doAllSeedPlots || doPHI)
540  SeedPhi->Fill(phi);
541  if (doAllSeedPlots || doPHIVsETA)
543  if (doAllSeedPlots || doTheta)
544  SeedTheta->Fill(theta);
545  if (doAllSeedPlots || doDxy)
546  SeedDxy->Fill(dxy);
547  if (doAllSeedPlots || doDz)
548  SeedDz->Fill(dz);
549  if (doAllSeedPlots || doNRecHits)
550  NumberOfRecHitsPerSeed->Fill(numberOfHits);
551  if (doAllSeedPlots || doProfETA)
553  if (doAllSeedPlots || doProfPHI)
555  if (doAllSeedPlots || doStopSource) {
556  const double stopped = stopInfo.stopReason() == SeedStopReason::NOT_STOPPED ? 0. : 1.;
557  seedStoppingSource->Fill(stopInfo.stopReasonUC());
558  seedStoppingSourceVsPhi->Fill(phi, stopped);
559  seedStoppingSourceVsEta->Fill(eta, stopped);
560 
561  const auto ncands = stopInfo.candidatesPerSeed();
565 
567  }
568 }
569 
570 // -- Analyse
571 // ---------------------------------------------------------------------------------//
573  const edm::EventSetup& iSetup,
574  const TrackCandidate& candidate,
575  const reco::BeamSpot& bs,
576  const MagneticField& theMF,
577  const TransientTrackingRecHitBuilder& theTTRHBuilder) {
578  TSCBLBuilderNoMaterial tscblBuilder;
579 
580  //get parameters and errors from the candidate state
581  auto const& theG = ((TkTransientTrackingRecHitBuilder const*)(&theTTRHBuilder))->geometry();
582  auto const& candSS = candidate.trajectoryStateOnDet();
584  trajectoryStateTransform::transientState(candSS, &(theG->idToDet(candSS.detId())->surface()), &theMF);
585  TrajectoryStateClosestToBeamLine tsAtClosestApproachTrackCand =
586  tscblBuilder(*state.freeState(), bs); //as in TrackProducerAlgorithm
587  if (!(tsAtClosestApproachTrackCand.isValid())) {
588  edm::LogVerbatim("TrackBuilding") << "TrajectoryStateClosestToBeamLine not valid";
589  return;
590  }
591  GlobalPoint v0 = tsAtClosestApproachTrackCand.trackStateAtPCA().position();
592  GlobalVector p = tsAtClosestApproachTrackCand.trackStateAtPCA().momentum();
593  GlobalPoint v(v0.x() - bs.x0(), v0.y() - bs.y0(), v0.z() - bs.z0());
594 
595  double pt = sqrt(state.globalMomentum().perp2());
596  double eta = state.globalPosition().eta();
597  double phi = state.globalPosition().phi();
598  double theta = state.globalPosition().theta();
599  //double pm = sqrt(state.globalMomentum().mag2());
600  //double pz = state.globalMomentum().z();
601  //double qoverp = tsAtClosestApproachTrackCand.trackStateAtPCA().charge()/p.mag();
602  //double theta = p.theta();
603  //double lambda = M_PI/2-p.theta();
604  double numberOfHits = candidate.recHits().second - candidate.recHits().first;
605  double dxy = (-v.x() * sin(p.phi()) + v.y() * cos(p.phi()));
606 
607  double dz = v.z() - (v.x() * p.x() + v.y() * p.y()) / p.perp() * p.z() / p.perp();
608 
609  if (doAllTCPlots || doStopSource) {
610  // stopping source
611  int max = stoppingSource->getNbinsX();
612  double stop = candidate.stopReason() > max ? double(max - 1) : static_cast<double>(candidate.stopReason());
613  double stopped = int(StopReason::NOT_STOPPED) == candidate.stopReason() ? 0. : 1.;
614  stoppingSource->Fill(stop);
615  stoppingSourceVSeta->Fill(eta, stopped);
616  stoppingSourceVSphi->Fill(phi, stopped);
617  }
618 
619  if (doTCPlots) {
620  // fill the ME's
621  if (doAllTCPlots)
622  TrackCandQ->Fill(state.charge());
623  TrackCandPt->Fill(pt);
627  if (doTheta)
629  if (doAllTCPlots)
631  if (doAllTCPlots)
632  TrackCandDz->Fill(dz);
633  if (doAllTCPlots)
634  NumberOfRecHitsPerTrackCand->Fill(numberOfHits);
635  if (doAllTCPlots)
637  if (doAllTCPlots)
639  }
640 }
641 
642 namespace {
643  bool trackSelected(unsigned char mask, unsigned char qual) { return mask & 1 << qual; }
644 } // namespace
646  const std::vector<const MVACollection*>& mvaCollections,
647  const std::vector<const QualityMaskCollection*>& qualityMaskCollections) {
648  if (!(doAllTCPlots || doMVAPlots))
649  return;
650  if (trackCollection.empty())
651  return;
652 
653  const auto ntracks = trackCollection.size();
654  const auto nmva = mvaCollections.size();
655  for (const auto mva : mvaCollections) {
656  if (mva->size() != ntracks) {
657  edm::LogError("LogicError") << "TrackBuildingAnalyzer: Incompatible size of MVACollection, " << mva->size()
658  << " differs from the size of the track collection " << ntracks;
659  return;
660  }
661  }
662  for (const auto qual : qualityMaskCollections) {
663  if (qual->size() != ntracks) {
664  edm::LogError("LogicError") << "TrackBuildingAnalyzer: Incompatible size of QualityMaskCollection, "
665  << qual->size() << " differs from the size of the track collection " << ntracks;
666  return;
667  }
668  }
669 
670  for (size_t iTrack = 0; iTrack < ntracks; ++iTrack) {
671  // Fill MVA1 histos with all tracks, MVA2 histos only with tracks
672  // not selected by MVA1 etc
673  bool selectedLoose = false;
674  bool selectedHP = false;
675 
676  const auto pt = trackCollection[iTrack].pt();
677  const auto eta = trackCollection[iTrack].eta();
678 
679  for (size_t iMVA = 0; iMVA < nmva; ++iMVA) {
680  const auto mva = (*(mvaCollections[iMVA]))[iTrack];
681  if (!selectedLoose) {
682  trackMVAs[iMVA]->Fill(mva);
683  trackMVAsVsPtProfile[iMVA]->Fill(pt, mva);
684  trackMVAsVsEtaProfile[iMVA]->Fill(eta, mva);
685  }
686  if (iMVA >= 1 && !selectedHP) {
687  trackMVAsHP[iMVA]->Fill(mva);
688  trackMVAsHPVsPtProfile[iMVA]->Fill(pt, mva);
689  trackMVAsHPVsEtaProfile[iMVA]->Fill(eta, mva);
690  }
691 
692  const auto qual = (*(qualityMaskCollections)[iMVA])[iTrack];
693  selectedLoose |= trackSelected(qual, reco::TrackBase::loose);
694  selectedHP |= trackSelected(qual, reco::TrackBase::highPurity);
695 
696  if (selectedLoose && selectedHP)
697  break;
698  }
699  }
700 }
701 
704  return;
705 
706  for (const auto& candidate : regionCandidates) {
707  const auto eta = candidate.eta();
708  const auto phi = candidate.phi();
709  if (doAllSeedPlots || doPT)
710  TrackingRegionCandidatePt->Fill(candidate.pt());
711  if (doAllSeedPlots || doETA)
713  if (doAllSeedPlots || doPHI)
715  if (doAllSeedPlots || doPHIVsETA)
717  }
718 }
719 
722 
723 namespace {
724  const TrackingRegion* regionPtr(const TrackingRegion& region) { return &region; }
725  const TrackingRegion* regionPtr(const TrackingRegionsSeedingLayerSets::RegionLayers& regionLayers) {
726  return &(regionLayers.region());
727  }
728 } // namespace
729 
730 template <typename T>
732  if (!doRegionPlots && etaBinWidth <= 0. && phiBinWidth <= 0.)
733  return;
734 
735  for (const auto& tmp : regions) {
736  if (const auto* etaPhiRegion = dynamic_cast<const RectangularEtaPhiTrackingRegion*>(regionPtr(tmp))) {
737  const auto& etaRange = etaPhiRegion->etaRange();
738  const auto& phiMargin = etaPhiRegion->phiMargin();
739 
740  const auto etaMin = etaRange.min();
741  const auto etaMax = etaRange.max();
742 
743  const auto phiMin = etaPhiRegion->phiDirection() - phiMargin.left();
744  const auto phiMax = etaPhiRegion->phiDirection() + phiMargin.right();
745 
746  if (doAllSeedPlots || doETA) {
747  for (auto eta = etaMin; eta < etaMax; eta += etaBinWidth) {
749  }
750  }
751  if (doAllSeedPlots || doPHI) {
752  for (auto phi = phiMin; phi < phiMax; phi += phiBinWidth) {
754  }
755  }
756  if (doAllSeedPlots || doPHIVsETA) {
757  for (auto phi = phiMin; phi < phiMax; phi += phiBinWidth) {
758  const auto reducedPhi = reco::reduceRange(phi);
759  for (auto eta = etaMin; eta < etaMax; eta += etaBinWidth) {
760  TrackingRegionPhiVsEta->Fill(eta, reducedPhi);
761  }
762  }
763  }
764  }
765  }
766 }
Vector3DBase
Definition: Vector3DBase.h:8
TrackCandidate::trajectoryStateOnDet
PTrajectoryStateOnDet const & trajectoryStateOnDet() const
Definition: TrackCandidate.h:56
TrackBuildingAnalyzer::SeedPhi
MonitorElement * SeedPhi
Definition: TrackBuildingAnalyzer.h:90
TSCBLBuilderNoMaterial.h
FreeTrajectoryState::momentum
GlobalVector momentum() const
Definition: FreeTrajectoryState.h:68
TrajectoryStateClosestToBeamLine
Definition: TrajectoryStateClosestToBeamLine.h:15
geometry
ESHandle< TrackerGeometry > geometry
Definition: TkLasBeamFitter.cc:200
electrons_cff.bool
bool
Definition: electrons_cff.py:372
V0Monitor_cff.v0
v0
Definition: V0Monitor_cff.py:7
ALCARECOTkAlBeamHalo_cff.etaMin
etaMin
GeV.
Definition: ALCARECOTkAlBeamHalo_cff.py:32
mps_fire.i
i
Definition: mps_fire.py:355
TrackBuildingAnalyzer::TrackingRegionCandidateEta
MonitorElement * TrackingRegionCandidateEta
Definition: TrackBuildingAnalyzer.h:83
MessageLogger.h
MonitorTrackSTAMuons_cfi.TCDxyBin
TCDxyBin
Definition: MonitorTrackSTAMuons_cfi.py:314
reco::TrackBase::loose
Definition: TrackBase.h:152
TrackBuildingAnalyzer::doDxy
const bool doDxy
Definition: TrackBuildingAnalyzer.h:147
TrackBuildingAnalyzer::TrackCandPt
MonitorElement * TrackCandPt
Definition: TrackBuildingAnalyzer.h:111
MonitorTrackSTAMuons_cfi.SeedHitMin
SeedHitMin
Definition: MonitorTrackSTAMuons_cfi.py:101
generateTowerEtThresholdLUT.etaRange
etaRange
Definition: generateTowerEtThresholdLUT.py:55
TrackBuildingAnalyzer::TrackCandDxy
MonitorElement * TrackCandDxy
Definition: TrackBuildingAnalyzer.h:117
TrackBuildingAnalyzer::NumberOfRecHitsPerTrackCand
MonitorElement * NumberOfRecHitsPerTrackCand
Definition: TrackBuildingAnalyzer.h:119
TrackingRegionsSeedingLayerSets
Definition: TrackingRegionsSeedingLayerSets.h:10
MonitorTrackSTAMuons_cfi.TrackQMin
TrackQMin
Definition: MonitorTrackSTAMuons_cfi.py:96
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
TrackBuildingAnalyzer::seedStoppingSourceVsEta
MonitorElement * seedStoppingSourceVsEta
Definition: TrackBuildingAnalyzer.h:102
TrackBuildingAnalyzer.h
MonitorTrackSTAMuons_cfi.SeedDzBin
SeedDzBin
Definition: MonitorTrackSTAMuons_cfi.py:309
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
PV3DBase::theta
Geom::Theta< T > theta() const
Definition: PV3DBase.h:72
TransientRecHitRecord.h
TrackBuildingAnalyzer::phiBinWidth
double phiBinWidth
Definition: TrackBuildingAnalyzer.h:80
TrackBuildingAnalyzer::doQ
const bool doQ
Definition: TrackBuildingAnalyzer.h:146
TrajectoryStateOnSurface::globalPosition
GlobalPoint globalPosition() const
Definition: TrajectoryStateOnSurface.h:65
TrackBuildingAnalyzer::seedStoppingSourceVsPhi
MonitorElement * seedStoppingSourceVsPhi
Definition: TrackBuildingAnalyzer.h:101
beam_dqm_sourceclient-live_cfg.TrackPtBin
TrackPtBin
Definition: beam_dqm_sourceclient-live_cfg.py:197
StopReasonName::StopReasonName
static const std::string StopReasonName[]
Definition: TrajectoryStopReasons.h:25
ptMin
constexpr float ptMin
Definition: PhotonIDValueMapProducer.cc:153
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
TrackBuildingAnalyzer::doNRecHits
const bool doNRecHits
Definition: TrackBuildingAnalyzer.h:149
TrackBuildingAnalyzer::etaBinWidth
double etaBinWidth
Definition: TrackBuildingAnalyzer.h:79
TrajectoryStateOnSurface::charge
TrackCharge charge() const
Definition: TrajectoryStateOnSurface.h:68
MonitorTrackSTAMuons_cfi.SeedHitBin
SeedHitBin
Definition: MonitorTrackSTAMuons_cfi.py:99
SeedStopInfo::candidatesPerSeed
unsigned short candidatesPerSeed() const
Definition: SeedStopInfo.h:12
DQMStore.h
TrackBuildingAnalyzer::histname
std::string histname
Definition: TrackBuildingAnalyzer.h:134
TrackBuildingAnalyzer::TrackingRegionPhiVsEta
MonitorElement * TrackingRegionPhiVsEta
Definition: TrackBuildingAnalyzer.h:78
beam_dqm_sourceclient-live_cfg.TrackPtMin
TrackPtMin
Definition: beam_dqm_sourceclient-live_cfg.py:195
MonitorTrackSTAMuons_cfi.SeedDzMax
SeedDzMax
Definition: MonitorTrackSTAMuons_cfi.py:310
TrackBuildingAnalyzer::doRegionPlots
const bool doRegionPlots
Definition: TrackBuildingAnalyzer.h:154
TrackBuildingAnalyzer::NumberOfRecHitsPerSeedVsPhiProfile
MonitorElement * NumberOfRecHitsPerSeedVsPhiProfile
Definition: TrackBuildingAnalyzer.h:97
MonitorTrackInnerTrackMuons_cff.EtaBin
EtaBin
Definition: MonitorTrackInnerTrackMuons_cff.py:64
TrackBuildingAnalyzer::trackMVAsVsEtaProfile
std::vector< MonitorElement * > trackMVAsVsEtaProfile
Definition: TrackBuildingAnalyzer.h:131
TrackBuildingAnalyzer::TrackingRegionEta
MonitorElement * TrackingRegionEta
Definition: TrackBuildingAnalyzer.h:76
FreeTrajectoryState::position
GlobalPoint position() const
Definition: FreeTrajectoryState.h:67
TransientTrack.h
findQualityFiles.v
v
Definition: findQualityFiles.py:179
beam_dqm_sourceclient-live_cfg.mva
mva
Definition: beam_dqm_sourceclient-live_cfg.py:119
createJobs.tmp
tmp
align.sh
Definition: createJobs.py:716
HLTSiStripMonitoring_cff.AlgoName
AlgoName
Definition: HLTSiStripMonitoring_cff.py:232
TrackBuildingAnalyzer::doPHIVsETA
const bool doPHIVsETA
Definition: TrackBuildingAnalyzer.h:144
muonRecoAnalyzer_cfi.ptBin
ptBin
Definition: muonRecoAnalyzer_cfi.py:45
MonitorTrackSTAMuons_cfi.TrackQMax
TrackQMax
Definition: MonitorTrackSTAMuons_cfi.py:95
TrackingMonitor_cfi.doRegionPlots
doRegionPlots
Definition: TrackingMonitor_cfi.py:454
MonitorTrackSTAMuons_cfi.TrackQBin
TrackQBin
Definition: MonitorTrackSTAMuons_cfi.py:94
SeedStopInfo
Definition: SeedStopInfo.h:6
end
#define end
Definition: vmac.h:39
TkTransientTrackingRecHitBuilder.h
TkTransientTrackingRecHitBuilder
Definition: TkTransientTrackingRecHitBuilder.h:15
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
TrackBuildingAnalyzer::NumberOfRecHitsPerSeedVsEtaProfile
MonitorElement * NumberOfRecHitsPerSeedVsEtaProfile
Definition: TrackBuildingAnalyzer.h:98
SeedStopReason::NOT_STOPPED
MonitorTrackSTAMuons_cfi.ThetaMin
ThetaMin
Definition: MonitorTrackSTAMuons_cfi.py:221
TrackBuildingAnalyzer::doTCPlots
const bool doTCPlots
Definition: TrackBuildingAnalyzer.h:139
TrajectoryStateOnSurface
Definition: TrajectoryStateOnSurface.h:16
MonitorTrackSTAMuons_cfi.PhiMax
PhiMax
Definition: MonitorTrackSTAMuons_cfi.py:230
cms::cuda::bs
bs
Definition: HistoContainer.h:127
TrackBuildingAnalyzer::trackMVAsVsPtProfile
std::vector< MonitorElement * > trackMVAsVsPtProfile
Definition: TrackBuildingAnalyzer.h:129
TrackBuildingAnalyzer::NumberOfRecHitsPerTrackCandVsPhiProfile
MonitorElement * NumberOfRecHitsPerTrackCandVsPhiProfile
Definition: TrackBuildingAnalyzer.h:120
TrackBuildingAnalyzer::SeedPt
MonitorElement * SeedPt
Definition: TrackBuildingAnalyzer.h:88
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
TrajectoryStateOnSurface::freeState
FreeTrajectoryState const * freeState(bool withErrors=true) const
Definition: TrajectoryStateOnSurface.h:58
TrackBuildingAnalyzer::TrackCandDz
MonitorElement * TrackCandDz
Definition: TrackBuildingAnalyzer.h:118
BeamSpot.h
AlignmentTrackSelector_cfi.ptMax
ptMax
Definition: AlignmentTrackSelector_cfi.py:12
TrackBuildingAnalyzer::numberOfTrajCandsPerSeedVsPhi
MonitorElement * numberOfTrajCandsPerSeedVsPhi
Definition: TrackBuildingAnalyzer.h:105
TrackBuildingAnalyzer::doStopSource
const bool doStopSource
Definition: TrackBuildingAnalyzer.h:152
TrackBuildingAnalyzer::doAllTCPlots
const bool doAllTCPlots
Definition: TrackBuildingAnalyzer.h:140
TrackBuildingAnalyzer::TrackingRegionPhi
MonitorElement * TrackingRegionPhi
Definition: TrackBuildingAnalyzer.h:77
PVValHelper::eta
Definition: PVValidationHelpers.h:69
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
AlignmentTrackSelector_cfi.phiMin
phiMin
Definition: AlignmentTrackSelector_cfi.py:18
reco::BeamSpot
Definition: BeamSpot.h:21
AlignmentTrackSelector_cfi.phiMax
phiMax
Definition: AlignmentTrackSelector_cfi.py:17
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
beam_dqm_sourceclient-live_cfg.TrackPtMax
TrackPtMax
Definition: beam_dqm_sourceclient-live_cfg.py:196
TrackBuildingAnalyzer::TrackingRegionCandidatePhiVsEta
MonitorElement * TrackingRegionCandidatePhiVsEta
Definition: TrackBuildingAnalyzer.h:85
TrackBuildingAnalyzer::TrackingRegionCandidatePt
MonitorElement * TrackingRegionCandidatePt
Definition: TrackBuildingAnalyzer.h:82
TrackBuildingAnalyzer::SeedTheta
MonitorElement * SeedTheta
Definition: TrackBuildingAnalyzer.h:92
theta
Geom::Theta< T > theta() const
Definition: Basic3DVectorLD.h:150
TrackBuildingAnalyzer::doDz
const bool doDz
Definition: TrackBuildingAnalyzer.h:148
MonitorTrackSTAMuons_cfi.SeedDxyBin
SeedDxyBin
Definition: MonitorTrackSTAMuons_cfi.py:304
Point3DBase< float, GlobalTag >
TrackingMonitor_cfi.MVAMin
MVAMin
Definition: TrackingMonitor_cfi.py:370
TrackBuildingAnalyzer::stoppingSourceVSeta
MonitorElement * stoppingSourceVSeta
Definition: TrackBuildingAnalyzer.h:124
TrackBuildingAnalyzer::doProfETA
const bool doProfETA
Definition: TrackBuildingAnalyzer.h:151
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SeedStopReasonName::SeedStopReasonName
static const std::string SeedStopReasonName[]
Definition: SeedStopReason.h:18
MonitorTrackSTAMuons_cfi.TCHitMax
TCHitMax
Definition: MonitorTrackSTAMuons_cfi.py:105
edm::View
Definition: CaloClusterFwd.h:14
TrackBuildingAnalyzer::SeedQ
MonitorElement * SeedQ
Definition: TrackBuildingAnalyzer.h:93
SeedStopInfo::stopReason
SeedStopReason stopReason() const
Definition: SeedStopInfo.h:15
TransientTrackBuilder.h
edm::ParameterSet
Definition: ParameterSet.h:36
TrackBuildingAnalyzer::SeedPhiVsEta
MonitorElement * SeedPhiVsEta
Definition: TrackBuildingAnalyzer.h:91
edm::LogError
Definition: MessageLogger.h:183
TrackBuildingAnalyzer::TrackCandEta
MonitorElement * TrackCandEta
Definition: TrackBuildingAnalyzer.h:112
duplicaterechits_cfi.trackCollection
trackCollection
Definition: duplicaterechits_cfi.py:4
TrackCandidate
Definition: TrackCandidate.h:23
TrackingRegionsSeedingLayerSets::RegionLayers::region
const TrackingRegion & region() const
Definition: TrackingRegionsSeedingLayerSets.h:110
TrackCandidate::recHits
range recHits() const
Definition: TrackCandidate.h:58
TrackBuildingAnalyzer::doProfPHI
const bool doProfPHI
Definition: TrackBuildingAnalyzer.h:150
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
TrackBuildingAnalyzer::trackMVAsHP
std::vector< MonitorElement * > trackMVAsHP
Definition: TrackBuildingAnalyzer.h:128
TrackBuildingAnalyzer::trackMVAsHPVsPtProfile
std::vector< MonitorElement * > trackMVAsHPVsPtProfile
Definition: TrackBuildingAnalyzer.h:130
TrackBuildingAnalyzer::doAllSeedPlots
const bool doAllSeedPlots
Definition: TrackBuildingAnalyzer.h:138
TrackingRegionsSeedingLayerSets::RegionLayers
Definition: TrackingRegionsSeedingLayerSets.h:14
TrackBuildingAnalyzer::TrackCandPhiVsEta
MonitorElement * TrackCandPhiVsEta
Definition: TrackBuildingAnalyzer.h:114
TrackBuildingAnalyzer::numberOfTrajCandsPerSeed
MonitorElement * numberOfTrajCandsPerSeed
Definition: TrackBuildingAnalyzer.h:104
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
TrackingMonitor_cfi.doStopSource
doStopSource
Definition: TrackingMonitor_cfi.py:112
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
TrackBuildingAnalyzer::seedStoppingSourceVsNumberOfTrajCandsPerSeed
MonitorElement * seedStoppingSourceVsNumberOfTrajCandsPerSeed
Definition: TrackBuildingAnalyzer.h:108
trajectoryStateTransform::transientState
TrajectoryStateOnSurface transientState(const PTrajectoryStateOnDet &ts, const Surface *surface, const MagneticField *field)
Definition: TrajectoryStateTransform.cc:35
RectangularEtaPhiTrackingRegion.h
dqm::impl::MonitorElement::setBinLabel
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:771
edm::LogVerbatim
Definition: MessageLogger.h:297
TrackBuildingAnalyzer::TrackingRegionCandidatePhi
MonitorElement * TrackingRegionCandidatePhi
Definition: TrackBuildingAnalyzer.h:84
TrackBuildingAnalyzer::NumberOfRecHitsPerSeed
MonitorElement * NumberOfRecHitsPerSeed
Definition: TrackBuildingAnalyzer.h:96
TrackBuildingAnalyzer::doPHI
const bool doPHI
Definition: TrackBuildingAnalyzer.h:143
MonitorTrackSTAMuons_cfi.PhiMin
PhiMin
Definition: MonitorTrackSTAMuons_cfi.py:231
beam_dqm_sourceclient-live_cfg.doAllPlots
doAllPlots
Definition: beam_dqm_sourceclient-live_cfg.py:168
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:57
MonitorTrackSTAMuons_cfi.TCDzMin
TCDzMin
Definition: MonitorTrackSTAMuons_cfi.py:321
TrackingMonitor_cfi.doRegionCandidatePlots
doRegionCandidatePlots
Definition: TrackingMonitor_cfi.py:455
TransientTrackRecord.h
TrackBuildingAnalyzer::SeedEta
MonitorElement * SeedEta
Definition: TrackBuildingAnalyzer.h:89
TSCPBuilderNoMaterial.h
MonitorTrackSTAMuons_cfi.SeedHitMax
SeedHitMax
Definition: MonitorTrackSTAMuons_cfi.py:100
MonitorTrackSTAMuons_cfi.SeedDxyMin
SeedDxyMin
Definition: MonitorTrackSTAMuons_cfi.py:306
MonitorTrackSTAMuons_cfi.TCHitMin
TCHitMin
Definition: MonitorTrackSTAMuons_cfi.py:106
TrackBuildingAnalyzer::doETA
const bool doETA
Definition: TrackBuildingAnalyzer.h:142
EgammaValidation_cff.num
num
Definition: EgammaValidation_cff.py:34
SeedStopReason::SIZE
InputTag.h
TrackBuildingAnalyzer::trackMVAs
std::vector< MonitorElement * > trackMVAs
Definition: TrackBuildingAnalyzer.h:127
DDAxes::phi
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
TrajectoryStateOnSurface::globalMomentum
GlobalVector globalMomentum() const
Definition: TrajectoryStateOnSurface.h:66
TrackBuildingAnalyzer::analyze
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup, const TrajectorySeed &seed, const SeedStopInfo &stopInfo, const reco::BeamSpot &bs, const MagneticField &theMF, const TransientTrackingRecHitBuilder &theTTRHBuilder)
Definition: TrackBuildingAnalyzer.cc:495
MonitorTrackSTAMuons_cfi.TCDzMax
TCDzMax
Definition: MonitorTrackSTAMuons_cfi.py:320
TrackingMonitor_cfi.MVAMax
MVAMax
Definition: TrackingMonitor_cfi.py:371
PVValHelper::dxy
Definition: PVValidationHelpers.h:47
MonitorTrackInnerTrackMuons_cff.EtaMin
EtaMin
Definition: MonitorTrackInnerTrackMuons_cff.py:64
MonitorTrackInnerTrackMuons_cff.EtaMax
EtaMax
Definition: MonitorTrackInnerTrackMuons_cff.py:64
StopReason::NOT_STOPPED
PVValHelper::dz
Definition: PVValidationHelpers.h:50
T
long double T
Definition: Basic3DVectorLD.h:48
TSCBLBuilderNoMaterial
Definition: TSCBLBuilderNoMaterial.h:13
MonitorTrackSTAMuons_cfi.ThetaMax
ThetaMax
Definition: MonitorTrackSTAMuons_cfi.py:220
TrackBuildingAnalyzer::doMVAPlots
const bool doMVAPlots
Definition: TrackBuildingAnalyzer.h:153
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
dqm::impl::MonitorElement::getNbinsX
virtual int getNbinsX() const
get # of bins in X-axis
Definition: MonitorElement.cc:574
TrackCandidate::stopReason
uint8_t stopReason() const
Definition: TrackCandidate.h:64
TrackingMonitor_cfi.doMVAPlots
doMVAPlots
Definition: TrackingMonitor_cfi.py:95
HLT_2018_cff.region
region
Definition: HLT_2018_cff.py:81479
ALCARECOTkAlBeamHalo_cff.etaMax
etaMax
Definition: ALCARECOTkAlBeamHalo_cff.py:33
TrajectorySeed::recHits
range recHits() const
Definition: TrajectorySeed.h:52
TrackBuildingAnalyzer::SeedDz
MonitorElement * SeedDz
Definition: TrackBuildingAnalyzer.h:95
TrajectorySeed
Definition: TrajectorySeed.h:17
MonitorTrackSTAMuons_cfi.TCDzBin
TCDzBin
Definition: MonitorTrackSTAMuons_cfi.py:319
TrackBuildingAnalyzer::seedStoppingSource
MonitorElement * seedStoppingSource
Definition: TrackBuildingAnalyzer.h:100
TrackBuildingAnalyzer::TrackCandPhi
MonitorElement * TrackCandPhi
Definition: TrackBuildingAnalyzer.h:113
TrackBuildingAnalyzer::doTheta
const bool doTheta
Definition: TrackBuildingAnalyzer.h:145
TrajectoryStateTransform.h
MonitorTrackSTAMuons_cfi.PhiBin
PhiBin
Definition: MonitorTrackSTAMuons_cfi.py:229
dqm::implementation::IBooker
Definition: DQMStore.h:43
TrackingRegion
Definition: TrackingRegion.h:40
TrackBuildingAnalyzer::NumberOfRecHitsPerTrackCandVsEtaProfile
MonitorElement * NumberOfRecHitsPerTrackCandVsEtaProfile
Definition: TrackBuildingAnalyzer.h:121
TrajectorySeed::startingState
PTrajectoryStateOnDet const & startingState() const
Definition: TrajectorySeed.h:55
TrackingMonitor_cfi.MVABin
MVABin
Definition: TrackingMonitor_cfi.py:369
MonitorTrackSTAMuons_cfi.TCHitBin
TCHitBin
Definition: MonitorTrackSTAMuons_cfi.py:104
SeedStopInfo::stopReasonUC
unsigned char stopReasonUC() const
Definition: SeedStopInfo.h:16
TrackBuildingAnalyzer::TrackCandQ
MonitorElement * TrackCandQ
Definition: TrackBuildingAnalyzer.h:116
AlignmentPI::regions
regions
Definition: AlignmentPayloadInspectorHelper.h:76
Candidate.h
TrajectoryStateClosestToBeamLine::isValid
bool isValid() const
Definition: TrajectoryStateClosestToBeamLine.h:50
MonitorTrackSTAMuons_cfi.SeedDzMin
SeedDzMin
Definition: MonitorTrackSTAMuons_cfi.py:311
MonitorTrackSTAMuons_cfi.TCDxyMax
TCDxyMax
Definition: MonitorTrackSTAMuons_cfi.py:315
MonitorTrackSTAMuons_cfi.TCDxyMin
TCDxyMin
Definition: MonitorTrackSTAMuons_cfi.py:316
TrackBuildingAnalyzer::stoppingSourceVSphi
MonitorElement * stoppingSourceVSphi
Definition: TrackBuildingAnalyzer.h:125
TrackBuildingAnalyzer::stoppingSource
MonitorElement * stoppingSource
Definition: TrackBuildingAnalyzer.h:123
TrajectoryStateClosestToBeamLine::trackStateAtPCA
FTS const & trackStateAtPCA() const
Definition: TrajectoryStateClosestToBeamLine.h:32
TrackBuildingAnalyzer::TrackBuildingAnalyzer
TrackBuildingAnalyzer(const edm::ParameterSet &)
Definition: TrackBuildingAnalyzer.cc:25
edm::Event
Definition: Event.h:73
MagneticField
Definition: MagneticField.h:19
TransientTrackingRecHitBuilder
Definition: TransientTrackingRecHitBuilder.h:6
dqm::impl::MonitorElement::setAxisTitle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:800
MonitorTrackSTAMuons_cfi.SeedDxyMax
SeedDxyMax
Definition: MonitorTrackSTAMuons_cfi.py:305
edm::InputTag
Definition: InputTag.h:15
TrackBuildingAnalyzer::trackMVAsHPVsEtaProfile
std::vector< MonitorElement * > trackMVAsHPVsEtaProfile
Definition: TrackBuildingAnalyzer.h:132
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
TrackBuildingAnalyzer::numberOfTrajCandsPerSeedVsEta
MonitorElement * numberOfTrajCandsPerSeedVsEta
Definition: TrackBuildingAnalyzer.h:106
PV3DBase::perp2
T perp2() const
Definition: PV3DBase.h:68
deltaPhi.h
TrackBuildingAnalyzer::doPT
const bool doPT
Definition: TrackBuildingAnalyzer.h:141
TrackBuildingAnalyzer::doRegionCandidatePlots
const bool doRegionCandidatePlots
Definition: TrackBuildingAnalyzer.h:155
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
edm::OwnVector< TrackingRegion >
TrackBuildingAnalyzer::analyzeRegions
void analyzeRegions(const T &regions)
Definition: TrackBuildingAnalyzer.cc:731
MonitorTrackSTAMuons_cfi.ThetaBin
ThetaBin
Definition: MonitorTrackSTAMuons_cfi.py:219
TrackBuildingAnalyzer::initHisto
void initHisto(DQMStore::IBooker &ibooker, const edm::ParameterSet &)
Definition: TrackBuildingAnalyzer.cc:46
reco::reduceRange
constexpr T reduceRange(T x)
Definition: deltaPhi.h:18
reco::TrackBase::highPurity
Definition: TrackBase.h:154
TrackBuildingAnalyzer::SeedDxy
MonitorElement * SeedDxy
Definition: TrackBuildingAnalyzer.h:94
TrackBuildingAnalyzer::TrackCandTheta
MonitorElement * TrackCandTheta
Definition: TrackBuildingAnalyzer.h:115