20 void BinLogX(TH1*
h) {
21 TAxis* axis = h->GetXaxis();
22 int bins = axis->GetNbins();
24 float from = axis->GetXmin();
25 float to = axis->GetXmax();
26 float width = (to - from) / bins;
27 std::vector<float> new_bins(bins + 1, 0);
29 for (
int i = 0;
i <=
bins;
i++) {
30 new_bins[
i] = TMath::Power(10, from +
i * width);
32 axis->Set(bins, new_bins.data());
35 void BinLogY(TH1* h) {
36 TAxis* axis = h->GetYaxis();
37 int bins = axis->GetNbins();
39 float from = axis->GetXmin();
40 float to = axis->GetXmax();
41 float width = (to - from) / bins;
42 std::vector<float> new_bins(bins + 1, 0);
44 for (
int i = 0;
i <=
bins;
i++) {
45 new_bins[
i] = TMath::Power(10, from +
i * width);
47 axis->Set(bins, new_bins.data());
50 template <
typename...
Args>
52 auto h = std::make_unique<TH1F>(std::forward<Args>(
args)...);
55 const auto&
name = h->GetName();
56 return ibook.book1D(name, h.release());
59 template <
typename...
Args>
61 auto h = std::make_unique<TProfile>(std::forward<Args>(
args)...);
64 const auto& name = h->GetName();
65 return ibook.bookProfile(name, h.release());
68 template <
typename...
Args>
70 auto h = std::make_unique<TH2F>(std::forward<Args>(
args)...);
73 const auto& name = h->GetName();
74 return ibook.book2D(name, h.release());
77 template <
typename...
Args>
79 auto h = std::make_unique<TH2F>(std::forward<Args>(
args)...);
82 const auto& name = h->GetName();
83 return ibook.book2D(name, h.release());
87 for (
size_t i = 0;
i < labels.size(); ++
i) {
100 void fillMVAHistos(
const std::vector<dqm::reco::MonitorElement*>& h_mva,
101 const std::vector<dqm::reco::MonitorElement*>& h_mvacut,
102 const std::vector<dqm::reco::MonitorElement*>& h_mva_hp,
103 const std::vector<dqm::reco::MonitorElement*>& h_mvacut_hp,
104 const std::vector<float>& mvas,
105 unsigned int selectsLoose,
106 unsigned int selectsHP) {
109 for (
size_t i = 0;
i < mvas.size(); ++
i) {
110 if (
i <= selectsLoose) {
111 h_mva[
i]->Fill(mvas[
i]);
112 h_mvacut[
i]->Fill(mvas[i]);
114 if (i >= 1 && i <= selectsHP) {
115 h_mva_hp[
i]->Fill(mvas[i]);
116 h_mvacut_hp[
i]->Fill(mvas[i]);
121 void fillMVAHistos(
double xval,
122 const std::vector<dqm::reco::MonitorElement*>& h_mva,
123 const std::vector<dqm::reco::MonitorElement*>& h_mva_hp,
124 const std::vector<float>& mvas,
125 unsigned int selectsLoose,
126 unsigned int selectsHP) {
129 for (
size_t i = 0; i < mvas.size(); ++
i) {
130 if (i <= selectsLoose) {
131 h_mva[
i]->Fill(xval, mvas[i]);
133 if (i >= 1 && i <= selectsHP) {
134 h_mva_hp[
i]->Fill(xval, mvas[i]);
141 : doSeedPlots_(doSeedPlots), doMTDPlots_(pset.getUntrackedParameter<
bool>(
"doMTDPlots")) {
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);
401 histograms.
h_bunchxSIM = ibook.
book1D(
"bunchxSIM",
"bunch crossing", 21, -15.5, 5.5);
406 bool doResolutionPlots) {
412 histograms.
h_assocpT.push_back(make1DIfLogX(
419 "num_assoc(simToReco)_pTvseta",
420 "N of associated tracks (simToReco) in (pT-eta) please",
430 "N of simulated tracks in (pT-eta) plane",
449 "N of associated tracks (simToReco) vs pixel layer",
457 "N of associated tracks (simToReco) vs 3D layer",
465 ibook.
book1D(
"num_assoc(simToReco)_pu",
"N of associated tracks (simToReco) vs pu",
nintPu,
minPu,
maxPu));
479 ibook.
book1D(
"num_assoc(simToReco)_dz",
"N of associated tracks (simToReco) vs dz",
nintDz,
minDz,
maxDz));
484 "num_assoc(simToReco)_vertpos",
485 "N of associated tracks (simToReco) vs transverse vert position",
492 "N of simulated tracks vs transverse vert position",
498 "num_assoc(simToReco)_zpos",
"N of associated tracks (simToReco) vs z vert position",
nintZpos,
minZpos,
maxZpos));
502 histograms.
h_assocdr.push_back(make1DIfLogX(ibook,
504 "num_assoc(simToReco)_dr",
505 "N of associated tracks (simToReco) vs dR",
510 make1DIfLogX(ibook,
true,
"num_simul_dr",
"N of simulated tracks vs dR",
nintdr, log10(
mindr), log10(
maxdr)));
512 histograms.
h_assocdrj.push_back(make1DIfLogX(ibook,
514 "num_assoc(simToReco)_drj",
515 "N of associated tracks (simToReco) vs dR(TP,jet)",
520 ibook,
true,
"num_simul_drj",
"N of simulated tracks vs dR(TP,jet)",
nintdrj, log10(
mindrj), log10(
maxdrj)));
525 "num_assoc(simToReco)_simpvz",
"N of associated tracks (simToReco) vs. sim PV z",
nintPVz,
minPVz,
maxPVz));
528 "nrecHit vs nsimHit (Sim2RecAssoc)",
540 "Duplicate tracks: originalAlgo vs originalAlgo",
553 "num_assoc(simToReco)_dxypv",
"N of associated tracks (simToReco) vs dxy(PV)",
nintDxy,
minDxy,
maxDxy));
558 ibook.
book1D(
"num_assoc(simToReco)_dzpv",
"N of associated tracks (simToReco) vs dz(PV)",
nintDz,
minDz,
maxDz));
563 "N of associated tracks (simToReco) vs dxy(PV)",
571 "N of associated tracks (simToReco) vs dz(PV)",
579 "num_assoc(simToReco)_dzpvcut",
"N of associated tracks (simToReco) vs dz(PV)",
nintDzpvCum, 0,
maxDzpvCum));
583 "num_simul2_dzpvcut",
"N of simulated tracks (associated to any track) from sim PV",
nintDzpvCum, 0,
maxDzpvCum));
586 "#sump_{T} of associated tracks (simToReco) vs dz(PV)",
593 ibook.
book1D(
"num_simul2_dzpvcut_pt",
594 "#sump_{T} of simulated tracks (associated to any track) from sim PV",
603 "N of associated tracks (simToReco) vs dz(PV)/dzError",
610 ibook.
book1D(
"num_simul2_dzpvsigcut",
611 "N of simulated tracks (associated to any track) from sim PV/dzError",
617 ibook.
book1D(
"num_assoc(simToReco)_dzpvsigcut_pt",
618 "#sump_{T} of associated tracks (simToReco) vs dz(PV)/dzError",
625 ibook.
book1D(
"num_simul2_dzpvsigcut_pt",
626 "#sump_{T} of simulated tracks (associated to any track) from sim PV/dzError",
637 bool doResolutionPlots) {
641 histograms.
h_charge.push_back(ibook.
book1D(
"charge",
"charge", 3, -1.5, 1.5));
645 histograms.
h_nchi2.push_back(ibook.
book1D(
"chi2",
"normalized #chi^{2}", 200, 0, 20));
646 histograms.
h_nchi2_prob.push_back(ibook.
book1D(
"chi2_prob",
"normalized #chi^{2} probability", 100, 0, 1));
653 histograms.
h_algo.push_back(
654 ibook.
book1D(
"h_algo",
"Tracks by algo", reco::TrackBase::algoSize, 0.,
double(reco::TrackBase::algoSize)));
655 for (
size_t ibin = 0; ibin < reco::TrackBase::algoSize - 1; ibin++)
657 histograms.
h_algo.back()->disableAlphanumeric();
666 "num_duplicate_eta",
"N of associated (recoToSim) duplicate tracks vs eta",
nintEta,
minEta,
maxEta));
669 "num_chargemisid_eta",
"N of associated (recoToSim) charge misIDed tracks vs eta",
nintEta,
minEta,
maxEta));
682 histograms.
h_misidpT.push_back(make1DIfLogX(ibook,
684 "num_chargemisid_pT",
685 "N of associated (recoToSim) charge misIDed tracks vs pT",
695 "N of reco track in (pT-eta) plane",
705 "N of selected reco track in (pT-eta) plane",
714 "num_assoc(recoToSim)_pTvseta",
715 "N of associated (recoToSim) tracks in (pT-eta) plane",
724 "num_duplicate_pTvseta",
725 "N of associated (recoToSim) duplicate tracks in (pT-eta) plane",
736 "num_chargemisid_pTvseta",
737 "N of associated (recoToSim) charge misIDed tracks in (pT-eta) plane",
746 "num_pileup_pTvseta",
747 "N of associated (recoToSim) pileup tracks in (pT-eta) plane",
759 "num_duplicate_hit",
"N of associated (recoToSim) duplicate tracks vs hit",
nintHit,
minHit,
maxHit));
762 "num_chargemisid_hit",
"N of associated (recoToSim) charge misIDed tracks vs hit",
nintHit,
minHit,
maxHit));
774 "N of associated (recoToSim) charge misIDed tracks vs layer",
784 "N of associated (recoToSim) tracks vs pixellayer",
789 "N of associated (recoToSim) duplicate tracks vs pixellayer",
795 ibook.
book1D(
"num_chargemisid_pixellayer",
796 "N of associated (recoToSim) charge misIDed tracks vs pixellayer",
801 "N of associated (recoToSim) pileup tracks vs pixellayer",
809 "N of associated (recoToSim) tracks vs 3D layer",
814 "N of associated (recoToSim) duplicate tracks vs 3D layer",
820 "N of associated (recoToSim) charge misIDed tracks vs 3D layer",
830 ibook.
book1D(
"num_assoc(recoToSim)_pu",
"N of associated (recoToSim) tracks vs pu",
nintPu,
minPu,
maxPu));
832 ibook.
book1D(
"num_duplicate_pu",
"N of associated (recoToSim) duplicate tracks vs pu",
nintPu,
minPu,
maxPu));
835 "num_chargemisid_pu",
"N of associated (recoToSim) charge misIDed tracks vs pu",
nintPu,
minPu,
maxPu));
843 "num_duplicate_phi",
"N of associated (recoToSim) duplicate tracks vs phi",
nintPhi,
minPhi,
maxPhi));
846 "num_chargemisid_phi",
"N of associated (recoToSim) charge misIDed tracks vs phi",
nintPhi,
minPhi,
maxPhi));
857 "num_chargemisid_dxy",
"N of associated (recoToSim) charge misIDed tracks vs dxy",
nintDxy,
minDxy,
maxDxy));
863 ibook.
book1D(
"num_assoc(recoToSim)_dz",
"N of associated (recoToSim) tracks vs dz",
nintDz,
minDz,
maxDz));
865 ibook.
book1D(
"num_duplicate_dz",
"N of associated (recoToSim) looper tracks vs dz",
nintDz,
minDz,
maxDz));
868 "num_chargemisid_versus_dz",
"N of associated (recoToSim) charge misIDed tracks vs dz",
nintDz,
minDz,
maxDz));
875 "N of reconstructed tracks vs transverse ref point position",
882 "num_assoc(recoToSim)_vertpos",
883 "N of associated (recoToSim) tracks vs transverse ref point position",
890 "num_duplicate_vertpos",
891 "N of associated (recoToSim) looper tracks vs transverse ref point position",
898 "num_pileup_vertpos",
899 "N of associated (recoToSim) pileup tracks vs transverse ref point position",
905 "num_reco_zpos",
"N of reconstructed tracks vs transverse ref point position",
nintZpos,
minZpos,
maxZpos));
907 "N of associated (recoToSim) tracks vs transverse ref point position",
912 ibook.
book1D(
"num_duplicate_zpos",
913 "N of associated (recoToSim) looper tracks vs transverse ref point position",
918 ibook.
book1D(
"num_pileup_zpos",
919 "N of associated (recoToSim) pileup tracks vs transverse ref point position",
925 make1DIfLogX(ibook,
true,
"num_reco_dr",
"N of reconstructed tracks vs dR",
nintdr, log10(
mindr), log10(
maxdr)));
926 histograms.
h_assoc2dr.push_back(make1DIfLogX(ibook,
928 "num_assoc(recoToSim)_dr",
929 "N of associated tracks (recoToSim) vs dR",
933 histograms.
h_looperdr.push_back(make1DIfLogX(ibook,
936 "N of associated (recoToSim) looper tracks vs dR",
940 histograms.
h_pileupdr.push_back(make1DIfLogX(ibook,
943 "N of associated (recoToSim) pileup tracks vs dR",
948 histograms.
h_recodrj.push_back(make1DIfLogX(
949 ibook,
true,
"num_reco_drj",
"N of reconstructed tracks vs dR(track,jet)",
nintdrj, log10(
mindrj), log10(
maxdrj)));
950 histograms.
h_assoc2drj.push_back(make1DIfLogX(ibook,
952 "num_assoc(recoToSim)_drj",
953 "N of associated tracks (recoToSim) vs dR(track,jet)",
957 histograms.
h_looperdrj.push_back(make1DIfLogX(ibook,
960 "N of associated (recoToSim) looper tracks vs dR(track,jet)",
964 histograms.
h_pileupdrj.push_back(make1DIfLogX(ibook,
967 "N of associated (recoToSim) pileup tracks vs dR(track,jet)",
975 "num_assoc(recoToSim)_simpvz",
"N of associated tracks (recoToSim) vs. sim PV z",
nintPVz,
minPVz,
maxPVz));
977 "num_duplicate_simpvz",
"N of associated (recoToSim) looper tracks vs. sim PV z",
nintPVz,
minPVz,
maxPVz));
979 "num_pileup_simpvz",
"N of associated (recoToSim) pileup tracks vs. sim PV z",
nintPVz,
minPVz,
maxPVz));
984 "N of associated (recoToSim) tracks vs normalized #chi^{2}",
989 "N of associated (recoToSim) looper tracks vs normalized #chi^{2}",
995 ibook.
book1D(
"num_chargemisid_chi2",
996 "N of associated (recoToSim) charge misIDed tracks vs normalized #chi^{2}",
1001 "N of associated (recoToSim) pileup tracks vs normalized #chi^{2}",
1007 ibook.
book1D(
"num_reco_chi2prob",
"N of reco track vs normalized #chi^{2}", 100, 0., 1.));
1009 "num_assoc(recoToSim)_chi2prob",
"N of associated (recoToSim) tracks vs normalized #chi^{2}", 100, 0., 1.));
1011 "num_duplicate_chi2prob",
"N of associated (recoToSim) looper tracks vs normalized #chi^{2}", 100, 0., 1.));
1014 ibook.
book1D(
"num_chargemisid_chi2prob",
1015 "N of associated (recoToSim) charge misIDed tracks vs normalized #chi^{2}",
1020 "num_pileup_chi2prob",
"N of associated (recoToSim) pileup tracks vs normalized #chi^{2}", 100, 0., 1.));
1025 ibook.
book1D(
"num_reco_seedingLayerSet",
"N of reco track vs. seedingLayerSet",
size, 0,
size));
1027 ibook.
book1D(
"num_assoc(recoToSim)_seedingLayerSet",
1028 "N of associated track (recoToSim) tracks vs. seedingLayerSet",
1033 "num_duplicate_seedingLayerSet",
"N of reco associated (recoToSim) looper vs. seedingLayerSet",
size, 0,
size));
1035 "num_pileup_seedingLayerSet",
"N of reco associated (recoToSim) pileup vs. seedingLayerSet",
size, 0,
size));
1045 auto bookResolutionPlots1D = [&](std::vector<dqm::reco::MonitorElement*>& vec,
auto&&...
params) {
1046 vec.push_back(doResolutionPlots ? ibook.
book1D(std::forward<decltype(
params)>(
params)...) :
nullptr);
1048 auto bookResolutionPlots2D = [&](std::vector<dqm::reco::MonitorElement*>& vec,
bool logx,
auto&&...
params) {
1049 vec.push_back(doResolutionPlots ? make2DIfLogX(ibook, logx, std::forward<decltype(
params)>(
params)...) :
nullptr);
1051 auto bookResolutionPlotsProfile2D = [&](std::vector<dqm::reco::MonitorElement*>& vec,
auto&&...
params) {
1055 bookResolutionPlots1D(histograms.
h_eta,
"eta",
"pseudorapidity residue", 1000, -0.1, 0.1);
1056 bookResolutionPlots1D(histograms.
h_pt,
"pullPt",
"pull of p_{t}", 100, -10, 10);
1057 bookResolutionPlots1D(histograms.
h_pullTheta,
"pullTheta",
"pull of #theta parameter", 250, -25, 25);
1058 bookResolutionPlots1D(histograms.
h_pullPhi,
"pullPhi",
"pull of #phi parameter", 250, -25, 25);
1059 bookResolutionPlots1D(histograms.
h_pullDxy,
"pullDxy",
"pull of dxy parameter", 250, -25, 25);
1060 bookResolutionPlots1D(histograms.
h_pullDz,
"pullDz",
"pull of dz parameter", 250, -25, 25);
1061 bookResolutionPlots1D(histograms.
h_pullQoverp,
"pullQoverp",
"pull of qoverp parameter", 250, -25, 25);
1072 histograms.
h_assocFraction.push_back(ibook.
book1D(
"assocFraction",
"fraction of shared hits", 200, 0, 2));
1073 histograms.
h_assocSharedHit.push_back(ibook.
book1D(
"assocSharedHit",
"number of shared hits", 41, -0.5, 40.5));
1080 bookResolutionPlots2D(
1082 bookResolutionPlots2D(
1086 "Number of selected reco tracks vs. number of selected sim tracks;TrackingParticles;Reco tracks",
1104 "assoc_chi2prob_vs_eta",
"mean #chi^{2} probability vs #eta",
nintEta,
minEta,
maxEta, 100, 0., 1.,
" "));
1130 "mean # Layers with measurement vs eta",
1139 "mean # PXL Layers with measurement vs eta",
1148 "mean # STRIP Layers with measurement vs eta",
1157 "mean # STRIP Layers with 1D measurement vs eta",
1166 "mean # STRIP Layers with 2D measurement vs eta",
1212 "p_{t} res vs #phi",
1233 "cotThetares_vs_eta",
1234 "cotThetares_vs_eta",
1244 "cotThetares_vs_pt",
1245 "cotThetares_vs_pt",
1331 "ptmean_vs_eta_phi",
1332 "mean p_{t} vs #eta and #phi",
1343 "phimean_vs_eta_phi",
1344 "mean #phi vs #eta and #phi",
1356 bookResolutionPlots2D(
1358 bookResolutionPlots2D(
1360 bookResolutionPlots2D(
1362 bookResolutionPlots2D(
1364 bookResolutionPlots2D(
1370 bookResolutionPlots2D(
1372 bookResolutionPlots2D(
1377 "#theta pull vs #phi",
1387 "nrecHit_vs_nsimHit_rec2sim",
1388 "nrecHit vs nsimHit (Rec2simAssoc)",
1401 "num_assoc(recoToSim)_dxypv",
"N of associated (recoToSim) tracks vs dxy(PV)",
nintDxy,
minDxy,
maxDxy));
1403 "num_duplicate_dxypv",
"N of associated (recoToSim) looper tracks vs dxy(PV)",
nintDxy,
minDxy,
maxDxy));
1406 "N of associated (recoToSim) charge misIDed tracks vs dxy(PV)",
1411 "num_pileup_dxypv",
"N of associated (recoToSim) pileup tracks vs dxy(PV)",
nintDxy,
minDxy,
maxDxy));
1415 ibook.
book1D(
"num_assoc(recoToSim)_dzpv",
"N of associated (recoToSim) tracks vs dz(PV)",
nintDz,
minDz,
maxDz));
1417 ibook.
book1D(
"num_duplicate_dzpv",
"N of associated (recoToSim) looper tracks vs dz(PV)",
nintDz,
minDz,
maxDz));
1420 "N of associated (recoToSim) charge misIDed tracks vs dz(PV)",
1425 ibook.
book1D(
"num_pileup_dzpv",
"N of associated (recoToSim) pileup tracks vs dz(PV)",
nintDz,
minDz,
maxDz));
1430 "N of associated (recoToSim) tracks vs dxy(PV)",
1435 "N of associated (recoToSim) looper tracks vs dxy(PV)",
1441 "N of associated (recoToSim) charge misIDed tracks vs dxy(PV)",
1446 "N of associated (recoToSim) pileup tracks vs dxy(PV)",
1454 "N of associated (recoToSim) tracks vs dz(PV)",
1459 "N of associated (recoToSim) looper tracks vs dz(PV)",
1465 "N of associated (recoToSim) charge misIDed tracks vs dz(PV)",
1470 "N of associated (recoToSim) pileup tracks vs dz(PV)",
1478 "num_assoc(recoToSim)_dzpvcut",
"N of associated (recoToSim) tracks vs dz(PV)",
nintDzpvCum, 0,
maxDzpvCum));
1480 "num_pileup_dzpvcut",
"N of associated (recoToSim) pileup tracks vs dz(PV)",
nintDzpvCum, 0,
maxDzpvCum));
1485 "#sump_{T} of associated (recoToSim) tracks vs dz(PV)",
1490 "#sump_{T} of associated (recoToSim) pileup tracks vs dz(PV)",
1501 "N of associated (recoToSim) tracks vs dz(PV)/dzError",
1506 "N of associated (recoToSim) pileup tracks vs dz(PV)/dzError",
1514 ibook.
book1D(
"num_assoc(recoToSim)_dzpvsigcut_pt",
1515 "#sump_{T} of associated (recoToSim) tracks vs dz(PV)/dzError",
1520 ibook.
book1D(
"num_pileup_dzpvsigcut_pt",
1521 "#sump_{T} of associated (recoToSim) pileup tracks vs dz(PV)/dzError",
1555 ibook.
book1D(
"seeds_fitFailedFraction",
"Fraction of seeds for which the fit failed", 100, 0, 1));
1584 for (
size_t i = 1; i <= nMVAs; ++
i) {
1585 auto istr = std::to_string(i);
1602 pfix =
" (not loose-selected)";
1606 "num_reco_mva" + istr +
"_hp",
"N of reco track after vs MVA" + istr + pfix2,
nintMVA,
minMVA,
maxMVA));
1608 ibook.
book1D(
"num_assoc(recoToSim)_mva" + istr +
"_hp",
1609 "N of associated tracks (recoToSim) vs MVA" + istr + pfix2,
1615 "N of reco track vs cut on MVA" + istr + pfix2,
1620 ibook.
book1D(
"num_assoc(simToReco)_mva" + istr +
"cut_hp",
1621 "N of associated tracks (simToReco) vs cut on MVA" + istr + pfix2,
1626 ibook.
book1D(
"num_assoc(recoToSim)_mva" + istr +
"cut_hp",
1627 "N of associated tracks (recoToSim) vs cut on MVA" + istr + pfix2,
1632 ibook.
book1D(
"num_simul2_mva" + istr +
"cut_hp",
1633 "N of simulated tracks (associated to any track) vs cut on MVA" + istr + pfix2,
1639 makeProfileIfLogX(ibook,
1641 (
"mva_assoc(recoToSim)_mva" + istr +
"_pT_hp").c_str(),
1642 (
"MVA" + istr +
" of associated tracks (recoToSim) vs. track p_{T}" + pfix2).c_str(),
1649 makeProfileIfLogX(ibook,
1651 (
"mva_fake_mva" + istr +
"pT_hp").c_str(),
1652 (
"MVA" + istr +
" of non-associated tracks (recoToSim) vs. track p_{T}" + pfix2).c_str(),
1659 ibook.
bookProfile(
"mva_assoc(recoToSim)_mva" + istr +
"_eta_hp",
1660 "MVA" + istr +
" of associated tracks (recoToSim) vs. track #eta" + pfix2,
1668 ibook.
bookProfile(
"mva_fake_mva" + istr +
"eta_hp",
1669 "MVA" + istr +
" of non-associated tracks (recoToSim) vs. track #eta" + pfix2,
1680 histograms.
h_assoc2_mva.back().push_back(ibook.
book1D(
"num_assoc(recoToSim)_mva" + istr,
1681 "N of associated tracks (recoToSim) vs MVA" + istr + pfix,
1687 "num_reco_mva" + istr +
"cut",
"N of reco track vs cut on MVA" + istr + pfix,
nintMVA,
minMVA,
maxMVA));
1689 ibook.
book1D(
"num_assoc(simToReco)_mva" + istr +
"cut",
1690 "N of associated tracks (simToReco) vs cut on MVA" + istr + pfix,
1695 ibook.
book1D(
"num_assoc(recoToSim)_mva" + istr +
"cut",
1696 "N of associated tracks (recoToSim) vs cut on MVA" + istr + pfix,
1701 ibook.
book1D(
"num_simul2_mva" + istr +
"cut",
1702 "N of simulated tracks (associated to any track) vs cut on MVA" + istr + pfix,
1708 makeProfileIfLogX(ibook,
1710 (
"mva_assoc(recoToSim)_mva" + istr +
"_pT").c_str(),
1711 (
"MVA" + istr +
" of associated tracks (recoToSim) vs. track p_{T}" + pfix).c_str(),
1718 makeProfileIfLogX(ibook,
1720 (
"mva_fake_mva" + istr +
"_pT").c_str(),
1721 (
"MVA" + istr +
" of non-associated tracks (recoToSim) vs. track p_{T}" + pfix).c_str(),
1728 ibook.
bookProfile(
"mva_assoc(recoToSim)_mva" + istr +
"_eta",
1729 "MVA" + istr +
" of associated tracks (recoToSim) vs. track #eta" + pfix,
1738 "MVA" + istr +
" of non-associated tracks (recoToSim) vs. track #eta" + pfix,
1772 int nSimPixelLayers,
1773 int nSimStripMonoAndStereoLayers,
1781 const std::vector<float>& mvas,
1782 unsigned int selectsLoose,
1783 unsigned int selectsHP)
const {
1785 const auto eta =
getEta(momentumTP.eta());
1786 const auto phi = momentumTP.phi();
1788 const auto nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
1790 const auto vertexTPwrtBS = vertexTP - bsPosition;
1791 const auto vertxy =
std::sqrt(vertexTPwrtBS.perp2());
1792 const auto vertz = vertexTPwrtBS.z();
1800 for (
size_t i = 0; i < mvas.size(); ++
i) {
1801 if (i <= selectsLoose) {
1805 if (i >= 1 && i <= selectsHP) {
1900 const double dzpvcut =
std::abs(track->
dz(*pvPosition));
1901 const double dzpvsigcut = dzpvcut / track->
dzError();
1908 if (simPVPosition) {
1909 const auto simpvz = simPVPosition->z();
1935 for (
unsigned int i = 0; i < v_dEdx.size(); i++) {
1953 bool isChargeMatched,
1954 int numAssocRecoTracks,
1957 double sharedFraction,
1960 const std::vector<float>& mvas,
1961 unsigned int selectsLoose,
1962 unsigned int selectsHP)
const {
1971 const auto dxy = track.
dxy(bsPosition);
1972 const auto dz = track.
dz(bsPosition);
1973 const auto dxypv = pvPosition ? track.
dxy(*pvPosition) : 0.0;
1974 const auto dzpv = pvPosition ? track.
dz(*pvPosition) : 0.0;
1975 const auto dzpvsig = pvPosition ? dzpv / track.
dzError() : 0.0;
1981 const auto vertxy =
std::sqrt(refPointWrtBS.perp2());
1982 const auto vertz = refPointWrtBS.z();
1984 const auto chi2prob = TMath::Prob(track.
chi2(), (
int)track.
ndof());
1986 const unsigned int seedingLayerSetBin = fillSeedingLayerSets ?
getSeedingLayerSetBin(track, ttopo) : 0;
1987 const auto simpvz = simPVPosition ? simPVPosition->z() : 0.0;
2004 if (fillSeedingLayerSets)
2017 if (simPVPosition) {
2064 if (fillSeedingLayerSets)
2077 if (simPVPosition) {
2133 if (numAssocRecoTracks > 1) {
2147 if (fillSeedingLayerSets)
2155 if (simPVPosition) {
2165 if (!isSigMatched) {
2179 if (fillSeedingLayerSets)
2192 if (simPVPosition) {
2260 int Layers1D = LayersAll - Layers2D;
2272 int numRecoTracksSelected,
2273 int numSimTracksSelected)
const {
2275 histograms.
h_fakes[
count]->Fill(numRecoTracks - assTracks);
2277 histograms.
nrec_vs_nsim[
count]->Fill(numSimTracksSelected, numRecoTracksSelected);
2291 double qoverpSim = chargeTP /
sqrt(momentumTP.x() * momentumTP.x() + momentumTP.y() * momentumTP.y() +
2292 momentumTP.z() * momentumTP.z());
2293 double lambdaSim =
M_PI / 2 - momentumTP.theta();
2294 double phiSim = momentumTP.phi();
2300 double qoverpRec(0);
2301 double qoverpErrorRec(0);
2303 double ptErrorRec(0);
2304 double lambdaRec(0);
2305 double lambdaErrorRec(0);
2307 double phiErrorRec(0);
2329 getRecoMomentum(track, ptRec, ptErrorRec, qoverpRec, qoverpErrorRec, lambdaRec, lambdaErrorRec, phiRec, phiErrorRec);
2332 double ptError = ptErrorRec;
2333 double ptres = ptRec -
sqrt(momentumTP.perp2());
2334 double etares = track.
eta() - momentumTP.Eta();
2336 double dxyRec = track.
dxy(bsPosition);
2337 double dzRec = track.
dz(bsPosition);
2339 const auto phiRes = phiRec - phiSim;
2340 const auto dxyRes = dxyRec - dxySim;
2341 const auto dzRes = dzRec - dzSim;
2342 const auto cotThetaRes = 1 /
tan(
M_PI * 0.5 - lambdaRec) - 1 /
tan(
M_PI * 0.5 - lambdaSim);
2345 double qoverpPull = (qoverpRec - qoverpSim) / qoverpErrorRec;
2346 double thetaPull = (lambdaRec - lambdaSim) / lambdaErrorRec;
2347 double phiPull = phiRes / phiErrorRec;
2348 double dxyPull = dxyRes / track.
dxyError();
2349 double dzPull = dzRes / track.
dzError();
2352 double contrib_Qoverp = ((qoverpRec - qoverpSim) / qoverpErrorRec) * ((qoverpRec - qoverpSim) / qoverpErrorRec) / 5;
2353 double contrib_dxy = ((dxyRec - dxySim) / track.
dxyError()) * ((dxyRec - dxySim) / track.
dxyError()) / 5;
2354 double contrib_dz = ((dzRec - dzSim) / track.
dzError()) * ((dzRec - dzSim) / track.
dzError()) / 5;
2355 double contrib_theta = ((lambdaRec - lambdaSim) / lambdaErrorRec) * ((lambdaRec - lambdaSim) / lambdaErrorRec) / 5;
2356 double contrib_phi = ((phiRec - phiSim) / phiErrorRec) * ((phiRec - phiSim) / phiErrorRec) / 5;
2362 <<
"ptREC=" << ptRec <<
"\n" 2363 <<
"etaREC=" << track.
eta() <<
"\n" 2364 <<
"qoverpREC=" << qoverpRec <<
"\n" 2365 <<
"dxyREC=" << dxyRec <<
"\n" 2366 <<
"dzREC=" << dzRec <<
"\n" 2367 <<
"thetaREC=" << track.
theta() <<
"\n" 2368 <<
"phiREC=" << phiRec <<
"\n" 2371 <<
"qoverpError()=" << qoverpErrorRec <<
"\n" 2372 <<
"dxyError()=" << track.
dxyError() <<
"\n" 2373 <<
"dzError()=" << track.
dzError() <<
"\n" 2374 <<
"thetaError()=" << lambdaErrorRec <<
"\n" 2375 <<
"phiError()=" << phiErrorRec <<
"\n" 2378 <<
"ptSIM=" <<
sqrt(momentumTP.perp2()) <<
"\n" 2379 <<
"etaSIM=" << momentumTP.Eta() <<
"\n" 2380 <<
"qoverpSIM=" << qoverpSim <<
"\n" 2381 <<
"dxySIM=" << dxySim <<
"\n" 2382 <<
"dzSIM=" << dzSim <<
"\n" 2383 <<
"thetaSIM=" <<
M_PI / 2 - lambdaSim <<
"\n" 2384 <<
"phiSIM=" << phiSim <<
"\n" 2387 <<
"contrib_Qoverp=" << contrib_Qoverp <<
"\n" 2388 <<
"contrib_dxy=" << contrib_dxy <<
"\n" 2389 <<
"contrib_dz=" << contrib_dz <<
"\n" 2390 <<
"contrib_theta=" << contrib_theta <<
"\n" 2391 <<
"contrib_phi=" << contrib_phi <<
"\n" 2394 <<
"chi2PULL=" << contrib_Qoverp + contrib_dxy + contrib_dz + contrib_theta + contrib_phi <<
"\n";
2403 const auto etaSim =
getEta(momentumTP.eta());
2404 const auto ptSim =
getPt(
sqrt(momentumTP.perp2()));
2406 histograms.
h_pt[
count]->Fill(ptres / ptError);
2449 double& qoverpError,
2451 double& lambdaError,
2469 double& qoverpError,
2471 double& lambdaError,
2505 const auto hitRange = seed.
recHits();
2509 LogDebug(
"TrackValidator") <<
"Got seed with " << nhits <<
" hits, but I have a hard-coded maximum of " 2511 <<
", classifying the seed as 'unknown'. Please increase the maximum in " 2512 "MTVHistoProducerAlgoForTracker.h if needed.";
2516 for (
auto iHit = hitRange.first; iHit != hitRange.second; ++iHit, ++i) {
2517 DetId detId = iHit->geographicalId();
2520 throw cms::Exception(
"LogicError") <<
"Encountered seed hit detId " << detId.
rawId() <<
" not from Tracker, but " 2525 bool subdetStrip =
false;
2566 return found->second;
2578 int numVertices)
const {
2640 int seedsTotal)
const {
std::vector< METype > phires_vs_eta
double qoverp() const
q / p
std::vector< METype > h_reco_dzpvsigcut
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
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
T getParameter(std::string const &) const
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
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
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
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_assoc2_dzpvsigcut
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
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
std::vector< METype > h_pileup_dzpvcut_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_pileup_dzpvsigcut_pt
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::vector< METype > h_simul_dzpvcut_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< METype > h_simul_dzpvsigcut_pt
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 > 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
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_dzpvsigcut
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
dqm::dqmstoreimpl::DQMStore DQMStore
std::vector< METype > h_assoc2dxypvzoomed
std::vector< METype > h_pileup_dzpvcut
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPhi
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
std::vector< METype > h_reco_dzpvsigcut_pt
TrackAlgorithm algo() const
std::vector< METype > h_pileupdxypvzoomed
std::vector< METype > h_pileupdzpv
math::XYZPointD Point
point in the space
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::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
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_simul2_dzpvsigcut_pt
std::vector< METype > h_looperphi
std::unique_ptr< TrackingParticleSelector > generalTpSelector
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, char const *option="s")
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
std::vector< METype > h_assoc2_dzpvcut_pt
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 > 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
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")
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_assoc2_dzpvsigcut_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
std::vector< METype > h_simul2_dzpvcut_pt
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)
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 > 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
std::vector< METype > h_assoc_dzpvcut_pt
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
std::vector< std::vector< METype > > h_assoc2_mva
std::vector< METype > h_simul_dzpvsigcut
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_reco_dzpvcut_pt
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
std::vector< METype > h_simul2_dzpvsigcut
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
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
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 > 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< std::vector< METype > > h_dedx_nom
std::vector< std::vector< METype > > h_reco_mvacut
std::vector< METype > h_assoc_dzpvsigcut_pt
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
math::XYZVectorD Vector
point in the space
std::vector< METype > h_simullayer
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
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 > 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
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_pileup_dzpvsigcut
std::vector< METype > h_looperdxypv
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