CMS 3D CMS Logo

MuonTrackValidator.cc
Go to the documentation of this file.
4 
17 
18 #include "TMath.h"
19 #include <TF1.h>
20 
21 using namespace std;
22 using namespace edm;
23 
25  edm::Run const&,
26  edm::EventSetup const& setup) {
27  for (unsigned int ww = 0; ww < associators.size(); ww++) {
28  for (unsigned int www = 0; www < label.size(); www++) {
29  ibooker.cd();
30  InputTag algo = label[www];
31  string dirName = dirName_;
32 
33  auto setBinLogX = [this](TH1* th1) {
34  if (this->useLogPt) {
35  BinLogX(th1);
36  }
37  };
38 
39  if (!algo.process().empty())
40  dirName += algo.process() + "_";
41  if (!algo.label().empty())
42  dirName += algo.label();
43  if (!algo.instance().empty())
44  dirName += ("_" + algo.instance());
45  if (dirName.find("Tracks") < dirName.length()) {
46  dirName.replace(dirName.find("Tracks"), 6, "Trks");
47  }
48  if (dirName.find("UpdatedAtVtx") < dirName.length()) {
49  dirName.replace(dirName.find("UpdatedAtVtx"), 12, "UpdAtVtx");
50  }
51  string assoc = associators[ww];
52  if (assoc.find("tpToTkmuTrackAssociation") < assoc.length()) {
53  dirName += "_TkAsso";
54  }
55  std::replace(dirName.begin(), dirName.end(), ':', '_');
56  ibooker.setCurrentFolder(dirName);
57 
58  h_tracks.push_back(
59  ibooker.book1D("Ntracks", "Number of reconstructed tracks", nintNTracks, minNTracks, maxNTracks));
60  h_fakes.push_back(ibooker.book1D("Nfakes", "Number of fake reco tracks", nintFTracks, minFTracks, maxFTracks));
61  h_charge.push_back(ibooker.book1D("Ncharge", "track charge", 3, -1.5, 1.5));
62 
63  h_recoeta.push_back(ibooker.book1D("num_reco_eta", "N of reco track vs eta", nintEta, minEta, maxEta));
64  h_assoceta.push_back(ibooker.book1D(
65  "num_assoSimToReco_eta", "N of associated tracks (simToReco) vs eta", nintEta, minEta, maxEta));
66  h_assoc2eta.push_back(ibooker.book1D(
67  "num_assoRecoToSim_eta", "N of associated (recoToSim) tracks vs eta", nintEta, minEta, maxEta));
68  h_simuleta.push_back(ibooker.book1D("num_simul_eta", "N of simulated tracks vs eta", nintEta, minEta, maxEta));
69  h_misideta.push_back(ibooker.book1D("num_chargemisid_eta",
70  "N of associated (simToReco) tracks with charge misID vs eta",
71  nintEta,
72  minEta,
73  maxEta));
74 
75  h_recopT.push_back(ibooker.book1D("num_reco_pT", "N of reco track vs pT", nintPt, minPt, maxPt, setBinLogX));
76  h_assocpT.push_back(ibooker.book1D(
77  "num_assoSimToReco_pT", "N of associated tracks (simToReco) vs pT", nintPt, minPt, maxPt, setBinLogX));
78  h_assoc2pT.push_back(ibooker.book1D(
79  "num_assoRecoToSim_pT", "N of associated (recoToSim) tracks vs pT", nintPt, minPt, maxPt, setBinLogX));
80  h_simulpT.push_back(
81  ibooker.book1D("num_simul_pT", "N of simulated tracks vs pT", nintPt, minPt, maxPt, setBinLogX));
82  h_misidpT.push_back(ibooker.book1D("num_chargemisid_pT",
83  "N of associated (simToReco) tracks with charge misID vs pT",
84  nintPt,
85  minPt,
86  maxPt,
87  setBinLogX));
88 
89  h_recophi.push_back(ibooker.book1D("num_reco_phi", "N of reco track vs phi", nintPhi, minPhi, maxPhi));
90  h_assocphi.push_back(ibooker.book1D(
91  "num_assoSimToReco_phi", "N of associated tracks (simToReco) vs phi", nintPhi, minPhi, maxPhi));
92  h_assoc2phi.push_back(ibooker.book1D(
93  "num_assoRecoToSim_phi", "N of associated (recoToSim) tracks vs phi", nintPhi, minPhi, maxPhi));
94  h_simulphi.push_back(ibooker.book1D("num_simul_phi", "N of simulated tracks vs phi", nintPhi, minPhi, maxPhi));
95  h_misidphi.push_back(ibooker.book1D("num_chargemisid_phi",
96  "N of associated (simToReco) tracks with charge misID vs phi",
97  nintPhi,
98  minPhi,
99  maxPhi));
100 
101  h_recohit.push_back(ibooker.book1D("num_reco_hit", "N of reco tracks vs N SimHits", nintNHit, minNHit, maxNHit));
102  h_assochit.push_back(ibooker.book1D(
103  "num_assoSimToReco_hit", "N of associated tracks (simToReco) vs N SimHits", nintNHit, minNHit, maxNHit));
104  h_assoc2hit.push_back(ibooker.book1D(
105  "num_assoRecoToSim_hit", "N of associated (recoToSim) tracks vs N Rechits", nintNHit, minNHit, maxNHit));
106  h_simulhit.push_back(
107  ibooker.book1D("num_simul_hit", "N of simulated tracks vs N SimHits", nintNHit, minNHit, maxNHit));
108  h_misidhit.push_back(ibooker.book1D("num_chargemisid_hit",
109  "N of associated (recoToSim) tracks with charge misID vs N RecHits",
110  nintNHit,
111  minNHit,
112  maxNHit));
113 
114  h_recodxy.push_back(ibooker.book1D("num_reco_dxy", "N of reco track vs dxy", nintDxy, minDxy, maxDxy));
115  h_assocdxy.push_back(ibooker.book1D(
116  "num_assoSimToReco_dxy", "N of associated tracks (simToReco) vs dxy", nintDxy, minDxy, maxDxy));
117  h_assoc2dxy.push_back(ibooker.book1D(
118  "num_assoRecoToSim_dxy", "N of associated (recoToSim) tracks vs dxy", nintDxy, minDxy, maxDxy));
119  h_simuldxy.push_back(ibooker.book1D("num_simul_dxy", "N of simulated tracks vs dxy", nintDxy, minDxy, maxDxy));
120  h_misiddxy.push_back(ibooker.book1D("num_chargemisid_dxy",
121  "N of associated (simToReco) tracks with charge misID vs dxy",
122  nintDxy,
123  minDxy,
124  maxDxy));
125  h_recodz.push_back(ibooker.book1D("num_reco_dz", "N of reco track vs dz", nintDz, minDz, maxDz));
126  h_assocdz.push_back(
127  ibooker.book1D("num_assoSimToReco_dz", "N of associated tracks (simToReco) vs dz", nintDz, minDz, maxDz));
128  h_assoc2dz.push_back(
129  ibooker.book1D("num_assoRecoToSim_dz", "N of associated (recoToSim) tracks vs dz", nintDz, minDz, maxDz));
130  h_simuldz.push_back(ibooker.book1D("num_simul_dz", "N of simulated tracks vs dz", nintDz, minDz, maxDz));
131  h_misiddz.push_back(ibooker.book1D(
132  "num_chargemisid_dz", "N of associated (simToReco) tracks with charge misID vs dz", nintDz, minDz, maxDz));
133 
134  h_assocRpos.push_back(ibooker.book1D(
135  "num_assoSimToReco_Rpos", "N of associated tracks (simToReco) vs Radius", nintRpos, minRpos, maxRpos));
136  h_simulRpos.push_back(
137  ibooker.book1D("num_simul_Rpos", "N of simulated tracks vs Radius", nintRpos, minRpos, maxRpos));
138 
139  h_assocZpos.push_back(ibooker.book1D(
140  "num_assoSimToReco_Zpos", "N of associated tracks (simToReco) vs Z", nintZpos, minZpos, maxZpos));
141  h_simulZpos.push_back(ibooker.book1D("num_simul_Zpos", "N of simulated tracks vs Z", nintZpos, minZpos, maxZpos));
142 
143  h_recopu.push_back(ibooker.book1D("num_reco_pu", "N of reco track vs pu", nintPU, minPU, maxPU));
144  h_assocpu.push_back(
145  ibooker.book1D("num_assoSimToReco_pu", "N of associated tracks (simToReco) vs pu", nintPU, minPU, maxPU));
146  h_assoc2pu.push_back(
147  ibooker.book1D("num_assoRecoToSim_pu", "N of associated (recoToSim) tracks vs pu", nintPU, minPU, maxPU));
148  h_simulpu.push_back(ibooker.book1D("num_simul_pu", "N of simulated tracks vs pu", nintPU, minPU, maxPU));
149  h_misidpu.push_back(ibooker.book1D(
150  "num_chargemisid_pu", "N of associated (simToReco) charge misIDed tracks vs pu", nintPU, minPU, maxPU));
151 
152  h_nchi2.push_back(ibooker.book1D("chi2", "Track normalized #chi^{2}", 80, 0., 20.));
153  h_nchi2_prob.push_back(ibooker.book1D("chi2prob", "Probability of track normalized #chi^{2}", 100, 0., 1.));
154 
155  chi2_vs_nhits.push_back(
156  ibooker.book2D("chi2_vs_nhits", "#chi^{2} vs nhits", nintNHit, minNHit, maxNHit, 20, 0., 10.));
157  chi2_vs_eta.push_back(ibooker.book2D("chi2_vs_eta", "chi2_vs_eta", nintEta, minEta, maxEta, 40, 0., 20.));
158  chi2_vs_phi.push_back(ibooker.book2D("chi2_vs_phi", "#chi^{2} vs #phi", nintPhi, minPhi, maxPhi, 40, 0., 20.));
159 
160  h_nhits.push_back(ibooker.book1D("nhits", "Number of hits per track", nintNHit, minNHit, maxNHit));
161  nhits_vs_eta.push_back(
162  ibooker.book2D("nhits_vs_eta", "Number of Hits vs eta", nintEta, minEta, maxEta, nintNHit, minNHit, maxNHit));
163  nhits_vs_phi.push_back(
164  ibooker.book2D("nhits_vs_phi", "#hits vs #phi", nintPhi, minPhi, maxPhi, nintNHit, minNHit, maxNHit));
165 
166  if (do_MUOhitsPlots) {
167  nDThits_vs_eta.push_back(ibooker.book2D(
168  "nDThits_vs_eta", "Number of DT hits vs eta", nintEta, minEta, maxEta, nintDTHit, minDTHit, maxDTHit));
169  nCSChits_vs_eta.push_back(ibooker.book2D(
170  "nCSChits_vs_eta", "Number of CSC hits vs eta", nintEta, minEta, maxEta, nintCSCHit, minCSCHit, maxCSCHit));
171  nRPChits_vs_eta.push_back(ibooker.book2D(
172  "nRPChits_vs_eta", "Number of RPC hits vs eta", nintEta, minEta, maxEta, nintRPCHit, minRPCHit, maxRPCHit));
173  if (useGEMs_)
174  nGEMhits_vs_eta.push_back(ibooker.book2D(
175  "nGEMhits_vs_eta", "Number of GEM hits vs eta", nintEta, minEta, maxEta, nintNHit, minNHit, maxNHit));
176  if (useME0_)
177  nME0hits_vs_eta.push_back(ibooker.book2D(
178  "nME0hits_vs_eta", "Number of ME0 hits vs eta", nintEta, minEta, maxEta, nintNHit, minNHit, maxNHit));
179  }
180 
181  if (do_TRKhitsPlots) {
182  nTRK_LayersWithMeas_vs_eta.push_back(ibooker.book2D("nTRK_LayersWithMeas_vs_eta",
183  "# TRK Layers with measurement vs eta",
184  nintEta,
185  minEta,
186  maxEta,
187  nintLayers,
188  minLayers,
189  maxLayers));
190  nPixel_LayersWithMeas_vs_eta.push_back(ibooker.book2D("nPixel_LayersWithMeas_vs_eta",
191  "Number of Pixel Layers with measurement vs eta",
192  nintEta,
193  minEta,
194  maxEta,
195  nintPixels,
196  minPixels,
197  maxPixels));
198  h_nmisslayers_inner.push_back(ibooker.book1D(
199  "nTRK_misslayers_inner", "Number of missing inner TRK layers", nintLayers, minLayers, maxLayers));
200  h_nmisslayers_outer.push_back(ibooker.book1D(
201  "nTRK_misslayers_outer", "Number of missing outer TRK layers", nintLayers, minLayers, maxLayers));
202  h_nlosthits.push_back(ibooker.book1D("nlosthits", "Number of lost hits per track", 6, -0.5, 5.5));
203  nlosthits_vs_eta.push_back(ibooker.book2D(
204  "nlosthits_vs_eta", "Number of lost hits per track vs eta", nintEta, minEta, maxEta, 6, -0.5, 5.5));
205  }
206 
207  ptres_vs_eta.push_back(ibooker.book2D("ptres_vs_eta",
208  "p_{T} Relative Residual vs #eta",
209  nintEta,
210  minEta,
211  maxEta,
212  ptRes_nbin,
214  ptRes_rangeMax));
215  ptres_vs_phi.push_back(ibooker.book2D("ptres_vs_phi",
216  "p_{T} Relative Residual vs #phi",
217  nintPhi,
218  minPhi,
219  maxPhi,
220  ptRes_nbin,
222  ptRes_rangeMax));
223  ptres_vs_pt.push_back(ibooker.book2D("ptres_vs_pt",
224  "p_{T} Relative Residual vs p_{T}",
225  nintPt,
226  minPt,
227  maxPt,
228  ptRes_nbin,
231  setBinLogX));
232  h_ptpull.push_back(ibooker.book1D("ptpull", "p_{T} Pull", 100, -10., 10.));
233  ptpull_vs_eta.push_back(
234  ibooker.book2D("ptpull_vs_eta", "p_{T} Pull vs #eta", nintEta, minEta, maxEta, 100, -10., 10.));
235  ptpull_vs_phi.push_back(
236  ibooker.book2D("ptpull_vs_phi", "p_{T} Pull vs #phi", nintPhi, minPhi, maxPhi, 100, -10., 10.));
237  h_qoverppull.push_back(ibooker.book1D("qoverppull", "q/p Pull", 100, -10., 10.));
238 
239  h_etaRes.push_back(ibooker.book1D("etaRes", "#eta residual", etaRes_nbin, etaRes_rangeMin, etaRes_rangeMax));
240  etares_vs_eta.push_back(ibooker.book2D("etares_vs_eta",
241  "#eta Residual vs #eta",
242  nintEta,
243  minEta,
244  maxEta,
245  etaRes_nbin,
247  etaRes_rangeMax));
248 
249  thetaCotres_vs_eta.push_back(ibooker.book2D("thetaCotres_vs_eta",
250  "cot(#theta) Residual vs #eta",
251  nintEta,
252  minEta,
253  maxEta,
257  thetaCotres_vs_pt.push_back(ibooker.book2D("thetaCotres_vs_pt",
258  "cot(#theta) Residual vs p_{T}",
259  nintPt,
260  minPt,
261  maxPt,
265  setBinLogX));
266  h_thetapull.push_back(ibooker.book1D("thetapull", "#theta Pull", 100, -10., 10.));
267  thetapull_vs_eta.push_back(
268  ibooker.book2D("thetapull_vs_eta", "#theta Pull vs #eta", nintEta, minEta, maxEta, 100, -10, 10));
269  thetapull_vs_phi.push_back(
270  ibooker.book2D("thetapull_vs_phi", "#theta Pull vs #phi", nintPhi, minPhi, maxPhi, 100, -10, 10));
271 
272  phires_vs_eta.push_back(ibooker.book2D("phires_vs_eta",
273  "#phi Residual vs #eta",
274  nintEta,
275  minEta,
276  maxEta,
277  phiRes_nbin,
279  phiRes_rangeMax));
280  phires_vs_pt.push_back(ibooker.book2D("phires_vs_pt",
281  "#phi Residual vs p_{T}",
282  nintPt,
283  minPt,
284  maxPt,
285  phiRes_nbin,
288  setBinLogX));
289  phires_vs_phi.push_back(ibooker.book2D("phires_vs_phi",
290  "#phi Residual vs #phi",
291  nintPhi,
292  minPhi,
293  maxPhi,
294  phiRes_nbin,
296  phiRes_rangeMax));
297  h_phipull.push_back(ibooker.book1D("phipull", "#phi Pull", 100, -10., 10.));
298  phipull_vs_eta.push_back(
299  ibooker.book2D("phipull_vs_eta", "#phi Pull vs #eta", nintEta, minEta, maxEta, 100, -10, 10));
300  phipull_vs_phi.push_back(
301  ibooker.book2D("phipull_vs_phi", "#phi Pull vs #phi", nintPhi, minPhi, maxPhi, 100, -10, 10));
302 
303  dxyres_vs_eta.push_back(ibooker.book2D("dxyres_vs_eta",
304  "dxy Residual vs #eta",
305  nintEta,
306  minEta,
307  maxEta,
308  dxyRes_nbin,
310  dxyRes_rangeMax));
311  dxyres_vs_pt.push_back(ibooker.book2D("dxyres_vs_pt",
312  "dxy Residual vs p_{T}",
313  nintPt,
314  minPt,
315  maxPt,
316  dxyRes_nbin,
319  setBinLogX));
320  h_dxypull.push_back(ibooker.book1D("dxypull", "dxy Pull", 100, -10., 10.));
321  dxypull_vs_eta.push_back(
322  ibooker.book2D("dxypull_vs_eta", "dxy Pull vs #eta", nintEta, minEta, maxEta, 100, -10, 10));
323 
324  dzres_vs_eta.push_back(ibooker.book2D(
325  "dzres_vs_eta", "dz Residual vs #eta", nintEta, minEta, maxEta, dzRes_nbin, dzRes_rangeMin, dzRes_rangeMax));
326  dzres_vs_pt.push_back(ibooker.book2D("dzres_vs_pt",
327  "dz Residual vs p_{T}",
328  nintPt,
329  minPt,
330  maxPt,
331  dzRes_nbin,
334  setBinLogX));
335  h_dzpull.push_back(ibooker.book1D("dzpull", "dz Pull", 100, -10., 10.));
336  dzpull_vs_eta.push_back(
337  ibooker.book2D("dzpull_vs_eta", "dz Pull vs #eta", nintEta, minEta, maxEta, 100, -10, 10));
338 
339  nRecHits_vs_nSimHits.push_back(ibooker.book2D(
340  "nRecHits_vs_nSimHits", "nRecHits vs nSimHits", nintNHit, minNHit, maxNHit, nintNHit, minNHit, maxNHit));
341 
342  if (MABH) {
343  h_PurityVsQuality.push_back(
344  ibooker.book2D("PurityVsQuality", "Purity vs Quality (MABH)", 20, 0.01, 1.01, 20, 0.01, 1.01));
345  }
346 
347  if (associators[ww] == "trackAssociatorByChi2") {
348  h_assochi2.push_back(ibooker.book1D("assocChi2", "track association #chi^{2}", 1000, 0., 100.));
349  h_assochi2_prob.push_back(ibooker.book1D("assocChi2_prob", "probability of association #chi^{2}", 100, 0., 1.));
350  } else if (associators[ww] == "trackAssociatorByHits") {
351  h_assocFraction.push_back(ibooker.book1D("assocFraction", "fraction of shared hits", 22, 0., 1.1));
352  h_assocSharedHit.push_back(ibooker.book1D("assocSharedHit", "number of shared hits", 41, -0.5, 40.5));
353  }
354 
355  } //for (unsigned int www=0;www<label.size();www++)
356  } //for (unsigned int ww=0;ww<associators.size();ww++)
357 }
358 
360  using namespace reco;
361 
362  edm::LogInfo("MuonTrackValidator") << "\n===================================================="
363  << "\n"
364  << "Analyzing new event"
365  << "\n"
366  << "====================================================\n"
367  << "\n";
368 
370  int PU_NumInteractions(-1);
371 
372  edm::ESHandle<ParametersDefinerForTP> Lhc_parametersDefinerTP;
373  edm::ESHandle<CosmicParametersDefinerForTP> _Cosmic_parametersDefinerTP;
374  std::unique_ptr<ParametersDefinerForTP> Cosmic_parametersDefinerTP;
375 
376  if (parametersDefiner == "LhcParametersDefinerForTP") {
377  Lhc_parametersDefinerTP = setup.getHandle(tpDefinerEsToken);
378 
379  // PileupSummaryInfo is contained only in collision events
380  event.getByToken(pileupinfo_Token, puinfoH);
381  for (std::vector<PileupSummaryInfo>::const_iterator puInfoIt = puinfoH->begin(); puInfoIt != puinfoH->end();
382  ++puInfoIt) {
383  if (puInfoIt->getBunchCrossing() == 0) {
384  PU_NumInteractions = puInfoIt->getPU_NumInteractions();
385  break;
386  }
387  }
388 
389  } else if (parametersDefiner == "CosmicParametersDefinerForTP") {
390  //setup.get<TrackAssociatorRecord>().get(parametersDefiner, _Cosmic_parametersDefinerTP);
391  _Cosmic_parametersDefinerTP = setup.getHandle(cosmictpDefinerEsToken);
392 
393  //Since we modify the object, we must clone it
394  Cosmic_parametersDefinerTP = _Cosmic_parametersDefinerTP->clone();
395 
397  //warning: make sure the TP collection used in the map is the same used here
398  event.getByToken(_simHitTpMapTag, simHitsTPAssoc);
399  Cosmic_parametersDefinerTP->initEvent(simHitsTPAssoc);
400  cosmictpSelector.initEvent(simHitsTPAssoc);
401  } else {
402  edm::LogError("MuonTrackValidator") << "Unexpected label: parametersDefiner = " << parametersDefiner.c_str()
403  << "\n";
404  }
405 
407  const TrackingParticleRefVector* ptr_TPrefV = nullptr;
409  edm::Handle<TrackingParticleRefVector> TPCollectionRefVector_H;
410 
411  if (label_tp_refvector) {
412  event.getByToken(tp_refvector_Token, TPCollectionRefVector_H);
413  ptr_TPrefV = TPCollectionRefVector_H.product();
414  } else {
415  event.getByToken(tp_Token, TPCollection_H);
416  size_t nTP = TPCollection_H->size();
417  for (size_t i = 0; i < nTP; ++i) {
418  TPrefV.push_back(TrackingParticleRef(TPCollection_H, i));
419  }
420  ptr_TPrefV = &TPrefV;
421  }
422  TrackingParticleRefVector const& tPC = *ptr_TPrefV;
423 
424  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
425  bool bs_Available = event.getByToken(bsSrc_Token, recoBeamSpotHandle);
427  if (bs_Available)
428  bs = *recoBeamSpotHandle;
429  edm::LogVerbatim("MuonTrackValidator") << bs;
430 
431  std::vector<const reco::TrackToTrackingParticleAssociator*> associator;
432  if (UseAssociators) {
434  for (auto const& associatorName : associators) {
435  event.getByLabel(associatorName, theAssociator);
436  associator.push_back(theAssociator.product());
437  }
438  }
439 
440  int w = 0;
441  for (unsigned int ww = 0; ww < associators.size(); ww++) {
442  for (unsigned int www = 0; www < label.size(); www++) {
443  //
444  //get collections from the event
445  //
447  unsigned int trackCollectionSize = 0;
448 
449  reco::RecoToSimCollection recSimColl;
450  reco::SimToRecoCollection simRecColl;
451 
452  // account for missing track collections (HLT case)
453  if (!event.getByToken(track_Collection_Token[www], trackCollection) && ignoremissingtkcollection_) {
454  recSimColl.post_insert();
455  simRecColl.post_insert();
456  }
457 
458  //associate tracks to TrackingParticles
459  else {
460  trackCollectionSize = trackCollection->size();
461 
462  if (UseAssociators) {
463  edm::LogVerbatim("MuonTrackValidator")
464  << "Analyzing " << label[www].process() << ":" << label[www].label() << ":" << label[www].instance()
465  << " with " << associators[ww].c_str() << "\n";
466 
467  LogTrace("MuonTrackValidator") << "Calling associateRecoToSim method"
468  << "\n";
469  recSimColl = associator[ww]->associateRecoToSim(trackCollection, TPCollection_H);
470  LogTrace("MuonTrackValidator") << "Calling associateSimToReco method"
471  << "\n";
472  simRecColl = associator[ww]->associateSimToReco(trackCollection, TPCollection_H);
473  } else {
474  edm::LogVerbatim("MuonTrackValidator")
475  << "Analyzing " << label[www].process() << ":" << label[www].label() << ":" << label[www].instance()
476  << " with " << associatormap.process() << ":" << associatormap.label() << ":" << associatormap.instance()
477  << "\n";
478 
479  Handle<reco::SimToRecoCollection> simtorecoCollectionH;
480  event.getByToken(simToRecoCollection_Token, simtorecoCollectionH);
481  simRecColl = *simtorecoCollectionH.product();
482 
483  Handle<reco::RecoToSimCollection> recotosimCollectionH;
484  event.getByToken(recoToSimCollection_Token, recotosimCollectionH);
485  recSimColl = *recotosimCollectionH.product();
486  }
487  }
488 
489  //
490  //fill simulation histograms
491  //
492  edm::LogVerbatim("MuonTrackValidator") << "\n# of TrackingParticles: " << tPC.size() << "\n";
493  int ats = 0;
494  int st = 0;
495 
496  for (size_t i = 0; i < tPC.size(); i++) {
497  bool TP_is_matched = false;
498  bool isChargeOK = true;
499  double quality = 0.;
500 
501  const TrackingParticleRef& tpr = tPC[i];
502  const TrackingParticle& tp = *tpr;
503 
504  TrackingParticle::Vector momentumTP;
505  TrackingParticle::Point vertexTP;
506  double dxySim = 0;
507  double dzSim = 0;
508 
509  //If the TrackingParticle is collision-like, get the momentum and vertex at production state
510  //and the impact parameters w.r.t. PCA
511  if (parametersDefiner == "LhcParametersDefinerForTP") {
512  LogTrace("MuonTrackValidator") << "TrackingParticle " << i;
513  if (!tpSelector(tp))
514  continue;
515  momentumTP = tp.momentum();
516  vertexTP = tp.vertex();
517  TrackingParticle::Vector momentum = Lhc_parametersDefinerTP->momentum(event, setup, tpr);
518  TrackingParticle::Point vertex = Lhc_parametersDefinerTP->vertex(event, setup, tpr);
519  dxySim = TrackingParticleIP::dxy(vertex, momentum, bs.position());
520  dzSim = TrackingParticleIP::dz(vertex, momentum, bs.position());
521  }
522  //for cosmics get the momentum and vertex at PCA
523  else if (parametersDefiner == "CosmicParametersDefinerForTP") {
524  edm::LogVerbatim("MuonTrackValidator") << "TrackingParticle " << i;
525  if (!cosmictpSelector(tpr, &bs, event, setup))
526  continue;
527  momentumTP = Cosmic_parametersDefinerTP->momentum(event, setup, tpr);
528  vertexTP = Cosmic_parametersDefinerTP->vertex(event, setup, tpr);
529  dxySim = TrackingParticleIP::dxy(vertexTP, momentumTP, bs.position());
530  dzSim = TrackingParticleIP::dz(vertexTP, momentumTP, bs.position());
531  }
532 
533  // Number of counted SimHits depend on the selection of tracker and muon detectors (via cfg parameters)
534  int nSimHits = 0;
535  if (usetracker && usemuon) {
536  nSimHits = tpr.get()->numberOfHits();
537  } else if (!usetracker && usemuon) {
538  nSimHits = tpr.get()->numberOfHits() - tpr.get()->numberOfTrackerHits();
539  } else if (usetracker && !usemuon) {
540  nSimHits = tpr.get()->numberOfTrackerHits();
541  }
542 
543  edm::LogVerbatim("MuonTrackValidator") << "--------------------Selected TrackingParticle #" << tpr.key()
544  << " (N counted simhits = " << nSimHits << ")";
545  edm::LogVerbatim("MuonTrackValidator")
546  << "momentumTP: pt = " << sqrt(momentumTP.perp2()) << ", pz = " << momentumTP.z()
547  << ", \t vertexTP: radius = " << sqrt(vertexTP.perp2()) << ", z = " << vertexTP.z();
548  st++;
549 
550  double TPeta = momentumTP.eta();
551  double xTPeta = getEta(TPeta); // may be |eta| in histos according to useFabsEta
552  double TPpt = sqrt(momentumTP.perp2());
553  double xTPpt = getPt(TPpt); // may be 1/pt in histos according to useInvPt
554  double TPphi = momentumTP.phi();
555  double TPrpos = sqrt(vertexTP.perp2());
556  double TPzpos = vertexTP.z();
557 
558  int assoc_recoTrack_NValidHits = 0;
559  if (simRecColl.find(tpr) != simRecColl.end()) {
560  auto const& rt = simRecColl[tpr];
561  if (!rt.empty()) {
562  RefToBase<Track> assoc_recoTrack = rt.begin()->first;
563  TP_is_matched = true;
564  ats++;
565  if (assoc_recoTrack->charge() != tpr->charge())
566  isChargeOK = false;
567  quality = rt.begin()->second;
568  assoc_recoTrack_NValidHits = assoc_recoTrack->numberOfValidHits();
569  edm::LogVerbatim("MuonTrackValidator") << "-----------------------------associated to Track #"
570  << assoc_recoTrack.key() << " with quality:" << quality << "\n";
571  }
572  } else {
573  edm::LogVerbatim("MuonTrackValidator")
574  << "TrackingParticle #" << tpr.key() << " with pt,eta,phi: " << sqrt(momentumTP.perp2()) << " , "
575  << momentumTP.eta() << " , " << momentumTP.phi() << " , "
576  << " NOT associated to any reco::Track"
577  << "\n";
578  }
579 
580  // histos for efficiency vs eta
581  fillPlotNoFlow(h_simuleta[w], xTPeta);
582  if (TP_is_matched) {
583  fillPlotNoFlow(h_assoceta[w], xTPeta);
584  if (!isChargeOK)
585  fillPlotNoFlow(h_misideta[w], xTPeta);
586  }
587 
588  // histos for efficiency vs phi
589  fillPlotNoFlow(h_simulphi[w], TPphi);
590  if (TP_is_matched) {
591  fillPlotNoFlow(h_assocphi[w], TPphi);
592  if (!isChargeOK)
593  fillPlotNoFlow(h_misidphi[w], TPphi);
594  }
595 
596  // histos for efficiency vs pT
597  fillPlotNoFlow(h_simulpT[w], xTPpt);
598  if (TP_is_matched) {
599  fillPlotNoFlow(h_assocpT[w], xTPpt);
600  if (!isChargeOK)
601  fillPlotNoFlow(h_misidpT[w], xTPpt);
602  }
603 
604  // histos for efficiency vs dxy
605  fillPlotNoFlow(h_simuldxy[w], dxySim);
606  if (TP_is_matched) {
607  fillPlotNoFlow(h_assocdxy[w], dxySim);
608  if (!isChargeOK)
609  fillPlotNoFlow(h_misiddxy[w], dxySim);
610  }
611 
612  // histos for efficiency vs dz
613  fillPlotNoFlow(h_simuldz[w], dzSim);
614  if (TP_is_matched) {
615  fillPlotNoFlow(h_assocdz[w], dzSim);
616  if (!isChargeOK)
617  fillPlotNoFlow(h_misiddz[w], dzSim);
618  }
619 
620  // histos for efficiency vs Radius
621  fillPlotNoFlow(h_simulRpos[w], TPrpos);
622  if (TP_is_matched)
623  fillPlotNoFlow(h_assocRpos[w], TPrpos);
624 
625  // histos for efficiency vs z position
626  fillPlotNoFlow(h_simulZpos[w], TPzpos);
627  if (TP_is_matched)
628  fillPlotNoFlow(h_assocZpos[w], TPzpos);
629 
630  // histos for efficiency vs Number of Hits
631  fillPlotNoFlow(h_simulhit[w], nSimHits);
632  if (TP_is_matched) {
633  fillPlotNoFlow(h_assochit[w], nSimHits);
634  nRecHits_vs_nSimHits[w]->Fill(nSimHits, assoc_recoTrack_NValidHits);
635 
636  // charge misid is more useful w.r.t. nRecHits (filled after)
637  //if (!isChargeOK) fillPlotNoFlow(h_misidhit[w], nSimHits);
638  }
639 
640  // histos for efficiency vs PileUp
641  fillPlotNoFlow(h_simulpu[w], PU_NumInteractions);
642  if (TP_is_matched) {
643  fillPlotNoFlow(h_assocpu[w], PU_NumInteractions);
644  if (!isChargeOK)
645  fillPlotNoFlow(h_misidpu[w], PU_NumInteractions);
646  }
647 
648  } // End for (size_t i = 0; i < tPCeff.size(); i++) {
649 
650  //
651  //fill reconstructed track histograms
652  //
653  edm::LogVerbatim("MuonTrackValidator")
654  << "\n# of reco::Tracks with " << label[www].process() << ":" << label[www].label() << ":"
655  << label[www].instance() << ": " << trackCollectionSize << "\n";
656 
657  int at = 0;
658  int rT = 0;
659  for (edm::View<Track>::size_type i = 0; i < trackCollectionSize; ++i) {
660  bool Track_is_matched = false;
661  bool isChargeOK = true;
663  int nRecHits = track->numberOfValidHits();
664  rT++;
665 
666  std::vector<std::pair<TrackingParticleRef, double> > tp;
668 
669  // new logic (bidirectional)
671  edm::LogVerbatim("MuonTrackValidator") << "----------------------------------------Track #" << track.key()
672  << " (N valid rechits = " << nRecHits << ")";
673 
674  if (recSimColl.find(track) != recSimColl.end()) {
675  tp = recSimColl[track];
676  if (!tp.empty()) {
677  tpr = tp.begin()->first;
678  // RtS and StR must associate the same pair !
679  if (simRecColl.find(tpr) != simRecColl.end()) {
680  auto const& assoc_track_checkback = simRecColl[tpr].begin()->first;
681 
682  if (assoc_track_checkback.key() == track.key()) {
683  Track_is_matched = true;
684  at++;
685  if (track->charge() != tpr->charge())
686  isChargeOK = false;
687  double Purity = tp.begin()->second;
688  double Quality = simRecColl[tpr].begin()->second;
689  edm::LogVerbatim("MuonTrackValidator")
690  << "with pt=" << track->pt() << " associated with purity:" << Purity << " to TrackingParticle #"
691  << tpr.key() << "\n";
692  if (MABH)
693  h_PurityVsQuality[w]->Fill(Quality, Purity);
694  }
695  }
696  }
697  }
698 
699  if (!Track_is_matched)
700  edm::LogVerbatim("MuonTrackValidator")
701  << "with pt=" << track->pt() << " NOT associated to any TrackingParticle"
702  << "\n";
703  }
704  // old logic, valid for cosmics 2-legs reco (bugged for collision scenario)
705  else {
706  if (recSimColl.find(track) != recSimColl.end()) {
707  tp = recSimColl[track];
708  if (!tp.empty()) {
709  tpr = tp.begin()->first;
710  Track_is_matched = true;
711  at++;
712  if (track->charge() != tpr->charge())
713  isChargeOK = false;
714  edm::LogVerbatim("MuonTrackValidator") << "reco::Track #" << track.key() << " with pt=" << track->pt()
715  << " associated with quality:" << tp.begin()->second << "\n";
716  }
717  } else {
718  edm::LogVerbatim("MuonTrackValidator") << "reco::Track #" << track.key() << " with pt=" << track->pt()
719  << " NOT associated to any TrackingParticle"
720  << "\n";
721  }
722  }
723 
724  double etaRec = track->eta();
725  double xetaRec = getEta(etaRec);
726 
727  double ptRec = track->pt();
728  double xptRec = getPt(ptRec);
729 
730  double qoverpRec = track->qoverp();
731  double phiRec = track->phi();
732  double thetaRec = track->theta();
733  double dxyRec = track->dxy(bs.position());
734  double dzRec = track->dz(bs.position());
735 
736  double qoverpError = track->qoverpError();
737  double ptError = track->ptError();
738  double thetaError = track->thetaError();
739  double phiError = track->phiError();
740  double dxyError = track->dxyError();
741  double dzError = track->dzError();
742 
743  // histos for fake rate vs eta
744  fillPlotNoFlow(h_recoeta[w], xetaRec);
745  if (Track_is_matched) {
746  fillPlotNoFlow(h_assoc2eta[w], xetaRec);
747  }
748 
749  // histos for fake rate vs phi
750  fillPlotNoFlow(h_recophi[w], phiRec);
751  if (Track_is_matched) {
752  fillPlotNoFlow(h_assoc2phi[w], phiRec);
753  }
754 
755  // histos for fake rate vs pT
756  fillPlotNoFlow(h_recopT[w], xptRec);
757  if (Track_is_matched) {
758  fillPlotNoFlow(h_assoc2pT[w], xptRec);
759  }
760 
761  // histos for fake rate vs dxy
762  fillPlotNoFlow(h_recodxy[w], dxyRec);
763  if (Track_is_matched) {
764  fillPlotNoFlow(h_assoc2dxy[w], dxyRec);
765  }
766 
767  // histos for fake rate vs dz
768  fillPlotNoFlow(h_recodz[w], dzRec);
769  if (Track_is_matched) {
770  fillPlotNoFlow(h_assoc2dz[w], dzRec);
771  }
772 
773  // histos for fake rate vs Number of RecHits in track
774  fillPlotNoFlow(h_recohit[w], nRecHits);
775  if (Track_is_matched) {
776  fillPlotNoFlow(h_assoc2hit[w], nRecHits);
777  // charge misid w.r.t. nRecHits
778  if (!isChargeOK)
779  fillPlotNoFlow(h_misidhit[w], nRecHits);
780  }
781 
782  // histos for fake rate vs Number of PU interactions
783  fillPlotNoFlow(h_recopu[w], PU_NumInteractions);
784  if (Track_is_matched) {
785  fillPlotNoFlow(h_assoc2pu[w], PU_NumInteractions);
786  }
787 
788  // Fill other histos
789  TrackingParticle* tpp = const_cast<TrackingParticle*>(tpr.get());
790  // TrackingParticle parameters at point of closest approach to the beamline
791  TrackingParticle::Vector momentumTP;
792  TrackingParticle::Point vertexTP;
793 
794  if (parametersDefiner == "LhcParametersDefinerForTP") {
795  // following reco plots are made only from tracks associated to selected signal TPs
796  if (!(Track_is_matched && tpSelector(*tpp)))
797  continue;
798  else {
799  momentumTP = Lhc_parametersDefinerTP->momentum(event, setup, tpr);
800  vertexTP = Lhc_parametersDefinerTP->vertex(event, setup, tpr);
801  }
802  } else if (parametersDefiner == "CosmicParametersDefinerForTP") {
803  // following reco plots are made only from tracks associated to selected signal TPs
804  if (!(Track_is_matched && cosmictpSelector(tpr, &bs, event, setup)))
805  continue;
806  else {
807  momentumTP = Cosmic_parametersDefinerTP->momentum(event, setup, tpr);
808  vertexTP = Cosmic_parametersDefinerTP->vertex(event, setup, tpr);
809  }
810  }
811 
812  if (associators[ww] == "trackAssociatorByChi2") {
813  //association chi2
814  double assocChi2 = -tp.begin()->second; //in association map is stored -chi2
815  h_assochi2[www]->Fill(assocChi2);
816  h_assochi2_prob[www]->Fill(TMath::Prob((assocChi2)*5, 5));
817  } else if (associators[ww] == "trackAssociatorByHits") {
818  double fraction = tp.begin()->second;
819  h_assocFraction[www]->Fill(fraction);
820  h_assocSharedHit[www]->Fill(fraction * nRecHits);
821  }
822 
823  h_charge[w]->Fill(track->charge());
824 
825  // Hits
826  h_nhits[w]->Fill(nRecHits);
827  nhits_vs_eta[w]->Fill(xetaRec, nRecHits);
828  nhits_vs_phi[w]->Fill(phiRec, nRecHits);
829 
830  if (do_MUOhitsPlots) {
831  nDThits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonDTHits());
832  nCSChits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonCSCHits());
833  nRPChits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonRPCHits());
834  if (useGEMs_)
835  nGEMhits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonGEMHits());
836  if (useME0_)
837  nME0hits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonME0Hits());
838  }
839 
840  if (do_TRKhitsPlots) {
841  nTRK_LayersWithMeas_vs_eta[w]->Fill(xetaRec, track->hitPattern().trackerLayersWithMeasurement());
842  nPixel_LayersWithMeas_vs_eta[w]->Fill(xetaRec, track->hitPattern().pixelLayersWithMeasurement());
843  h_nlosthits[w]->Fill(track->numberOfLostHits());
844  h_nmisslayers_inner[w]->Fill(track->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS));
845  h_nmisslayers_outer[w]->Fill(track->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_OUTER_HITS));
846  nlosthits_vs_eta[w]->Fill(xetaRec, track->numberOfLostHits());
847  }
848 
849  // normalized chi2
850  h_nchi2[w]->Fill(track->normalizedChi2());
851  h_nchi2_prob[w]->Fill(TMath::Prob(track->chi2(), (int)track->ndof()));
852  chi2_vs_nhits[w]->Fill(nRecHits, track->normalizedChi2());
853  chi2_vs_eta[w]->Fill(xetaRec, track->normalizedChi2());
854  chi2_vs_phi[w]->Fill(phiRec, track->normalizedChi2());
855 
856  double ptSim = sqrt(momentumTP.perp2());
857  double xptSim = getPt(ptSim);
858  double qoverpSim = tpr->charge() / sqrt(momentumTP.x() * momentumTP.x() + momentumTP.y() * momentumTP.y() +
859  momentumTP.z() * momentumTP.z());
860  double etaSim = momentumTP.eta();
861  double thetaSim = momentumTP.theta();
862  double phiSim = momentumTP.phi();
863  double dxySim = TrackingParticleIP::dxy(vertexTP, momentumTP, bs.position());
864  double dzSim = TrackingParticleIP::dz(vertexTP, momentumTP, bs.position());
865 
866  double etares = etaRec - etaSim;
867  double ptRelRes = (ptRec - ptSim) / ptSim; // relative residual -> resolution
868  double ptPull = (ptRec - ptSim) / ptError;
869  double qoverpPull = (qoverpRec - qoverpSim) / qoverpError;
870  double thetaPull = (thetaRec - thetaSim) / thetaError;
871  double phiDiff = phiRec - phiSim;
872  if (abs(phiDiff) > M_PI) {
873  if (phiDiff > 0.)
874  phiDiff = phiDiff - 2. * M_PI;
875  else
876  phiDiff = phiDiff + 2. * M_PI;
877  }
878  double phiPull = phiDiff / phiError;
879  double dxyPull = (dxyRec - dxySim) / dxyError;
880  double dzPull = (dzRec - dzSim) / dzError;
881 
882  h_etaRes[w]->Fill(etares);
883  etares_vs_eta[w]->Fill(xetaRec, etares);
884 
885  ptres_vs_eta[w]->Fill(xetaRec, ptRelRes);
886  ptres_vs_pt[w]->Fill(xptSim, ptRelRes);
887  ptres_vs_phi[w]->Fill(phiRec, ptRelRes);
888  h_ptpull[w]->Fill(ptPull);
889  ptpull_vs_eta[w]->Fill(xetaRec, ptPull);
890  ptpull_vs_phi[w]->Fill(phiRec, ptPull);
891  h_qoverppull[w]->Fill(qoverpPull);
892 
893  thetaCotres_vs_eta[w]->Fill(xetaRec, cos(thetaRec) / sin(thetaRec) - cos(thetaSim) / sin(thetaSim));
894  thetaCotres_vs_pt[w]->Fill(xptSim, cos(thetaRec) / sin(thetaRec) - cos(thetaSim) / sin(thetaSim));
895  h_thetapull[w]->Fill(thetaPull);
896  thetapull_vs_eta[w]->Fill(xetaRec, thetaPull);
897  thetapull_vs_phi[w]->Fill(phiRec, thetaPull);
898 
899  phires_vs_eta[w]->Fill(xetaRec, phiDiff);
900  phires_vs_pt[w]->Fill(xptSim, phiDiff);
901  phires_vs_phi[w]->Fill(phiRec, phiDiff);
902  h_phipull[w]->Fill(phiPull);
903  phipull_vs_eta[w]->Fill(xetaRec, phiPull);
904  phipull_vs_phi[w]->Fill(phiRec, phiPull);
905 
906  dxyres_vs_eta[w]->Fill(xetaRec, dxyRec - dxySim);
907  dxyres_vs_pt[w]->Fill(xptSim, dxyRec - dxySim);
908  h_dxypull[w]->Fill(dxyPull);
909  dxypull_vs_eta[w]->Fill(xetaRec, dxyPull);
910 
911  dzres_vs_eta[w]->Fill(xetaRec, dzRec - dzSim);
912  dzres_vs_pt[w]->Fill(xptSim, dzRec - dzSim);
913  h_dzpull[w]->Fill(dzPull);
914  dzpull_vs_eta[w]->Fill(xetaRec, dzPull);
915 
916  double contrib_Qoverp = qoverpPull * qoverpPull / 5;
917  double contrib_dxy = dxyPull * dxyPull / 5;
918  double contrib_dz = dzPull * dzPull / 5;
919  double contrib_theta = thetaPull * thetaPull / 5;
920  double contrib_phi = phiPull * phiPull / 5;
921  double assoChi2 = contrib_Qoverp + contrib_dxy + contrib_dz + contrib_theta + contrib_phi;
922 
923  LogTrace("MuonTrackValidator") << "normalized Chi2 (track 5-dofs matching) = " << assoChi2 << "\n"
924  << "\t contrib_Qoverp = " << contrib_Qoverp << "\n"
925  << "\t contrib_theta = " << contrib_theta << "\n"
926  << "\t contrib_phi = " << contrib_phi << "\n"
927  << "\t contrib_dxy = " << contrib_dxy << "\n"
928  << "\t contrib_dz = " << contrib_dz << "\n";
929 
930  LogTrace("MuonTrackValidator") << "ptRec = " << ptRec << "\n"
931  << "etaRec = " << etaRec << "\n"
932  << "qoverpRec = " << qoverpRec << "\n"
933  << "thetaRec = " << thetaRec << "\n"
934  << "phiRec = " << phiRec << "\n"
935  << "dxyRec = " << dxyRec << "\n"
936  << "dzRec = " << dzRec << "\n"
937  << ""
938  << "\n"
939  << "qoverpError = " << qoverpError << "\n"
940  << "thetaError = " << thetaError << "\n"
941  << "phiError = " << phiError << "\n"
942  << "dxyError = " << dxyError << "\n"
943  << "dzError = " << dzError << "\n"
944  << ""
945  << "\n"
946  << "ptSim = " << ptSim << "\n"
947  << "etaSim = " << etaSim << "\n"
948  << "qoverpSim = " << qoverpSim << "\n"
949  << "thetaSim = " << thetaSim << "\n"
950  << "phiSim = " << phiSim << "\n"
951  << "dxySim = " << dxySim << "\n"
952  << "dzSim = " << dzSim << "\n";
953  } // End of for(edm::View<Track>::size_type i=0; i<trackCollectionSize; ++i) {
954 
955  h_tracks[w]->Fill(at);
956  h_fakes[w]->Fill(rT - at);
957  edm::LogVerbatim("MuonTrackValidator") << "Total Simulated: " << st << "\n"
958  << "Total Associated (simToReco): " << ats << "\n"
959  << "Total Reconstructed: " << rT << "\n"
960  << "Total Associated (recoToSim): " << at << "\n"
961  << "Total Fakes: " << rT - at << "\n";
962  w++;
963  } // End of for (unsigned int www=0;www<label.size();www++){
964  } //END of for (unsigned int ww=0;ww<associators.size();ww++){
965 }
LCToCPAssociation_cfi.associator
associator
Definition: LCToCPAssociation_cfi.py:4
histoParameters_cff.minRpos
minRpos
Definition: histoParameters_cff.py:36
HGVHistoProducerAlgoBlock_cfi.nintPhi
nintPhi
Definition: HGVHistoProducerAlgoBlock_cfi.py:23
histoParameters_cff.maxLayers
maxLayers
Definition: histoParameters_cff.py:74
TSCBLBuilderNoMaterial.h
reco::HitPattern::MISSING_OUTER_HITS
Definition: HitPattern.h:155
PileupSummaryInfo.h
TrackValidationHeavyIons_cff.useLogPt
useLogPt
Definition: TrackValidationHeavyIons_cff.py:36
histoParameters_cff.do_TRKhitsPlots
do_TRKhitsPlots
Definition: histoParameters_cff.py:58
edm::AssociationMap::find
const_iterator find(const key_type &k) const
find element with specified reference key
Definition: AssociationMap.h:173
mps_fire.i
i
Definition: mps_fire.py:428
beam_dqm_sourceclient-live_cfg.minLayers
minLayers
Definition: beam_dqm_sourceclient-live_cfg.py:149
FreeTrajectoryState.h
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11724
MessageLogger.h
histoParameters_cff.nintRpos
nintRpos
Definition: histoParameters_cff.py:38
edm::Handle::product
T const * product() const
Definition: Handle.h:70
edm::RefToBase::key
size_t key() const
Definition: RefToBase.h:219
CosmicParametersDefinerForTPESProducer.h
histoParameters_cff.etaRes_rangeMin
etaRes_rangeMin
Definition: histoParameters_cff.py:90
edm::Run
Definition: Run.h:45
histoParameters_cff.dxyRes_rangeMin
dxyRes_rangeMin
Definition: histoParameters_cff.py:98
edm
HLT enums.
Definition: AlignableModifier.h:19
histoParameters_cff.nintLayers
nintLayers
Definition: histoParameters_cff.py:75
histoParameters_cff.maxPixels
maxPixels
Definition: histoParameters_cff.py:78
hcal_runs.rt
rt
Definition: hcal_runs.py:76
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
histoParameters_cff.minNHit
minNHit
Definition: histoParameters_cff.py:53
edm::Ref::get
T const * get() const
Returns C++ pointer to the item.
Definition: Ref.h:232
histoParameters_cff.etaRes_rangeMax
etaRes_rangeMax
Definition: histoParameters_cff.py:91
HGVHistoProducerAlgoBlock_cfi.nintPt
nintPt
Definition: HGVHistoProducerAlgoBlock_cfi.py:18
L1TrackerEtMissProducer_cfi.maxPt
maxPt
Definition: L1TrackerEtMissProducer_cfi.py:14
TrackerHitAssociator.h
TrackingParticle::Vector
math::XYZVectorD Vector
point in the space
Definition: TrackingParticle.h:37
edm::RefVector< TrackingParticleCollection >
ParametersDefinerForTP::momentum
virtual TrackingParticle::Vector momentum(const edm::Event &iEvent, const edm::EventSetup &iSetup, const Charge ch, const Point &vtx, const LorentzVector &lv) const
Definition: ParametersDefinerForTP.cc:17
MuonTrackValidator::bookHistograms
void bookHistograms(DQMEDAnalyzer::DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: MuonTrackValidator.cc:24
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:46
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
HGVHistoProducerAlgoBlock_cfi.minZpos
minZpos
Definition: HGVHistoProducerAlgoBlock_cfi.py:46
edm::Handle
Definition: AssociativeIterator.h:50
histoParameters_cff.nintDxy
nintDxy
Definition: histoParameters_cff.py:30
reco::TrackBase::numberOfValidHits
unsigned short numberOfValidHits() const
number of valid hits found
Definition: TrackBase.h:798
histoParameters_cff.maxRPCHit
maxRPCHit
Definition: histoParameters_cff.py:70
singleTopDQM_cfi.setup
setup
Definition: singleTopDQM_cfi.py:37
edm::Ref< TrackingParticleCollection >
histoParameters_cff.nintDz
nintDz
Definition: histoParameters_cff.py:34
HLT_FULL_cff.maxNTracks
maxNTracks
Definition: HLT_FULL_cff.py:35545
quality
const uint32_t *__restrict__ Quality * quality
Definition: CAHitNtupletGeneratorKernelsImpl.h:122
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
HLT_FULL_cff.maxPhi
maxPhi
Definition: HLT_FULL_cff.py:52995
histoParameters_cff.minCSCHit
minCSCHit
Definition: histoParameters_cff.py:65
histoParameters_cff.phiRes_rangeMax
phiRes_rangeMax
Definition: histoParameters_cff.py:87
histoParameters_cff.nintFTracks
nintFTracks
Definition: histoParameters_cff.py:11
trackingPlots.assoc
assoc
Definition: trackingPlots.py:183
histoParameters_cff.minRPCHit
minRPCHit
Definition: histoParameters_cff.py:69
histoParameters_cff.cotThetaRes_rangeMax
cotThetaRes_rangeMax
Definition: histoParameters_cff.py:95
cmsdt::algo
algo
Definition: constants.h:171
edm::AssociationMap::end
const_iterator end() const
last iterator over the map (read only)
Definition: AssociationMap.h:171
edm::AssociationMap::post_insert
void post_insert()
post insert action
Definition: AssociationMap.h:229
MakerMacros.h
histoParameters_cff.usemuon
usemuon
Definition: histoParameters_cff.py:50
cms::cuda::bs
bs
Definition: HistoContainer.h:76
pixelTrack::Quality
Quality
Definition: TrackSoAHeterogeneousT.h:13
funct::cos
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
TrackingParticleIP::dxy
auto dxy(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
Definition: TrackingParticleIP.h:11
Track.h
TrackFwd.h
histoParameters_cff.phiRes_rangeMin
phiRes_rangeMin
Definition: histoParameters_cff.py:86
histoParameters_cff.dxyRes_nbin
dxyRes_nbin
Definition: histoParameters_cff.py:97
MuonTrackValidator_cfi.label_tp_refvector
label_tp_refvector
Definition: MuonTrackValidator_cfi.py:14
histoParameters_cff.dxyRes_rangeMax
dxyRes_rangeMax
Definition: histoParameters_cff.py:99
HLT_FULL_cff.fraction
fraction
Definition: HLT_FULL_cff.py:52823
HGVHistoProducerAlgoBlock_cfi.nintEta
nintEta
Definition: HGVHistoProducerAlgoBlock_cfi.py:7
w
const double w
Definition: UKUtility.cc:23
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
TrackingParticle
Monte Carlo truth information used for tracking validation.
Definition: TrackingParticle.h:29
reco::BeamSpot
Definition: BeamSpot.h:21
maxEta
double maxEta
Definition: PFJetBenchmarkAnalyzer.cc:76
edm::ESHandle
Definition: DTSurvey.h:22
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
histoParameters_cff.maxFTracks
maxFTracks
Definition: histoParameters_cff.py:10
histoParameters_cff.maxCSCHit
maxCSCHit
Definition: histoParameters_cff.py:66
reco::TrackBase::charge
int charge() const
track electric charge
Definition: TrackBase.h:596
histoParameters_cff.do_MUOhitsPlots
do_MUOhitsPlots
Definition: histoParameters_cff.py:59
trackTimeValueMapProducer_cfi.associators
associators
Definition: trackTimeValueMapProducer_cfi.py:9
cmsswSequenceInfo.tp
tp
Definition: cmsswSequenceInfo.py:17
beam_dqm_sourceclient-live_cfg.maxDz
maxDz
Definition: beam_dqm_sourceclient-live_cfg.py:145
histoParameters_cff.minPixels
minPixels
Definition: histoParameters_cff.py:77
ParametersDefinerForTPESProducer.h
muonValidationHeavyIons_cff.associatormap
associatormap
Definition: muonValidationHeavyIons_cff.py:72
bphysicsOniaDQM_cfi.vertex
vertex
Definition: bphysicsOniaDQM_cfi.py:7
histoParameters_cff.dzRes_rangeMax
dzRes_rangeMax
Definition: histoParameters_cff.py:103
histoParameters_cff.cotThetaRes_nbin
cotThetaRes_nbin
Definition: histoParameters_cff.py:93
duplicaterechits_cfi.trackCollection
trackCollection
Definition: duplicaterechits_cfi.py:4
histoParameters_cff.nintRPCHit
nintRPCHit
Definition: histoParameters_cff.py:71
histoParameters_cff.minDTHit
minDTHit
Definition: histoParameters_cff.py:61
edm::AssociationMap< edm::OneToManyWithQualityGeneric< edm::View< reco::Track >, TrackingParticleCollection, double > >
histoParameters_cff.minNTracks
minNTracks
Definition: histoParameters_cff.py:5
histoParameters_cff.maxDTHit
maxDTHit
Definition: histoParameters_cff.py:62
histoParameters_cff.maxNHit
maxNHit
Definition: histoParameters_cff.py:54
createfilelist.int
int
Definition: createfilelist.py:10
MuonErrorMatrixAnalyzer_cfi.associatorName
associatorName
Definition: MuonErrorMatrixAnalyzer_cfi.py:28
RecoMuonValidator_cfi.tpSelector
tpSelector
Definition: RecoMuonValidator_cfi.py:8
M_PI
#define M_PI
Definition: BXVectorInputProducer.cc:49
histoParameters_cff.nintNHit
nintNHit
Definition: histoParameters_cff.py:55
MuonTrackValidator_cfi.parametersDefiner
parametersDefiner
Definition: MuonTrackValidator_cfi.py:26
histoParameters_cff.minDxy
minDxy
Definition: histoParameters_cff.py:28
edm::EventSetup
Definition: EventSetup.h:58
histoParameters_cff.nintDTHit
nintDTHit
Definition: histoParameters_cff.py:63
TrackAssociatorRecord.h
beam_dqm_sourceclient-live_cfg.minPt
minPt
Definition: beam_dqm_sourceclient-live_cfg.py:322
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
edm::RefVector::push_back
void push_back(value_type const &ref)
Add a Ref<C, T> to the RefVector.
Definition: RefVector.h:67
histoParameters_cff.nintPU
nintPU
Definition: histoParameters_cff.py:46
histoParameters_cff.maxRpos
maxRpos
Definition: histoParameters_cff.py:37
HLT_FULL_cff.minPhi
minPhi
Definition: HLT_FULL_cff.py:52994
histoParameters_cff.etaRes_nbin
etaRes_nbin
Definition: histoParameters_cff.py:89
std
Definition: JetResolutionObject.h:76
histoParameters_cff.minFTracks
minFTracks
Definition: histoParameters_cff.py:9
histoParameters_cff.nintCSCHit
nintCSCHit
Definition: histoParameters_cff.py:67
edm::LogVerbatim
Log< level::Info, true > LogVerbatim
Definition: MessageLogger.h:128
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
gather_cfg.maxDxy
maxDxy
Definition: gather_cfg.py:53
reco::HitPattern::MISSING_INNER_HITS
Definition: HitPattern.h:155
edm::AssociationMap::begin
const_iterator begin() const
first iterator over the map (read only)
Definition: AssociationMap.h:169
HGVHistoProducerAlgoBlock_cfi.nintZpos
nintZpos
Definition: HGVHistoProducerAlgoBlock_cfi.py:48
histoParameters_cff.ptRes_nbin
ptRes_nbin
Definition: histoParameters_cff.py:81
histoParameters_cff.cotThetaRes_rangeMin
cotThetaRes_rangeMin
Definition: histoParameters_cff.py:94
TrackerOfflineValidation_Dqm_cff.dirName
dirName
Definition: TrackerOfflineValidation_Dqm_cff.py:55
edm::RefToBase
Definition: AssociativeIterator.h:54
pileupFilter_cff.minPU
minPU
Definition: pileupFilter_cff.py:8
histoParameters_cff.usetracker
usetracker
Definition: histoParameters_cff.py:49
HGVHistoProducerAlgoBlock_cfi.maxZpos
maxZpos
Definition: HGVHistoProducerAlgoBlock_cfi.py:47
dqm::implementation::IBooker
Definition: DQMStore.h:43
CosmicParametersDefinerForTP::clone
std::unique_ptr< ParametersDefinerForTP > clone() const override
Definition: CosmicParametersDefinerForTP.h:52
edm::Ref::key
key_type key() const
Accessor for product key.
Definition: Ref.h:250
histoParameters_cff.phiRes_nbin
phiRes_nbin
Definition: histoParameters_cff.py:85
pileupFilter_cff.maxPU
maxPU
Definition: pileupFilter_cff.py:9
histoParameters_cff.ptRes_rangeMin
ptRes_rangeMin
Definition: histoParameters_cff.py:82
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
histoParameters_cff.dzRes_nbin
dzRes_nbin
Definition: histoParameters_cff.py:101
TrackingParticleRef
edm::Ref< TrackingParticleCollection > TrackingParticleRef
Definition: TrackingParticleFwd.h:12
histoParameters_cff.nintNTracks
nintNTracks
Definition: histoParameters_cff.py:7
MuonTrackValidator.h
event
Definition: event.py:1
histoParameters_cff.nintPixels
nintPixels
Definition: histoParameters_cff.py:79
edm::Event
Definition: Event.h:73
TrackingParticle::Point
math::XYZPointD Point
point in the space
Definition: TrackingParticle.h:36
EgHLTOffEleSelection_cfi.minEta
minEta
Definition: EgHLTOffEleSelection_cfi.py:11
associators_cff.MABH
MABH
Definition: associators_cff.py:23
TrackingParticleIP.h
edm::RefVector::size
size_type size() const
Size of the RefVector.
Definition: RefVector.h:102
MuonTrackValidator_cfi.BiDirectional_RecoToSim_association
BiDirectional_RecoToSim_association
Definition: MuonTrackValidator_cfi.py:43
histoParameters_cff.dzRes_rangeMin
dzRes_rangeMin
Definition: histoParameters_cff.py:102
histoParameters_cff.ptRes_rangeMax
ptRes_rangeMax
Definition: histoParameters_cff.py:83
SimTrackContainer.h
MuonTrackValidator::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: MuonTrackValidator.cc:359
edm::InputTag
Definition: InputTag.h:15
label
const char * label
Definition: PFTauDecayModeTools.cc:11
SimVertexContainer.h
edm::View::size_type
unsigned int size_type
Definition: View.h:90
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
pfMETCorrectionType0_cfi.minDz
minDz
Definition: pfMETCorrectionType0_cfi.py:52
muonME0PseudoDigis_cfi.phiError
phiError
Definition: muonME0PseudoDigis_cfi.py:9
ParametersDefinerForTP::vertex
virtual TrackingParticle::Point vertex(const edm::Event &iEvent, const edm::EventSetup &iSetup, const Charge ch, const Point &vtx, const LorentzVector &lv) const
Definition: ParametersDefinerForTP.cc:50
TrackingParticleIP::dz
auto dz(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
Definition: TrackingParticleIP.h:16
python.rootplot.root2matplotlib.replace
def replace(string, replacements)
Definition: root2matplotlib.py:444
TrackAlgoCompareUtil_cfi.UseAssociators
UseAssociators
Definition: TrackAlgoCompareUtil_cfi.py:22