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();
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();
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) {
91 h->disableAlphanumeric();
98 h->disableAlphanumeric();
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]);
143 doMTDPlots_(
pset.getUntrackedParameter<
bool>(
"doMTDPlots")),
144 doDzPVcutPlots_(
pset.getUntrackedParameter<
bool>(
"doDzPVcutPlots")) {
152 minPt =
pset.getParameter<
double>(
"minPt");
153 maxPt =
pset.getParameter<
double>(
"maxPt");
156 useLogPt =
pset.getUntrackedParameter<
bool>(
"useLogPt",
false);
164 minPu =
pset.getParameter<
double>(
"minPu");
165 maxPu =
pset.getParameter<
double>(
"maxPu");
184 minDz =
pset.getParameter<
double>(
"minDz");
185 maxDz =
pset.getParameter<
double>(
"maxDz");
202 mindr =
pset.getParameter<
double>(
"mindr");
203 maxdr =
pset.getParameter<
double>(
"maxdr");
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) {
352 <<
"minPt = " <<
minPt <<
" <= 0 out of range while requesting log scale. Using minPt = 0.1.";
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) {
418 histograms.h_assocpTvseta.push_back(make2DIfLogY(ibook,
420 "num_assoc(simToReco)_pTvseta",
421 "N of associated tracks (simToReco) in (pT-eta) please",
428 histograms.h_simulpTvseta.push_back(make2DIfLogY(ibook,
431 "N of simulated tracks in (pT-eta) plane",
449 histograms.h_assocpixellayer.push_back(ibook.
book1D(
"num_assoc(simToReco)_pixellayer",
450 "N of associated tracks (simToReco) vs pixel layer",
457 histograms.h_assoc3Dlayer.push_back(ibook.
book1D(
"num_assoc(simToReco)_3Dlayer",
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));
483 histograms.h_assocvertpos.push_back(make1DIfLogX(ibook,
485 "num_assoc(simToReco)_vertpos",
486 "N of associated tracks (simToReco) vs transverse vert position",
490 histograms.h_simulvertpos.push_back(make1DIfLogX(ibook,
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));
528 histograms.nrecHit_vs_nsimHit_sim2rec.push_back(doResolutionPlots ? ibook.
book2D(
"nrecHit_vs_nsimHit_sim2rec",
529 "nrecHit vs nsimHit (Sim2RecAssoc)",
540 histograms.h_duplicates_oriAlgo_vs_oriAlgo.push_back(ibook.
book2D(
"duplicates_oriAlgo_vs_oriAlgo",
541 "Duplicate tracks: originalAlgo vs originalAlgo",
548 setBinLabelsAlgo(
histograms.h_duplicates_oriAlgo_vs_oriAlgo.back(), 1);
549 setBinLabelsAlgo(
histograms.h_duplicates_oriAlgo_vs_oriAlgo.back(), 2);
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));
563 histograms.h_assocdxypvzoomed.push_back(ibook.
book1D(
"num_assoc(simToReco)_dxypv_zoomed",
564 "N of associated tracks (simToReco) vs dxy(PV)",
571 histograms.h_assocdzpvzoomed.push_back(ibook.
book1D(
"num_assoc(simToReco)_dzpv_zoomed",
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));
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",
649 histograms.h_recopTvseta.push_back(make2DIfLogY(ibook,
652 "N of reco track in (pT-eta) plane",
659 histograms.h_reco2pTvseta.push_back(make2DIfLogY(ibook,
662 "N of selected reco track in (pT-eta) plane",
669 histograms.h_assoc2pTvseta.push_back(make2DIfLogY(ibook,
671 "num_assoc(recoToSim)_pTvseta",
672 "N of associated (recoToSim) tracks in (pT-eta) plane",
679 histograms.h_looperpTvseta.push_back(make2DIfLogY(ibook,
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",
701 histograms.h_pileuppTvseta.push_back(make2DIfLogY(ibook,
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",
740 histograms.h_assoc2pixellayer.push_back(ibook.
book1D(
"num_assoc(recoToSim)_pixellayer",
741 "N of associated (recoToSim) tracks vs pixellayer",
745 histograms.h_looperpixellayer.push_back(ibook.
book1D(
"num_duplicate_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",
757 histograms.h_pileuppixellayer.push_back(ibook.
book1D(
"num_pileup_pixellayer",
758 "N of associated (recoToSim) pileup tracks vs pixellayer",
765 histograms.h_assoc23Dlayer.push_back(ibook.
book1D(
"num_assoc(recoToSim)_3Dlayer",
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));
829 histograms.h_recovertpos.push_back(make1DIfLogX(ibook,
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",
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));
983 histograms.h_assoc2_seedingLayerSet.push_back(
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.,
" "));
1064 histograms.assoc_chi2_vs_pt.push_back(makeProfileIfLogX(
1066 histograms.assoc_chi2prob_vs_pt.push_back(makeProfileIfLogX(
1068 histograms.assoc_chi2_vs_drj.push_back(makeProfileIfLogX(ibook,
1070 "assoc_chi2mean_vs_drj",
1071 "mean #chi^{2} vs dR(track,jet)",
1077 histograms.assoc_chi2prob_vs_drj.push_back(makeProfileIfLogX(ibook,
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",
1133 histograms.nSTRIPlayersWith1dMeas_vs_eta.push_back(ibook.
bookProfile(
"STRIPlayersWith1dMeas_vs_eta",
1134 "mean # STRIP Layers with 1D measurement vs eta",
1142 histograms.nSTRIPlayersWith2dMeas_vs_eta.push_back(ibook.
bookProfile(
"STRIPlayersWith2dMeas_vs_eta",
1143 "mean # STRIP Layers with 2D measurement vs eta",
1175 bookResolutionPlots2D(
histograms.ptres_vs_eta,
1186 bookResolutionPlots2D(
histograms.ptres_vs_phi,
1189 "p_{t} res vs #phi",
1197 bookResolutionPlots2D(
histograms.ptres_vs_pt,
1208 bookResolutionPlots2D(
histograms.cotThetares_vs_eta,
1210 "cotThetares_vs_eta",
1211 "cotThetares_vs_eta",
1219 bookResolutionPlots2D(
histograms.cotThetares_vs_pt,
1221 "cotThetares_vs_pt",
1222 "cotThetares_vs_pt",
1230 bookResolutionPlots2D(
histograms.phires_vs_eta,
1241 bookResolutionPlots2D(
histograms.phires_vs_pt,
1252 bookResolutionPlots2D(
histograms.phires_vs_phi,
1263 bookResolutionPlots2D(
histograms.dxyres_vs_eta,
1274 bookResolutionPlots2D(
histograms.dxyres_vs_pt,
1285 bookResolutionPlots2D(
histograms.dxyres_vs_phi,
1296 bookResolutionPlots2D(
histograms.dzres_vs_eta,
1307 bookResolutionPlots2D(
histograms.dzres_vs_pt,
1318 bookResolutionPlots2D(
histograms.dzres_vs_phi,
1329 bookResolutionPlotsProfile2D(
histograms.ptmean_vs_eta_phi,
1330 "ptmean_vs_eta_phi",
1331 "mean p_{t} vs #eta and #phi",
1341 bookResolutionPlotsProfile2D(
histograms.phimean_vs_eta_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(
1383 bookResolutionPlots2D(
histograms.thetapull_vs_phi,
1386 "#theta pull vs #phi",
1394 bookResolutionPlots2D(
histograms.nrecHit_vs_nsimHit_rec2sim,
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));
1428 histograms.h_misiddzpv.push_back(ibook.
book1D(
"num_chargemisid_versus_dzpv",
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));
1438 histograms.h_assoc2dxypvzoomed.push_back(ibook.
book1D(
"num_assoc(recoToSim)_dxypv_zoomed",
1439 "N of associated (recoToSim) tracks vs dxy(PV)",
1443 histograms.h_looperdxypvzoomed.push_back(ibook.
book1D(
"num_duplicate_dxypv_zoomed",
1444 "N of associated (recoToSim) looper tracks vs dxy(PV)",
1449 histograms.h_misiddxypvzoomed.push_back(ibook.
book1D(
"num_chargemisid_dxypv_zoomed",
1450 "N of associated (recoToSim) charge misIDed tracks vs dxy(PV)",
1454 histograms.h_pileupdxypvzoomed.push_back(ibook.
book1D(
"num_pileup_dxypv_zoomed",
1455 "N of associated (recoToSim) pileup tracks vs dxy(PV)",
1462 histograms.h_assoc2dzpvzoomed.push_back(ibook.
book1D(
"num_assoc(recoToSim)_dzpv_zoomed",
1463 "N of associated (recoToSim) tracks vs dz(PV)",
1467 histograms.h_looperdzpvzoomed.push_back(ibook.
book1D(
"num_duplicate_dzpv_zoomed",
1468 "N of associated (recoToSim) looper tracks vs dz(PV)",
1473 histograms.h_misiddzpvzoomed.push_back(ibook.
book1D(
"num_chargemisid_versus_dzpv_zoomed",
1474 "N of associated (recoToSim) charge misIDed tracks vs dz(PV)",
1478 histograms.h_pileupdzpvzoomed.push_back(ibook.
book1D(
"num_pileup_dzpv_zoomed",
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));
1520 histograms.h_seedsFitFailedFraction.push_back(
1521 ibook.
book1D(
"seeds_fitFailedFraction",
"Fraction of seeds for which the fit failed", 100, 0, 1));
1538 histograms.h_assoc2_mvacut_hp.emplace_back();
1539 histograms.h_simul2_mvacut_hp.emplace_back();
1541 histograms.h_assoc2_mva_vs_pt.emplace_back();
1543 histograms.h_assoc2_mva_vs_pt_hp.emplace_back();
1544 histograms.h_fake_mva_vs_pt_hp.emplace_back();
1545 histograms.h_assoc2_mva_vs_eta.emplace_back();
1547 histograms.h_assoc2_mva_vs_eta_hp.emplace_back();
1548 histograms.h_fake_mva_vs_eta_hp.emplace_back();
1550 for (
size_t i = 1;
i <= nMVAs; ++
i) {
1555 histograms.h_reco_mva_hp.back().emplace_back();
1556 histograms.h_assoc2_mva_hp.back().emplace_back();
1558 histograms.h_reco_mvacut_hp.back().emplace_back();
1559 histograms.h_assoc_mvacut_hp.back().emplace_back();
1560 histograms.h_assoc2_mvacut_hp.back().emplace_back();
1561 histograms.h_simul2_mvacut_hp.back().emplace_back();
1563 histograms.h_assoc2_mva_vs_pt_hp.back().emplace_back();
1564 histograms.h_fake_mva_vs_pt_hp.back().emplace_back();
1565 histograms.h_assoc2_mva_vs_eta_hp.back().emplace_back();
1566 histograms.h_fake_mva_vs_eta_hp.back().emplace_back();
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,
1580 histograms.h_reco_mvacut_hp.back().push_back(ibook.
book1D(
"num_reco_mva" + istr +
"cut" +
"_hp",
1581 "N of reco track vs cut on MVA" + istr + pfix2,
1585 histograms.h_assoc_mvacut_hp.back().push_back(
1586 ibook.
book1D(
"num_assoc(simToReco)_mva" + istr +
"cut_hp",
1587 "N of associated tracks (simToReco) vs cut on MVA" + istr + pfix2,
1591 histograms.h_assoc2_mvacut_hp.back().push_back(
1592 ibook.
book1D(
"num_assoc(recoToSim)_mva" + istr +
"cut_hp",
1593 "N of associated tracks (recoToSim) vs cut on MVA" + istr + pfix2,
1597 histograms.h_simul2_mvacut_hp.back().push_back(
1598 ibook.
book1D(
"num_simul2_mva" + istr +
"cut_hp",
1599 "N of simulated tracks (associated to any track) vs cut on MVA" + istr + pfix2,
1604 histograms.h_assoc2_mva_vs_pt_hp.back().push_back(
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(),
1614 histograms.h_fake_mva_vs_pt_hp.back().push_back(
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(),
1624 histograms.h_assoc2_mva_vs_eta_hp.back().push_back(
1625 ibook.
bookProfile(
"mva_assoc(recoToSim)_mva" + istr +
"_eta_hp",
1626 "MVA" + istr +
" of associated tracks (recoToSim) vs. track #eta" + pfix2,
1633 histograms.h_fake_mva_vs_eta_hp.back().push_back(
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,
1673 histograms.h_assoc2_mva_vs_pt.back().push_back(
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(),
1683 histograms.h_fake_mva_vs_pt.back().push_back(
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(),
1693 histograms.h_assoc2_mva_vs_eta.back().push_back(
1694 ibook.
bookProfile(
"mva_assoc(recoToSim)_mva" + istr +
"_eta",
1695 "MVA" + istr +
" of associated tracks (recoToSim) vs. track #eta" + pfix,
1702 histograms.h_fake_mva_vs_eta.back().push_back(
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) {
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 {
1930 const auto phi =
track.momentum().phi();
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;
1937 const auto nlayers =
track.hitPattern().trackerLayersWithMeasurement();
1938 const auto nPixelLayers =
track.hitPattern().pixelLayersWithMeasurement();
1939 const auto n3DLayers = nPixelLayers +
track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
1940 const auto refPointWrtBS =
track.referencePoint() - bsPosition;
1941 const auto vertxy =
std::sqrt(refPointWrtBS.perp2());
1942 const auto vertz = refPointWrtBS.z();
1943 const auto chi2 =
track.normalizedChi2();
1944 const auto chi2prob = TMath::Prob(
track.chi2(), (
int)
track.ndof());
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()) {
2221 const auto pxbHits =
track.hitPattern().numberOfValidPixelBarrelHits();
2222 const auto pxfHits =
track.hitPattern().numberOfValidPixelEndcapHits();
2223 const auto tibHits =
track.hitPattern().numberOfValidStripTIBHits();
2224 const auto tidHits =
track.hitPattern().numberOfValidStripTIDHits();
2225 const auto tobHits =
track.hitPattern().numberOfValidStripTOBHits();
2226 const auto tecHits =
track.hitPattern().numberOfValidStripTECHits();
2234 histograms.nSTRIPhits_vs_eta[
count]->Fill(
eta, tibHits + tidHits + tobHits + tecHits);
2239 const auto btlHits =
track.hitPattern().numberOfValidTimingBTLHits();
2240 const auto etlHits =
track.hitPattern().numberOfValidTimingETLHits();
2245 int LayersAll =
track.hitPattern().stripLayersWithMeasurement();
2246 int Layers2D =
track.hitPattern().numberOfValidStripLayersWithMonoAndStereo();
2247 int Layers1D = LayersAll - Layers2D;
2259 int numRecoTracksSelected,
2260 int numSimTracksSelected)
const {
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()));
2446 double& qoverpError,
2448 double& lambdaError,
2452 ptError =
track.ptError();
2453 qoverp =
track.qoverp();
2454 qoverpError =
track.qoverpError();
2455 lambda =
track.lambda();
2456 lambdaError =
track.lambdaError();
2466 double& qoverpError,
2468 double& lambdaError,
2498 if (
track.seedRef().isNull() || !
track.seedRef().isAvailable())
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.";
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 {
2639 histograms.h_seedsFitFailedFraction[
count]->Fill(static_cast<double>(seedsFitFailed) / seedsTotal);
static constexpr auto TEC
const bool doDzPVcutPlots_
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPt
void fill_trackBased_histos(const Histograms &histograms, int count, int assTracks, int numRecoTracks, int numRecoTracksSelected, int numSimTracksSelected) const
~MTVHistoProducerAlgoForTracker()
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsEta
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())
bool trackFromSeedFitFailed(const reco::Track &track)
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXR
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::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXR
std::map< SeedingLayerSetId, unsigned int > seedingLayerSetToBin
double phiModeError() const
error on phi from mode
S make(const edm::ParameterSet &cfg)
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXZ
double qoverpModeError() const
error on signed transverse curvature from mode
std::string to_string(const V &value)
void fill_generic_simTrack_histos(const Histograms &histograms, const TrackingParticle::Vector &, const TrackingParticle::Point &vertex, int bx) const
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPt
void bookSimHistos(DQMStore::IBooker &ibook, Histograms &histograms)
void bookSimTrackPVAssociationHistos(DQMStore::IBooker &ibook, Histograms &histograms)
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPhi
unsigned int side(const DetId &id) const
constexpr Detector det() const
get the detector field from this detid
double cotThetaRes_rangeMax
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
unsigned int layer(const DetId &id) const
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPhi
dqm::reco::DQMStore DQMStore
void fill_simTrackBased_histos(const Histograms &histograms, int numSimTracks) const
math::XYZPointD Point
point in the space
math::XYZTLorentzVectorD LorentzVector
TrackAlgorithm originalAlgo() const
std::tuple< GeomDetEnumerators::SubDetector, TrackerDetSide, int > SeedingLayerId
std::tuple< SeedingLayerSetsBuilder::SeedingLayerId, bool > SeedingLayerId
unsigned int getSeedingLayerSetBin(const reco::Track &track, const TrackerTopology &ttopo) const
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::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsEta
void addParameter(std::string const &name, T const &value)
std::unique_ptr< TrackingParticleSelector > generalTpSelector
double ptMode() const
track transverse momentum from mode
double getEta(double eta) const
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)
bool isMatched(TrackingRecHit const &hit)
double lambdaModeError() const
error on lambda from mode
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
static constexpr auto TOB
void eraseSimpleParameter(std::string const &name)
void copyForModify(ParameterSet const &other)
std::string algoName() const
bool isTrackerStrip(GeomDetEnumerators::SubDetector m)
double cotThetaRes_rangeMin
static SeedingLayerId nameToEnumId(const std::string &name)
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, const bool doSeedPlots)
std::array< SeedingLayerId, 4 > SeedingLayerSetId
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
static constexpr auto TIB
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPhi
bool isSingle(TrackingRecHit const &hit)
constexpr uint32_t rawId() const
get the raw id
XYZPointD XYZPoint
point in space with cartesian internal representation
double phiMode() const
azimuthal angle of momentum vector from mode
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
static const std::string algoNames[]
void fill_duplicate_histos(const Histograms &histograms, int count, const reco::Track &track1, const reco::Track &track2) const
void fill_seed_histos(const Histograms &histograms, int count, int seedsFitFailed, int seedsTotal) const
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXZ
std::vector< std::string > seedingLayerSetNames
void bookSimTrackHistos(DQMStore::IBooker &ibook, Histograms &histograms, bool doResolutionPlots)
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) ...
auto dxy(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
void bookRecodEdxHistos(DQMStore::IBooker &ibook, Histograms &histograms)
double getPt(double pt) const
Monte Carlo truth information used for tracking validation.
int numberOfSaturatedMeasurements() const
unsigned int numberOfMeasurements() const
std::unique_ptr< GenParticleCustomSelector > generalGpSelector
void fill_simAssociated_recoTrack_histos(const Histograms &histograms, int count, const reco::Track &track) const
void setBinLabels(std::vector< TH2F > &depth)
Log< level::Warning, false > LogWarning
double qoverpMode() const
q/p from mode
math::XYZVectorD Vector
point in the space
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
void bookRecoHistos(DQMStore::IBooker &ibook, Histograms &histograms, bool doResolutionPlots)
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsEta
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
static std::unique_ptr< RecoTrackSelectorBase > makeRecoTrackSelectorFromTPSelectorParameters(const edm::ParameterSet &pset)
double lambdaMode() const
Lambda angle from mode.
static constexpr auto TID
void bookSeedHistos(DQMStore::IBooker &ibook, Histograms &histograms)
void bookMVAHistos(DQMStore::IBooker &ibook, Histograms &histograms, size_t nMVAs)
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
static std::vector< std::vector< std::string > > layerNamesInSets(const std::vector< std::string > &namesPSet)