19 void BinLogX(TH1 *
h) {
20 TAxis *axis = h->GetXaxis();
21 int bins = axis->GetNbins();
23 float from = axis->GetXmin();
24 float to = axis->GetXmax();
25 float width = (to - from) / bins;
26 std::vector<float> new_bins(bins+1, 0);
28 for (
int i = 0;
i <=
bins;
i++) {
29 new_bins[
i] = TMath::Power(10, from +
i * width);
31 axis->Set(bins, new_bins.data());
36 const auto xaxis = h->GetXaxis();
37 if(val <= xaxis->GetXmin())
38 h->AddBinContent(xaxis->GetFirst());
39 else if(val >= xaxis->GetXmax())
40 h->AddBinContent(xaxis->GetLast());
46 for(
size_t i=0;
i<labels.size(); ++
i) {
57 void fillMVAHistos(std::vector<MonitorElement *>& h_mva,
58 std::vector<MonitorElement *>& h_mvacut,
59 std::vector<MonitorElement *>& h_mva_hp,
60 std::vector<MonitorElement *>& h_mvacut_hp,
61 const std::vector<float>&
mvas,
62 unsigned int selectsLoose,
unsigned int selectsHP) {
65 for(
size_t i=0;
i<mvas.size(); ++
i) {
67 fillPlotNoFlow(h_mva[
i], mvas[i]);
68 h_mvacut[
i]->Fill(mvas[
i]);
70 if(
i>=1 &&
i<=selectsHP) {
71 fillPlotNoFlow(h_mva_hp[
i], mvas[i]);
72 h_mvacut_hp[
i]->Fill(mvas[
i]);
77 void fillMVAHistos(
double xval,
78 std::vector<MonitorElement *>& h_mva,
79 std::vector<MonitorElement *>& h_mva_hp,
80 const std::vector<float>& mvas,
81 unsigned int selectsLoose,
unsigned int selectsHP) {
84 for(
size_t i=0;
i<mvas.size(); ++
i) {
86 h_mva[
i]->Fill(xval, mvas[
i]);
88 if(
i>=1 &&
i<=selectsHP) {
89 h_mva_hp[
i]->Fill(xval, mvas[
i]);
96 doSeedPlots_(doSeedPlots),
221 auto initTPselector = [&](
auto& sel,
auto&
name) {
224 auto initTrackSelector = [&](
auto& sel,
auto&
name) {
227 auto initGPselector = [&](
auto& sel,
auto&
name) {
252 std::vector<std::pair<SeedingLayerSetId, std::string> > stripPairSets;
255 for(
size_t i=0;
i<layerSets.size(); ++
i) {
256 const auto& layerSet = layerSets[
i];
261 for(
size_t j=0; j<layerSet.size(); ++j) {
266 bool isStripMono = !layerSet[j].empty() && layerSet[j][0] ==
'M';
270 if(layerSet.size() == 3 &&
isTrackerStrip(std::get<GeomDetEnumerators::SubDetector>(std::get<0>(setId[0])))) {
272 pairId[0] = setId[0];
273 pairId[1] = setId[1];
274 stripPairSets.emplace_back(pairId, layerSet[0]+
"+"+layerSet[1]);
283 for(
const auto& setIdName: stripPairSets) {
301 << minPt <<
" <= 0 out of range while requesting log scale. Using minPt = 0.1.";
306 maxVertpos = std::log10(maxVertpos);
308 minVertpos = std::log10(minVertpos);
312 <<
"minVertpos = " << minVertpos <<
" <= 0 out of range while requesting log scale. Using minVertpos = 0.1.";
336 psetTrack.
addParameter(
"quality", std::vector<std::string>{});
337 psetTrack.
addParameter(
"algorithm", std::vector<std::string>{});
338 psetTrack.
addParameter(
"originalAlgorithm", std::vector<std::string>{});
339 psetTrack.
addParameter(
"algorithmMaskContains", std::vector<std::string>{});
341 return std::make_unique<RecoTrackSelectorBase>(psetTrack, iC);
352 throw cms::Exception(
"LogicError") <<
"bookSimHistos() has already been called";
397 "N of associated tracks (simToReco) vs transverse vert position",
399 h_simulvertpos.push_back( ibook.
book1D(
"num_simul_vertpos",
"N of simulated tracks vs transverse vert position",
402 h_assoczpos.push_back( ibook.
book1D(
"num_assoc(simToReco)_zpos",
"N of associated tracks (simToReco) vs z vert position",
421 nalgos,0,nalgos, nalgos,0,nalgos) );
478 h_nchi2.push_back( ibook.
book1D(
"chi2",
"normalized #chi^{2}", 200, 0, 20 ) );
479 h_nchi2_prob.push_back( ibook.
book1D(
"chi2_prob",
"normalized #chi^{2} probability",100,0,1));
484 h_algo.push_back( ibook.
book1D(
"h_algo",
"Tracks by algo",reco::TrackBase::algoSize, 0.,
double(reco::TrackBase::algoSize) ) );
485 for (
size_t ibin=0; ibin<reco::TrackBase::algoSize-1; ibin++)
567 BinLogX(
h_recodr.back()->getTH1F());
598 auto bookResolutionPlots1D = [&](std::vector<MonitorElement*>& vec,
auto&&... params) {
599 vec.push_back( doResolutionPlots ? ibook.
book1D(std::forward<decltype(params)>(params)...) :
nullptr );
601 auto bookResolutionPlots2D = [&](std::vector<MonitorElement*>& vec,
auto&&... params) {
602 vec.push_back( doResolutionPlots ? ibook.
book2D(std::forward<decltype(params)>(params)...) :
nullptr );
604 auto bookResolutionPlotsProfile2D = [&](std::vector<MonitorElement*>& vec,
auto&&... params) {
605 vec.push_back( doResolutionPlots ? ibook.
bookProfile2D(std::forward<decltype(params)>(params)...) :
nullptr );
608 bookResolutionPlots1D(
h_eta,
"eta",
"pseudorapidity residue", 1000, -0.1, 0.1);
609 bookResolutionPlots1D(
h_pt,
"pullPt",
"pull of p_{t}", 100, -10, 10 );
610 bookResolutionPlots1D(
h_pullTheta,
"pullTheta",
"pull of #theta parameter",250,-25,25);
611 bookResolutionPlots1D(
h_pullPhi,
"pullPhi",
"pull of #phi parameter",250,-25,25);
612 bookResolutionPlots1D(
h_pullDxy,
"pullDxy",
"pull of dxy parameter",250,-25,25);
613 bookResolutionPlots1D(
h_pullDz,
"pullDz",
"pull of dz parameter",250,-25,25);
614 bookResolutionPlots1D(
h_pullQoverp,
"pullQoverp",
"pull of qoverp parameter",250,-25,25);
669 bookResolutionPlots2D(
ptres_vs_eta,
"ptres_vs_eta",
"ptres_vs_eta",
672 bookResolutionPlots2D(
ptres_vs_phi,
"ptres_vs_phi",
"p_{t} res vs #phi",
680 bookResolutionPlots2D(
cotThetares_vs_pt,
"cotThetares_vs_pt",
"cotThetares_vs_pt",
684 bookResolutionPlots2D(
phires_vs_eta,
"phires_vs_eta",
"phires_vs_eta",
687 bookResolutionPlots2D(
phires_vs_pt,
"phires_vs_pt",
"phires_vs_pt",
690 bookResolutionPlots2D(
phires_vs_phi,
"phires_vs_phi",
"#phi res vs #phi",
693 bookResolutionPlots2D(
dxyres_vs_eta,
"dxyres_vs_eta",
"dxyres_vs_eta",
696 bookResolutionPlots2D(
dxyres_vs_pt,
"dxyres_vs_pt",
"dxyres_vs_pt",
699 bookResolutionPlots2D(
dzres_vs_eta,
"dzres_vs_eta",
"dzres_vs_eta",
704 bookResolutionPlotsProfile2D(
ptmean_vs_eta_phi,
"ptmean_vs_eta_phi",
"mean p_{t} vs #eta and #phi",
706 bookResolutionPlotsProfile2D(
phimean_vs_eta_phi,
"phimean_vs_eta_phi",
"mean #phi vs #eta and #phi",
728 if(doResolutionPlots) {
737 BinLogX(
h_recopT.back()->getTH1F());
801 h_dedx_estim.emplace_back(std::initializer_list<MonitorElement*>{
805 h_dedx_nom.emplace_back(std::initializer_list<MonitorElement*>{
809 h_dedx_sat.emplace_back(std::initializer_list<MonitorElement*>{
846 for(
size_t i=1;
i <= nMVAs; ++
i) {
847 auto istr = std::to_string(
i);
865 pfix =
" (not loose-selected)";
923 double dxySim,
double dzSim,
924 double dxyPVSim,
double dzPVSim,
926 int nSimLayers,
int nSimPixelLayers,
int nSimStripMonoAndStereoLayers,
933 const std::vector<float>& mvas,
934 unsigned int selectsLoose,
unsigned int selectsHP) {
936 const auto eta =
getEta(momentumTP.eta());
937 const auto phi = momentumTP.phi();
939 const auto nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
941 const auto vertexTPwrtBS = vertexTP - bsPosition;
942 const auto vertxy =
std::sqrt(vertexTPwrtBS.perp2());
943 const auto vertz = vertexTPwrtBS.z();
951 for(
size_t i=0;
i<mvas.size(); ++
i) {
952 if(
i<=selectsLoose) {
956 if(
i>=1 &&
i<=selectsHP) {
971 if (isMatched) fillPlotNoFlow(
h_assocphi[count], phi);
985 fillPlotNoFlow(
h_simulpu[count], numVertices);
986 if(isMatched) fillPlotNoFlow(
h_assocpu[count],numVertices);
989 if (isMatched) fillPlotNoFlow(
h_assocdr[count],dR);
994 if (isMatched) fillPlotNoFlow(
h_assocpT[count],
pt);
999 if (isMatched) fillPlotNoFlow(
h_assocdxy[count],dxySim);
1016 if (isMatched) fillPlotNoFlow(
h_assocdz[count],dzSim);
1019 if (isMatched) fillPlotNoFlow(
h_assoczpos[count], vertz);
1038 const double dzpvcut =
std::abs(track->
dz(*pvPosition));
1039 const double dzpvsigcut = dzpvcut / track->
dzError();
1047 const auto simpvz = simPVPosition->z();
1069 for (
unsigned int i=0;
i<v_dEdx.size();
i++) {
1087 bool isChargeMatched,
1088 int numAssocRecoTracks,
1091 double sharedFraction,
1093 const std::vector<float>& mvas,
1094 unsigned int selectsLoose,
unsigned int selectsHP) {
1104 const auto dxy = track.
dxy(bsPosition);
1105 const auto dz = track.
dz(bsPosition);
1106 const auto dxypv = pvPosition ? track.
dxy(*pvPosition) : 0.0;
1107 const auto dzpv = pvPosition ? track.
dz(*pvPosition) : 0.0;
1108 const auto dzpvsig = pvPosition ? dzpv / track.
dzError() : 0.0;
1114 const auto vertxy =
std::sqrt(refPointWrtBS.perp2());
1115 const auto vertz = refPointWrtBS.z();
1119 const unsigned int seedingLayerSetBin = fillSeedingLayerSets ?
getSeedingLayerSetBin(track, ttopo) : 0;
1120 const auto simpvz = simPVPosition ? simPVPosition->z() : 0.0;
1160 fillPlotNoFlow(
h_recopu[count],numVertices);
1162 fillPlotNoFlow(
h_reco2pu[count], numVertices);
1198 fillPlotNoFlow(
h_assoc2pu[count],numVertices);
1218 fillPlotNoFlow(
h_misidpu[count], numVertices);
1228 if (numAssocRecoTracks>1) {
1251 fillPlotNoFlow(
h_looperpu[count], numVertices);
1284 fillPlotNoFlow(
h_pileuppu[count], numVertices);
1331 int Layers1D = LayersAll - Layers2D;
1360 double qoverpSim = chargeTP/
sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
1361 double lambdaSim =
M_PI/2-momentumTP.theta();
1362 double phiSim = momentumTP.phi();
1369 double qoverpRec(0);
1370 double qoverpErrorRec(0);
1372 double ptErrorRec(0);
1373 double lambdaRec(0);
1374 double lambdaErrorRec(0);
1376 double phiErrorRec(0);
1399 lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
1402 double ptError = ptErrorRec;
1403 double ptres=ptRec-
sqrt(momentumTP.perp2());
1404 double etares=track.
eta()-momentumTP.Eta();
1407 double dxyRec = track.
dxy(bsPosition);
1408 double dzRec = track.
dz(bsPosition);
1410 const auto phiRes = phiRec-phiSim;
1411 const auto dxyRes = dxyRec-dxySim;
1412 const auto dzRes = dzRec-dzSim;
1413 const auto cotThetaRes = 1/
tan(
M_PI*0.5-lambdaRec)-1/
tan(
M_PI*0.5-lambdaSim);
1416 double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
1417 double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
1418 double phiPull=phiRes/phiErrorRec;
1419 double dxyPull=dxyRes/track.
dxyError();
1420 double dzPull=dzRes/track.
dzError();
1423 double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
1424 ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
1425 double contrib_dxy = ((dxyRec-dxySim)/track.
dxyError())*((dxyRec-dxySim)/track.
dxyError())/5;
1426 double contrib_dz = ((dzRec-dzSim)/track.
dzError())*((dzRec-dzSim)/track.
dzError())/5;
1427 double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
1428 ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
1429 double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
1430 ((phiRec-phiSim)/phiErrorRec)/5;
1435 <<
"ptREC=" << ptRec <<
"\n" <<
"etaREC=" << track.
eta() <<
"\n" <<
"qoverpREC=" << qoverpRec <<
"\n" 1436 <<
"dxyREC=" << dxyRec <<
"\n" <<
"dzREC=" << dzRec <<
"\n" 1437 <<
"thetaREC=" << track.
theta() <<
"\n" <<
"phiREC=" << phiRec <<
"\n" 1439 <<
"qoverpError()=" << qoverpErrorRec <<
"\n" <<
"dxyError()=" << track.
dxyError() <<
"\n"<<
"dzError()=" 1441 <<
"thetaError()=" << lambdaErrorRec <<
"\n" <<
"phiError()=" << phiErrorRec <<
"\n" 1443 <<
"ptSIM=" <<
sqrt(momentumTP.perp2()) <<
"\n"<<
"etaSIM=" << momentumTP.Eta() <<
"\n"<<
"qoverpSIM=" << qoverpSim <<
"\n" 1444 <<
"dxySIM=" << dxySim <<
"\n"<<
"dzSIM=" << dzSim <<
"\n" <<
"thetaSIM=" <<
M_PI/2-lambdaSim <<
"\n" 1445 <<
"phiSIM=" << phiSim <<
"\n" 1447 <<
"contrib_Qoverp=" << contrib_Qoverp <<
"\n"<<
"contrib_dxy=" << contrib_dxy <<
"\n"<<
"contrib_dz=" << contrib_dz <<
"\n" 1448 <<
"contrib_theta=" << contrib_theta <<
"\n"<<
"contrib_phi=" << contrib_phi <<
"\n" 1450 <<
"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<
"\n";
1459 const auto etaSim =
getEta(momentumTP.eta());
1460 const auto ptSim =
getPt(
sqrt(momentumTP.perp2()));
1507 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1525 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1557 const auto hitRange = seed.
recHits();
1561 LogDebug(
"TrackValidator") <<
"Got seed with " << nhits <<
" hits, but I have a hard-coded maximum of " <<
std::tuple_size<SeedingLayerSetId>::value <<
", classifying the seed as 'unknown'. Please increase the maximum in MTVHistoProducerAlgoForTracker.h if needed.";
1565 for(
auto iHit = hitRange.first; iHit != hitRange.second; ++iHit, ++i) {
1566 DetId detId = iHit->geographicalId();
1569 throw cms::Exception(
"LogicError") <<
"Encountered seed hit detId " << detId.
rawId() <<
" not from Tracker, but " << detId.
det();
1573 bool subdetStrip =
false;
1585 switch(ttopo.
side(detId)) {
1597 bool isStripMono =
false;
1598 if(nhits == 3 && i == nhits-1 && subdetStrip) {
1607 return found->second;
1614 double dxySim,
double dzSim,
int nSimHits,
1627 fillPlotNoFlow(
h_simulphi[count],momentumTP.phi());
1628 if (isMatched) fillPlotNoFlow(
h_assocphi[count],momentumTP.phi());
1630 fillPlotNoFlow(
h_simulhit[count],(
int)nSimHits);
1632 fillPlotNoFlow(
h_assochit[count],(
int)nSimHits);
1636 fillPlotNoFlow(
h_simulpu[count],numVertices);
1637 if (isMatched) fillPlotNoFlow(
h_assocpu[count],numVertices);
1649 if (isMatched) fillPlotNoFlow(
h_assocdxy[count],dxySim);
1657 if (isMatched) fillPlotNoFlow(
h_assocdz[count],dzSim);
1660 if (isMatched) fillPlotNoFlow(
h_assoczpos[count],vertexTP.z());
std::vector< std::vector< MonitorElement * > > h_reco_mvacut
double qoverp() const
q / p
std::vector< std::vector< MonitorElement * > > h_assoc2_mva_hp
double phiModeError() const
error on phi from mode
std::vector< MonitorElement * > h_looperhit
std::vector< MonitorElement * > h_simul2_dzpvcut
const edm::RefToBase< TrajectorySeed > & seedRef() const
T getParameter(std::string const &) const
std::vector< MonitorElement * > h_assoc2hit
T getUntrackedParameter(std::string const &, T const &) const
const Point & referencePoint() const
Reference point on the track.
MonitorElement * h_vertposSIM
std::vector< MonitorElement * > h_pileupdxypv
std::vector< MonitorElement * > h_recodxy
std::vector< MonitorElement * > h_looperzpos
std::vector< MonitorElement * > h_assochit
void bookSimTrackPVAssociationHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > h_fakes
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_nchi2_prob
std::vector< MonitorElement * > h_looperpT
std::vector< MonitorElement * > h_pullDz
~MTVHistoProducerAlgoForTracker()
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsEta
std::vector< MonitorElement * > h_misidlayer
std::vector< MonitorElement * > h_assoc_dzpvsigcut_pt
std::vector< MonitorElement * > ptpull_vs_phi
void bookRecoPVAssociationHistos(DQMStore::IBooker &ibook)
std::vector< MonitorElement * > h_looperchi2
std::vector< MonitorElement * > h_assoczpos
std::vector< MonitorElement * > nPXFhits_vs_eta
std::vector< MonitorElement * > h_simuldxypvzoomed
bool trackFromSeedFitFailed(const reco::Track &track)
std::vector< std::vector< MonitorElement * > > h_fake_mva_vs_pt
std::vector< MonitorElement * > h_assoc2zpos
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_simulzpos
std::vector< MonitorElement * > nrecHit_vs_nsimHit_rec2sim
std::vector< MonitorElement * > h_assoc2pT
std::vector< MonitorElement * > h_nmisslayers_inner
void bookRecoHistos(DQMStore::IBooker &ibook, bool doResolutionPlots)
double lambdaMode() const
Lambda angle from mode.
std::vector< MonitorElement * > h_simulpT
std::vector< MonitorElement * > h_looperpixellayer
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
MonitorElement * bookProfile(Args &&...args)
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< MonitorElement * > h_simul_dzpvsigcut
std::vector< MonitorElement * > h_pileuphit
std::vector< MonitorElement * > h_pileupdr
void init(const edm::Event &event, const edm::EventSetup &setup)
std::vector< MonitorElement * > h_misiddzpvzoomed
std::vector< MonitorElement * > nTEChits_vs_eta
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXR
std::map< SeedingLayerSetId, unsigned int > seedingLayerSetToBin
std::vector< MonitorElement * > h_hits
double theta() const
polar angle
double dxyError() const
error on dxy
std::vector< MonitorElement * > nLayersWithMeas_vs_eta
std::vector< MonitorElement * > h_pullPhi
std::vector< MonitorElement * > phipull_vs_phi
std::vector< MonitorElement * > h_assoc2dzpvzoomed
std::vector< std::vector< MonitorElement * > > h_dedx_estim
std::vector< MonitorElement * > h_assoc_dzpvcut_pt
std::vector< MonitorElement * > h_recodxypvzoomed
double getEta(double eta)
std::vector< MonitorElement * > nrec_vs_nsim
std::vector< MonitorElement * > h_pileup_dzpvsigcut_pt
std::vector< MonitorElement * > h_pileuppT
S make(const edm::ParameterSet &cfg)
std::vector< MonitorElement * > h_algo
unsigned int side(const DetId &id) const
std::vector< MonitorElement * > h_simul_dzpvcut_pt
std::vector< MonitorElement * > h_assocdz
std::vector< MonitorElement * > h_recovertpos
std::vector< MonitorElement * > nTIDhits_vs_eta
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::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXZ
std::vector< MonitorElement * > phires_vs_eta
std::vector< MonitorElement * > h_pullDxy
std::vector< MonitorElement * > h_assoc2phi
std::vector< MonitorElement * > h_nchi2
std::vector< MonitorElement * > h_assoc2_seedingLayerSet
def setup(process, global_tag, zero_tesla=False)
std::vector< MonitorElement * > h_assoc2pu
std::vector< MonitorElement * > h_pileup_seedingLayerSet
double phi() const
azimuthal angle of momentum vector
std::vector< MonitorElement * > h_reco2pu
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
MonitorElement * h_etaSIM
std::vector< MonitorElement * > h_misidchi2
std::vector< MonitorElement * > h_assoc2_dzpvcut
std::vector< MonitorElement * > h_looperdxy
std::vector< MonitorElement * > h_simuleta
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPt
std::vector< std::vector< MonitorElement * > > h_assoc2_mva
std::vector< MonitorElement * > h_assoc_simpvz
std::vector< MonitorElement * > h_reco_simpvz
std::vector< MonitorElement * > h_assoc3Dlayer
std::vector< MonitorElement * > h_looper3Dlayer
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPhi
std::vector< MonitorElement * > h_simul2_dzpvsigcut_pt
std::vector< std::vector< MonitorElement * > > h_assoc2_mvacut
int pixelLayersWithMeasurement() const
std::vector< MonitorElement * > h_reco_dzpvcut
const Vector & momentum() const
track momentum vector
std::vector< MonitorElement * > h_reco3Dlayer
std::vector< MonitorElement * > h_loopervertpos
MonitorElement * h_bunchxSIM
void bookMVAHistos(DQMStore::IBooker &ibook, size_t nMVAs)
std::vector< MonitorElement * > h_looperdr
std::vector< MonitorElement * > h_pileupchi2
std::vector< std::vector< MonitorElement * > > h_assoc2_mva_vs_eta
std::vector< MonitorElement * > h_assoc2dz
int trackerLayersWithMeasurement() const
double cotThetaRes_rangeMax
std::vector< MonitorElement * > chi2_vs_phi
std::vector< std::vector< MonitorElement * > > h_simul2_mvacut
int numberOfValidStripTOBHits() const
std::vector< MonitorElement * > h_assocdzpv
std::vector< MonitorElement * > h_looper_seedingLayerSet
std::vector< MonitorElement * > h_assocdxypvzoomed
std::vector< MonitorElement * > h_assocphi
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPhi
static std::unique_ptr< RecoTrackSelectorBase > makeRecoTrackSelectorFromTPSelectorParameters(const edm::ParameterSet &pset, const edm::InputTag &beamSpotTag, edm::ConsumesCollector &iC)
std::vector< MonitorElement * > phires_vs_phi
std::vector< MonitorElement * > dzres_vs_eta
double qoverpMode() const
q/p from mode
std::vector< MonitorElement * > h_misideta
std::vector< MonitorElement * > nlosthits_vs_eta
std::vector< MonitorElement * > nSTRIPlayersWith1dMeas_vs_eta
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
std::vector< MonitorElement * > h_recohit
TrackAlgorithm algo() const
uint32_t rawId() const
get the raw id
std::vector< MonitorElement * > h_simul2_dzpvcut_pt
math::XYZPointD Point
point in the space
std::vector< MonitorElement * > h_assocdzpvzoomed
std::vector< MonitorElement * > h_looperlayer
math::XYZTLorentzVectorD LorentzVector
std::vector< std::vector< MonitorElement * > > h_assoc_mvacut
std::vector< MonitorElement * > phires_vs_pt
void fill_seed_histos(int count, int seedsFitFailed, int seedsTotal)
std::vector< MonitorElement * > h_assoc2_dzpvsigcut
void fill_ResoAndPull_recoTrack_histos(int count, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, int chargeTP, const reco::Track &track, const math::XYZPoint &bsPosition)
std::vector< MonitorElement * > h_assocpu
std::vector< MonitorElement * > h_assoc2layer
std::vector< MonitorElement * > h_assoc23Dlayer
unsigned int numberOfMeasurements() const
std::vector< MonitorElement * > nPXBhits_vs_eta
std::vector< std::vector< MonitorElement * > > h_dedx_sat
double eta() const
pseudorapidity of momentum vector
int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
std::vector< MonitorElement * > h_looperpu
std::vector< MonitorElement * > h_assoc2dxypv
std::vector< MonitorElement * > h_assoc2dxy
std::vector< MonitorElement * > h_pullQoverp
int numberOfValidPixelBarrelHits() const
std::vector< MonitorElement * > h_simulpu
std::vector< MonitorElement * > h_assoc2chi2
std::vector< MonitorElement * > h_simuldzpv
std::tuple< SeedingLayerSetsBuilder::SeedingLayerId, bool > SeedingLayerId
double chi2() const
chi-squared of the fit
std::vector< MonitorElement * > h_simuldr
std::vector< MonitorElement * > h_misidhit
std::vector< MonitorElement * > nSTRIPlayersWithMeas_vs_eta
std::vector< MonitorElement * > h_pileup_dzpvcut_pt
MonitorElement * bookProfile2D(Args &&...args)
auto dz(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
std::vector< MonitorElement * > h_reco_dzpvcut_pt
std::vector< std::vector< MonitorElement * > > h_assoc_mvacut_hp
std::vector< MonitorElement * > nTOBhits_vs_eta
double ndof() const
number of degrees of freedom of the fit
std::vector< MonitorElement * > ptpull_vs_eta
std::vector< MonitorElement * > etares_vs_eta
std::vector< MonitorElement * > h_pileup_simpvz
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsEta
std::vector< MonitorElement * > h_recozpos
double pt() const
track transverse momentum
std::vector< MonitorElement * > h_recophi
void addParameter(std::string const &name, T const &value)
std::vector< MonitorElement * > h_assocpT
std::unique_ptr< TrackingParticleSelector > generalTpSelector
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
std::vector< MonitorElement * > h_seedsFitFailedFraction
std::vector< MonitorElement * > nSTRIPlayersWith2dMeas_vs_eta
std::vector< MonitorElement * > h_tracks
double phiError() const
error on phi
void fill_recoAssociated_simTrack_histos(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, const math::XYZPoint *pvPosition, const TrackingVertex::LorentzVector *simPVPosition, const math::XYZPoint &bsPosition, const std::vector< float > &mvas, unsigned int selectsLoose, unsigned int selectsHP)
MonitorElement * book1D(Args &&...args)
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPt
Tan< T >::type tan(const T &t)
std::vector< MonitorElement * > nhits_vs_phi
std::vector< std::vector< MonitorElement * > > h_assoc2_mva_vs_pt
Abs< T >::type abs(const T &t)
std::vector< MonitorElement * > h_simul_simpvz
std::vector< MonitorElement * > h_assoc2pixellayer
std::vector< std::vector< MonitorElement * > > h_reco_mva
int numberOfValidStripTIDHits() const
double lambda() const
Lambda angle.
std::vector< MonitorElement * > h_misid3Dlayer
std::vector< MonitorElement * > nrecHit_vs_nsimHit_sim2rec
bool isMatched(TrackingRecHit const &hit)
std::vector< MonitorElement * > h_duplicates_oriAlgo_vs_oriAlgo
unsigned short numberOfValidHits() const
number of valid hits found
void fill_simTrackBased_histos(int numSimTracks)
void fill_simAssociated_recoTrack_histos(int count, const reco::Track &track)
int numberOfValidStripTECHits() const
std::vector< MonitorElement * > phimean_vs_eta_phi
std::vector< std::vector< MonitorElement * > > h_fake_mva_vs_eta
std::vector< MonitorElement * > h_looperdxypv
std::vector< MonitorElement * > h_charge
std::vector< MonitorElement * > h_misidpu
void eraseSimpleParameter(std::string const &name)
void fill_duplicate_histos(int count, const reco::Track &track1, const reco::Track &track2)
void copyForModify(ParameterSet const &other)
std::vector< MonitorElement * > h_simuldzpvzoomed
std::vector< MonitorElement * > h_loopereta
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
std::vector< MonitorElement * > h_misiddz
std::vector< MonitorElement * > h_assoc2_simpvz
std::vector< MonitorElement * > h_pileupvertpos
std::vector< MonitorElement * > h_simullayer
std::vector< MonitorElement * > h_pileupphi
std::vector< MonitorElement * > chi2_vs_nhits
std::vector< MonitorElement * > h_recodr
std::vector< MonitorElement * > h_assoc2vertpos
bool isTrackerStrip(GeomDetEnumerators::SubDetector m)
double cotThetaRes_rangeMin
std::vector< MonitorElement * > dzpull_vs_eta
std::vector< MonitorElement * > h_simuldz
std::vector< MonitorElement * > h_misiddxy
double qoverpError() const
error on signed transverse curvature
std::vector< MonitorElement * > h_seedsFitFailed
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...
double dzError() const
error on dz
std::vector< MonitorElement * > nPXLhits_vs_eta
std::vector< MonitorElement * > thetapull_vs_phi
std::vector< MonitorElement * > h_recolayer
static SeedingLayerId nameToEnumId(const std::string &name)
std::vector< MonitorElement * > h_assoc2_dzpvsigcut_pt
std::vector< MonitorElement * > h_simulvertpos
std::vector< MonitorElement * > h_pileupdxypvzoomed
std::vector< MonitorElement * > dxyres_vs_eta
std::array< SeedingLayerId, 4 > SeedingLayerSetId
TrackAlgorithm originalAlgo() const
std::vector< std::vector< MonitorElement * > > h_simul2_mvacut_hp
std::vector< MonitorElement * > nSTRIPhits_vs_eta
std::vector< MonitorElement * > h_simuldxypv
std::vector< MonitorElement * > h_looperdxypvzoomed
std::vector< MonitorElement * > h_reco_dzpvsigcut_pt
std::vector< MonitorElement * > h_simulpixellayer
std::vector< MonitorElement * > h_simul_dzpvcut
std::vector< MonitorElement * > h_recopu
std::vector< MonitorElement * > h_misidpT
std::vector< MonitorElement * > h_assoc_dzpvsigcut
std::vector< MonitorElement * > h_nmisslayers_outer
std::vector< MonitorElement * > nPXLlayersWithMeas_vs_eta
std::vector< MonitorElement * > h_pileupdzpvzoomed
std::vector< MonitorElement * > h_misiddzpv
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPhi
MonitorElement * book2D(Args &&...args)
std::vector< MonitorElement * > nTIBhits_vs_eta
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
bool isSingle(TrackingRecHit const &hit)
std::vector< std::vector< MonitorElement * > > h_assoc2_mvacut_hp
void fill_generic_simTrack_histos(const TrackingParticle::Vector &, const TrackingParticle::Point &vertex, int bx)
XYZPointD XYZPoint
point in space with cartesian internal representation
double qoverpModeError() const
error on signed transverse curvature from mode
std::vector< MonitorElement * > h_simul_dzpvsigcut_pt
bool isNull() const
Checks for null.
std::vector< std::vector< MonitorElement * > > h_fake_mva_vs_eta_hp
std::string algoName() const
int stripLayersWithMeasurement() const
std::vector< MonitorElement * > h_eta
TH1F * getTH1F(void) const
std::vector< MonitorElement * > h_pt
std::vector< MonitorElement * > h_assoc2dxypvzoomed
std::vector< std::vector< MonitorElement * > > h_reco_mvacut_hp
std::vector< MonitorElement * > cotThetares_vs_pt
std::vector< MonitorElement * > h_recodzpv
std::vector< MonitorElement * > h_pileuppixellayer
std::vector< std::vector< MonitorElement * > > h_assoc2_mva_vs_pt_hp
MonitorElement * h_tracksSIM
int numberOfValidStripTIBHits() const
std::vector< MonitorElement * > h_simulphi
std::vector< MonitorElement * > h_pileup_dzpvcut
static const std::string algoNames[]
unsigned int layer(const DetId &id) const
int numberOfValidPixelEndcapHits() const
std::vector< MonitorElement * > h_pullTheta
std::vector< MonitorElement * > h_looperdzpv
std::vector< MonitorElement * > ptmean_vs_eta_phi
std::vector< MonitorElement * > h_looperphi
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXZ
double lambdaError() const
error on lambda
std::vector< std::string > seedingLayerSetNames
std::vector< MonitorElement * > h_recodxypv
std::vector< MonitorElement * > h_assoc2dr
std::vector< MonitorElement * > h_simul2_dzpvsigcut
std::vector< MonitorElement * > dxypull_vs_eta
void bookSeedHistos(DQMStore::IBooker &ibook)
auto dxy(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
std::vector< MonitorElement * > ptres_vs_eta
std::vector< MonitorElement * > phipull_vs_eta
unsigned short found() const
Number of valid hits on track.
std::vector< MonitorElement * > h_misiddxypvzoomed
std::vector< MonitorElement * > h_simulhit
std::vector< MonitorElement * > h_recopixellayer
std::vector< MonitorElement * > h_pileup_dzpvsigcut
std::vector< MonitorElement * > h_recopT
std::vector< MonitorElement * > h_pileup3Dlayer
std::vector< MonitorElement * > h_looperdz
std::vector< MonitorElement * > h_pileupzpos
std::vector< MonitorElement * > h_misiddxypv
std::vector< MonitorElement * > h_assocdxy
std::vector< MonitorElement * > h_misidpixellayer
void fill_trackBased_histos(int count, int assTracks, int numRecoTracks, int numRecoTracksSelected, int numSimTracksSelected)
double phiMode() const
azimuthal angle of momentum vector from mode
void bookRecodEdxHistos(DQMStore::IBooker &ibook)
Monte Carlo truth information used for tracking validation.
std::vector< std::vector< MonitorElement * > > h_fake_mva_vs_pt_hp
std::vector< MonitorElement * > h_reco2eta
std::vector< MonitorElement * > h_pileuplayer
int charge() const
track electric charge
std::vector< MonitorElement * > cotThetares_vs_eta
std::vector< MonitorElement * > h_assocFraction
std::vector< MonitorElement * > h_reco_dzpvsigcut
std::vector< MonitorElement * > h_assoc2_dzpvcut_pt
void fill_dedx_recoTrack_histos(int count, const edm::RefToBase< reco::Track > &trackref, const std::vector< const edm::ValueMap< reco::DeDxData > * > &v_dEdx)
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, const edm::InputTag &beamSpotTag, const bool doSeedPlots, edm::ConsumesCollector &&iC)
double lambdaModeError() const
error on lambda from mode
std::unique_ptr< GenParticleCustomSelector > generalGpSelector
std::vector< MonitorElement * > h_pileupdxy
std::vector< MonitorElement * > h_recodz
void setBinLabels(std::vector< TH2F > &depth)
std::tuple< GeomDetEnumerators::SubDetector, ctfseeding::SeedingLayer::Side, int > SeedingLayerId
std::vector< MonitorElement * > ptres_vs_pt
std::vector< MonitorElement * > h_pileupdzpv
std::vector< std::vector< MonitorElement * > > h_assoc2_mva_vs_eta_hp
std::vector< MonitorElement * > h_pileupdz
void fill_generic_recoTrack_histos(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, const std::vector< float > &mvas, unsigned int selectsLoose, unsigned int selectsHP)
math::XYZVectorD Vector
point in the space
std::vector< std::vector< MonitorElement * > > h_dedx_nom
std::vector< MonitorElement * > h_reco_seedingLayerSet
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsEta
std::vector< MonitorElement * > h_reco2pT
Detector det() const
get the detector field from this detid
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
std::vector< MonitorElement * > h_assoclayer
std::vector< MonitorElement * > h_recochi2
std::vector< MonitorElement * > h_assoceta
std::vector< MonitorElement * > ptres_vs_phi
std::vector< MonitorElement * > h_assocSharedHit
std::vector< MonitorElement * > h_simul3Dlayer
std::vector< MonitorElement * > h_looperdzpvzoomed
std::vector< MonitorElement * > nhits_vs_eta
std::vector< MonitorElement * > h_assoc2dzpv
void bookSimTrackHistos(DQMStore::IBooker &ibook, bool doResolutionPlots)
double ptMode() const
track transverse momentum from mode
int numberOfSaturatedMeasurements() const
std::vector< MonitorElement * > h_pileupeta
std::vector< std::vector< MonitorElement * > > h_reco_mva_hp
std::vector< MonitorElement * > h_simuldxy
std::vector< MonitorElement * > h_assocdr
std::vector< MonitorElement * > h_assocvertpos
std::vector< MonitorElement * > h_assocpixellayer
std::vector< MonitorElement * > h_recodzpvzoomed
std::vector< MonitorElement * > h_recoeta
std::vector< MonitorElement * > thetapull_vs_eta
std::vector< MonitorElement * > h_assoc_dzpvcut
unsigned int getSeedingLayerSetBin(const reco::Track &track, const TrackerTopology &ttopo)
std::vector< MonitorElement * > chi2_vs_eta
void bookSimHistos(DQMStore::IBooker &ibook)
int numberOfHits(HitCategory category) const
std::vector< MonitorElement * > h_assocdxypv
std::vector< MonitorElement * > dxyres_vs_pt
std::vector< MonitorElement * > h_losthits
std::vector< MonitorElement * > h_assoc2eta
static std::vector< std::vector< std::string > > layerNamesInSets(const std::vector< std::string > &namesPSet)
std::vector< MonitorElement * > h_misidphi
std::vector< MonitorElement * > dzres_vs_pt
std::vector< MonitorElement * > h_pileuppu