26 theMuonCollectionLabel_ = consumes<edm::View<reco::Muon> >(
parameters.getParameter<
edm::InputTag>(
"MuonCollection"));
27 theVertexLabel_ = consumes<reco::VertexCollection>(pSet.
getParameter<
InputTag>(
"inputTagVertex"));
29 dcsStatusCollection_ =
60 theFolder =
parameters.getParameter<
string>(
"folder");
70 muReco = ibooker.
book1D(
"muReco",
"muon reconstructed tracks", 6, 1, 7);
72 muReco->setBinLabel(2,
"glb+sta");
73 muReco->setBinLabel(3,
"tk+sta");
74 muReco->setBinLabel(4,
"tk");
75 muReco->setBinLabel(5,
"sta");
76 muReco->setBinLabel(6,
"calo");
88 "Res_TkGlb_eta",
"#eta_{TKfromGLB} - #eta_{GLB}",
etaBin * binFactor,
etaMin / 3000,
etaMax / 3000));
90 "Res_GlbSta_eta",
"#eta_{GLB} - #eta_{STAfromGLB}",
etaBin * binFactor,
etaMin / 100,
etaMax / 100));
92 "Res_TkSta_eta",
"#eta_{TKfromGLB} - #eta_{STAfromGLB}",
etaBin * binFactor,
etaMin / 100,
etaMax / 100));
94 "(#eta_{TKfromGLB} - #eta_{GLB}) vs #eta_{GLB}",
102 "(#eta_{GLB} - #eta_{STAfromGLB}) vs #eta_{GLB}",
110 "(#eta_{TKfromGLB} - #eta_{STAfromGLB}) vs #eta_{TKfromGLB}",
117 etaPull = ibooker.
book1D(
"Pull_TkSta_eta",
"#eta_{TKfromGLB} - #eta_{GLB} / error", 100, -10, 10);
121 etaEfficiency.push_back(
130 thetaGlbTrack[1]->setAxisTitle(
"rad");
132 thetaGlbTrack[2]->setAxisTitle(
"rad");
133 thetaResolution.push_back(ibooker.
book1D(
"Res_TkGlb_theta",
134 "#theta_{TKfromGLB} - #theta_{GLB}",
138 thetaResolution[0]->setAxisTitle(
"rad");
139 thetaResolution.push_back(ibooker.
book1D(
"Res_GlbSta_theta",
140 "#theta_{GLB} - #theta_{STAfromGLB}",
144 thetaResolution[1]->setAxisTitle(
"rad");
145 thetaResolution.push_back(ibooker.
book1D(
"Res_TkSta_theta",
146 "#theta_{TKfromGLB} - #theta_{STAfromGLB}",
150 thetaResolution[2]->setAxisTitle(
"rad");
151 thetaResolution.push_back(ibooker.
book2D(
"ResVsTheta_TkGlb_theta",
152 "(#theta_{TKfromGLB} - #theta_{GLB}) vs #theta_{GLB}",
159 thetaResolution[3]->setAxisTitle(
"rad", 1);
160 thetaResolution[3]->setAxisTitle(
"rad", 2);
161 thetaResolution.push_back(ibooker.
book2D(
"ResVsTheta_GlbSta_theta",
162 "(#theta_{GLB} - #theta_{STAfromGLB}) vs #theta_{GLB}",
169 thetaResolution[4]->setAxisTitle(
"rad", 1);
170 thetaResolution[4]->setAxisTitle(
"rad", 2);
171 thetaResolution.push_back(ibooker.
book2D(
"ResVsTheta_TkSta_theta",
172 "(#theta_{TKfromGLB} - #theta_{STAfromGLB}) vs #theta_{TKfromGLB}",
179 thetaResolution[5]->setAxisTitle(
"rad", 1);
180 thetaResolution[5]->setAxisTitle(
"rad", 2);
181 thetaPull = ibooker.
book1D(
"Pull_TkSta_theta",
"#theta_{TKfromGLB} - #theta_{STAfromGLB} / error", 100, -10, 10);
188 tunePResolution = ibooker.
book1D(
195 phiGlbTrack[1]->setAxisTitle(
"rad");
197 phiGlbTrack[2]->setAxisTitle(
"rad");
199 "Res_TkGlb_phi",
"#phi_{TKfromGLB} - #phi_{GLB}",
phiBin * binFactor,
phiMin / 3000,
phiMax / 3000));
202 "Res_GlbSta_phi",
"#phi_{GLB} - #phi_{STAfromGLB}",
phiBin * binFactor,
phiMin / 100,
phiMax / 100));
205 "Res_TkSta_phi",
"#phi_{TKfromGLB} - #phi_{STAfromGLB}",
phiBin * binFactor,
phiMin / 100,
phiMax / 100));
208 "(#phi_{TKfromGLB} - #phi_{GLB}) vs #phi_GLB",
218 "(#phi_{GLB} - #phi_{STAfromGLB}) vs #phi_{GLB}",
228 "(#phi_{TKfromGLB} - #phi_{STAfromGLB}) vs #phi_{TKfromGLB}",
237 phiPull = ibooker.
book1D(
"Pull_TkSta_phi",
"#phi_{TKfromGLB} - #phi_{STAfromGLB} / error", 100, -10, 10);
243 phiEfficiency[0]->setAxisTitle(
"rad");
244 phiEfficiency.push_back(
246 phiEfficiency[1]->setAxisTitle(
"rad");
249 chi2OvDFGlbTrack.push_back(
251 chi2OvDFGlbTrack.push_back(
253 chi2OvDFGlbTrack.push_back(
258 probchi2GlbTrack.push_back(ibooker.
book1D(histname +
"Glb_probchi",
"Prob #chi_{GLB}", 120,
chi2Min, 1.20));
259 probchi2GlbTrack.push_back(ibooker.
book1D(histname +
"Tk_probchi",
"Prob #chi_{TKfromGLB}", 120,
chi2Min, 1.20));
260 probchi2GlbTrack.push_back(ibooker.
book1D(histname +
"Sta_probchi",
"Prob #chi_{STAfromGLB}", 120,
chi2Min, 1.20));
261 probchi2Track = ibooker.
book1D(
"TkMuon_probchi",
"Prob #chi_{TK}", 120,
chi2Min, 1.20);
262 probchi2StaTrack = ibooker.
book1D(
"StaMuon_probchi",
"Prob #chi_{STA}", 120,
chi2Min, 1.20);
267 pGlbTrack.push_back(ibooker.
book1D(histname +
"Tk_p",
"p_{TKfromGLB}",
pBin,
pMin,
pMax));
268 pGlbTrack[1]->setAxisTitle(
"GeV");
269 pGlbTrack.push_back(ibooker.
book1D(histname +
"Sta_p",
"p_{STAfromGLB}",
pBin,
pMin,
pMax));
270 pGlbTrack[2]->setAxisTitle(
"GeV");
278 ptGlbTrack[0]->setAxisTitle(
"GeV");
280 ptGlbTrack[1]->setAxisTitle(
"GeV");
282 ptGlbTrack[2]->setAxisTitle(
"GeV");
290 ptSoftMuonMVA = ibooker.
book1D(
"ptSoftMuonMVA",
"pt_{SoftMuon}", 50, 0, 50);
291 deltaRSoftMuonMVA = ibooker.
book1D(
"deltaRSoftMuonMVA",
"#Delta R", 50, 0, 5);
292 gNchi2SoftMuonMVA = ibooker.
book1D(
"gNchi2SoftMuonMVA",
"gNchi2", 50, 0, 3);
293 vMuHitsSoftMuonMVA = ibooker.
book1D(
"vMuHitsSoftMuonMVA",
"vMuHits", 50, 0, 50);
294 mNuStationsSoftMuonMVA = ibooker.
book1D(
"mNuStationsSoftMuonMVA",
"mNuStations", 6, 0, 6);
295 dxyRefSoftMuonMVA = ibooker.
book1D(
"dxyRefSoftMuonMVA",
"dxyRef", 50, -0.1, 0.1);
296 dzRefSoftMuonMVA = ibooker.
book1D(
"dzRefSoftMuonMVA",
"dzRef", 50, -0.1, 0.1);
297 LWHSoftMuonMVA = ibooker.
book1D(
"LWHSoftMuonMVA",
"LWH", 20, 0, 20);
298 valPixHitsSoftMuonMVA = ibooker.
book1D(
"valPixHitsSoftMuonMVA",
"valPixHits", 8, 0, 8);
299 innerChi2SoftMuonMVA = ibooker.
book1D(
"innerChi2SoftMuonMVA",
"innerChi2", 50, 0, 3);
300 outerChi2SoftMuonMVA = ibooker.
book1D(
"outerChi2SoftMuonMVA",
"outerChi2", 50, 0, 4);
301 iValFracSoftMuonMVA = ibooker.
book1D(
"iValFracSoftMuonMVA",
"iValFrac", 50, 0.5, 1.0);
302 segCompSoftMuonMVA = ibooker.
book1D(
"segCompSoftMuonMVA",
"segComp", 50, 0, 1.2);
303 chi2LocMomSoftMuonMVA = ibooker.
book1D(
"chi2LocMomSoftMuonMVA",
"chi2LocMom", 50, 0, 40);
304 chi2LocPosSoftMuonMVA = ibooker.
book1D(
"chi2LocPosSoftMuonMVA",
"chi2LocPos", 0, 0, 8);
305 glbTrackTailProbSoftMuonMVA = ibooker.
book1D(
"glbTrackTailProbSoftMuonMVA",
"glbTrackTailProb", 50, 0, 8);
306 NTrkVHitsSoftMuonMVA = ibooker.
book1D(
"NTrkVHitsSoftMuonMVA",
"NTrkVHits", 50, 0, 35);
307 kinkFinderSoftMuonMVA = ibooker.
book1D(
"kinkFinderSoftMuonMVA",
"kinkFinder", 50, 0, 30);
308 vRPChitsSoftMuonMVA = ibooker.
book1D(
"vRPChitsSoftMuonMVA",
"vRPChits", 50, 0, 50);
309 glbKinkFinderSoftMuonMVA = ibooker.
book1D(
"glbKinkFinderSoftMuonMVA",
"glbKinkFinder", 50, 0, 50);
310 glbKinkFinderLogSoftMuonMVA = ibooker.
book1D(
"glbKinkFinderLogSoftMuonMVA",
"glbKinkFinderLog", 50, 0, 50);
311 staRelChi2SoftMuonMVA = ibooker.
book1D(
"staRelChi2SoftMuonMVA",
"staRelChi2", 50, 0, 2);
312 glbDeltaEtaPhiSoftMuonMVA = ibooker.
book1D(
"glbDeltaEtaPhiSoftMuonMVA",
"glbDeltaEtaPhi", 50, 0, 0.15);
313 trkRelChi2SoftMuonMVA = ibooker.
book1D(
"trkRelChi2SoftMuonMVA",
"trkRelChi2", 50, 0, 1.2);
314 vDThitsSoftMuonMVA = ibooker.
book1D(
"vDThitsSoftMuonMVA",
"vDThits", 50, 0, 50);
315 vCSChitsSoftMuonMVA = ibooker.
book1D(
"vCSChitsSoftMuonMVA",
"vCSChits", 50, 0, 50);
316 timeAtIpInOutSoftMuonMVA = ibooker.
book1D(
"timeAtIpInOutSoftMuonMVA",
"timeAtIpInOut", 50, -10.0, 10.0);
317 timeAtIpInOutErrSoftMuonMVA = ibooker.
book1D(
"timeAtIpInOutErrSoftMuonMVA",
"timeAtIpInOutErr", 50, 0, 3.5);
318 getMuonHitsPerStationSoftMuonMVA =
319 ibooker.
book1D(
"getMuonHitsPerStationSoftMuonMVA",
"getMuonHitsPerStation", 6, 0, 6);
320 QprodSoftMuonMVA = ibooker.
book1D(
"QprodSoftMuonMVA",
"Qprod", 4, -2, 2);
323 qGlbTrack.push_back(ibooker.
book1D(histname +
"Glb_q",
"q_{GLB}", 5, -2.5, 2.5));
324 qGlbTrack.push_back(ibooker.
book1D(histname +
"Tk_q",
"q_{TKfromGLB}", 5, -2.5, 2.5));
325 qGlbTrack.push_back(ibooker.
book1D(histname +
"Sta_q",
"q_{STAformGLB}", 5, -2.5, 2.5));
326 qGlbTrack.push_back(ibooker.
book1D(
327 histname +
"qComparison",
"comparison between q_{GLB} and q_{TKfromGLB}, q_{STAfromGLB}", 8, 0.5, 8.5));
329 qGlbTrack[3]->setBinLabel(2,
"qGlb!=qSta");
330 qGlbTrack[3]->setBinLabel(3,
"qGlb=qTk");
331 qGlbTrack[3]->setBinLabel(4,
"qGlb!=qTk");
332 qGlbTrack[3]->setBinLabel(5,
"qSta=qTk");
333 qGlbTrack[3]->setBinLabel(6,
"qSta!=qTk");
334 qGlbTrack[3]->setBinLabel(7,
"qGlb!=qSta,qGlb!=Tk");
335 qGlbTrack[3]->setBinLabel(8,
"qGlb=qSta,qGlb=Tk");
336 qTrack = ibooker.
book1D(
"TkMuon_q",
"q_{TK}", 5, -2.5, 2.5);
337 qStaTrack = ibooker.
book1D(
"StaMuon_q",
"q_{STA}", 5, -2.5, 2.5);
341 qOverpResolution.push_back(ibooker.
book1D(
342 "Res_TkGlb_qOverp",
"(q/p)_{TKfromGLB} - (q/p)_{GLB}",
pResBin * binFactor * 2,
pResMin / 10,
pResMax / 10));
344 qOverpResolution.push_back(
346 qOverpResolution[1]->setAxisTitle(
"GeV^{-1}");
347 qOverpResolution.push_back(ibooker.
book1D(
348 "Res_TkSta_qOverp",
"(q/p)_{TKfromGLB} - (q/p)_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
349 qOverpResolution[2]->setAxisTitle(
"GeV^{-1}");
350 qOverpPull = ibooker.
book1D(
"Pull_TkSta_qOverp",
"(q/p)_{TKfromGLB} - (q/p)_{STAfromGLB} / error", 100, -10, 10);
352 oneOverpResolution.push_back(ibooker.
book1D(
353 "Res_TkGlb_oneOverp",
"(1/p)_{TKfromGLB} - (1/p)_{GLB}",
pResBin * binFactor * 2,
pResMin / 10,
pResMax / 10));
355 oneOverpResolution.push_back(
357 oneOverpResolution[1]->setAxisTitle(
"GeV^{-1}");
358 oneOverpResolution.push_back(ibooker.
book1D(
359 "Res_TkSta_oneOverp",
"(q/p)_{TKfromGLB} - (q/p)_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
360 oneOverpResolution[2]->setAxisTitle(
"GeV^{-1}");
361 oneOverpPull = ibooker.
book1D(
"Pull_TkSta_oneOverp",
"(1/p)_{TKfromGLB} - (1/p)_{STAfromGLB} / error", 100, -10, 10);
363 qOverptResolution.push_back(ibooker.
book1D(
"Res_TkGlb_qOverpt",
364 "(q/p_{t})_{TKfromGLB} - (q/p_{t})_{GLB}",
369 qOverptResolution.push_back(ibooker.
book1D(
370 "Res_GlbSta_qOverpt",
"(q/p_{t})_{GLB} - (q/p_{t})_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
371 qOverptResolution[1]->setAxisTitle(
"GeV^{-1}");
372 qOverptResolution.push_back(ibooker.
book1D(
373 "Res_TkSta_qOverpt",
"(q/p_{t})_{TKfromGLB} - (q/p_{t})_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
374 qOverptResolution[2]->setAxisTitle(
"GeV^{-1}");
375 qOverptPull = ibooker.
book1D(
"Pull_TkSta_qOverpt",
"(q/pt)_{TKfromGLB} - (q/pt)_{STAfromGLB} / error", 100, -10, 10);
377 oneOverptResolution.push_back(ibooker.
book1D(
"Res_TkGlb_oneOverpt",
378 "(1/p_{t})_{TKfromGLB} - (1/p_{t})_{GLB}",
383 oneOverptResolution.push_back(ibooker.
book1D(
384 "Res_GlbSta_oneOverpt",
"(1/p_{t})_{GLB} - (1/p_{t})_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
385 oneOverptResolution[1]->setAxisTitle(
"GeV^{-1}");
386 oneOverptResolution.push_back(ibooker.
book1D(
387 "Res_TkSta_oneOverpt",
"(1/p_{t})_{TKfromGLB} - (1/p_{t})_{STAfromGLB}",
pResBin * binFactor,
pResMin,
pResMax));
388 oneOverptResolution[2]->setAxisTitle(
"GeV^{-1}");
389 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsEta_TkGlb_oneOverpt",
390 "(#eta_{TKfromGLB} - #eta_{GLB}) vs (1/p_{t})_{GLB}",
397 oneOverptResolution[3]->setAxisTitle(
"GeV^{-1}", 2);
398 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsEta_GlbSta_oneOverpt",
399 "(#eta_{GLB} - #eta_{STAfromGLB} vs (1/p_{t})_{GLB}",
406 oneOverptResolution[4]->setAxisTitle(
"GeV^{-1}", 2);
407 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsEta_TkSta_oneOverpt",
408 "(#eta_{TKfromGLB} - #eta_{STAfromGLB}) vs (1/p_{t})_{TKfromGLB}",
415 oneOverptResolution[5]->setAxisTitle(
"GeV^{-1}", 2);
416 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPhi_TkGlb_oneOverpt",
417 "(#phi_{TKfromGLB} - #phi_{GLB}) vs (1/p_{t})_{GLB}",
424 oneOverptResolution[6]->setAxisTitle(
"rad", 1);
425 oneOverptResolution[6]->setAxisTitle(
"GeV^{-1}", 2);
426 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPhi_GlbSta_oneOverpt",
427 "(#phi_{GLB} - #phi_{STAfromGLB} vs (1/p_{t})_{GLB}",
434 oneOverptResolution[7]->setAxisTitle(
"rad", 1);
435 oneOverptResolution[7]->setAxisTitle(
"GeV^{-1}", 2);
436 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPhi_TkSta_oneOverpt",
437 "(#phi_{TKfromGLB} - #phi_{STAfromGLB}) vs (1/p_{t})_{TKfromGLB}",
444 oneOverptResolution[8]->setAxisTitle(
"rad", 1);
445 oneOverptResolution[8]->setAxisTitle(
"GeV^{-1}", 2);
446 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPt_TkGlb_oneOverpt",
447 "((1/p_{t})_{TKfromGLB} - (1/p_{t})_{GLB}) vs (1/p_{t})_{GLB}",
454 oneOverptResolution[9]->setAxisTitle(
"GeV^{-1}", 1);
455 oneOverptResolution[9]->setAxisTitle(
"GeV^{-1}", 2);
456 oneOverptResolution.push_back(ibooker.
book2D(
"ResVsPt_GlbSta_oneOverpt",
457 "((1/p_{t})_{GLB} - (1/p_{t})_{STAfromGLB} vs (1/p_{t})_{GLB}",
464 oneOverptResolution[10]->setAxisTitle(
"GeV^{-1}", 1);
465 oneOverptResolution[10]->setAxisTitle(
"GeV^{-1}", 2);
466 oneOverptResolution.push_back(
467 ibooker.
book2D(
"ResVsPt_TkSta_oneOverpt",
468 "((1/p_{t})_{TKfromGLB} - (1/p_{t})_{STAfromGLB}) vs (1/p_{t})_{TKfromGLB}",
475 oneOverptResolution[11]->setAxisTitle(
"GeV^{-1}", 1);
476 oneOverptResolution[11]->setAxisTitle(
"GeV^{-1}", 2);
478 ibooker.
book1D(
"Pull_TkSta_oneOverpt",
"(1/pt)_{TKfromGLB} - (1/pt)_{STAfromGLB} / error", 100, -10, 10);
482 phiVsetaGlbTrack.push_back(ibooker.
book2D(
484 phiVsetaGlbTrack.push_back(ibooker.
book2D(
486 phiVsetaGlbTrack.push_back(ibooker.
book2D(
489 phiVsetaGlbTrack_badlumi.push_back(ibooker.
book2D(
491 phiVsetaGlbTrack_badlumi.push_back(ibooker.
book2D(histname +
"Tk_phiVSeta_badlumi",
492 "#phi vs #eta (TKfromGLB)",
499 phiVsetaGlbTrack_badlumi.push_back(ibooker.
book2D(histname +
"Sta_phiVseta_badlumi",
500 "#phi vs #eta (STAfromGLB)",
510 rhAnalysis.push_back(ibooker.
book1D(
"StaRh_Frac_inGlb",
"recHits_{STAinGLB} / recHits_{GLB}",
rhBin,
rhMin,
rhMax));
511 rhAnalysis.push_back(ibooker.
book1D(
"TkRh_Frac_inGlb",
"recHits_{TKinGLB} / recHits_{GLB}",
rhBin,
rhMin,
rhMax));
512 rhAnalysis.push_back(
513 ibooker.
book1D(
"StaRh_inGlb_Div_RhAssoSta",
"recHits_{STAinGLB} / recHits_{STAfromGLB}",
rhBin,
rhMin,
rhMax));
514 rhAnalysis.push_back(
515 ibooker.
book1D(
"TkRh_inGlb_Div_RhAssoTk",
"recHits_{TKinGLB} / recHits_{TKfromGLB}",
rhBin,
rhMin,
rhMax));
516 rhAnalysis.push_back(ibooker.
book1D(
517 "GlbRh_Div_RhAssoStaTk",
"recHits_{GLB} / (recHits_{TKfromGLB}+recHits_{STAfromGLB})",
rhBin,
rhMin,
rhMax));
518 rhAnalysis.push_back(ibooker.
book1D(
"invalidRh_Frac_inTk",
"Invalid recHits / rechits_{GLB}",
rhBin,
rhMin,
rhMax));
522 muVStkSytemRotation.push_back(ibooker.
book2D(
523 "muVStkSytemRotation_posMu",
"pT_{TK} / pT_{GLB} vs pT_{GLB} for #mu^{+}", 50, 0, 200, 100, 0.8, 1.2));
524 muVStkSytemRotation.push_back(ibooker.
book2D(
525 "muVStkSytemRotation_negMu",
"pT_{TK} / pT_{GLB} vs pT_{GLB} for #mu^{-}", 50, 0, 200, 100, 0.8, 1.2));
529 float p1 = 0,
p2 = 0, p1e = 1, p2e = 1;
533 p1e = t1->etaError();
535 p2e = t2->etaError();
536 }
else if (par ==
"theta") {
538 p1e = t1->thetaError();
540 p2e = t2->thetaError();
541 }
else if (par ==
"phi") {
543 p1e = t1->phiError();
545 p2e = t2->phiError();
546 }
else if (par ==
"qOverp") {
547 p1 = t1->charge() / t1->p();
548 p1e = t1->qoverpError();
549 p2 = t2->charge() / t2->p();
550 p2e = t2->qoverpError();
551 }
else if (par ==
"oneOverp") {
553 p1e = t1->qoverpError();
555 p2e = t2->qoverpError();
556 }
else if (par ==
"qOverpt") {
557 p1 = t1->charge() / t1->pt();
558 p1e = t1->ptError() * p1 *
p1;
559 p2 = t2->charge() / t2->pt();
560 p2e = t2->ptError() *
p2 *
p2;
561 }
else if (par ==
"oneOverpt") {
563 p1e = t1->ptError() * p1 *
p1;
565 p2e = t2->ptError() *
p2 *
p2;
569 if (p1e != 0 || p2e != 0)
570 pull = res /
sqrt(p1e * p1e + p2e * p2e);
578 theService->update(iSetup);
582 iEvent.
getByToken(theMuonCollectionLabel_, muons);
587 iEvent.
getByToken(theBeamSpotLabel_, beamSpot);
589 edm::LogInfo(
"MuonRecoAnalyzer") <<
"Error: Can't get the beamspot" << endl;
594 edm::LogInfo(
"MuonRecoAnalyzer") <<
"Error: Can't get the vertex collection" << endl;
601 bool fillBadLumi =
false;
603 for (
auto const& dcsStatusItr : *dcsStatus) {
654 float res = 0, pull = 0;
671 pvIndex = getPv(iTrack.
index(), &(*vertex));
673 refPoint = vertex->at(pvIndex).position();
678 edm::LogInfo(
"MuonRecoAnalyzer") <<
"ERROR: No beam sport found!" << endl;
682 ptSoftMuonMVA->Fill(iTrack->eta());
683 deltaRSoftMuonMVA->Fill(getDeltaR(*iTrack, *oTrack));
684 gNchi2SoftMuonMVA->Fill(gTrack->normalizedChi2());
686 mNuStationsSoftMuonMVA->Fill(
muon->numberOfMatchedStations());
688 dxyRefSoftMuonMVA->Fill(iTrack->dxy(refPoint));
689 dzRefSoftMuonMVA->Fill(iTrack->dz(refPoint));
693 innerChi2SoftMuonMVA->Fill(iTrack->normalizedChi2());
694 outerChi2SoftMuonMVA->Fill(oTrack->normalizedChi2());
695 iValFracSoftMuonMVA->Fill(iTrack->validFraction());
701 kinkFinderSoftMuonMVA->Fill(muonQuality.
trkKink);
703 glbKinkFinderSoftMuonMVA->Fill(muonQuality.
glbKink);
704 glbKinkFinderLogSoftMuonMVA->Fill(TMath::Log(2 + muonQuality.
glbKink));
705 staRelChi2SoftMuonMVA->Fill(muonQuality.
staRelChi2);
707 trkRelChi2SoftMuonMVA->Fill(muonQuality.
trkRelChi2);
710 timeAtIpInOutSoftMuonMVA->Fill(
muon->time().timeAtIpInOut);
711 timeAtIpInOutErrSoftMuonMVA->Fill(
muon->time().timeAtIpInOutErr);
713 QprodSoftMuonMVA->Fill((iTrack->charge() * oTrack->charge()));
716 if (
muon->isGlobalMuon()) {
717 LogTrace(
metname) <<
"[MuonRecoAnalyzer] The mu is global - filling the histos";
718 if (
muon->isTrackerMuon() &&
muon->isStandAloneMuon())
720 if (!(
muon->isTrackerMuon()) &&
muon->isStandAloneMuon())
722 if (!
muon->isStandAloneMuon())
723 LogTrace(
metname) <<
"[MuonRecoAnalyzer] ERROR: the mu is global but not standalone!";
731 etaGlbTrack[0]->Fill(recoCombinedGlbTrack->eta());
732 etaGlbTrack[1]->Fill(recoTkGlbTrack->eta());
733 etaGlbTrack[2]->Fill(recoStaGlbTrack->eta());
735 phiVsetaGlbTrack[0]->Fill(recoCombinedGlbTrack->eta(), recoCombinedGlbTrack->phi());
736 phiVsetaGlbTrack[1]->Fill(recoTkGlbTrack->eta(), recoTkGlbTrack->phi());
737 phiVsetaGlbTrack[2]->Fill(recoStaGlbTrack->eta(), recoStaGlbTrack->phi());
740 phiVsetaGlbTrack_badlumi[0]->Fill(recoCombinedGlbTrack->eta(), recoCombinedGlbTrack->phi());
741 phiVsetaGlbTrack_badlumi[1]->Fill(recoTkGlbTrack->eta(), recoTkGlbTrack->phi());
742 phiVsetaGlbTrack_badlumi[2]->Fill(recoStaGlbTrack->eta(), recoStaGlbTrack->phi());
745 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"eta", res, pull);
747 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"eta", res, pull);
749 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"eta", res, pull);
752 etaResolution[3]->Fill(recoCombinedGlbTrack->eta(), recoTkGlbTrack->eta() - recoCombinedGlbTrack->eta());
753 etaResolution[4]->Fill(recoCombinedGlbTrack->eta(), -recoStaGlbTrack->eta() + recoCombinedGlbTrack->eta());
754 etaResolution[5]->Fill(recoCombinedGlbTrack->eta(), recoTkGlbTrack->eta() - recoStaGlbTrack->eta());
756 thetaGlbTrack[0]->Fill(recoCombinedGlbTrack->theta());
757 thetaGlbTrack[1]->Fill(recoTkGlbTrack->theta());
758 thetaGlbTrack[2]->Fill(recoStaGlbTrack->theta());
759 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"theta", res, pull);
760 thetaResolution[0]->Fill(res);
761 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"theta", res, pull);
762 thetaResolution[1]->Fill(res);
764 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"theta", res, pull);
765 thetaResolution[2]->Fill(res);
766 thetaPull->Fill(pull);
767 thetaResolution[3]->Fill(recoCombinedGlbTrack->theta(), recoTkGlbTrack->theta() - recoCombinedGlbTrack->theta());
768 thetaResolution[4]->Fill(recoCombinedGlbTrack->theta(),
769 -recoStaGlbTrack->theta() + recoCombinedGlbTrack->theta());
770 thetaResolution[5]->Fill(recoCombinedGlbTrack->theta(), recoTkGlbTrack->theta() - recoStaGlbTrack->theta());
772 phiGlbTrack[0]->Fill(recoCombinedGlbTrack->phi());
773 phiGlbTrack[1]->Fill(recoTkGlbTrack->phi());
774 phiGlbTrack[2]->Fill(recoStaGlbTrack->phi());
775 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"phi", res, pull);
777 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"phi", res, pull);
779 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"phi", res, pull);
782 phiResolution[3]->Fill(recoCombinedGlbTrack->phi(), recoTkGlbTrack->phi() - recoCombinedGlbTrack->phi());
783 phiResolution[4]->Fill(recoCombinedGlbTrack->phi(), -recoStaGlbTrack->phi() + recoCombinedGlbTrack->phi());
784 phiResolution[5]->Fill(recoCombinedGlbTrack->phi(), recoTkGlbTrack->phi() - recoStaGlbTrack->phi());
786 chi2OvDFGlbTrack[0]->Fill(recoCombinedGlbTrack->normalizedChi2());
787 chi2OvDFGlbTrack[1]->Fill(recoTkGlbTrack->normalizedChi2());
788 chi2OvDFGlbTrack[2]->Fill(recoStaGlbTrack->normalizedChi2());
792 probchi2GlbTrack[0]->Fill(TMath::Prob(recoCombinedGlbTrack->chi2(), recoCombinedGlbTrack->ndof()));
793 probchi2GlbTrack[1]->Fill(TMath::Prob(recoTkGlbTrack->chi2(), recoTkGlbTrack->ndof()));
794 probchi2GlbTrack[2]->Fill(TMath::Prob(recoStaGlbTrack->chi2(), recoStaGlbTrack->ndof()));
798 pGlbTrack[0]->Fill(recoCombinedGlbTrack->p());
799 pGlbTrack[1]->Fill(recoTkGlbTrack->p());
800 pGlbTrack[2]->Fill(recoStaGlbTrack->p());
802 ptGlbTrack[0]->Fill(recoCombinedGlbTrack->pt());
803 ptGlbTrack[1]->Fill(recoTkGlbTrack->pt());
804 ptGlbTrack[2]->Fill(recoStaGlbTrack->pt());
806 qGlbTrack[0]->Fill(recoCombinedGlbTrack->charge());
807 qGlbTrack[1]->Fill(recoTkGlbTrack->charge());
808 qGlbTrack[2]->Fill(recoStaGlbTrack->charge());
809 if (recoCombinedGlbTrack->charge() == recoStaGlbTrack->charge())
810 qGlbTrack[3]->
Fill(1);
812 qGlbTrack[3]->Fill(2);
813 if (recoCombinedGlbTrack->charge() == recoTkGlbTrack->charge())
814 qGlbTrack[3]->
Fill(3);
816 qGlbTrack[3]->Fill(4);
817 if (recoStaGlbTrack->charge() == recoTkGlbTrack->charge())
818 qGlbTrack[3]->
Fill(5);
820 qGlbTrack[3]->Fill(6);
821 if (recoCombinedGlbTrack->charge() != recoStaGlbTrack->charge() &&
822 recoCombinedGlbTrack->charge() != recoTkGlbTrack->charge())
823 qGlbTrack[3]->
Fill(7);
824 if (recoCombinedGlbTrack->charge() == recoStaGlbTrack->charge() &&
825 recoCombinedGlbTrack->charge() == recoTkGlbTrack->charge())
826 qGlbTrack[3]->
Fill(8);
828 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"qOverp", res, pull);
829 qOverpResolution[0]->Fill(res);
830 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"qOverp", res, pull);
831 qOverpResolution[1]->Fill(res);
832 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"qOverp", res, pull);
833 qOverpResolution[2]->Fill(res);
834 qOverpPull->Fill(pull);
836 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"oneOverp", res, pull);
837 oneOverpResolution[0]->Fill(res);
838 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"oneOverp", res, pull);
839 oneOverpResolution[1]->Fill(res);
840 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"oneOverp", res, pull);
841 oneOverpResolution[2]->Fill(res);
842 oneOverpPull->Fill(pull);
844 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"qOverpt", res, pull);
845 qOverptResolution[0]->Fill(res);
846 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"qOverpt", res, pull);
847 qOverptResolution[1]->Fill(res);
848 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"qOverpt", res, pull);
849 qOverptResolution[2]->Fill(res);
850 qOverptPull->Fill(pull);
852 GetRes(recoTkGlbTrack, recoCombinedGlbTrack,
"oneOverpt", res, pull);
853 oneOverptResolution[0]->Fill(res);
854 GetRes(recoCombinedGlbTrack, recoStaGlbTrack,
"oneOverpt", res, pull);
855 oneOverptResolution[1]->Fill(res);
856 GetRes(recoTkGlbTrack, recoStaGlbTrack,
"oneOverpt", res, pull);
857 oneOverptResolution[2]->Fill(res);
858 oneOverptPull->Fill(pull);
866 double bestTrackPt = recoBestTrack->pt();
868 double tunePBestTrackPt = recoTunePBestTrack->pt();
870 double tunePBestTrackRes = (bestTrackPt - tunePBestTrackPt) / bestTrackPt;
872 tunePResolution->Fill(tunePBestTrackRes);
874 oneOverptResolution[3]->Fill(recoCombinedGlbTrack->eta(),
875 (1 / recoTkGlbTrack->pt()) - (1 / recoCombinedGlbTrack->pt()));
876 oneOverptResolution[4]->Fill(recoCombinedGlbTrack->eta(),
877 -(1 / recoStaGlbTrack->pt()) + (1 / recoCombinedGlbTrack->pt()));
878 oneOverptResolution[5]->Fill(recoCombinedGlbTrack->eta(),
879 (1 / recoTkGlbTrack->pt()) - (1 / recoStaGlbTrack->pt()));
880 oneOverptResolution[6]->Fill(recoCombinedGlbTrack->phi(),
881 (1 / recoTkGlbTrack->pt()) - (1 / recoCombinedGlbTrack->pt()));
882 oneOverptResolution[7]->Fill(recoCombinedGlbTrack->phi(),
883 -(1 / recoStaGlbTrack->pt()) + (1 / recoCombinedGlbTrack->pt()));
884 oneOverptResolution[8]->Fill(recoCombinedGlbTrack->phi(),
885 (1 / recoTkGlbTrack->pt()) - (1 / recoStaGlbTrack->pt()));
886 oneOverptResolution[9]->Fill(recoCombinedGlbTrack->pt(),
887 (1 / recoTkGlbTrack->pt()) - (1 / recoCombinedGlbTrack->pt()));
888 oneOverptResolution[10]->Fill(recoCombinedGlbTrack->pt(),
889 -(1 / recoStaGlbTrack->pt()) + (1 / recoCombinedGlbTrack->pt()));
890 oneOverptResolution[11]->Fill(recoCombinedGlbTrack->pt(),
891 (1 / recoTkGlbTrack->pt()) - (1 / recoStaGlbTrack->pt()));
895 double rhGlb = recoCombinedGlbTrack->found();
897 double rhGlb_StaProvenance = 0;
899 double rhGlb_TkProvenance = 0;
902 recHit != recoCombinedGlbTrack->recHitsEnd();
904 if ((*recHit)->isValid()) {
905 DetId id = (*recHit)->geographicalId();
907 rhGlb_StaProvenance++;
909 rhGlb_TkProvenance++;
913 double rhStaGlb = recoStaGlbTrack->recHitsSize();
915 double rhTkGlb = recoTkGlbTrack->found();
917 double rhTkGlb_notValid = recoTkGlbTrack->lost();
920 rhAnalysis[0]->Fill(rhGlb_StaProvenance / rhGlb);
921 rhAnalysis[1]->Fill(rhGlb_TkProvenance / rhGlb);
922 rhAnalysis[2]->Fill(rhGlb_StaProvenance / rhStaGlb);
923 rhAnalysis[3]->Fill(rhGlb_TkProvenance / rhTkGlb);
924 rhAnalysis[4]->Fill(rhGlb / (rhStaGlb + rhTkGlb));
925 rhAnalysis[5]->Fill(rhTkGlb_notValid / rhGlb);
928 if (recoCombinedGlbTrack->charge() > 0)
929 muVStkSytemRotation[0]->
Fill(recoCombinedGlbTrack->pt(), recoTkGlbTrack->pt() / recoCombinedGlbTrack->pt());
931 muVStkSytemRotation[1]->Fill(recoCombinedGlbTrack->pt(), recoTkGlbTrack->pt() / recoCombinedGlbTrack->pt());
934 if (
muon->isTrackerMuon() && !(
muon->isGlobalMuon())) {
935 LogTrace(
metname) <<
"[MuonRecoAnalyzer] The mu is tracker only - filling the histos";
936 if (
muon->isStandAloneMuon())
938 if (!(
muon->isStandAloneMuon()))
944 etaTrack->Fill(recoTrack->eta());
945 thetaTrack->Fill(recoTrack->theta());
946 phiTrack->Fill(recoTrack->phi());
947 chi2OvDFTrack->Fill(recoTrack->normalizedChi2());
948 probchi2Track->Fill(TMath::Prob(recoTrack->chi2(), recoTrack->ndof()));
949 pTrack->Fill(recoTrack->p());
950 ptTrack->Fill(recoTrack->pt());
951 qTrack->Fill(recoTrack->charge());
954 if (
muon->isStandAloneMuon() && !(
muon->isGlobalMuon())) {
955 LogTrace(
metname) <<
"[MuonRecoAnalyzer] The mu is STA only - filling the histos";
956 if (!(
muon->isTrackerMuon()))
962 etaStaTrack->Fill(recoStaTrack->eta());
963 thetaStaTrack->Fill(recoStaTrack->theta());
964 phiStaTrack->Fill(recoStaTrack->phi());
965 chi2OvDFStaTrack->Fill(recoStaTrack->normalizedChi2());
966 probchi2StaTrack->Fill(TMath::Prob(recoStaTrack->chi2(), recoStaTrack->ndof()));
967 pStaTrack->Fill(recoStaTrack->p());
968 ptStaTrack->Fill(recoStaTrack->pt());
969 qStaTrack->Fill(recoStaTrack->charge());
972 if (
muon->isCaloMuon() && !(
muon->isGlobalMuon()) && !(
muon->isTrackerMuon()) && !(
muon->isStandAloneMuon()))
980 if (
muon->isStandAloneMuon()) {
981 etaEfficiency[0]->Fill(recoStaGlbTrack->eta());
982 phiEfficiency[0]->Fill(recoStaGlbTrack->phi());
984 if (
muon->isStandAloneMuon() &&
muon->isGlobalMuon()) {
985 etaEfficiency[1]->Fill(recoStaGlbTrack->eta());
986 phiEfficiency[1]->Fill(recoStaGlbTrack->phi());
993 double dphi = acos(
cos(track1.
phi() - track2.
phi()));
994 double deta = track1.
eta() - track2.
eta();
995 return sqrt(dphi * dphi + deta * deta);
1001 for (
unsigned int i = 0;
i < vc->size(); ++
i) {
1005 for (v1TrackIter = v1TrackBegin; v1TrackIter != v1TrackEnd; v1TrackIter++) {
1006 if (static_cast<unsigned int>(tidx) == v1TrackIter->key())
float chi2LocalPosition
chi2 value for the STA-TK matching of local position
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
bool isNonnull() const
Checks for non-null.
float chi2LocalMomentum
chi2 value for the STA-TK matching of local momentum
bool getByToken(EDGetToken token, Handle< PROD > &result) const
const std::string metname
float glbKink
value of the kink algorithm applied to the global track
void setCurrentFolder(std::string const &fullpath)
float glbTrackProbability
the tail probability (-ln(P)) of the global fit
double phi() const
azimuthal angle of momentum vector
std::vector< Vertex > VertexCollection
collection of Vertex objects
float trkKink
value of the kink algorithm applied to the inner track stub
float trkRelChi2
chi2 value for the inner track stub with respect to the global track
int trackerLayersWithMeasurement() const
void analyze(const edm::Event &, const edm::EventSetup &) override
Inizialize parameters for histo binning.
int numberOfValidMuonCSCHits() const
int numberOfValidMuonRPCHits() const
double getDeltaR(reco::Track track1, reco::Track track2)
double eta() const
pseudorapidity of momentum vector
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
Cos< T >::type cos(const T &t)
float globalDeltaEtaPhi
global delta-Eta-Phi of STA-TK matching
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
void GetRes(reco::TrackRef t1, reco::TrackRef t2, std::string par, float &res, float &pull)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
float staRelChi2
chi2 value for the outer track stub with respect to the global track
int getPv(int tidx, const reco::VertexCollection *vc)
XYZPointD XYZPoint
point in space with cartesian internal representation
int numberOfValidTrackerHits() const
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
int numberOfValidMuonDTHits() const
int numberOfValidPixelHits() const
const Point & position() const
position
int numberOfValidMuonHits() const
~MuonRecoAnalyzer() override
Destructor.
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
MuonRecoAnalyzer(const edm::ParameterSet &)
Constructor.
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)