21 void BinLogX(TH1*
h) {
22 TAxis* axis = h->GetXaxis();
23 int bins = axis->GetNbins();
25 float from = axis->GetXmin();
26 float to = axis->GetXmax();
27 float width = (to - from) / bins;
28 std::vector<float> new_bins(bins + 1, 0);
30 for (
int i = 0;
i <= bins;
i++) {
31 new_bins[
i] = TMath::Power(10, from +
i * width);
33 axis->Set(bins, new_bins.data());
36 void BinLogY(TH1* h) {
37 TAxis* axis = h->GetYaxis();
38 int bins = axis->GetNbins();
40 float from = axis->GetXmin();
41 float to = axis->GetXmax();
42 float width = (to - from) / bins;
43 std::vector<float> new_bins(bins + 1, 0);
45 for (
int i = 0;
i <= bins;
i++) {
46 new_bins[
i] = TMath::Power(10, from +
i * width);
48 axis->Set(bins, new_bins.data());
51 template <
typename...
Args>
53 auto h = std::make_unique<TH1F>(std::forward<Args>(
args)...);
56 const auto&
name = h->GetName();
57 return ibook.book1D(name, h.release());
60 template <
typename...
Args>
62 auto h = std::make_unique<TProfile>(std::forward<Args>(
args)...);
65 const auto& name = h->GetName();
66 return ibook.bookProfile(name, h.release());
69 template <
typename...
Args>
71 auto h = std::make_unique<TH2F>(std::forward<Args>(
args)...);
74 const auto& name = h->GetName();
75 return ibook.book2D(name, h.release());
78 template <
typename...
Args>
80 auto h = std::make_unique<TH2F>(std::forward<Args>(
args)...);
83 const auto& name = h->GetName();
84 return ibook.book2D(name, h.release());
88 for (
size_t i = 0;
i < labels.size(); ++
i) {
101 void fillMVAHistos(
const std::vector<dqm::reco::MonitorElement*>& h_mva,
102 const std::vector<dqm::reco::MonitorElement*>& h_mvacut,
103 const std::vector<dqm::reco::MonitorElement*>& h_mva_hp,
104 const std::vector<dqm::reco::MonitorElement*>& h_mvacut_hp,
105 const std::vector<float>& mvas,
106 unsigned int selectsLoose,
107 unsigned int selectsHP) {
110 for (
size_t i = 0;
i < mvas.size(); ++
i) {
111 if (
i <= selectsLoose) {
112 h_mva[
i]->Fill(mvas[
i]);
113 h_mvacut[
i]->Fill(mvas[i]);
115 if (i >= 1 && i <= selectsHP) {
116 h_mva_hp[
i]->Fill(mvas[i]);
117 h_mvacut_hp[
i]->Fill(mvas[i]);
122 void fillMVAHistos(
double xval,
123 const std::vector<dqm::reco::MonitorElement*>& h_mva,
124 const std::vector<dqm::reco::MonitorElement*>& h_mva_hp,
125 const std::vector<float>& mvas,
126 unsigned int selectsLoose,
127 unsigned int selectsHP) {
130 for (
size_t i = 0; i < mvas.size(); ++
i) {
131 if (i <= selectsLoose) {
132 h_mva[
i]->Fill(xval, mvas[i]);
134 if (i >= 1 && i <= selectsHP) {
135 h_mva_hp[
i]->Fill(xval, mvas[i]);
142 : doSeedPlots_(doSeedPlots),
143 doMTDPlots_(pset.getUntrackedParameter<bool>(
"doMTDPlots")),
144 doDzPVcutPlots_(pset.getUntrackedParameter<bool>(
"doDzPVcutPlots")) {
268 auto initTPselector = [&](
auto&
sel,
auto&
name) {
269 sel = std::make_unique<TrackingParticleSelector>(
272 auto initTrackSelector = [&](
auto&
sel,
auto&
name) {
275 auto initGPselector = [&](
auto&
sel,
auto&
name) {
276 sel = std::make_unique<GenParticleCustomSelector>(
301 std::vector<std::pair<SeedingLayerSetId, std::string>> stripPairSets;
304 for (
size_t i = 0; i < layerSets.size(); ++
i) {
305 const auto& layerSet = layerSets[
i];
310 <<
". Please increase the maximum in MTVHistoProducerAlgoForTracker.h";
313 for (
size_t j = 0;
j < layerSet.size(); ++
j) {
318 bool isStripMono = !layerSet[
j].empty() && layerSet[
j][0] ==
'M';
322 if (layerSet.size() == 3 &&
isTrackerStrip(std::get<GeomDetEnumerators::SubDetector>(std::get<0>(setId[0])))) {
324 pairId[0] = setId[0];
325 pairId[1] = setId[1];
326 stripPairSets.emplace_back(pairId, layerSet[0] +
"+" + layerSet[1]);
330 if (!inserted.second)
332 <<
" is specified twice, while the set list should be unique.";
336 for (
const auto& setIdName : stripPairSets) {
347 maxPt = log10(maxPt);
349 minPt = log10(minPt);
352 <<
"minPt = " << minPt <<
" <= 0 out of range while requesting log scale. Using minPt = 0.1.";
357 maxVertpos = std::log10(maxVertpos);
358 if (minVertpos > 0) {
359 minVertpos = std::log10(minVertpos);
362 <<
"minVertpos = " << minVertpos <<
" <= 0 out of range while requesting log scale. Using minVertpos = 0.1.";
384 psetTrack.
addParameter(
"quality", std::vector<std::string>{});
385 psetTrack.
addParameter(
"algorithm", std::vector<std::string>{});
386 psetTrack.
addParameter(
"originalAlgorithm", std::vector<std::string>{});
387 psetTrack.
addParameter(
"algorithmMaskContains", std::vector<std::string>{});
391 return std::make_unique<RecoTrackSelectorBase>(psetTrack);
402 histograms.
h_bunchxSIM = ibook.
book1D(
"bunchxSIM",
"bunch crossing", 21, -15.5, 5.5);
407 bool doResolutionPlots) {
413 histograms.
h_assocpT.push_back(make1DIfLogX(
420 "num_assoc(simToReco)_pTvseta",
421 "N of associated tracks (simToReco) in (pT-eta) please",
431 "N of simulated tracks in (pT-eta) plane",
450 "N of associated tracks (simToReco) vs pixel layer",
458 "N of associated tracks (simToReco) vs 3D layer",
466 ibook.
book1D(
"num_assoc(simToReco)_pu",
"N of associated tracks (simToReco) vs pu",
nintPu,
minPu,
maxPu));
480 ibook.
book1D(
"num_assoc(simToReco)_dz",
"N of associated tracks (simToReco) vs dz",
nintDz,
minDz,
maxDz));
485 "num_assoc(simToReco)_vertpos",
486 "N of associated tracks (simToReco) vs transverse vert position",
493 "N of simulated tracks vs transverse vert position",
499 "num_assoc(simToReco)_zpos",
"N of associated tracks (simToReco) vs z vert position",
nintZpos,
minZpos,
maxZpos));
503 histograms.
h_assocdr.push_back(make1DIfLogX(ibook,
505 "num_assoc(simToReco)_dr",
506 "N of associated tracks (simToReco) vs dR",
511 make1DIfLogX(ibook,
true,
"num_simul_dr",
"N of simulated tracks vs dR",
nintdr, log10(
mindr), log10(
maxdr)));
513 histograms.
h_assocdrj.push_back(make1DIfLogX(ibook,
515 "num_assoc(simToReco)_drj",
516 "N of associated tracks (simToReco) vs dR(TP,jet)",
521 ibook,
true,
"num_simul_drj",
"N of simulated tracks vs dR(TP,jet)",
nintdrj, log10(
mindrj), log10(
maxdrj)));
526 "num_assoc(simToReco)_simpvz",
"N of associated tracks (simToReco) vs. sim PV z",
nintPVz,
minPVz,
maxPVz));
529 "nrecHit vs nsimHit (Sim2RecAssoc)",
541 "Duplicate tracks: originalAlgo vs originalAlgo",
554 "num_assoc(simToReco)_dxypv",
"N of associated tracks (simToReco) vs dxy(PV)",
nintDxy,
minDxy,
maxDxy));
559 ibook.
book1D(
"num_assoc(simToReco)_dzpv",
"N of associated tracks (simToReco) vs dz(PV)",
nintDz,
minDz,
maxDz));
564 "N of associated tracks (simToReco) vs dxy(PV)",
572 "N of associated tracks (simToReco) vs dz(PV)",
581 "num_assoc(simToReco)_dzpvcut",
"N of associated tracks (simToReco) vs dz(PV)",
nintDzpvCum, 0,
maxDzpvCum));
585 "N of simulated tracks (associated to any track) from sim PV",
594 bool doResolutionPlots) {
598 histograms.
h_charge.push_back(ibook.
book1D(
"charge",
"charge", 3, -1.5, 1.5));
602 histograms.
h_nchi2.push_back(ibook.
book1D(
"chi2",
"normalized #chi^{2}", 200, 0, 20));
603 histograms.
h_nchi2_prob.push_back(ibook.
book1D(
"chi2_prob",
"normalized #chi^{2} probability", 100, 0, 1));
610 histograms.
h_algo.push_back(
611 ibook.
book1D(
"h_algo",
"Tracks by algo", reco::TrackBase::algoSize, 0.,
double(reco::TrackBase::algoSize)));
612 for (
size_t ibin = 0; ibin < reco::TrackBase::algoSize - 1; ibin++)
614 histograms.
h_algo.back()->disableAlphanumeric();
623 "num_duplicate_eta",
"N of associated (recoToSim) duplicate tracks vs eta",
nintEta,
minEta,
maxEta));
626 "num_chargemisid_eta",
"N of associated (recoToSim) charge misIDed tracks vs eta",
nintEta,
minEta,
maxEta));
639 histograms.
h_misidpT.push_back(make1DIfLogX(ibook,
641 "num_chargemisid_pT",
642 "N of associated (recoToSim) charge misIDed tracks vs pT",
652 "N of reco track in (pT-eta) plane",
662 "N of selected reco track in (pT-eta) plane",
671 "num_assoc(recoToSim)_pTvseta",
672 "N of associated (recoToSim) tracks in (pT-eta) plane",
681 "num_duplicate_pTvseta",
682 "N of associated (recoToSim) duplicate tracks in (pT-eta) plane",
693 "num_chargemisid_pTvseta",
694 "N of associated (recoToSim) charge misIDed tracks in (pT-eta) plane",
703 "num_pileup_pTvseta",
704 "N of associated (recoToSim) pileup tracks in (pT-eta) plane",
716 "num_duplicate_hit",
"N of associated (recoToSim) duplicate tracks vs hit",
nintHit,
minHit,
maxHit));
719 "num_chargemisid_hit",
"N of associated (recoToSim) charge misIDed tracks vs hit",
nintHit,
minHit,
maxHit));
731 "N of associated (recoToSim) charge misIDed tracks vs layer",
741 "N of associated (recoToSim) tracks vs pixellayer",
746 "N of associated (recoToSim) duplicate tracks vs pixellayer",
752 ibook.
book1D(
"num_chargemisid_pixellayer",
753 "N of associated (recoToSim) charge misIDed tracks vs pixellayer",
758 "N of associated (recoToSim) pileup tracks vs pixellayer",
766 "N of associated (recoToSim) tracks vs 3D layer",
771 "N of associated (recoToSim) duplicate tracks vs 3D layer",
777 "N of associated (recoToSim) charge misIDed tracks vs 3D layer",
787 ibook.
book1D(
"num_assoc(recoToSim)_pu",
"N of associated (recoToSim) tracks vs pu",
nintPu,
minPu,
maxPu));
789 ibook.
book1D(
"num_duplicate_pu",
"N of associated (recoToSim) duplicate tracks vs pu",
nintPu,
minPu,
maxPu));
792 "num_chargemisid_pu",
"N of associated (recoToSim) charge misIDed tracks vs pu",
nintPu,
minPu,
maxPu));
800 "num_duplicate_phi",
"N of associated (recoToSim) duplicate tracks vs phi",
nintPhi,
minPhi,
maxPhi));
803 "num_chargemisid_phi",
"N of associated (recoToSim) charge misIDed tracks vs phi",
nintPhi,
minPhi,
maxPhi));
814 "num_chargemisid_dxy",
"N of associated (recoToSim) charge misIDed tracks vs dxy",
nintDxy,
minDxy,
maxDxy));
820 ibook.
book1D(
"num_assoc(recoToSim)_dz",
"N of associated (recoToSim) tracks vs dz",
nintDz,
minDz,
maxDz));
822 ibook.
book1D(
"num_duplicate_dz",
"N of associated (recoToSim) looper tracks vs dz",
nintDz,
minDz,
maxDz));
825 "num_chargemisid_versus_dz",
"N of associated (recoToSim) charge misIDed tracks vs dz",
nintDz,
minDz,
maxDz));
832 "N of reconstructed tracks vs transverse ref point position",
839 "num_assoc(recoToSim)_vertpos",
840 "N of associated (recoToSim) tracks vs transverse ref point position",
847 "num_duplicate_vertpos",
848 "N of associated (recoToSim) looper tracks vs transverse ref point position",
855 "num_pileup_vertpos",
856 "N of associated (recoToSim) pileup tracks vs transverse ref point position",
862 "num_reco_zpos",
"N of reconstructed tracks vs transverse ref point position",
nintZpos,
minZpos,
maxZpos));
864 "N of associated (recoToSim) tracks vs transverse ref point position",
869 ibook.
book1D(
"num_duplicate_zpos",
870 "N of associated (recoToSim) looper tracks vs transverse ref point position",
875 ibook.
book1D(
"num_pileup_zpos",
876 "N of associated (recoToSim) pileup tracks vs transverse ref point position",
882 make1DIfLogX(ibook,
true,
"num_reco_dr",
"N of reconstructed tracks vs dR",
nintdr, log10(
mindr), log10(
maxdr)));
883 histograms.
h_assoc2dr.push_back(make1DIfLogX(ibook,
885 "num_assoc(recoToSim)_dr",
886 "N of associated tracks (recoToSim) vs dR",
890 histograms.
h_looperdr.push_back(make1DIfLogX(ibook,
893 "N of associated (recoToSim) looper tracks vs dR",
897 histograms.
h_pileupdr.push_back(make1DIfLogX(ibook,
900 "N of associated (recoToSim) pileup tracks vs dR",
905 histograms.
h_recodrj.push_back(make1DIfLogX(
906 ibook,
true,
"num_reco_drj",
"N of reconstructed tracks vs dR(track,jet)",
nintdrj, log10(
mindrj), log10(
maxdrj)));
907 histograms.
h_assoc2drj.push_back(make1DIfLogX(ibook,
909 "num_assoc(recoToSim)_drj",
910 "N of associated tracks (recoToSim) vs dR(track,jet)",
914 histograms.
h_looperdrj.push_back(make1DIfLogX(ibook,
917 "N of associated (recoToSim) looper tracks vs dR(track,jet)",
921 histograms.
h_pileupdrj.push_back(make1DIfLogX(ibook,
924 "N of associated (recoToSim) pileup tracks vs dR(track,jet)",
932 "num_assoc(recoToSim)_simpvz",
"N of associated tracks (recoToSim) vs. sim PV z",
nintPVz,
minPVz,
maxPVz));
934 "num_duplicate_simpvz",
"N of associated (recoToSim) looper tracks vs. sim PV z",
nintPVz,
minPVz,
maxPVz));
936 "num_pileup_simpvz",
"N of associated (recoToSim) pileup tracks vs. sim PV z",
nintPVz,
minPVz,
maxPVz));
941 "N of associated (recoToSim) tracks vs normalized #chi^{2}",
946 "N of associated (recoToSim) looper tracks vs normalized #chi^{2}",
952 ibook.
book1D(
"num_chargemisid_chi2",
953 "N of associated (recoToSim) charge misIDed tracks vs normalized #chi^{2}",
958 "N of associated (recoToSim) pileup tracks vs normalized #chi^{2}",
964 ibook.
book1D(
"num_reco_chi2prob",
"N of reco track vs normalized #chi^{2}", 100, 0., 1.));
966 "num_assoc(recoToSim)_chi2prob",
"N of associated (recoToSim) tracks vs normalized #chi^{2}", 100, 0., 1.));
968 "num_duplicate_chi2prob",
"N of associated (recoToSim) looper tracks vs normalized #chi^{2}", 100, 0., 1.));
971 ibook.
book1D(
"num_chargemisid_chi2prob",
972 "N of associated (recoToSim) charge misIDed tracks vs normalized #chi^{2}",
977 "num_pileup_chi2prob",
"N of associated (recoToSim) pileup tracks vs normalized #chi^{2}", 100, 0., 1.));
982 ibook.
book1D(
"num_reco_seedingLayerSet",
"N of reco track vs. seedingLayerSet",
size, 0,
size));
984 ibook.
book1D(
"num_assoc(recoToSim)_seedingLayerSet",
985 "N of associated track (recoToSim) tracks vs. seedingLayerSet",
990 "num_duplicate_seedingLayerSet",
"N of reco associated (recoToSim) looper vs. seedingLayerSet",
size, 0,
size));
992 "num_pileup_seedingLayerSet",
"N of reco associated (recoToSim) pileup vs. seedingLayerSet",
size, 0,
size));
1002 auto bookResolutionPlots1D = [&](std::vector<dqm::reco::MonitorElement*>& vec,
auto&&...
params) {
1003 vec.push_back(doResolutionPlots ? ibook.
book1D(std::forward<decltype(
params)>(
params)...) :
nullptr);
1005 auto bookResolutionPlots2D = [&](std::vector<dqm::reco::MonitorElement*>& vec,
bool logx,
auto&&...
params) {
1006 vec.push_back(doResolutionPlots ? make2DIfLogX(ibook, logx, std::forward<decltype(
params)>(
params)...) :
nullptr);
1008 auto bookResolutionPlotsProfile2D = [&](std::vector<dqm::reco::MonitorElement*>& vec,
auto&&...
params) {
1012 bookResolutionPlots1D(histograms.
h_eta,
"eta",
"pseudorapidity residue", 1000, -0.1, 0.1);
1013 bookResolutionPlots1D(histograms.
h_pt,
"pullPt",
"pull of p_{t}", 100, -10, 10);
1014 bookResolutionPlots1D(histograms.
h_pullTheta,
"pullTheta",
"pull of #theta parameter", 250, -25, 25);
1015 bookResolutionPlots1D(histograms.
h_pullPhi,
"pullPhi",
"pull of #phi parameter", 250, -25, 25);
1016 bookResolutionPlots1D(histograms.
h_pullDxy,
"pullDxy",
"pull of dxy parameter", 250, -25, 25);
1017 bookResolutionPlots1D(histograms.
h_pullDz,
"pullDz",
"pull of dz parameter", 250, -25, 25);
1018 bookResolutionPlots1D(histograms.
h_pullQoverp,
"pullQoverp",
"pull of qoverp parameter", 250, -25, 25);
1029 histograms.
h_assocFraction.push_back(ibook.
book1D(
"assocFraction",
"fraction of shared hits", 200, 0, 2));
1030 histograms.
h_assocSharedHit.push_back(ibook.
book1D(
"assocSharedHit",
"number of shared hits", 41, -0.5, 40.5));
1037 bookResolutionPlots2D(
1039 bookResolutionPlots2D(
1043 "Number of selected reco tracks vs. number of selected sim tracks;TrackingParticles;Reco tracks",
1057 histograms.
chi2_vs_drj.push_back(makeProfileIfLogX(
1058 ibook,
true,
"chi2mean_vs_drj",
"mean #chi^{2} vs dR(track,jet)",
nintdrj, log10(
mindrj), log10(
maxdrj), 0, 20));
1063 "assoc_chi2prob_vs_eta",
"mean #chi^{2} probability vs #eta",
nintEta,
minEta,
maxEta, 100, 0., 1.,
" "));
1070 "assoc_chi2mean_vs_drj",
1071 "mean #chi^{2} vs dR(track,jet)",
1079 "assoc_chi2prob_vs_drj",
1080 "mean #chi^{2} probability vs dR(track,jet)",
1107 "mean # Layers with measurement vs eta",
1116 "mean # PXL Layers with measurement vs eta",
1125 "mean # STRIP Layers with measurement vs eta",
1134 "mean # STRIP Layers with 1D measurement vs eta",
1143 "mean # STRIP Layers with 2D measurement vs eta",
1189 "p_{t} res vs #phi",
1210 "cotThetares_vs_eta",
1211 "cotThetares_vs_eta",
1221 "cotThetares_vs_pt",
1222 "cotThetares_vs_pt",
1330 "ptmean_vs_eta_phi",
1331 "mean p_{t} vs #eta and #phi",
1342 "phimean_vs_eta_phi",
1343 "mean #phi vs #eta and #phi",
1355 bookResolutionPlots2D(
1357 bookResolutionPlots2D(
1359 bookResolutionPlots2D(
1361 bookResolutionPlots2D(
1363 bookResolutionPlots2D(
1365 bookResolutionPlots2D(
1367 bookResolutionPlots2D(
1369 bookResolutionPlots2D(
1371 bookResolutionPlots2D(
1373 bookResolutionPlots2D(
1379 bookResolutionPlots2D(
1381 bookResolutionPlots2D(
1386 "#theta pull vs #phi",
1396 "nrecHit_vs_nsimHit_rec2sim",
1397 "nrecHit vs nsimHit (Rec2simAssoc)",
1410 "num_assoc(recoToSim)_dxypv",
"N of associated (recoToSim) tracks vs dxy(PV)",
nintDxy,
minDxy,
maxDxy));
1412 "num_duplicate_dxypv",
"N of associated (recoToSim) looper tracks vs dxy(PV)",
nintDxy,
minDxy,
maxDxy));
1415 "N of associated (recoToSim) charge misIDed tracks vs dxy(PV)",
1420 "num_pileup_dxypv",
"N of associated (recoToSim) pileup tracks vs dxy(PV)",
nintDxy,
minDxy,
maxDxy));
1424 ibook.
book1D(
"num_assoc(recoToSim)_dzpv",
"N of associated (recoToSim) tracks vs dz(PV)",
nintDz,
minDz,
maxDz));
1426 ibook.
book1D(
"num_duplicate_dzpv",
"N of associated (recoToSim) looper tracks vs dz(PV)",
nintDz,
minDz,
maxDz));
1429 "N of associated (recoToSim) charge misIDed tracks vs dz(PV)",
1434 ibook.
book1D(
"num_pileup_dzpv",
"N of associated (recoToSim) pileup tracks vs dz(PV)",
nintDz,
minDz,
maxDz));
1439 "N of associated (recoToSim) tracks vs dxy(PV)",
1444 "N of associated (recoToSim) looper tracks vs dxy(PV)",
1450 "N of associated (recoToSim) charge misIDed tracks vs dxy(PV)",
1455 "N of associated (recoToSim) pileup tracks vs dxy(PV)",
1463 "N of associated (recoToSim) tracks vs dz(PV)",
1468 "N of associated (recoToSim) looper tracks vs dz(PV)",
1474 "N of associated (recoToSim) charge misIDed tracks vs dz(PV)",
1479 "N of associated (recoToSim) pileup tracks vs dz(PV)",
1489 "num_assoc(recoToSim)_dzpvcut",
"N of associated (recoToSim) tracks vs dz(PV)",
nintDzpvCum, 0,
maxDzpvCum));
1492 "num_pileup_dzpvcut",
"N of associated (recoToSim) pileup tracks vs dz(PV)",
nintDzpvCum, 0,
maxDzpvCum));
1521 ibook.
book1D(
"seeds_fitFailedFraction",
"Fraction of seeds for which the fit failed", 100, 0, 1));
1550 for (
size_t i = 1; i <= nMVAs; ++
i) {
1568 pfix =
" (not loose-selected)";
1572 "num_reco_mva" + istr +
"_hp",
"N of reco track after vs MVA" + istr + pfix2,
nintMVA,
minMVA,
maxMVA));
1574 ibook.
book1D(
"num_assoc(recoToSim)_mva" + istr +
"_hp",
1575 "N of associated tracks (recoToSim) vs MVA" + istr + pfix2,
1581 "N of reco track vs cut on MVA" + istr + pfix2,
1586 ibook.
book1D(
"num_assoc(simToReco)_mva" + istr +
"cut_hp",
1587 "N of associated tracks (simToReco) vs cut on MVA" + istr + pfix2,
1592 ibook.
book1D(
"num_assoc(recoToSim)_mva" + istr +
"cut_hp",
1593 "N of associated tracks (recoToSim) vs cut on MVA" + istr + pfix2,
1598 ibook.
book1D(
"num_simul2_mva" + istr +
"cut_hp",
1599 "N of simulated tracks (associated to any track) vs cut on MVA" + istr + pfix2,
1605 makeProfileIfLogX(ibook,
1607 (
"mva_assoc(recoToSim)_mva" + istr +
"_pT_hp").c_str(),
1608 (
"MVA" + istr +
" of associated tracks (recoToSim) vs. track p_{T}" + pfix2).c_str(),
1615 makeProfileIfLogX(ibook,
1617 (
"mva_fake_mva" + istr +
"pT_hp").c_str(),
1618 (
"MVA" + istr +
" of non-associated tracks (recoToSim) vs. track p_{T}" + pfix2).c_str(),
1625 ibook.
bookProfile(
"mva_assoc(recoToSim)_mva" + istr +
"_eta_hp",
1626 "MVA" + istr +
" of associated tracks (recoToSim) vs. track #eta" + pfix2,
1634 ibook.
bookProfile(
"mva_fake_mva" + istr +
"eta_hp",
1635 "MVA" + istr +
" of non-associated tracks (recoToSim) vs. track #eta" + pfix2,
1646 histograms.
h_assoc2_mva.back().push_back(ibook.
book1D(
"num_assoc(recoToSim)_mva" + istr,
1647 "N of associated tracks (recoToSim) vs MVA" + istr + pfix,
1653 "num_reco_mva" + istr +
"cut",
"N of reco track vs cut on MVA" + istr + pfix,
nintMVA,
minMVA,
maxMVA));
1655 ibook.
book1D(
"num_assoc(simToReco)_mva" + istr +
"cut",
1656 "N of associated tracks (simToReco) vs cut on MVA" + istr + pfix,
1661 ibook.
book1D(
"num_assoc(recoToSim)_mva" + istr +
"cut",
1662 "N of associated tracks (recoToSim) vs cut on MVA" + istr + pfix,
1667 ibook.
book1D(
"num_simul2_mva" + istr +
"cut",
1668 "N of simulated tracks (associated to any track) vs cut on MVA" + istr + pfix,
1674 makeProfileIfLogX(ibook,
1676 (
"mva_assoc(recoToSim)_mva" + istr +
"_pT").c_str(),
1677 (
"MVA" + istr +
" of associated tracks (recoToSim) vs. track p_{T}" + pfix).c_str(),
1684 makeProfileIfLogX(ibook,
1686 (
"mva_fake_mva" + istr +
"_pT").c_str(),
1687 (
"MVA" + istr +
" of non-associated tracks (recoToSim) vs. track p_{T}" + pfix).c_str(),
1694 ibook.
bookProfile(
"mva_assoc(recoToSim)_mva" + istr +
"_eta",
1695 "MVA" + istr +
" of associated tracks (recoToSim) vs. track #eta" + pfix,
1704 "MVA" + istr +
" of non-associated tracks (recoToSim) vs. track #eta" + pfix,
1739 int nSimPixelLayers,
1740 int nSimStripMonoAndStereoLayers,
1748 const std::vector<float>& mvas,
1749 unsigned int selectsLoose,
1750 unsigned int selectsHP)
const {
1752 const auto eta =
getEta(momentumTP.eta());
1753 const auto phi = momentumTP.phi();
1755 const auto nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
1757 const auto vertexTPwrtBS = vertexTP - bsPosition;
1758 const auto vertxy =
std::sqrt(vertexTPwrtBS.perp2());
1759 const auto vertz = vertexTPwrtBS.z();
1767 for (
size_t i = 0; i < mvas.size(); ++
i) {
1768 if (i <= selectsLoose) {
1772 if (i >= 1 && i <= selectsHP) {
1864 const double dzpvcut =
std::abs(track->
dz(*pvPosition));
1869 if (simPVPosition) {
1870 const auto simpvz = simPVPosition->z();
1896 for (
unsigned int i = 0; i < v_dEdx.size(); i++) {
1914 bool isChargeMatched,
1915 int numAssocRecoTracks,
1918 double sharedFraction,
1921 const std::vector<float>& mvas,
1922 unsigned int selectsLoose,
1923 unsigned int selectsHP)
const {
1932 const auto dxy = track.
dxy(bsPosition);
1933 const auto dz = track.
dz(bsPosition);
1934 const auto dxypv = pvPosition ? track.
dxy(*pvPosition) : 0.0;
1935 const auto dzpv = pvPosition ? track.
dz(*pvPosition) : 0.0;
1941 const auto vertxy =
std::sqrt(refPointWrtBS.perp2());
1942 const auto vertz = refPointWrtBS.z();
1944 const auto chi2prob = TMath::Prob(track.
chi2(), (int)track.
ndof());
1946 const unsigned int seedingLayerSetBin = fillSeedingLayerSets ?
getSeedingLayerSetBin(track, ttopo) : 0;
1947 const auto simpvz = simPVPosition ? simPVPosition->z() : 0.0;
1966 if (fillSeedingLayerSets)
1977 if (simPVPosition) {
1997 if (!mvas.empty()) {
2027 if (dRJet <= 99999) {
2035 if (fillSeedingLayerSets)
2046 if (simPVPosition) {
2055 if (!mvas.empty()) {
2112 if (numAssocRecoTracks > 1) {
2126 if (fillSeedingLayerSets)
2134 if (simPVPosition) {
2144 if (!isSigMatched) {
2158 if (fillSeedingLayerSets)
2169 if (simPVPosition) {
2180 if (!mvas.empty()) {
2247 int Layers1D = LayersAll - Layers2D;
2259 int numRecoTracksSelected,
2260 int numSimTracksSelected)
const {
2262 histograms.
h_fakes[
count]->Fill(numRecoTracks - assTracks);
2264 histograms.
nrec_vs_nsim[
count]->Fill(numSimTracksSelected, numRecoTracksSelected);
2278 double qoverpSim = chargeTP /
sqrt(momentumTP.x() * momentumTP.x() + momentumTP.y() * momentumTP.y() +
2279 momentumTP.z() * momentumTP.z());
2280 double lambdaSim =
M_PI / 2 - momentumTP.theta();
2281 double phiSim = momentumTP.phi();
2287 double qoverpRec(0);
2288 double qoverpErrorRec(0);
2290 double ptErrorRec(0);
2291 double lambdaRec(0);
2292 double lambdaErrorRec(0);
2294 double phiErrorRec(0);
2316 getRecoMomentum(track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec, lambdaRec, lambdaErrorRec, phiRec, phiErrorRec);
2319 double ptError = ptErrorRec;
2320 double ptres = ptRec -
sqrt(momentumTP.perp2());
2321 double etares = track.
eta() - momentumTP.Eta();
2323 double dxyRec = track.
dxy(bsPosition);
2324 double dzRec = track.
dz(bsPosition);
2326 const auto phiRes = phiRec - phiSim;
2327 const auto dxyRes = dxyRec - dxySim;
2328 const auto dzRes = dzRec - dzSim;
2329 const auto cotThetaRes = 1 /
tan(
M_PI * 0.5 - lambdaRec) - 1 /
tan(
M_PI * 0.5 - lambdaSim);
2332 double qoverpPull = (qoverpRec - qoverpSim) / qoverpErrorRec;
2333 double thetaPull = (lambdaRec - lambdaSim) / lambdaErrorRec;
2334 double phiPull = phiRes / phiErrorRec;
2335 double dxyPull = dxyRes / track.
dxyError();
2336 double dzPull = dzRes / track.
dzError();
2339 double contrib_Qoverp = ((qoverpRec - qoverpSim) / qoverpErrorRec) * ((qoverpRec - qoverpSim) / qoverpErrorRec) / 5;
2340 double contrib_dxy = ((dxyRec - dxySim) / track.
dxyError()) * ((dxyRec - dxySim) / track.
dxyError()) / 5;
2341 double contrib_dz = ((dzRec - dzSim) / track.
dzError()) * ((dzRec - dzSim) / track.
dzError()) / 5;
2342 double contrib_theta = ((lambdaRec - lambdaSim) / lambdaErrorRec) * ((lambdaRec - lambdaSim) / lambdaErrorRec) / 5;
2343 double contrib_phi = ((phiRec - phiSim) / phiErrorRec) * ((phiRec - phiSim) / phiErrorRec) / 5;
2349 <<
"ptREC=" << ptRec <<
"\n"
2350 <<
"etaREC=" << track.
eta() <<
"\n"
2351 <<
"qoverpREC=" << qoverpRec <<
"\n"
2352 <<
"dxyREC=" << dxyRec <<
"\n"
2353 <<
"dzREC=" << dzRec <<
"\n"
2354 <<
"thetaREC=" << track.
theta() <<
"\n"
2355 <<
"phiREC=" << phiRec <<
"\n"
2358 <<
"qoverpError()=" << qoverpErrorRec <<
"\n"
2359 <<
"dxyError()=" << track.
dxyError() <<
"\n"
2360 <<
"dzError()=" << track.
dzError() <<
"\n"
2361 <<
"thetaError()=" << lambdaErrorRec <<
"\n"
2362 <<
"phiError()=" << phiErrorRec <<
"\n"
2365 <<
"ptSIM=" <<
sqrt(momentumTP.perp2()) <<
"\n"
2366 <<
"etaSIM=" << momentumTP.Eta() <<
"\n"
2367 <<
"qoverpSIM=" << qoverpSim <<
"\n"
2368 <<
"dxySIM=" << dxySim <<
"\n"
2369 <<
"dzSIM=" << dzSim <<
"\n"
2370 <<
"thetaSIM=" <<
M_PI / 2 - lambdaSim <<
"\n"
2371 <<
"phiSIM=" << phiSim <<
"\n"
2374 <<
"contrib_Qoverp=" << contrib_Qoverp <<
"\n"
2375 <<
"contrib_dxy=" << contrib_dxy <<
"\n"
2376 <<
"contrib_dz=" << contrib_dz <<
"\n"
2377 <<
"contrib_theta=" << contrib_theta <<
"\n"
2378 <<
"contrib_phi=" << contrib_phi <<
"\n"
2381 <<
"chi2PULL=" << contrib_Qoverp + contrib_dxy + contrib_dz + contrib_theta + contrib_phi <<
"\n";
2390 const auto etaSim =
getEta(momentumTP.eta());
2391 const auto ptSim =
getPt(
sqrt(momentumTP.perp2()));
2393 histograms.
h_pt[
count]->Fill(ptres / ptError);
2446 double& qoverpError,
2448 double& lambdaError,
2450 double& phiError)
const {
2466 double& qoverpError,
2468 double& lambdaError,
2470 double& phiError)
const {
2505 LogDebug(
"TrackValidator") <<
"Got seed with " << nhits <<
" hits, but I have a hard-coded maximum of "
2507 <<
", classifying the seed as 'unknown'. Please increase the maximum in "
2508 "MTVHistoProducerAlgoForTracker.h if needed.";
2512 for (
auto const& recHit : seed.
recHits()) {
2513 DetId detId = recHit.geographicalId();
2516 throw cms::Exception(
"LogicError") <<
"Encountered seed hit detId " << detId.
rawId() <<
" not from Tracker, but "
2521 bool subdetStrip =
false;
2563 return found->second;
2575 int numVertices)
const {
2637 int seedsTotal)
const {
std::vector< METype > phires_vs_eta
double qoverp() const
q / p
double phiModeError() const
error on phi from mode
std::vector< METype > cotThetares_vs_eta
const edm::RefToBase< TrajectorySeed > & seedRef() const
std::vector< METype > h_simulpTvseta
std::vector< METype > h_assochit
static constexpr auto TEC
std::vector< METype > h_hits
void fill_trackBased_histos(const Histograms &histograms, int count, int assTracks, int numRecoTracks, int numRecoTracksSelected, int numSimTracksSelected) const
std::vector< METype > nTEChits_vs_eta
std::vector< METype > h_pileupdz
std::vector< METype > nPXFhits_vs_eta
T getUntrackedParameter(std::string const &, T const &) const
void fill_generic_simTrack_histos(const Histograms &histograms, const TrackingParticle::Vector &, const TrackingParticle::Point &vertex, int bx) const
std::vector< METype > h_recopT
const Point & referencePoint() const
Reference point on the track.
std::vector< METype > h_simulzpos
std::vector< METype > h_pileupchi2
std::vector< std::vector< METype > > h_assoc2_mva_vs_eta_hp
std::vector< METype > h_pileupdxypv
std::vector< std::vector< METype > > h_assoc_mvacut
const bool doDzPVcutPlots_
std::vector< METype > h_assoc2pT
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPt
std::vector< METype > nSTRIPhits_vs_eta
std::vector< std::vector< METype > > h_fake_mva_vs_pt_hp
std::vector< METype > ptmean_vs_eta_phi
std::vector< METype > h_pileupdzpvzoomed
std::vector< METype > h_looperdrj
std::vector< METype > h_simuldzpv
std::vector< METype > h_simuldxy
~MTVHistoProducerAlgoForTracker()
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsEta
void fill_seed_histos(const Histograms &histograms, int count, int seedsFitFailed, int seedsTotal) const
MonitorElement * bookProfile2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, double lowZ, double highZ, char const *option="s", FUNC onbooking=NOOP())
std::vector< METype > h_pullDz
std::vector< std::vector< METype > > h_assoc2_mva_vs_pt
std::vector< METype > h_misiddzpvzoomed
std::vector< METype > chi2_vs_pt
bool trackFromSeedFitFailed(const reco::Track &track)
virtual void disableAlphanumeric()
std::vector< METype > assoc_chi2_vs_eta
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXR
std::vector< std::vector< METype > > h_assoc2_mva_hp
std::vector< METype > h_fakes
std::vector< METype > h_assoc2vertpos
std::vector< METype > h_recochi2
std::vector< METype > h_losthits
double lambdaMode() const
Lambda angle from mode.
std::vector< METype > h_simuleta
std::vector< METype > h_recolayer
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
std::vector< METype > h_recodz
void getRecoMomentum(const reco::Track &track, double &pt, double &ptError, double &qoverp, double &qoverpError, double &lambda, double &lambdaError, double &phi, double &phiError) const
retrieval of reconstructed momentum components from reco::Track (== mean values for GSF) ...
std::vector< METype > h_assocdr
std::vector< METype > dzres_vs_pt
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXR
std::map< SeedingLayerSetId, unsigned int > seedingLayerSetToBin
std::vector< METype > h_misiddzpv
std::vector< METype > h_looperdxy
std::vector< METype > h_recodxy
double theta() const
polar angle
double dxyError() const
error on dxy
std::vector< METype > nlosthits_vs_eta
std::vector< METype > h_simulpu
std::vector< std::vector< METype > > h_assoc2_mva_vs_eta
std::vector< METype > h_simuldz
std::vector< METype > dxypull_vs_eta
std::vector< METype > nTIDhits_vs_eta
std::vector< METype > h_simuldxypv
std::vector< METype > ptres_vs_pt
std::vector< METype > h_misidphi
std::vector< METype > nhits_vs_phi
void fill_ResoAndPull_recoTrack_histos(const Histograms &histograms, int count, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, int chargeTP, const reco::Track &track, const math::XYZPoint &bsPosition) const
S make(const edm::ParameterSet &cfg)
std::vector< METype > h_nmisslayers_outer
double getEta(double eta) const
std::vector< METype > h_looperdr
std::vector< METype > h_reco_simpvz
std::vector< std::vector< METype > > h_reco_mva
constexpr uint32_t rawId() const
get the raw id
unsigned int side(const DetId &id) const
std::vector< METype > h_recopixellayer
std::vector< METype > assoc_chi2prob_vs_drj
std::vector< METype > h_pileupchi2prob
std::vector< METype > assoc_chi2_vs_pt
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXZ
std::vector< METype > h_recophi
std::vector< METype > h_algo
std::vector< METype > ptres_vs_phi
std::vector< METype > h_simuldrj
std::vector< METype > h_misidpTvseta
std::vector< std::vector< METype > > h_assoc2_mva_vs_pt_hp
std::string to_string(const V &value)
double phi() const
azimuthal angle of momentum vector
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
std::vector< METype > h_pullTheta
std::vector< METype > h_looperzpos
void fill_generic_recoTrack_histos(const Histograms &histograms, int count, const reco::Track &track, const TrackerTopology &ttopo, const math::XYZPoint &bsPosition, const math::XYZPoint *pvPosition, const TrackingVertex::LorentzVector *simPVPosition, bool isMatched, bool isSigMatched, bool isChargeMatched, int numAssocRecoTracks, int numVertices, int nSimHits, double sharedFraction, double dR, double dR_jet, const std::vector< float > &mvas, unsigned int selectsLoose, unsigned int selectsHP) const
std::vector< std::vector< METype > > h_dedx_estim
std::vector< METype > h_pileuphit
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPt
void bookSimHistos(DQMStore::IBooker &ibook, Histograms &histograms)
std::vector< std::vector< METype > > h_simul2_mvacut_hp
int numberOfValidTimingBTLHits() const
std::vector< METype > h_pileupdrj
std::vector< METype > h_assoceta
std::vector< METype > h_assoc2zpos
void bookSimTrackPVAssociationHistos(DQMStore::IBooker &ibook, Histograms &histograms)
std::vector< METype > h_charge
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPhi
int pixelLayersWithMeasurement() const
const Vector & momentum() const
track momentum vector
std::vector< METype > h_assoc_simpvz
std::vector< METype > nrecHit_vs_nsimHit_sim2rec
unsigned int getSeedingLayerSetBin(const reco::Track &track, const TrackerTopology &ttopo) const
void fill_simTrackBased_histos(const Histograms &histograms, int numSimTracks) const
std::vector< METype > h_looper3Dlayer
std::vector< std::vector< METype > > h_reco_mva_hp
std::vector< METype > h_recodrj
std::vector< METype > h_assoc23Dlayer
int trackerLayersWithMeasurement() const
std::vector< METype > h_assoc2_dzpvcut
std::vector< METype > h_assoc2pixellayer
double cotThetaRes_rangeMax
std::vector< METype > h_assoczpos
std::vector< METype > h_assocphi
std::vector< METype > phipull_vs_phi
std::vector< METype > h_nmisslayers_inner
std::vector< METype > h_looperpu
int numberOfValidStripTOBHits() const
std::vector< std::vector< METype > > h_fake_mva_vs_pt
std::vector< METype > dxyres_vs_eta
std::vector< METype > ptres_vs_eta
std::vector< METype > h_reco2eta
void fill_recoAssociated_simTrack_histos(const Histograms &histograms, int count, const TrackingParticle &tp, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, double dxy, double dz, double dxyPV, double dzPV, int nSimHits, int nSimLayers, int nSimPixelLayers, int nSimStripMonoAndStereoLayers, const reco::Track *track, int numVertices, double dR, double dR_jet, const math::XYZPoint *pvPosition, const TrackingVertex::LorentzVector *simPVPosition, const math::XYZPoint &bsPosition, const std::vector< float > &mvas, unsigned int selectsLoose, unsigned int selectsHP) const
std::vector< METype > h_assoc2dxypvzoomed
std::vector< METype > h_pileup_dzpvcut
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPhi
std::vector< METype > dxyres_vs_phi
std::vector< METype > h_loopereta
double qoverpMode() const
q/p from mode
std::vector< METype > h_pt
std::vector< METype > nSTRIPlayersWith1dMeas_vs_eta
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
std::vector< METype > h_loopervertpos
std::vector< METype > h_assoc2dz
dqm::reco::DQMStore DQMStore
TrackAlgorithm algo() const
std::vector< METype > h_pileupdxypvzoomed
std::vector< METype > h_pileupdzpv
math::XYZPointD Point
point in the space
std::vector< METype > thetapull_vs_pt
math::XYZTLorentzVectorD LorentzVector
std::vector< METype > h_assocvertpos
std::vector< METype > h_assoc2chi2prob
std::vector< METype > h_simulpT
std::tuple< GeomDetEnumerators::SubDetector, TrackerDetSide, int > SeedingLayerId
std::vector< METype > h_assocdxypv
std::vector< METype > h_looperpT
unsigned int numberOfMeasurements() const
std::vector< METype > h_assocpT
std::vector< METype > dxyres_vs_pt
std::vector< METype > h_pileupdxy
double eta() const
pseudorapidity of momentum vector
int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
std::vector< METype > h_misidhit
std::vector< METype > h_assoc2chi2
int numberOfValidPixelBarrelHits() const
std::vector< METype > phires_vs_phi
std::vector< METype > thetapull_vs_phi
std::vector< METype > h_looperlayer
std::vector< METype > phimean_vs_eta_phi
std::vector< METype > phipull_vs_pt
std::tuple< SeedingLayerSetsBuilder::SeedingLayerId, bool > SeedingLayerId
std::vector< METype > assoc_chi2prob_vs_pt
double chi2() const
chi-squared of the fit
std::vector< METype > h_assocpixellayer
std::vector< METype > h_eta
std::vector< METype > h_recopu
std::vector< METype > h_misidchi2
std::vector< METype > nTIBhits_vs_eta
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
auto dz(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
std::vector< METype > h_assocdxypvzoomed
std::vector< std::vector< METype > > h_assoc_mvacut_hp
double ndof() const
number of degrees of freedom of the fit
std::vector< METype > h_tracks
std::vector< METype > h_recodxypvzoomed
std::vector< METype > h_pileup3Dlayer
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsEta
std::vector< METype > h_simuldxypvzoomed
double pt() const
track transverse momentum
std::vector< METype > h_looperdzpv
void addParameter(std::string const &name, T const &value)
std::vector< METype > dzres_vs_eta
std::vector< METype > h_looperphi
std::unique_ptr< TrackingParticleSelector > generalTpSelector
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
std::vector< METype > h_assoc2pTvseta
std::vector< METype > nBTLhits_vs_eta
double phiError() const
error on phi
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
std::vector< METype > assoc_chi2prob_vs_eta
void fill_simAssociated_recoTrack_histos(const Histograms &histograms, int count, const reco::Track &track) const
std::vector< METype > chi2_vs_nhits
std::vector< METype > h_recodr
std::vector< METype > chi2_vs_eta
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPt
Tan< T >::type tan(const T &t)
void bookRecoPVAssociationHistos(DQMStore::IBooker &ibook, Histograms &histograms)
Abs< T >::type abs(const T &t)
std::vector< METype > h_pileup_seedingLayerSet
int numberOfValidStripTIDHits() const
std::vector< METype > h_pileupphi
double lambda() const
Lambda angle.
std::vector< METype > h_assocdrj
std::vector< METype > h_recopTvseta
std::vector< METype > ptpull_vs_phi
bool isMatched(TrackingRecHit const &hit)
std::vector< METype > chi2_vs_drj
std::vector< METype > h_pileuppixellayer
std::vector< METype > h_pullPhi
unsigned short numberOfValidHits() const
number of valid hits found
std::vector< METype > h_assocpu
int numberOfValidStripTECHits() const
std::vector< METype > h_assocSharedHit
std::vector< METype > h_recochi2prob
std::vector< METype > h_looperpTvseta
std::vector< METype > h_reco2pTvseta
int numberOfValidTimingETLHits() const
static constexpr auto TOB
std::vector< METype > h_recodzpvzoomed
std::vector< METype > h_assocdz
std::vector< METype > h_duplicates_oriAlgo_vs_oriAlgo
std::vector< METype > h_recovertpos
void eraseSimpleParameter(std::string const &name)
std::vector< METype > phipull_vs_eta
void copyForModify(ParameterSet const &other)
std::vector< METype > h_assoc2_seedingLayerSet
std::vector< METype > h_nchi2_prob
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)
std::vector< METype > nLayersWithMeas_vs_eta
std::vector< METype > h_assoc_dzpvcut
std::vector< METype > h_recoeta
std::vector< METype > phires_vs_pt
std::vector< METype > h_misiddz
std::vector< METype > h_assocpTvseta
bool isTrackerStrip(GeomDetEnumerators::SubDetector m)
double cotThetaRes_rangeMin
std::vector< METype > h_simulpixellayer
std::vector< METype > h_simulphi
std::vector< METype > h_assoc2_simpvz
double qoverpError() const
error on signed transverse curvature
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
void fill_dedx_recoTrack_histos(const Histograms &histograms, int count, const edm::RefToBase< reco::Track > &trackref, const std::vector< const edm::ValueMap< reco::DeDxData > * > &v_dEdx) const
double dzError() const
error on dz
std::vector< METype > h_assocdzpvzoomed
std::vector< METype > h_reco_dzpvcut
static SeedingLayerId nameToEnumId(const std::string &name)
std::vector< METype > h_misid3Dlayer
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, const bool doSeedPlots)
RecHitRange recHits() const
std::array< SeedingLayerId, 4 > SeedingLayerSetId
TrackAlgorithm originalAlgo() const
std::vector< METype > h_looperchi2prob
std::vector< METype > h_pileupeta
std::vector< METype > h_misidpixellayer
std::vector< METype > h_reco2pu
std::vector< METype > h_assoc2hit
std::vector< METype > dxypull_vs_pt
std::vector< METype > h_assoc2pu
std::vector< std::vector< METype > > h_fake_mva_vs_eta_hp
std::vector< METype > h_pileupvertpos
void fill_duplicate_histos(const Histograms &histograms, int count, const reco::Track &track1, const reco::Track &track2) const
static constexpr auto TIB
std::vector< METype > h_assoc2drj
std::vector< METype > cotThetares_vs_pt
std::vector< METype > h_pileuppT
std::vector< METype > h_simuldr
std::vector< METype > h_assoc2dxy
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPhi
std::vector< std::vector< METype > > h_fake_mva_vs_eta
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
std::vector< METype > h_simul_dzpvcut
bool isSingle(TrackingRecHit const &hit)
std::vector< METype > h_pullDxy
XYZPointD XYZPoint
point in space with cartesian internal representation
double qoverpModeError() const
error on signed transverse curvature from mode
bool isNull() const
Checks for null.
std::vector< METype > h_simulhit
std::vector< METype > h_assoc2eta
std::string algoName() const
std::vector< METype > h_looperdz
int stripLayersWithMeasurement() const
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
std::vector< std::vector< METype > > h_assoc2_mva
T getParameter(std::string const &) const
std::vector< METype > h_simul2_dzpvcut
std::vector< METype > h_assoc3Dlayer
std::vector< METype > h_pileupzpos
std::vector< METype > h_misidpu
std::vector< METype > h_reco2pT
std::vector< METype > h_pileuppu
int numberOfValidStripTIBHits() const
std::vector< METype > h_assoc2dzpvzoomed
static const std::string algoNames[]
std::vector< METype > h_looper_seedingLayerSet
std::vector< METype > h_recodxypv
int numberOfLostHits(HitCategory category) const
std::vector< METype > h_assocdxy
unsigned int layer(const DetId &id) const
int numberOfValidPixelEndcapHits() const
std::vector< METype > h_pileupdr
std::vector< METype > h_nchi2
std::vector< METype > h_looperdzpvzoomed
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXZ
std::vector< METype > h_recodzpv
double lambdaError() const
error on lambda
std::vector< METype > h_misiddxypvzoomed
double getPt(double pt) const
std::vector< METype > nMTDhits_vs_eta
std::vector< std::string > seedingLayerSetNames
std::vector< METype > h_assoc2phi
void bookSimTrackHistos(DQMStore::IBooker &ibook, Histograms &histograms, bool doResolutionPlots)
std::vector< METype > h_seedsFitFailedFraction
std::vector< METype > h_assoc2dxypv
unsigned int nHits() const
std::vector< METype > h_pileuplayer
std::vector< METype > h_looper_simpvz
auto dxy(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
void bookRecodEdxHistos(DQMStore::IBooker &ibook, Histograms &histograms)
std::vector< METype > h_looperchi2
unsigned short found() const
Number of valid hits on track.
std::vector< METype > nPXBhits_vs_eta
std::vector< METype > h_misiddxypv
std::vector< METype > nTOBhits_vs_eta
std::vector< METype > assoc_chi2_vs_drj
std::vector< METype > h_misidpT
std::vector< METype > h_seedsFitFailed
std::vector< METype > h_looperdxypvzoomed
std::vector< METype > h_pileup_simpvz
std::vector< METype > h_simulvertpos
double phiMode() const
azimuthal angle of momentum vector from mode
std::vector< METype > h_reco_seedingLayerSet
std::vector< METype > nSTRIPlayersWithMeas_vs_eta
std::vector< METype > h_reco3Dlayer
Monte Carlo truth information used for tracking validation.
std::vector< METype > h_misideta
std::vector< METype > ptpull_vs_eta
int charge() const
track electric charge
std::vector< METype > dzpull_vs_pt
std::vector< std::vector< METype > > h_dedx_nom
std::vector< std::vector< METype > > h_reco_mvacut
double lambdaModeError() const
error on lambda from mode
std::unique_ptr< GenParticleCustomSelector > generalGpSelector
std::vector< METype > h_simul_simpvz
std::vector< std::vector< METype > > h_dedx_sat
void setBinLabels(std::vector< TH2F > &depth)
std::vector< METype > nPXLlayersWithMeas_vs_eta
std::vector< METype > h_assocdzpv
Log< level::Warning, false > LogWarning
math::XYZVectorD Vector
point in the space
std::vector< METype > h_simullayer
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
std::vector< METype > h_looperhit
void bookRecoHistos(DQMStore::IBooker &ibook, Histograms &histograms, bool doResolutionPlots)
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsEta
std::vector< METype > nrecHit_vs_nsimHit_rec2sim
std::vector< METype > nETLhits_vs_eta
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
std::vector< METype > h_misiddxy
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
static std::unique_ptr< RecoTrackSelectorBase > makeRecoTrackSelectorFromTPSelectorParameters(const edm::ParameterSet &pset)
std::vector< METype > thetapull_vs_eta
std::vector< METype > ptpull_vs_pt
std::vector< METype > h_assoclayer
static constexpr auto TID
std::vector< METype > h_pullQoverp
std::vector< METype > h_misidchi2prob
std::vector< METype > h_assoc2dr
double ptMode() const
track transverse momentum from mode
int numberOfSaturatedMeasurements() const
std::vector< METype > h_assoc2dzpv
std::vector< METype > h_assoc2layer
std::vector< std::vector< METype > > h_assoc2_mvacut
std::vector< METype > h_misidlayer
std::vector< METype > h_assocFraction
void bookSeedHistos(DQMStore::IBooker &ibook, Histograms &histograms)
std::vector< METype > h_recozpos
std::vector< METype > h_looperpixellayer
std::vector< METype > chi2_vs_phi
tuple size
Write out results.
std::vector< METype > h_recohit
void bookMVAHistos(DQMStore::IBooker &ibook, Histograms &histograms, size_t nMVAs)
std::vector< std::vector< METype > > h_simul2_mvacut
std::vector< METype > h_simul3Dlayer
std::vector< METype > h_simuldzpvzoomed
std::vector< std::vector< METype > > h_reco_mvacut_hp
std::vector< std::vector< METype > > h_assoc2_mvacut_hp
std::vector< METype > etares_vs_eta
std::vector< METype > h_pileuppTvseta
std::vector< METype > nrec_vs_nsim
std::vector< METype > h_looperdxypv
std::vector< METype > dzres_vs_phi
static std::vector< std::vector< std::string > > layerNamesInSets(const std::vector< std::string > &namesPSet)
std::vector< METype > nhits_vs_eta
std::vector< METype > dzpull_vs_eta
constexpr Detector det() const
get the detector field from this detid
std::vector< METype > nSTRIPlayersWith2dMeas_vs_eta
std::vector< METype > nPXLhits_vs_eta
int sharedHits(reco::GsfTrackRef const &, reco::GsfTrackRef const &)