28 theMuonCollectionLabel_ = consumes<edm::View<reco::Muon> >(
parameters.getParameter<
edm::InputTag>(
"MuonCollection"));
29 theVertexLabel_ = consumes<reco::VertexCollection>(pSet.
getParameter<
InputTag>(
"inputTagVertex"));
31 dcsStatusCollection_ =
62 theFolder =
parameters.getParameter<
string>(
"folder");
72 muReco = ibooker.
book1D(
"muReco",
"muon reconstructed tracks", 6, 1, 7);
74 muReco->setBinLabel(2,
"glb+sta");
75 muReco->setBinLabel(3,
"tk+sta");
76 muReco->setBinLabel(4,
"tk");
77 muReco->setBinLabel(5,
"sta");
78 muReco->setBinLabel(6,
"calo");
90 "Res_TkGlb_eta",
"#eta_{TKfromGLB} - #eta_{GLB}",
etaBin * binFactor,
etaMin / 3000,
etaMax / 3000));
92 "Res_GlbSta_eta",
"#eta_{GLB} - #eta_{STAfromGLB}",
etaBin * binFactor,
etaMin / 100,
etaMax / 100));
94 "Res_TkSta_eta",
"#eta_{TKfromGLB} - #eta_{STAfromGLB}",
etaBin * binFactor,
etaMin / 100,
etaMax / 100));
96 "(#eta_{TKfromGLB} - #eta_{GLB}) vs #eta_{GLB}",
104 "(#eta_{GLB} - #eta_{STAfromGLB}) vs #eta_{GLB}",
112 "(#eta_{TKfromGLB} - #eta_{STAfromGLB}) vs #eta_{TKfromGLB}",
119 etaPull = ibooker.
book1D(
"Pull_TkSta_eta",
"#eta_{TKfromGLB} - #eta_{GLB} / error", 100, -10, 10);
123 etaEfficiency.push_back(
132 thetaGlbTrack[1]->setAxisTitle(
"rad");
134 thetaGlbTrack[2]->setAxisTitle(
"rad");
135 thetaResolution.push_back(ibooker.
book1D(
"Res_TkGlb_theta",
136 "#theta_{TKfromGLB} - #theta_{GLB}",
140 thetaResolution[0]->setAxisTitle(
"rad");
141 thetaResolution.push_back(ibooker.
book1D(
"Res_GlbSta_theta",
142 "#theta_{GLB} - #theta_{STAfromGLB}",
146 thetaResolution[1]->setAxisTitle(
"rad");
147 thetaResolution.push_back(ibooker.
book1D(
"Res_TkSta_theta",
148 "#theta_{TKfromGLB} - #theta_{STAfromGLB}",
152 thetaResolution[2]->setAxisTitle(
"rad");
153 thetaResolution.push_back(ibooker.
book2D(
"ResVsTheta_TkGlb_theta",
154 "(#theta_{TKfromGLB} - #theta_{GLB}) vs #theta_{GLB}",
161 thetaResolution[3]->setAxisTitle(
"rad", 1);
162 thetaResolution[3]->setAxisTitle(
"rad", 2);
163 thetaResolution.push_back(ibooker.
book2D(
"ResVsTheta_GlbSta_theta",
164 "(#theta_{GLB} - #theta_{STAfromGLB}) vs #theta_{GLB}",
171 thetaResolution[4]->setAxisTitle(
"rad", 1);
172 thetaResolution[4]->setAxisTitle(
"rad", 2);
173 thetaResolution.push_back(ibooker.
book2D(
"ResVsTheta_TkSta_theta",
174 "(#theta_{TKfromGLB} - #theta_{STAfromGLB}) vs #theta_{TKfromGLB}",
181 thetaResolution[5]->setAxisTitle(
"rad", 1);
182 thetaResolution[5]->setAxisTitle(
"rad", 2);
183 thetaPull = ibooker.
book1D(
"Pull_TkSta_theta",
"#theta_{TKfromGLB} - #theta_{STAfromGLB} / error", 100, -10, 10);
190 tunePResolution = ibooker.
book1D(
197 phiGlbTrack[1]->setAxisTitle(
"rad");
199 phiGlbTrack[2]->setAxisTitle(
"rad");
201 "Res_TkGlb_phi",
"#phi_{TKfromGLB} - #phi_{GLB}",
phiBin * binFactor,
phiMin / 3000,
phiMax / 3000));
204 "Res_GlbSta_phi",
"#phi_{GLB} - #phi_{STAfromGLB}",
phiBin * binFactor,
phiMin / 100,
phiMax / 100));
207 "Res_TkSta_phi",
"#phi_{TKfromGLB} - #phi_{STAfromGLB}",
phiBin * binFactor,
phiMin / 100,
phiMax / 100));
210 "(#phi_{TKfromGLB} - #phi_{GLB}) vs #phi_GLB",
220 "(#phi_{GLB} - #phi_{STAfromGLB}) vs #phi_{GLB}",
230 "(#phi_{TKfromGLB} - #phi_{STAfromGLB}) vs #phi_{TKfromGLB}",
239 phiPull = ibooker.
book1D(
"Pull_TkSta_phi",
"#phi_{TKfromGLB} - #phi_{STAfromGLB} / error", 100, -10, 10);
245 phiEfficiency[0]->setAxisTitle(
"rad");
246 phiEfficiency.push_back(
248 phiEfficiency[1]->setAxisTitle(
"rad");
251 chi2OvDFGlbTrack.push_back(
253 chi2OvDFGlbTrack.push_back(
255 chi2OvDFGlbTrack.push_back(
260 probchi2GlbTrack.push_back(ibooker.
book1D(histname +
"Glb_probchi",
"Prob #chi_{GLB}", 120,
chi2Min, 1.20));
261 probchi2GlbTrack.push_back(ibooker.
book1D(histname +
"Tk_probchi",
"Prob #chi_{TKfromGLB}", 120,
chi2Min, 1.20));
262 probchi2GlbTrack.push_back(ibooker.
book1D(histname +
"Sta_probchi",
"Prob #chi_{STAfromGLB}", 120,
chi2Min, 1.20));
263 probchi2Track = ibooker.
book1D(
"TkMuon_probchi",
"Prob #chi_{TK}", 120,
chi2Min, 1.20);
264 probchi2StaTrack = ibooker.
book1D(
"StaMuon_probchi",
"Prob #chi_{STA}", 120,
chi2Min, 1.20);
269 pGlbTrack.push_back(ibooker.
book1D(histname +
"Tk_p",
"p_{TKfromGLB}",
pBin,
pMin,
pMax));
270 pGlbTrack[1]->setAxisTitle(
"GeV");
271 pGlbTrack.push_back(ibooker.
book1D(histname +
"Sta_p",
"p_{STAfromGLB}",
pBin,
pMin,
pMax));
272 pGlbTrack[2]->setAxisTitle(
"GeV");
280 ptGlbTrack[0]->setAxisTitle(
"GeV");
282 ptGlbTrack[1]->setAxisTitle(
"GeV");
284 ptGlbTrack[2]->setAxisTitle(
"GeV");
292 ptSoftMuonMVA = ibooker.
book1D(
"ptSoftMuonMVA",
"pt_{SoftMuon}", 50, 0, 50);
293 deltaRSoftMuonMVA = ibooker.
book1D(
"deltaRSoftMuonMVA",
"#Delta R", 50, 0, 5);
294 gNchi2SoftMuonMVA = ibooker.
book1D(
"gNchi2SoftMuonMVA",
"gNchi2", 50, 0, 3);
295 vMuHitsSoftMuonMVA = ibooker.
book1D(
"vMuHitsSoftMuonMVA",
"vMuHits", 50, 0, 50);
296 mNuStationsSoftMuonMVA = ibooker.
book1D(
"mNuStationsSoftMuonMVA",
"mNuStations", 6, 0, 6);
297 dxyRefSoftMuonMVA = ibooker.
book1D(
"dxyRefSoftMuonMVA",
"dxyRef", 50, -0.1, 0.1);
298 dzRefSoftMuonMVA = ibooker.
book1D(
"dzRefSoftMuonMVA",
"dzRef", 50, -0.1, 0.1);
299 LWHSoftMuonMVA = ibooker.
book1D(
"LWHSoftMuonMVA",
"LWH", 20, 0, 20);
300 valPixHitsSoftMuonMVA = ibooker.
book1D(
"valPixHitsSoftMuonMVA",
"valPixHits", 8, 0, 8);
301 innerChi2SoftMuonMVA = ibooker.
book1D(
"innerChi2SoftMuonMVA",
"innerChi2", 50, 0, 3);
302 outerChi2SoftMuonMVA = ibooker.
book1D(
"outerChi2SoftMuonMVA",
"outerChi2", 50, 0, 4);
303 iValFracSoftMuonMVA = ibooker.
book1D(
"iValFracSoftMuonMVA",
"iValFrac", 50, 0.5, 1.0);
304 segCompSoftMuonMVA = ibooker.
book1D(
"segCompSoftMuonMVA",
"segComp", 50, 0, 1.2);
305 chi2LocMomSoftMuonMVA = ibooker.
book1D(
"chi2LocMomSoftMuonMVA",
"chi2LocMom", 50, 0, 40);
306 chi2LocPosSoftMuonMVA = ibooker.
book1D(
"chi2LocPosSoftMuonMVA",
"chi2LocPos", 0, 0, 8);
307 glbTrackTailProbSoftMuonMVA = ibooker.
book1D(
"glbTrackTailProbSoftMuonMVA",
"glbTrackTailProb", 50, 0, 8);
308 NTrkVHitsSoftMuonMVA = ibooker.
book1D(
"NTrkVHitsSoftMuonMVA",
"NTrkVHits", 50, 0, 35);
309 kinkFinderSoftMuonMVA = ibooker.
book1D(
"kinkFinderSoftMuonMVA",
"kinkFinder", 50, 0, 30);
310 vRPChitsSoftMuonMVA = ibooker.
book1D(
"vRPChitsSoftMuonMVA",
"vRPChits", 50, 0, 50);
311 glbKinkFinderSoftMuonMVA = ibooker.
book1D(
"glbKinkFinderSoftMuonMVA",
"glbKinkFinder", 50, 0, 50);
312 glbKinkFinderLogSoftMuonMVA = ibooker.
book1D(
"glbKinkFinderLogSoftMuonMVA",
"glbKinkFinderLog", 50, 0, 50);
313 staRelChi2SoftMuonMVA = ibooker.
book1D(
"staRelChi2SoftMuonMVA",
"staRelChi2", 50, 0, 2);
314 glbDeltaEtaPhiSoftMuonMVA = ibooker.
book1D(
"glbDeltaEtaPhiSoftMuonMVA",
"glbDeltaEtaPhi", 50, 0, 0.15);
315 trkRelChi2SoftMuonMVA = ibooker.
book1D(
"trkRelChi2SoftMuonMVA",
"trkRelChi2", 50, 0, 1.2);
316 vDThitsSoftMuonMVA = ibooker.
book1D(
"vDThitsSoftMuonMVA",
"vDThits", 50, 0, 50);
317 vCSChitsSoftMuonMVA = ibooker.
book1D(
"vCSChitsSoftMuonMVA",
"vCSChits", 50, 0, 50);
319 vGEMhitsSoftMuonMVA =
321 vGEMhitsSoftMuonMVA->
setXTitle(
"Number of Valid GEM Hits of Global Muon");
323 vGEMhitsSoftMuonMVA =
nullptr;
325 timeAtIpInOutSoftMuonMVA = ibooker.
book1D(
"timeAtIpInOutSoftMuonMVA",
"timeAtIpInOut", 50, -10.0, 10.0);
326 timeAtIpInOutErrSoftMuonMVA = ibooker.
book1D(
"timeAtIpInOutErrSoftMuonMVA",
"timeAtIpInOutErr", 50, 0, 3.5);
327 getMuonHitsPerStationSoftMuonMVA =
328 ibooker.
book1D(
"getMuonHitsPerStationSoftMuonMVA",
"getMuonHitsPerStation", 6, 0, 6);
329 QprodSoftMuonMVA = ibooker.
book1D(
"QprodSoftMuonMVA",
"Qprod", 4, -2, 2);
332 qGlbTrack.push_back(ibooker.
book1D(histname +
"Glb_q",
"q_{GLB}", 5, -2.5, 2.5));
333 qGlbTrack.push_back(ibooker.
book1D(histname +
"Tk_q",
"q_{TKfromGLB}", 5, -2.5, 2.5));
334 qGlbTrack.push_back(ibooker.
book1D(histname +
"Sta_q",
"q_{STAformGLB}", 5, -2.5, 2.5));
335 qGlbTrack.push_back(ibooker.
book1D(
336 histname +
"qComparison",
"comparison between q_{GLB} and q_{TKfromGLB}, q_{STAfromGLB}", 8, 0.5, 8.5));
338 qGlbTrack[3]->setBinLabel(2,
"qGlb!=qSta");
339 qGlbTrack[3]->setBinLabel(3,
"qGlb=qTk");
340 qGlbTrack[3]->setBinLabel(4,
"qGlb!=qTk");
341 qGlbTrack[3]->setBinLabel(5,
"qSta=qTk");
342 qGlbTrack[3]->setBinLabel(6,
"qSta!=qTk");
343 qGlbTrack[3]->setBinLabel(7,
"qGlb!=qSta,qGlb!=Tk");
344 qGlbTrack[3]->setBinLabel(8,
"qGlb=qSta,qGlb=Tk");
345 qTrack = ibooker.
book1D(
"TkMuon_q",
"q_{TK}", 5, -2.5, 2.5);
346 qStaTrack = ibooker.
book1D(
"StaMuon_q",
"q_{STA}", 5, -2.5, 2.5);
350 qOverpResolution.push_back(ibooker.
book1D(
351 "Res_TkGlb_qOverp",
"(q/p)_{TKfromGLB} - (q/p)_{GLB}",
pResBin * binFactor * 2,
pResMin / 10,
pResMax / 10));
353 qOverpResolution.push_back(
355 qOverpResolution[1]->setAxisTitle(
"GeV^{-1}");
356 qOverpResolution.push_back(ibooker.
book1D(
357 "Res_TkSta_qOverp",
"(q/p)_{TKfromGLB} - (q/p)_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
358 qOverpResolution[2]->setAxisTitle(
"GeV^{-1}");
359 qOverpPull = ibooker.
book1D(
"Pull_TkSta_qOverp",
"(q/p)_{TKfromGLB} - (q/p)_{STAfromGLB} / error", 100, -10, 10);
361 oneOverpResolution.push_back(ibooker.
book1D(
362 "Res_TkGlb_oneOverp",
"(1/p)_{TKfromGLB} - (1/p)_{GLB}",
pResBin * binFactor * 2,
pResMin / 10,
pResMax / 10));
364 oneOverpResolution.push_back(
366 oneOverpResolution[1]->setAxisTitle(
"GeV^{-1}");
367 oneOverpResolution.push_back(ibooker.
book1D(
368 "Res_TkSta_oneOverp",
"(q/p)_{TKfromGLB} - (q/p)_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
369 oneOverpResolution[2]->setAxisTitle(
"GeV^{-1}");
370 oneOverpPull = ibooker.
book1D(
"Pull_TkSta_oneOverp",
"(1/p)_{TKfromGLB} - (1/p)_{STAfromGLB} / error", 100, -10, 10);
372 qOverptResolution.push_back(ibooker.
book1D(
"Res_TkGlb_qOverpt",
373 "(q/p_{t})_{TKfromGLB} - (q/p_{t})_{GLB}",
378 qOverptResolution.push_back(ibooker.
book1D(
379 "Res_GlbSta_qOverpt",
"(q/p_{t})_{GLB} - (q/p_{t})_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
380 qOverptResolution[1]->setAxisTitle(
"GeV^{-1}");
381 qOverptResolution.push_back(ibooker.
book1D(
382 "Res_TkSta_qOverpt",
"(q/p_{t})_{TKfromGLB} - (q/p_{t})_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
383 qOverptResolution[2]->setAxisTitle(
"GeV^{-1}");
384 qOverptPull = ibooker.
book1D(
"Pull_TkSta_qOverpt",
"(q/pt)_{TKfromGLB} - (q/pt)_{STAfromGLB} / error", 100, -10, 10);
386 oneOverptResolution.push_back(ibooker.
book1D(
"Res_TkGlb_oneOverpt",
387 "(1/p_{t})_{TKfromGLB} - (1/p_{t})_{GLB}",
392 oneOverptResolution.push_back(ibooker.
book1D(
393 "Res_GlbSta_oneOverpt",
"(1/p_{t})_{GLB} - (1/p_{t})_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
394 oneOverptResolution[1]->setAxisTitle(
"GeV^{-1}");
395 oneOverptResolution.push_back(ibooker.
book1D(
396 "Res_TkSta_oneOverpt",
"(1/p_{t})_{TKfromGLB} - (1/p_{t})_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
397 oneOverptResolution[2]->setAxisTitle(
"GeV^{-1}");
398 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsEta_TkGlb_oneOverpt",
399 "(#eta_{TKfromGLB} - #eta_{GLB}) vs (1/p_{t})_{GLB}",
406 oneOverptResolution[3]->setAxisTitle(
"GeV^{-1}", 2);
407 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsEta_GlbSta_oneOverpt",
408 "(#eta_{GLB} - #eta_{STAfromGLB} vs (1/p_{t})_{GLB}",
415 oneOverptResolution[4]->setAxisTitle(
"GeV^{-1}", 2);
416 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsEta_TkSta_oneOverpt",
417 "(#eta_{TKfromGLB} - #eta_{STAfromGLB}) vs (1/p_{t})_{TKfromGLB}",
424 oneOverptResolution[5]->setAxisTitle(
"GeV^{-1}", 2);
425 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPhi_TkGlb_oneOverpt",
426 "(#phi_{TKfromGLB} - #phi_{GLB}) vs (1/p_{t})_{GLB}",
433 oneOverptResolution[6]->setAxisTitle(
"rad", 1);
434 oneOverptResolution[6]->setAxisTitle(
"GeV^{-1}", 2);
435 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPhi_GlbSta_oneOverpt",
436 "(#phi_{GLB} - #phi_{STAfromGLB} vs (1/p_{t})_{GLB}",
443 oneOverptResolution[7]->setAxisTitle(
"rad", 1);
444 oneOverptResolution[7]->setAxisTitle(
"GeV^{-1}", 2);
445 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPhi_TkSta_oneOverpt",
446 "(#phi_{TKfromGLB} - #phi_{STAfromGLB}) vs (1/p_{t})_{TKfromGLB}",
453 oneOverptResolution[8]->setAxisTitle(
"rad", 1);
454 oneOverptResolution[8]->setAxisTitle(
"GeV^{-1}", 2);
455 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPt_TkGlb_oneOverpt",
456 "((1/p_{t})_{TKfromGLB} - (1/p_{t})_{GLB}) vs (1/p_{t})_{GLB}",
463 oneOverptResolution[9]->setAxisTitle(
"GeV^{-1}", 1);
464 oneOverptResolution[9]->setAxisTitle(
"GeV^{-1}", 2);
465 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPt_GlbSta_oneOverpt",
466 "((1/p_{t})_{GLB} - (1/p_{t})_{STAfromGLB} vs (1/p_{t})_{GLB}",
473 oneOverptResolution[10]->setAxisTitle(
"GeV^{-1}", 1);
474 oneOverptResolution[10]->setAxisTitle(
"GeV^{-1}", 2);
475 oneOverptResolution.push_back(
476 ibooker.
book2D(
"ResVsPt_TkSta_oneOverpt",
477 "((1/p_{t})_{TKfromGLB} - (1/p_{t})_{STAfromGLB}) vs (1/p_{t})_{TKfromGLB}",
484 oneOverptResolution[11]->setAxisTitle(
"GeV^{-1}", 1);
485 oneOverptResolution[11]->setAxisTitle(
"GeV^{-1}", 2);
487 ibooker.
book1D(
"Pull_TkSta_oneOverpt",
"(1/pt)_{TKfromGLB} - (1/pt)_{STAfromGLB} / error", 100, -10, 10);
491 phiVsetaGlbTrack.push_back(ibooker.
book2D(
493 phiVsetaGlbTrack.push_back(ibooker.
book2D(
495 phiVsetaGlbTrack.push_back(ibooker.
book2D(
498 phiVsetaGlbTrack_badlumi.push_back(ibooker.
book2D(
500 phiVsetaGlbTrack_badlumi.push_back(ibooker.
book2D(histname +
"Tk_phiVSeta_badlumi",
501 "#phi vs #eta (TKfromGLB)",
508 phiVsetaGlbTrack_badlumi.push_back(ibooker.
book2D(histname +
"Sta_phiVseta_badlumi",
509 "#phi vs #eta (STAfromGLB)",
519 rhAnalysis.push_back(ibooker.
book1D(
"StaRh_Frac_inGlb",
"recHits_{STAinGLB} / recHits_{GLB}",
rhBin,
rhMin,
rhMax));
520 rhAnalysis.push_back(ibooker.
book1D(
"TkRh_Frac_inGlb",
"recHits_{TKinGLB} / recHits_{GLB}",
rhBin,
rhMin,
rhMax));
521 rhAnalysis.push_back(
522 ibooker.
book1D(
"StaRh_inGlb_Div_RhAssoSta",
"recHits_{STAinGLB} / recHits_{STAfromGLB}",
rhBin,
rhMin,
rhMax));
523 rhAnalysis.push_back(
524 ibooker.
book1D(
"TkRh_inGlb_Div_RhAssoTk",
"recHits_{TKinGLB} / recHits_{TKfromGLB}",
rhBin,
rhMin,
rhMax));
525 rhAnalysis.push_back(ibooker.
book1D(
526 "GlbRh_Div_RhAssoStaTk",
"recHits_{GLB} / (recHits_{TKfromGLB}+recHits_{STAfromGLB})",
rhBin,
rhMin,
rhMax));
527 rhAnalysis.push_back(ibooker.
book1D(
"invalidRh_Frac_inTk",
"Invalid recHits / rechits_{GLB}",
rhBin,
rhMin,
rhMax));
531 muVStkSytemRotation.push_back(ibooker.
book2D(
532 "muVStkSytemRotation_posMu",
"pT_{TK} / pT_{GLB} vs pT_{GLB} for #mu^{+}", 50, 0, 200, 100, 0.8, 1.2));
533 muVStkSytemRotation.push_back(ibooker.
book2D(
534 "muVStkSytemRotation_negMu",
"pT_{TK} / pT_{GLB} vs pT_{GLB} for #mu^{-}", 50, 0, 200, 100, 0.8, 1.2));
538 float p1 = 0,
p2 = 0, p1e = 1, p2e = 1;
542 p1e =
t1->etaError();
544 p2e =
t2->etaError();
545 }
else if (par ==
"theta") {
547 p1e =
t1->thetaError();
549 p2e =
t2->thetaError();
550 }
else if (par ==
"phi") {
552 p1e =
t1->phiError();
554 p2e =
t2->phiError();
555 }
else if (par ==
"qOverp") {
556 p1 =
t1->charge() /
t1->p();
557 p1e =
t1->qoverpError();
558 p2 =
t2->charge() /
t2->p();
559 p2e =
t2->qoverpError();
560 }
else if (par ==
"oneOverp") {
562 p1e =
t1->qoverpError();
564 p2e =
t2->qoverpError();
565 }
else if (par ==
"qOverpt") {
566 p1 =
t1->charge() /
t1->pt();
567 p1e =
t1->ptError() *
p1 *
p1;
568 p2 =
t2->charge() /
t2->pt();
569 p2e =
t2->ptError() *
p2 *
p2;
570 }
else if (par ==
"oneOverpt") {
572 p1e =
t1->ptError() *
p1 *
p1;
574 p2e =
t2->ptError() *
p2 *
p2;
578 if (p1e != 0 || p2e != 0)
579 pull =
res /
sqrt(p1e * p1e + p2e * p2e);
597 edm::LogInfo(
"MuonRecoAnalyzer") <<
"Error: Can't get the beamspot" << endl;
602 edm::LogInfo(
"MuonRecoAnalyzer") <<
"Error: Can't get the vertex collection" << endl;
609 bool fillBadLumi =
false;
610 if (
iEvent.getByToken(dcsStatusCollection_, dcsStatus) && dcsStatus.
isValid()) {
611 for (
auto const& dcsStatusItr : *dcsStatus) {
662 float res = 0, pull = 0;
663 if (!
muons.isValid())
679 pvIndex = getPv(iTrack.
index(), &(*vertex));
681 refPoint =
vertex->at(pvIndex).position();
686 edm::LogInfo(
"MuonRecoAnalyzer") <<
"ERROR: No beam sport found!" << endl;
690 ptSoftMuonMVA->Fill(iTrack->eta());
691 deltaRSoftMuonMVA->Fill(getDeltaR(*iTrack, *oTrack));
692 gNchi2SoftMuonMVA->Fill(gTrack->normalizedChi2());
694 mNuStationsSoftMuonMVA->Fill(
muon->numberOfMatchedStations());
696 dxyRefSoftMuonMVA->Fill(iTrack->dxy(refPoint));
697 dzRefSoftMuonMVA->Fill(iTrack->dz(refPoint));
701 innerChi2SoftMuonMVA->Fill(iTrack->normalizedChi2());
702 outerChi2SoftMuonMVA->Fill(oTrack->normalizedChi2());
703 iValFracSoftMuonMVA->Fill(iTrack->validFraction());
709 kinkFinderSoftMuonMVA->Fill(muonQuality.
trkKink);
711 glbKinkFinderSoftMuonMVA->Fill(muonQuality.
glbKink);
712 glbKinkFinderLogSoftMuonMVA->Fill(TMath::Log(2 + muonQuality.
glbKink));
713 staRelChi2SoftMuonMVA->Fill(muonQuality.
staRelChi2);
715 trkRelChi2SoftMuonMVA->Fill(muonQuality.
trkRelChi2);
721 timeAtIpInOutSoftMuonMVA->Fill(
muon->time().timeAtIpInOut);
722 timeAtIpInOutErrSoftMuonMVA->Fill(
muon->time().timeAtIpInOutErr);
724 QprodSoftMuonMVA->Fill((iTrack->charge() * oTrack->charge()));
727 if (
muon->isGlobalMuon()) {
728 LogTrace(
metname) <<
"[MuonRecoAnalyzer] The mu is global - filling the histos";
729 if (
muon->isTrackerMuon() &&
muon->isStandAloneMuon())
731 if (!(
muon->isTrackerMuon()) &&
muon->isStandAloneMuon())
733 if (!
muon->isStandAloneMuon())
734 LogTrace(
metname) <<
"[MuonRecoAnalyzer] ERROR: the mu is global but not standalone!";
742 etaGlbTrack[0]->Fill(recoCombinedGlbTrack->eta());
743 etaGlbTrack[1]->Fill(recoTkGlbTrack->eta());
744 etaGlbTrack[2]->Fill(recoStaGlbTrack->eta());
746 phiVsetaGlbTrack[0]->Fill(recoCombinedGlbTrack->eta(), recoCombinedGlbTrack->phi());
747 phiVsetaGlbTrack[1]->Fill(recoTkGlbTrack->eta(), recoTkGlbTrack->phi());
748 phiVsetaGlbTrack[2]->Fill(recoStaGlbTrack->eta(), recoStaGlbTrack->phi());
751 phiVsetaGlbTrack_badlumi[0]->Fill(recoCombinedGlbTrack->eta(), recoCombinedGlbTrack->phi());
752 phiVsetaGlbTrack_badlumi[1]->Fill(recoTkGlbTrack->eta(), recoTkGlbTrack->phi());
753 phiVsetaGlbTrack_badlumi[2]->Fill(recoStaGlbTrack->eta(), recoStaGlbTrack->phi());
756 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"eta",
res, pull);
758 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"eta",
res, pull);
760 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"eta",
res, pull);
763 etaResolution[3]->Fill(recoCombinedGlbTrack->eta(), recoTkGlbTrack->eta() - recoCombinedGlbTrack->eta());
764 etaResolution[4]->Fill(recoCombinedGlbTrack->eta(), -recoStaGlbTrack->eta() + recoCombinedGlbTrack->eta());
765 etaResolution[5]->Fill(recoCombinedGlbTrack->eta(), recoTkGlbTrack->eta() - recoStaGlbTrack->eta());
767 thetaGlbTrack[0]->Fill(recoCombinedGlbTrack->theta());
768 thetaGlbTrack[1]->Fill(recoTkGlbTrack->theta());
769 thetaGlbTrack[2]->Fill(recoStaGlbTrack->theta());
770 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"theta",
res, pull);
771 thetaResolution[0]->Fill(
res);
772 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"theta",
res, pull);
773 thetaResolution[1]->Fill(
res);
775 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"theta",
res, pull);
776 thetaResolution[2]->Fill(
res);
777 thetaPull->Fill(pull);
778 thetaResolution[3]->Fill(recoCombinedGlbTrack->theta(), recoTkGlbTrack->theta() - recoCombinedGlbTrack->theta());
779 thetaResolution[4]->Fill(recoCombinedGlbTrack->theta(),
780 -recoStaGlbTrack->theta() + recoCombinedGlbTrack->theta());
781 thetaResolution[5]->Fill(recoCombinedGlbTrack->theta(), recoTkGlbTrack->theta() - recoStaGlbTrack->theta());
783 phiGlbTrack[0]->Fill(recoCombinedGlbTrack->phi());
784 phiGlbTrack[1]->Fill(recoTkGlbTrack->phi());
785 phiGlbTrack[2]->Fill(recoStaGlbTrack->phi());
786 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"phi",
res, pull);
788 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"phi",
res, pull);
790 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"phi",
res, pull);
793 phiResolution[3]->Fill(recoCombinedGlbTrack->phi(), recoTkGlbTrack->phi() - recoCombinedGlbTrack->phi());
794 phiResolution[4]->Fill(recoCombinedGlbTrack->phi(), -recoStaGlbTrack->phi() + recoCombinedGlbTrack->phi());
795 phiResolution[5]->Fill(recoCombinedGlbTrack->phi(), recoTkGlbTrack->phi() - recoStaGlbTrack->phi());
797 chi2OvDFGlbTrack[0]->Fill(recoCombinedGlbTrack->normalizedChi2());
798 chi2OvDFGlbTrack[1]->Fill(recoTkGlbTrack->normalizedChi2());
799 chi2OvDFGlbTrack[2]->Fill(recoStaGlbTrack->normalizedChi2());
803 probchi2GlbTrack[0]->Fill(TMath::Prob(recoCombinedGlbTrack->chi2(), recoCombinedGlbTrack->ndof()));
804 probchi2GlbTrack[1]->Fill(TMath::Prob(recoTkGlbTrack->chi2(), recoTkGlbTrack->ndof()));
805 probchi2GlbTrack[2]->Fill(TMath::Prob(recoStaGlbTrack->chi2(), recoStaGlbTrack->ndof()));
809 pGlbTrack[0]->Fill(recoCombinedGlbTrack->p());
810 pGlbTrack[1]->Fill(recoTkGlbTrack->p());
811 pGlbTrack[2]->Fill(recoStaGlbTrack->p());
813 ptGlbTrack[0]->Fill(recoCombinedGlbTrack->pt());
814 ptGlbTrack[1]->Fill(recoTkGlbTrack->pt());
815 ptGlbTrack[2]->Fill(recoStaGlbTrack->pt());
817 qGlbTrack[0]->Fill(recoCombinedGlbTrack->charge());
818 qGlbTrack[1]->Fill(recoTkGlbTrack->charge());
819 qGlbTrack[2]->Fill(recoStaGlbTrack->charge());
820 if (recoCombinedGlbTrack->charge() == recoStaGlbTrack->charge())
821 qGlbTrack[3]->
Fill(1);
823 qGlbTrack[3]->Fill(2);
824 if (recoCombinedGlbTrack->charge() == recoTkGlbTrack->charge())
825 qGlbTrack[3]->
Fill(3);
827 qGlbTrack[3]->Fill(4);
828 if (recoStaGlbTrack->charge() == recoTkGlbTrack->charge())
829 qGlbTrack[3]->
Fill(5);
831 qGlbTrack[3]->Fill(6);
832 if (recoCombinedGlbTrack->charge() != recoStaGlbTrack->charge() &&
833 recoCombinedGlbTrack->charge() != recoTkGlbTrack->charge())
834 qGlbTrack[3]->
Fill(7);
835 if (recoCombinedGlbTrack->charge() == recoStaGlbTrack->charge() &&
836 recoCombinedGlbTrack->charge() == recoTkGlbTrack->charge())
837 qGlbTrack[3]->
Fill(8);
839 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"qOverp",
res, pull);
840 qOverpResolution[0]->Fill(
res);
841 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"qOverp",
res, pull);
842 qOverpResolution[1]->Fill(
res);
843 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"qOverp",
res, pull);
844 qOverpResolution[2]->Fill(
res);
845 qOverpPull->Fill(pull);
847 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"oneOverp",
res, pull);
848 oneOverpResolution[0]->Fill(
res);
849 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"oneOverp",
res, pull);
850 oneOverpResolution[1]->Fill(
res);
851 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"oneOverp",
res, pull);
852 oneOverpResolution[2]->Fill(
res);
853 oneOverpPull->Fill(pull);
855 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"qOverpt",
res, pull);
856 qOverptResolution[0]->Fill(
res);
857 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"qOverpt",
res, pull);
858 qOverptResolution[1]->Fill(
res);
859 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"qOverpt",
res, pull);
860 qOverptResolution[2]->Fill(
res);
861 qOverptPull->Fill(pull);
863 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"oneOverpt",
res, pull);
864 oneOverptResolution[0]->Fill(
res);
865 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"oneOverpt",
res, pull);
866 oneOverptResolution[1]->Fill(
res);
867 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"oneOverpt",
res, pull);
868 oneOverptResolution[2]->Fill(
res);
869 oneOverptPull->Fill(pull);
877 double bestTrackPt = recoBestTrack->pt();
879 double tunePBestTrackPt = recoTunePBestTrack->pt();
881 double tunePBestTrackRes = (bestTrackPt - tunePBestTrackPt) / bestTrackPt;
883 tunePResolution->Fill(tunePBestTrackRes);
885 oneOverptResolution[3]->Fill(recoCombinedGlbTrack->eta(),
886 (1 / recoTkGlbTrack->pt()) - (1 / recoCombinedGlbTrack->pt()));
887 oneOverptResolution[4]->Fill(recoCombinedGlbTrack->eta(),
888 -(1 / recoStaGlbTrack->pt()) + (1 / recoCombinedGlbTrack->pt()));
889 oneOverptResolution[5]->Fill(recoCombinedGlbTrack->eta(),
890 (1 / recoTkGlbTrack->pt()) - (1 / recoStaGlbTrack->pt()));
891 oneOverptResolution[6]->Fill(recoCombinedGlbTrack->phi(),
892 (1 / recoTkGlbTrack->pt()) - (1 / recoCombinedGlbTrack->pt()));
893 oneOverptResolution[7]->Fill(recoCombinedGlbTrack->phi(),
894 -(1 / recoStaGlbTrack->pt()) + (1 / recoCombinedGlbTrack->pt()));
895 oneOverptResolution[8]->Fill(recoCombinedGlbTrack->phi(),
896 (1 / recoTkGlbTrack->pt()) - (1 / recoStaGlbTrack->pt()));
897 oneOverptResolution[9]->Fill(recoCombinedGlbTrack->pt(),
898 (1 / recoTkGlbTrack->pt()) - (1 / recoCombinedGlbTrack->pt()));
899 oneOverptResolution[10]->Fill(recoCombinedGlbTrack->pt(),
900 -(1 / recoStaGlbTrack->pt()) + (1 / recoCombinedGlbTrack->pt()));
901 oneOverptResolution[11]->Fill(recoCombinedGlbTrack->pt(),
902 (1 / recoTkGlbTrack->pt()) - (1 / recoStaGlbTrack->pt()));
906 double rhGlb = recoCombinedGlbTrack->found();
908 double rhGlb_StaProvenance = 0;
910 double rhGlb_TkProvenance = 0;
913 recHit != recoCombinedGlbTrack->recHitsEnd();
915 if ((*recHit)->isValid()) {
916 DetId id = (*recHit)->geographicalId();
918 rhGlb_StaProvenance++;
920 rhGlb_TkProvenance++;
924 double rhStaGlb = recoStaGlbTrack->recHitsSize();
926 double rhTkGlb = recoTkGlbTrack->found();
928 double rhTkGlb_notValid = recoTkGlbTrack->lost();
931 rhAnalysis[0]->Fill(rhGlb_StaProvenance / rhGlb);
932 rhAnalysis[1]->Fill(rhGlb_TkProvenance / rhGlb);
933 rhAnalysis[2]->Fill(rhGlb_StaProvenance / rhStaGlb);
934 rhAnalysis[3]->Fill(rhGlb_TkProvenance / rhTkGlb);
935 rhAnalysis[4]->Fill(rhGlb / (rhStaGlb + rhTkGlb));
936 rhAnalysis[5]->Fill(rhTkGlb_notValid / rhGlb);
939 if (recoCombinedGlbTrack->charge() > 0)
940 muVStkSytemRotation[0]->
Fill(recoCombinedGlbTrack->pt(), recoTkGlbTrack->pt() / recoCombinedGlbTrack->pt());
942 muVStkSytemRotation[1]->Fill(recoCombinedGlbTrack->pt(), recoTkGlbTrack->pt() / recoCombinedGlbTrack->pt());
945 if (
muon->isTrackerMuon() && !(
muon->isGlobalMuon())) {
946 LogTrace(
metname) <<
"[MuonRecoAnalyzer] The mu is tracker only - filling the histos";
947 if (
muon->isStandAloneMuon())
949 if (!(
muon->isStandAloneMuon()))
955 etaTrack->Fill(recoTrack->eta());
956 thetaTrack->Fill(recoTrack->theta());
957 phiTrack->Fill(recoTrack->phi());
958 chi2OvDFTrack->Fill(recoTrack->normalizedChi2());
959 probchi2Track->Fill(TMath::Prob(recoTrack->chi2(), recoTrack->ndof()));
960 pTrack->Fill(recoTrack->p());
961 ptTrack->Fill(recoTrack->pt());
962 qTrack->Fill(recoTrack->charge());
965 if (
muon->isStandAloneMuon() && !(
muon->isGlobalMuon())) {
966 LogTrace(
metname) <<
"[MuonRecoAnalyzer] The mu is STA only - filling the histos";
967 if (!(
muon->isTrackerMuon()))
973 etaStaTrack->Fill(recoStaTrack->eta());
974 thetaStaTrack->Fill(recoStaTrack->theta());
975 phiStaTrack->Fill(recoStaTrack->phi());
976 chi2OvDFStaTrack->Fill(recoStaTrack->normalizedChi2());
977 probchi2StaTrack->Fill(TMath::Prob(recoStaTrack->chi2(), recoStaTrack->ndof()));
978 pStaTrack->Fill(recoStaTrack->p());
979 ptStaTrack->Fill(recoStaTrack->pt());
980 qStaTrack->Fill(recoStaTrack->charge());
983 if (
muon->isCaloMuon() && !(
muon->isGlobalMuon()) && !(
muon->isTrackerMuon()) && !(
muon->isStandAloneMuon()))
991 if (
muon->isStandAloneMuon()) {
992 etaEfficiency[0]->Fill(recoStaGlbTrack->eta());
993 phiEfficiency[0]->Fill(recoStaGlbTrack->phi());
995 if (
muon->isStandAloneMuon() &&
muon->isGlobalMuon()) {
996 etaEfficiency[1]->Fill(recoStaGlbTrack->eta());
997 phiEfficiency[1]->Fill(recoStaGlbTrack->phi());
1004 double dphi = acos(
cos(track1.
phi() - track2.
phi()));
1005 double deta = track1.
eta() - track2.
eta();
1006 return sqrt(dphi * dphi + deta * deta);
1012 for (
unsigned int i = 0;
i < vc->size(); ++
i) {
1016 for (v1TrackIter = v1TrackBegin; v1TrackIter != v1TrackEnd; v1TrackIter++) {
1017 if (static_cast<unsigned int>(tidx) == v1TrackIter->key())