CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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  std::unique_ptr<ParametersDefinerForTP> Cosmic_parametersDefinerTP;
374 
375  if (parametersDefiner == "LhcParametersDefinerForTP") {
376  setup.get<TrackAssociatorRecord>().get(parametersDefiner, Lhc_parametersDefinerTP);
377 
378  // PileupSummaryInfo is contained only in collision events
379  event.getByToken(pileupinfo_Token, puinfoH);
380  for (std::vector<PileupSummaryInfo>::const_iterator puInfoIt = puinfoH->begin(); puInfoIt != puinfoH->end();
381  ++puInfoIt) {
382  if (puInfoIt->getBunchCrossing() == 0) {
383  PU_NumInteractions = puInfoIt->getPU_NumInteractions();
384  break;
385  }
386  }
387 
388  } else if (parametersDefiner == "CosmicParametersDefinerForTP") {
389  edm::ESHandle<CosmicParametersDefinerForTP> _Cosmic_parametersDefinerTP;
390  setup.get<TrackAssociatorRecord>().get(parametersDefiner, _Cosmic_parametersDefinerTP);
391 
392  //Since we modify the object, we must clone it
393  Cosmic_parametersDefinerTP = _Cosmic_parametersDefinerTP->clone();
394 
396  //warning: make sure the TP collection used in the map is the same used here
397  event.getByToken(_simHitTpMapTag, simHitsTPAssoc);
398  Cosmic_parametersDefinerTP->initEvent(simHitsTPAssoc);
399  cosmictpSelector.initEvent(simHitsTPAssoc);
400  } else {
401  edm::LogError("MuonTrackValidator") << "Unexpected label: parametersDefiner = " << parametersDefiner.c_str()
402  << "\n";
403  }
404 
406  event.getByToken(tp_effic_Token, TPCollectionHeff);
407  TrackingParticleCollection const& tPCeff = *(TPCollectionHeff.product());
408 
409  edm::Handle<TrackingParticleCollection> TPCollectionHfake;
410  event.getByToken(tp_fake_Token, TPCollectionHfake);
411 
412  edm::Handle<reco::BeamSpot> recoBeamSpotHandle;
413  event.getByToken(bsSrc_Token, recoBeamSpotHandle);
414  reco::BeamSpot bs = *recoBeamSpotHandle;
415 
416  std::vector<const reco::TrackToTrackingParticleAssociator*> associator;
417  if (UseAssociators) {
419  for (auto const& associatorName : associators) {
420  event.getByLabel(associatorName, theAssociator);
421  associator.push_back(theAssociator.product());
422  }
423  }
424 
425  int w = 0;
426  for (unsigned int ww = 0; ww < associators.size(); ww++) {
427  for (unsigned int www = 0; www < label.size(); www++) {
428  //
429  //get collections from the event
430  //
432  unsigned int trackCollectionSize = 0;
433 
434  reco::RecoToSimCollection recSimColl;
435  reco::SimToRecoCollection simRecColl;
436 
437  // account for missing track collections (HLT case)
438  if (!event.getByToken(track_Collection_Token[www], trackCollection) && ignoremissingtkcollection_) {
439  recSimColl.post_insert();
440  simRecColl.post_insert();
441  }
442 
443  //associate tracks to TrackingParticles
444  else {
445  trackCollectionSize = trackCollection->size();
446 
447  if (UseAssociators) {
448  edm::LogVerbatim("MuonTrackValidator")
449  << "Analyzing " << label[www].process() << ":" << label[www].label() << ":" << label[www].instance()
450  << " with " << associators[ww].c_str() << "\n";
451 
452  LogTrace("MuonTrackValidator") << "Calling associateRecoToSim method"
453  << "\n";
454  recSimColl = associator[ww]->associateRecoToSim(trackCollection, TPCollectionHfake);
455  LogTrace("MuonTrackValidator") << "Calling associateSimToReco method"
456  << "\n";
457  simRecColl = associator[ww]->associateSimToReco(trackCollection, TPCollectionHeff);
458  } else {
459  edm::LogVerbatim("MuonTrackValidator")
460  << "Analyzing " << label[www].process() << ":" << label[www].label() << ":" << label[www].instance()
461  << " with " << associatormap.process() << ":" << associatormap.label() << ":" << associatormap.instance()
462  << "\n";
463 
464  Handle<reco::SimToRecoCollection> simtorecoCollectionH;
465  event.getByToken(simToRecoCollection_Token, simtorecoCollectionH);
466  simRecColl = *simtorecoCollectionH.product();
467 
468  Handle<reco::RecoToSimCollection> recotosimCollectionH;
469  event.getByToken(recoToSimCollection_Token, recotosimCollectionH);
470  recSimColl = *recotosimCollectionH.product();
471  }
472  }
473 
474  //
475  //fill simulation histograms
476  //
477  edm::LogVerbatim("MuonTrackValidator") << "\n# of TrackingParticles: " << tPCeff.size() << "\n";
478  int ats = 0;
479  int st = 0;
480  for (TrackingParticleCollection::size_type i = 0; i < tPCeff.size(); i++) {
481  bool TP_is_matched = false;
482  bool isChargeOK = true;
483  double quality = 0.;
484 
485  TrackingParticleRef tpr(TPCollectionHeff, i);
486  TrackingParticle* tp = const_cast<TrackingParticle*>(tpr.get());
487 
488  TrackingParticle::Vector momentumTP;
489  TrackingParticle::Point vertexTP;
490  double dxySim = 0;
491  double dzSim = 0;
492 
493  //If the TrackingParticle is collision-like, get the momentum and vertex at production state
494  //and the impact parameters w.r.t. PCA
495  if (parametersDefiner == "LhcParametersDefinerForTP") {
496  LogTrace("MuonTrackValidator") << "TrackingParticle " << i;
497  if (!tpSelector(*tp))
498  continue;
499  momentumTP = tp->momentum();
500  vertexTP = tp->vertex();
501  TrackingParticle::Vector momentum = Lhc_parametersDefinerTP->momentum(event, setup, tpr);
502  TrackingParticle::Point vertex = Lhc_parametersDefinerTP->vertex(event, setup, tpr);
503  dxySim = TrackingParticleIP::dxy(vertex, momentum, bs.position());
504  dzSim = TrackingParticleIP::dz(vertex, momentum, bs.position());
505  }
506  //for cosmics get the momentum and vertex at PCA
507  else if (parametersDefiner == "CosmicParametersDefinerForTP") {
508  edm::LogVerbatim("MuonTrackValidator") << "TrackingParticle " << i;
509  if (!cosmictpSelector(tpr, &bs, event, setup))
510  continue;
511  momentumTP = Cosmic_parametersDefinerTP->momentum(event, setup, tpr);
512  vertexTP = Cosmic_parametersDefinerTP->vertex(event, setup, tpr);
513  dxySim = TrackingParticleIP::dxy(vertexTP, momentumTP, bs.position());
514  dzSim = TrackingParticleIP::dz(vertexTP, momentumTP, bs.position());
515  }
516  edm::LogVerbatim("MuonTrackValidator") << "--------------------Selected TrackingParticle #" << tpr.key();
517  edm::LogVerbatim("MuonTrackValidator")
518  << "momentumTP: pt = " << sqrt(momentumTP.perp2()) << ", pz = " << momentumTP.z()
519  << ", \t vertexTP: radius = " << sqrt(vertexTP.perp2()) << ", z = " << vertexTP.z() << "\n";
520  st++;
521 
522  double TPeta = momentumTP.eta();
523  double xTPeta = getEta(TPeta); // may be |eta| in histos according to useFabsEta
524  double TPpt = sqrt(momentumTP.perp2());
525  double xTPpt = getPt(TPpt); // may be 1/pt in histos according to useInvPt
526  double TPphi = momentumTP.phi();
527  double TPrpos = sqrt(vertexTP.perp2());
528  double TPzpos = vertexTP.z();
529 
530  // Number of counted SimHits depend on the selection of tracker and muon detectors (via cfg parameters)
531  int nSimHits = 0;
532  if (usetracker && usemuon) {
533  nSimHits = tpr.get()->numberOfHits();
534  } else if (!usetracker && usemuon) {
535  nSimHits = tpr.get()->numberOfHits() - tpr.get()->numberOfTrackerHits();
536  } else if (usetracker && !usemuon) {
537  nSimHits = tpr.get()->numberOfTrackerHits();
538  }
539  edm::LogVerbatim("MuonTrackValidator") << "\t N simhits = " << nSimHits << "\n";
540 
541  int assoc_recoTrack_NValidHits = 0;
542  if (simRecColl.find(tpr) != simRecColl.end()) {
543  auto const& rt = simRecColl[tpr];
544  if (!rt.empty()) {
545  RefToBase<Track> assoc_recoTrack = rt.begin()->first;
546  edm::LogVerbatim("MuonTrackValidator")
547  << "-----------------------------associated Track #" << assoc_recoTrack.key();
548  TP_is_matched = true;
549  ats++;
550  if (assoc_recoTrack->charge() != tpr->charge())
551  isChargeOK = false;
552  quality = rt.begin()->second;
553  assoc_recoTrack_NValidHits = assoc_recoTrack->numberOfValidHits();
554  edm::LogVerbatim("MuonTrackValidator")
555  << "TrackingParticle #" << tpr.key() << " with pt=" << sqrt(momentumTP.perp2())
556  << " associated with quality:" << quality << "\n";
557  }
558  } else {
559  edm::LogVerbatim("MuonTrackValidator")
560  << "TrackingParticle #" << tpr.key() << " with pt,eta,phi: " << sqrt(momentumTP.perp2()) << " , "
561  << momentumTP.eta() << " , " << momentumTP.phi() << " , "
562  << " NOT associated to any reco::Track"
563  << "\n";
564  }
565 
566  // histos for efficiency vs eta
567 
568  fillPlotNoFlow(h_simuleta[w], xTPeta);
569  if (TP_is_matched) {
570  fillPlotNoFlow(h_assoceta[w], xTPeta);
571  if (!isChargeOK)
572  fillPlotNoFlow(h_misideta[w], xTPeta);
573  }
574 
575  // histos for efficiency vs phi
576  fillPlotNoFlow(h_simulphi[w], TPphi);
577  if (TP_is_matched) {
578  fillPlotNoFlow(h_assocphi[w], TPphi);
579  if (!isChargeOK)
580  fillPlotNoFlow(h_misidphi[w], TPphi);
581  }
582 
583  // histos for efficiency vs pT
584  fillPlotNoFlow(h_simulpT[w], xTPpt);
585  if (TP_is_matched) {
586  fillPlotNoFlow(h_assocpT[w], xTPpt);
587  if (!isChargeOK)
588  fillPlotNoFlow(h_misidpT[w], xTPpt);
589  }
590 
591  // histos for efficiency vs dxy
592  fillPlotNoFlow(h_simuldxy[w], dxySim);
593  if (TP_is_matched) {
594  fillPlotNoFlow(h_assocdxy[w], dxySim);
595  if (!isChargeOK)
596  fillPlotNoFlow(h_misiddxy[w], dxySim);
597  }
598 
599  // histos for efficiency vs dz
600  fillPlotNoFlow(h_simuldz[w], dzSim);
601  if (TP_is_matched) {
602  fillPlotNoFlow(h_assocdz[w], dzSim);
603  if (!isChargeOK)
604  fillPlotNoFlow(h_misiddz[w], dzSim);
605  }
606 
607  // histos for efficiency vs Radius
608  fillPlotNoFlow(h_simulRpos[w], TPrpos);
609  if (TP_is_matched)
610  fillPlotNoFlow(h_assocRpos[w], TPrpos);
611 
612  // histos for efficiency vs z position
613  fillPlotNoFlow(h_simulZpos[w], TPzpos);
614  if (TP_is_matched)
615  fillPlotNoFlow(h_assocZpos[w], TPzpos);
616 
617  // histos for efficiency vs Number of Hits
618  fillPlotNoFlow(h_simulhit[w], nSimHits);
619  if (TP_is_matched) {
620  fillPlotNoFlow(h_assochit[w], nSimHits);
621  nRecHits_vs_nSimHits[w]->Fill(nSimHits, assoc_recoTrack_NValidHits);
622 
623  // charge misid is more useful w.r.t. nRecHits (filled after)
624  //if (!isChargeOK) fillPlotNoFlow(h_misidhit[w], nSimHits);
625  }
626 
627  // histos for efficiency vs PileUp
628  fillPlotNoFlow(h_simulpu[w], PU_NumInteractions);
629  if (TP_is_matched) {
630  fillPlotNoFlow(h_assocpu[w], PU_NumInteractions);
631  if (!isChargeOK)
632  fillPlotNoFlow(h_misidpu[w], PU_NumInteractions);
633  }
634 
635  } // End for (TrackingParticleCollection::size_type i=0; i<tPCeff.size(); i++){
636 
637  //
638  //fill reconstructed track histograms
639  //
640  edm::LogVerbatim("MuonTrackValidator")
641  << "\n# of reco::Tracks with " << label[www].process() << ":" << label[www].label() << ":"
642  << label[www].instance() << ": " << trackCollectionSize << "\n";
643 
644  int at = 0;
645  int rT = 0;
646  for (edm::View<Track>::size_type i = 0; i < trackCollectionSize; ++i) {
647  bool Track_is_matched = false;
648  bool isChargeOK = true;
650  rT++;
651 
652  std::vector<std::pair<TrackingParticleRef, double> > tp;
654 
655  // new logic (bidirectional)
657  edm::LogVerbatim("MuonTrackValidator") << "----------------------------------------Track #" << track.key();
658 
659  if (recSimColl.find(track) != recSimColl.end()) {
660  tp = recSimColl[track];
661  if (!tp.empty()) {
662  tpr = tp.begin()->first;
663  // RtS and StR must associate the same pair !
664  if (simRecColl.find(tpr) != simRecColl.end()) {
665  auto const& assoc_track_checkback = simRecColl[tpr].begin()->first;
666 
667  if (assoc_track_checkback.key() == track.key()) {
668  edm::LogVerbatim("MuonTrackValidator")
669  << "------------------associated TrackingParticle #" << tpr.key();
670  Track_is_matched = true;
671  at++;
672  if (track->charge() != tpr->charge())
673  isChargeOK = false;
674  double Purity = tp.begin()->second;
675  double Quality = simRecColl[tpr].begin()->second;
676  edm::LogVerbatim("MuonTrackValidator") << "reco::Track #" << track.key() << " with pt=" << track->pt()
677  << " associated with purity:" << Purity << "\n";
678  if (MABH)
679  h_PurityVsQuality[w]->Fill(Quality, Purity);
680  }
681  }
682  }
683  }
684 
685  if (!Track_is_matched)
686  edm::LogVerbatim("MuonTrackValidator") << "reco::Track #" << track.key() << " with pt=" << track->pt()
687  << " NOT associated to any TrackingParticle"
688  << "\n";
689  }
690  // old logic, valid for cosmics 2-legs reco (bugged for collision scenario)
691  else {
692  if (recSimColl.find(track) != recSimColl.end()) {
693  tp = recSimColl[track];
694  if (!tp.empty()) {
695  tpr = tp.begin()->first;
696  Track_is_matched = true;
697  at++;
698  if (track->charge() != tpr->charge())
699  isChargeOK = false;
700  edm::LogVerbatim("MuonTrackValidator") << "reco::Track #" << track.key() << " with pt=" << track->pt()
701  << " associated with quality:" << tp.begin()->second << "\n";
702  }
703  } else {
704  edm::LogVerbatim("MuonTrackValidator") << "reco::Track #" << track.key() << " with pt=" << track->pt()
705  << " NOT associated to any TrackingParticle"
706  << "\n";
707  }
708  }
709 
710  //
711  int nRecHits = track->numberOfValidHits();
712  edm::LogVerbatim("MuonTrackValidator") << "\t N valid rechits = " << nRecHits << "\n";
713 
714  double etaRec = track->eta();
715  double xetaRec = getEta(etaRec);
716 
717  double ptRec = track->pt();
718  double xptRec = getPt(ptRec);
719 
720  double qoverpRec = track->qoverp();
721  double phiRec = track->phi();
722  double thetaRec = track->theta();
723  double dxyRec = track->dxy(bs.position());
724  double dzRec = track->dz(bs.position());
725 
726  double qoverpError = track->qoverpError();
727  double ptError = track->ptError();
728  double thetaError = track->thetaError();
729  double phiError = track->phiError();
730  double dxyError = track->dxyError();
731  double dzError = track->dzError();
732 
733  // histos for fake rate vs eta
734  fillPlotNoFlow(h_recoeta[w], xetaRec);
735  if (Track_is_matched) {
736  fillPlotNoFlow(h_assoc2eta[w], xetaRec);
737  }
738 
739  // histos for fake rate vs phi
740  fillPlotNoFlow(h_recophi[w], phiRec);
741  if (Track_is_matched) {
742  fillPlotNoFlow(h_assoc2phi[w], phiRec);
743  }
744 
745  // histos for fake rate vs pT
746  fillPlotNoFlow(h_recopT[w], xptRec);
747  if (Track_is_matched) {
748  fillPlotNoFlow(h_assoc2pT[w], xptRec);
749  }
750 
751  // histos for fake rate vs dxy
752  fillPlotNoFlow(h_recodxy[w], dxyRec);
753  if (Track_is_matched) {
754  fillPlotNoFlow(h_assoc2dxy[w], dxyRec);
755  }
756 
757  // histos for fake rate vs dz
758  fillPlotNoFlow(h_recodz[w], dzRec);
759  if (Track_is_matched) {
760  fillPlotNoFlow(h_assoc2dz[w], dzRec);
761  }
762 
763  // histos for fake rate vs Number of RecHits in track
764  fillPlotNoFlow(h_recohit[w], nRecHits);
765  if (Track_is_matched) {
766  fillPlotNoFlow(h_assoc2hit[w], nRecHits);
767  // charge misid w.r.t. nRecHits
768  if (!isChargeOK)
769  fillPlotNoFlow(h_misidhit[w], nRecHits);
770  }
771 
772  // histos for fake rate vs Number of PU interactions
773  fillPlotNoFlow(h_recopu[w], PU_NumInteractions);
774  if (Track_is_matched) {
775  fillPlotNoFlow(h_assoc2pu[w], PU_NumInteractions);
776  }
777 
778  // Fill other histos
779  TrackingParticle* tpp = const_cast<TrackingParticle*>(tpr.get());
780  // TrackingParticle parameters at point of closest approach to the beamline
781  TrackingParticle::Vector momentumTP;
782  TrackingParticle::Point vertexTP;
783 
784  if (parametersDefiner == "LhcParametersDefinerForTP") {
785  // following reco plots are made only from tracks associated to selected signal TPs
786  if (!(Track_is_matched && tpSelector(*tpp)))
787  continue;
788  else {
789  momentumTP = Lhc_parametersDefinerTP->momentum(event, setup, tpr);
790  vertexTP = Lhc_parametersDefinerTP->vertex(event, setup, tpr);
791  }
792  } else if (parametersDefiner == "CosmicParametersDefinerForTP") {
793  // following reco plots are made only from tracks associated to selected signal TPs
794  if (!(Track_is_matched && cosmictpSelector(tpr, &bs, event, setup)))
795  continue;
796  else {
797  momentumTP = Cosmic_parametersDefinerTP->momentum(event, setup, tpr);
798  vertexTP = Cosmic_parametersDefinerTP->vertex(event, setup, tpr);
799  }
800  }
801 
802  if (associators[ww] == "trackAssociatorByChi2") {
803  //association chi2
804  double assocChi2 = -tp.begin()->second; //in association map is stored -chi2
805  h_assochi2[www]->Fill(assocChi2);
806  h_assochi2_prob[www]->Fill(TMath::Prob((assocChi2)*5, 5));
807  } else if (associators[ww] == "trackAssociatorByHits") {
808  double fraction = tp.begin()->second;
809  h_assocFraction[www]->Fill(fraction);
810  h_assocSharedHit[www]->Fill(fraction * nRecHits);
811  }
812 
813  h_charge[w]->Fill(track->charge());
814 
815  // Hits
816  h_nhits[w]->Fill(nRecHits);
817  nhits_vs_eta[w]->Fill(xetaRec, nRecHits);
818  nhits_vs_phi[w]->Fill(phiRec, nRecHits);
819 
820  if (do_MUOhitsPlots) {
821  nDThits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonDTHits());
822  nCSChits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonCSCHits());
823  nRPChits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonRPCHits());
824  if (useGEMs_)
825  nGEMhits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonGEMHits());
826  if (useME0_)
827  nME0hits_vs_eta[w]->Fill(xetaRec, track->hitPattern().numberOfValidMuonME0Hits());
828  }
829 
830  if (do_TRKhitsPlots) {
831  nTRK_LayersWithMeas_vs_eta[w]->Fill(xetaRec, track->hitPattern().trackerLayersWithMeasurement());
832  nPixel_LayersWithMeas_vs_eta[w]->Fill(xetaRec, track->hitPattern().pixelLayersWithMeasurement());
833  h_nlosthits[w]->Fill(track->numberOfLostHits());
834  h_nmisslayers_inner[w]->Fill(track->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_INNER_HITS));
835  h_nmisslayers_outer[w]->Fill(track->hitPattern().numberOfLostHits(reco::HitPattern::MISSING_OUTER_HITS));
836  nlosthits_vs_eta[w]->Fill(xetaRec, track->numberOfLostHits());
837  }
838 
839  // normalized chi2
840  h_nchi2[w]->Fill(track->normalizedChi2());
841  h_nchi2_prob[w]->Fill(TMath::Prob(track->chi2(), (int)track->ndof()));
842  chi2_vs_nhits[w]->Fill(nRecHits, track->normalizedChi2());
843  chi2_vs_eta[w]->Fill(xetaRec, track->normalizedChi2());
844  chi2_vs_phi[w]->Fill(phiRec, track->normalizedChi2());
845 
846  double ptSim = sqrt(momentumTP.perp2());
847  double xptSim = getPt(ptSim);
848  double qoverpSim = tpr->charge() / sqrt(momentumTP.x() * momentumTP.x() + momentumTP.y() * momentumTP.y() +
849  momentumTP.z() * momentumTP.z());
850  double etaSim = momentumTP.eta();
851  double thetaSim = momentumTP.theta();
852  double phiSim = momentumTP.phi();
853  double dxySim = TrackingParticleIP::dxy(vertexTP, momentumTP, bs.position());
854  double dzSim = TrackingParticleIP::dz(vertexTP, momentumTP, bs.position());
855 
856  double etares = etaRec - etaSim;
857  double ptRelRes = (ptRec - ptSim) / ptSim; // relative residual -> resolution
858  double ptPull = (ptRec - ptSim) / ptError;
859  double qoverpPull = (qoverpRec - qoverpSim) / qoverpError;
860  double thetaPull = (thetaRec - thetaSim) / thetaError;
861  double phiDiff = phiRec - phiSim;
862  if (abs(phiDiff) > M_PI) {
863  if (phiDiff > 0.)
864  phiDiff = phiDiff - 2. * M_PI;
865  else
866  phiDiff = phiDiff + 2. * M_PI;
867  }
868  double phiPull = phiDiff / phiError;
869  double dxyPull = (dxyRec - dxySim) / dxyError;
870  double dzPull = (dzRec - dzSim) / dzError;
871 
872  h_etaRes[w]->Fill(etares);
873  etares_vs_eta[w]->Fill(xetaRec, etares);
874 
875  ptres_vs_eta[w]->Fill(xetaRec, ptRelRes);
876  ptres_vs_pt[w]->Fill(xptSim, ptRelRes);
877  ptres_vs_phi[w]->Fill(phiRec, ptRelRes);
878  h_ptpull[w]->Fill(ptPull);
879  ptpull_vs_eta[w]->Fill(xetaRec, ptPull);
880  ptpull_vs_phi[w]->Fill(phiRec, ptPull);
881  h_qoverppull[w]->Fill(qoverpPull);
882 
883  thetaCotres_vs_eta[w]->Fill(xetaRec, cos(thetaRec) / sin(thetaRec) - cos(thetaSim) / sin(thetaSim));
884  thetaCotres_vs_pt[w]->Fill(xptSim, cos(thetaRec) / sin(thetaRec) - cos(thetaSim) / sin(thetaSim));
885  h_thetapull[w]->Fill(thetaPull);
886  thetapull_vs_eta[w]->Fill(xetaRec, thetaPull);
887  thetapull_vs_phi[w]->Fill(phiRec, thetaPull);
888 
889  phires_vs_eta[w]->Fill(xetaRec, phiDiff);
890  phires_vs_pt[w]->Fill(xptSim, phiDiff);
891  phires_vs_phi[w]->Fill(phiRec, phiDiff);
892  h_phipull[w]->Fill(phiPull);
893  phipull_vs_eta[w]->Fill(xetaRec, phiPull);
894  phipull_vs_phi[w]->Fill(phiRec, phiPull);
895 
896  dxyres_vs_eta[w]->Fill(xetaRec, dxyRec - dxySim);
897  dxyres_vs_pt[w]->Fill(xptSim, dxyRec - dxySim);
898  h_dxypull[w]->Fill(dxyPull);
899  dxypull_vs_eta[w]->Fill(xetaRec, dxyPull);
900 
901  dzres_vs_eta[w]->Fill(xetaRec, dzRec - dzSim);
902  dzres_vs_pt[w]->Fill(xptSim, dzRec - dzSim);
903  h_dzpull[w]->Fill(dzPull);
904  dzpull_vs_eta[w]->Fill(xetaRec, dzPull);
905 
906  double contrib_Qoverp = qoverpPull * qoverpPull / 5;
907  double contrib_dxy = dxyPull * dxyPull / 5;
908  double contrib_dz = dzPull * dzPull / 5;
909  double contrib_theta = thetaPull * thetaPull / 5;
910  double contrib_phi = phiPull * phiPull / 5;
911  double assoChi2 = contrib_Qoverp + contrib_dxy + contrib_dz + contrib_theta + contrib_phi;
912 
913  edm::LogVerbatim("MuonTrackValidator") << "normalized Chi2 (track 5-dofs matching) = " << assoChi2 << "\n"
914  << "\t contrib_Qoverp = " << contrib_Qoverp << "\n"
915  << "\t contrib_theta = " << contrib_theta << "\n"
916  << "\t contrib_phi = " << contrib_phi << "\n"
917  << "\t contrib_dxy = " << contrib_dxy << "\n"
918  << "\t contrib_dz = " << contrib_dz << "\n";
919 
920  edm::LogVerbatim("MuonTrackValidator") << "ptRec = " << ptRec << "\n"
921  << "etaRec = " << etaRec << "\n"
922  << "qoverpRec = " << qoverpRec << "\n"
923  << "thetaRec = " << thetaRec << "\n"
924  << "phiRec = " << phiRec << "\n"
925  << "dxyRec = " << dxyRec << "\n"
926  << "dzRec = " << dzRec << "\n"
927  << ""
928  << "\n"
929  << "qoverpError = " << qoverpError << "\n"
930  << "thetaError = " << thetaError << "\n"
931  << "phiError = " << phiError << "\n"
932  << "dxyError = " << dxyError << "\n"
933  << "dzError = " << dzError << "\n"
934  << ""
935  << "\n"
936  << "ptSim = " << ptSim << "\n"
937  << "etaSim = " << etaSim << "\n"
938  << "qoverpSim = " << qoverpSim << "\n"
939  << "thetaSim = " << thetaSim << "\n"
940  << "phiSim = " << phiSim << "\n"
941  << "dxySim = " << dxySim << "\n"
942  << "dzSim = " << dzSim << "\n";
943  } // End of for(edm::View<Track>::size_type i=0; i<trackCollectionSize; ++i) {
944 
945  h_tracks[w]->Fill(at);
946  h_fakes[w]->Fill(rT - at);
947  edm::LogVerbatim("MuonTrackValidator") << "Total Simulated: " << st << "\n"
948  << "Total Associated (simToReco): " << ats << "\n"
949  << "Total Reconstructed: " << rT << "\n"
950  << "Total Associated (recoToSim): " << at << "\n"
951  << "Total Fakes: " << rT - at << "\n";
952  w++;
953  } // End of for (unsigned int www=0;www<label.size();www++){
954  } //END of for (unsigned int ww=0;ww<associators.size();ww++){
955 }
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:148
FreeTrajectoryState.h
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
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
TrackerHitAssociator.h
TrackingParticle::Vector
math::XYZVectorD Vector
point in the space
Definition: TrackingParticle.h:37
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
Method called at the end of the event loop.
Definition: MuonTrackValidator.cc:24
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
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:35522
quality
const uint32_t *__restrict__ Quality * quality
Definition: CAHitNtupletGeneratorKernelsImpl.h:109
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
HLT_FULL_cff.maxPhi
maxPhi
Definition: HLT_FULL_cff.py:52987
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:184
histoParameters_cff.minRPCHit
minRPCHit
Definition: histoParameters_cff.py:69
MuonErrorMatrixAnalyzer_cfi.maxPt
maxPt
Definition: MuonErrorMatrixAnalyzer_cfi.py:19
histoParameters_cff.cotThetaRes_rangeMax
cotThetaRes_rangeMax
Definition: histoParameters_cff.py:95
cmsdt::algo
algo
Definition: constants.h:165
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:127
pixelTrack::Quality
Quality
Definition: TrackSoAHeterogeneousT.h:10
trigger::size_type
uint16_t size_type
Definition: TriggerTypeDefs.h:18
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
histoParameters_cff.dxyRes_rangeMax
dxyRes_rangeMax
Definition: histoParameters_cff.py:99
HLT_FULL_cff.fraction
fraction
Definition: HLT_FULL_cff.py:52806
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
TrackAssociatorRecord
Definition: TrackAssociatorRecord.h:18
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:144
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:328
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
get
#define get
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:52975
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
TrackingParticleCollection
std::vector< TrackingParticle > TrackingParticleCollection
Definition: TrackingParticleFwd.h:9
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:45
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
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
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
Method called before the event loop.
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