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());
34 template <
typename...
Args>
36 auto h = std::make_unique<TH1F>(std::forward<Args>(
args)...);
37 if(logx) BinLogX(h.get());
38 const auto&
name = h->GetName();
39 return ibook.book1D(name, h.release());
42 template <
typename...
Args>
44 auto h = std::make_unique<TProfile>(std::forward<Args>(
args)...);
45 if(logx) BinLogX(h.get());
46 const auto& name = h->GetName();
47 return ibook.bookProfile(name, h.release());
50 template <
typename...
Args>
52 auto h = std::make_unique<TH2F>(std::forward<Args>(
args)...);
53 if(logx) BinLogX(h.get());
54 const auto& name = h->GetName();
55 return ibook.book2D(name, h.release());
59 for(
size_t i=0;
i<labels.size(); ++
i) {
72 void fillMVAHistos(
const std::vector<ConcurrentMonitorElement>& h_mva,
73 const std::vector<ConcurrentMonitorElement>& h_mvacut,
74 const std::vector<ConcurrentMonitorElement>& h_mva_hp,
75 const std::vector<ConcurrentMonitorElement>& h_mvacut_hp,
76 const std::vector<float>&
mvas,
77 unsigned int selectsLoose,
unsigned int selectsHP) {
80 for(
size_t i=0;
i<mvas.size(); ++
i) {
82 h_mva[
i].fill(mvas[
i]);
83 h_mvacut[
i].fill(mvas[i]);
85 if(i>=1 && i<=selectsHP) {
86 h_mva_hp[
i].fill(mvas[i]);
87 h_mvacut_hp[
i].fill(mvas[i]);
92 void fillMVAHistos(
double xval,
93 const std::vector<ConcurrentMonitorElement>& h_mva,
94 const std::vector<ConcurrentMonitorElement>& h_mva_hp,
95 const std::vector<float>& mvas,
96 unsigned int selectsLoose,
unsigned int selectsHP) {
99 for(
size_t i=0; i<mvas.size(); ++
i) {
100 if(i<=selectsLoose) {
101 h_mva[
i].fill(xval, mvas[i]);
103 if(i>=1 && i<=selectsHP) {
104 h_mva_hp[
i].fill(xval, mvas[i]);
111 doSeedPlots_(doSeedPlots)
240 auto initTPselector = [&](
auto&
sel,
auto&
name) {
243 auto initTrackSelector = [&](
auto&
sel,
auto&
name) {
246 auto initGPselector = [&](
auto&
sel,
auto&
name) {
271 std::vector<std::pair<SeedingLayerSetId, std::string> > stripPairSets;
274 for(
size_t i=0; i<layerSets.size(); ++
i) {
275 const auto& layerSet = layerSets[
i];
280 for(
size_t j=0; j<layerSet.size(); ++j) {
285 bool isStripMono = !layerSet[j].empty() && layerSet[j][0] ==
'M';
289 if(layerSet.size() == 3 &&
isTrackerStrip(std::get<GeomDetEnumerators::SubDetector>(std::get<0>(setId[0])))) {
291 pairId[0] = setId[0];
292 pairId[1] = setId[1];
293 stripPairSets.emplace_back(pairId, layerSet[0]+
"+"+layerSet[1]);
302 for(
const auto& setIdName: stripPairSets) {
320 << minPt <<
" <= 0 out of range while requesting log scale. Using minPt = 0.1.";
325 maxVertpos = std::log10(maxVertpos);
327 minVertpos = std::log10(minVertpos);
331 <<
"minVertpos = " << minVertpos <<
" <= 0 out of range while requesting log scale. Using minVertpos = 0.1.";
353 psetTrack.
addParameter(
"quality", std::vector<std::string>{});
354 psetTrack.
addParameter(
"algorithm", std::vector<std::string>{});
355 psetTrack.
addParameter(
"originalAlgorithm", std::vector<std::string>{});
356 psetTrack.
addParameter(
"algorithmMaskContains", std::vector<std::string>{});
358 return std::make_unique<RecoTrackSelectorBase>(psetTrack);
366 histograms.
h_bunchxSIM = ibook.
book1D(
"bunchxSIM",
"bunch crossing", 21, -15.5, 5.5 );
401 "N of associated tracks (simToReco) vs transverse vert position",
403 histograms.
h_simulvertpos.push_back( make1DIfLogX(ibook,
useLogVertpos,
"num_simul_vertpos",
"N of simulated tracks vs transverse vert position",
406 histograms.
h_assoczpos.push_back( ibook.
book1D(
"num_assoc(simToReco)_zpos",
"N of associated tracks (simToReco) vs z vert position",
410 histograms.
h_assocdr.push_back( make1DIfLogX(ibook,
true,
"num_assoc(simToReco)_dr",
"N of associated tracks (simToReco) vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
411 histograms.
h_simuldr.push_back( make1DIfLogX(ibook,
true,
"num_simul_dr",
"N of simulated tracks vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
413 histograms.
h_assocdrj.push_back( make1DIfLogX(ibook,
true,
"num_assoc(simToReco)_drj",
"N of associated tracks (simToReco) vs dR(TP,jet)",
nintdrj,log10(
mindrj),log10(
maxdrj)) );
414 histograms.
h_simuldrj.push_back( make1DIfLogX(ibook,
true,
"num_simul_drj",
"N of simulated tracks vs dR(TP,jet)",
nintdrj,log10(
mindrj),log10(
maxdrj)) );
427 nalgos,0,nalgos, nalgos,0,nalgos) );
471 histograms.
h_charge.push_back( ibook.
book1D(
"charge",
"charge",3,-1.5,1.5) );
475 histograms.
h_nchi2.push_back( ibook.
book1D(
"chi2",
"normalized #chi^{2}", 200, 0, 20 ) );
476 histograms.
h_nchi2_prob.push_back( ibook.
book1D(
"chi2_prob",
"normalized #chi^{2} probability",100,0,1));
481 histograms.
h_algo.push_back( ibook.
book1D(
"h_algo",
"Tracks by algo",reco::TrackBase::algoSize, 0.,
double(reco::TrackBase::algoSize) ) );
482 for (
size_t ibin=0; ibin<reco::TrackBase::algoSize-1; ibin++)
484 histograms.
h_algo.back().disableAlphanumeric();
560 histograms.
h_recodr.push_back( make1DIfLogX(ibook,
true,
"num_reco_dr",
"N of reconstructed tracks vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
561 histograms.
h_assoc2dr.push_back( make1DIfLogX(ibook,
true,
"num_assoc(recoToSim)_dr",
"N of associated tracks (recoToSim) vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
562 histograms.
h_looperdr.push_back( make1DIfLogX(ibook,
true,
"num_duplicate_dr",
"N of associated (recoToSim) looper tracks vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
563 histograms.
h_pileupdr.push_back( make1DIfLogX(ibook,
true,
"num_pileup_dr",
"N of associated (recoToSim) pileup tracks vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
565 histograms.
h_recodrj.push_back( make1DIfLogX(ibook,
true,
"num_reco_drj",
"N of reconstructed tracks vs dR(track,jet)",
nintdrj,log10(
mindrj),log10(
maxdrj)) );
566 histograms.
h_assoc2drj.push_back( make1DIfLogX(ibook,
true,
"num_assoc(recoToSim)_drj",
"N of associated tracks (recoToSim) vs dR(track,jet)",
nintdrj,log10(
mindrj),log10(
maxdrj)) );
567 histograms.
h_looperdrj.push_back( make1DIfLogX(ibook,
true,
"num_duplicate_drj",
"N of associated (recoToSim) looper tracks vs dR(track,jet)",
nintdrj,log10(
mindrj),log10(
maxdrj)) );
568 histograms.
h_pileupdrj.push_back( make1DIfLogX(ibook,
true,
"num_pileup_drj",
"N of associated (recoToSim) pileup tracks vs dR(track,jet)",
nintdrj,log10(
mindrj),log10(
maxdrj)) );
597 auto bookResolutionPlots1D = [&](std::vector<ConcurrentMonitorElement>& vec,
auto&&... params) {
600 auto bookResolutionPlots2D = [&](std::vector<ConcurrentMonitorElement>& vec,
bool logx,
auto&&... params) {
601 vec.push_back( doResolutionPlots ? make2DIfLogX(ibook, logx, std::forward<decltype(params)>(params)...) :
ConcurrentMonitorElement{} );
603 auto bookResolutionPlotsProfile2D = [&](std::vector<ConcurrentMonitorElement>& vec,
auto&&... params) {
607 bookResolutionPlots1D(histograms.
h_eta,
"eta",
"pseudorapidity residue", 1000, -0.1, 0.1);
608 bookResolutionPlots1D(histograms.
h_pt,
"pullPt",
"pull of p_{t}", 100, -10, 10 );
609 bookResolutionPlots1D(histograms.
h_pullTheta,
"pullTheta",
"pull of #theta parameter",250,-25,25);
610 bookResolutionPlots1D(histograms.
h_pullPhi,
"pullPhi",
"pull of #phi parameter",250,-25,25);
611 bookResolutionPlots1D(histograms.
h_pullDxy,
"pullDxy",
"pull of dxy parameter",250,-25,25);
612 bookResolutionPlots1D(histograms.
h_pullDz,
"pullDz",
"pull of dz parameter",250,-25,25);
613 bookResolutionPlots1D(histograms.
h_pullQoverp,
"pullQoverp",
"pull of qoverp parameter",250,-25,25);
624 histograms.
h_assocFraction.push_back( ibook.
book1D(
"assocFraction",
"fraction of shared hits",200,0,2) );
625 histograms.
h_assocSharedHit.push_back(ibook.
book1D(
"assocSharedHit",
"number of shared hits",41,-0.5,40.5));
668 bookResolutionPlots2D(histograms.
ptres_vs_eta,
false,
"ptres_vs_eta",
"ptres_vs_eta",
671 bookResolutionPlots2D(histograms.
ptres_vs_phi,
false,
"ptres_vs_phi",
"p_{t} res vs #phi",
676 bookResolutionPlots2D(histograms.
cotThetares_vs_eta,
false,
"cotThetares_vs_eta",
"cotThetares_vs_eta",
683 bookResolutionPlots2D(histograms.
phires_vs_eta,
false,
"phires_vs_eta",
"phires_vs_eta",
689 bookResolutionPlots2D(histograms.
phires_vs_phi,
false,
"phires_vs_phi",
"#phi res vs #phi",
692 bookResolutionPlots2D(histograms.
dxyres_vs_eta,
false,
"dxyres_vs_eta",
"dxyres_vs_eta",
698 bookResolutionPlots2D(histograms.
dzres_vs_eta,
false,
"dzres_vs_eta",
"dzres_vs_eta",
703 bookResolutionPlotsProfile2D(histograms.
ptmean_vs_eta_phi,
"ptmean_vs_eta_phi",
"mean p_{t} vs #eta and #phi",
705 bookResolutionPlotsProfile2D(histograms.
phimean_vs_eta_phi,
"phimean_vs_eta_phi",
"mean #phi vs #eta and #phi",
822 for(
size_t i=1; i <= nMVAs; ++
i) {
823 auto istr = std::to_string(i);
841 pfix =
" (not loose-selected)";
892 double dxySim,
double dzSim,
893 double dxyPVSim,
double dzPVSim,
895 int nSimLayers,
int nSimPixelLayers,
int nSimStripMonoAndStereoLayers,
903 const std::vector<float>& mvas,
904 unsigned int selectsLoose,
unsigned int selectsHP)
const {
906 const auto eta =
getEta(momentumTP.eta());
907 const auto phi = momentumTP.phi();
909 const auto nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
911 const auto vertexTPwrtBS = vertexTP - bsPosition;
912 const auto vertxy =
std::sqrt(vertexTPwrtBS.perp2());
913 const auto vertz = vertexTPwrtBS.z();
921 for(
size_t i=0; i<mvas.size(); ++
i) {
922 if(i<=selectsLoose) {
926 if(i>=1 && i<=selectsHP) {
1011 const double dzpvcut =
std::abs(track->
dz(*pvPosition));
1012 const double dzpvsigcut = dzpvcut / track->
dzError();
1020 const auto simpvz = simPVPosition->z();
1043 for (
unsigned int i=0; i<v_dEdx.size(); i++) {
1062 bool isChargeMatched,
1063 int numAssocRecoTracks,
1066 double sharedFraction,
1069 const std::vector<float>& mvas,
1070 unsigned int selectsLoose,
unsigned int selectsHP)
const {
1080 const auto dxy = track.
dxy(bsPosition);
1081 const auto dz = track.
dz(bsPosition);
1082 const auto dxypv = pvPosition ? track.
dxy(*pvPosition) : 0.0;
1083 const auto dzpv = pvPosition ? track.
dz(*pvPosition) : 0.0;
1084 const auto dzpvsig = pvPosition ? dzpv / track.
dzError() : 0.0;
1090 const auto vertxy =
std::sqrt(refPointWrtBS.perp2());
1091 const auto vertz = refPointWrtBS.z();
1094 const unsigned int seedingLayerSetBin = fillSeedingLayerSets ?
getSeedingLayerSetBin(track, ttopo) : 0;
1095 const auto simpvz = simPVPosition ? simPVPosition->z() : 0.0;
1205 if (numAssocRecoTracks>1) {
1314 int Layers1D = LayersAll - Layers2D;
1326 histograms.
h_fakes[
count].fill(numRecoTracks-assTracks);
1344 double qoverpSim = chargeTP/
sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
1345 double lambdaSim =
M_PI/2-momentumTP.theta();
1346 double phiSim = momentumTP.phi();
1353 double qoverpRec(0);
1354 double qoverpErrorRec(0);
1356 double ptErrorRec(0);
1357 double lambdaRec(0);
1358 double lambdaErrorRec(0);
1360 double phiErrorRec(0);
1383 lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
1386 double ptError = ptErrorRec;
1387 double ptres=ptRec-
sqrt(momentumTP.perp2());
1388 double etares=track.
eta()-momentumTP.Eta();
1391 double dxyRec = track.
dxy(bsPosition);
1392 double dzRec = track.
dz(bsPosition);
1394 const auto phiRes = phiRec-phiSim;
1395 const auto dxyRes = dxyRec-dxySim;
1396 const auto dzRes = dzRec-dzSim;
1397 const auto cotThetaRes = 1/
tan(
M_PI*0.5-lambdaRec)-1/
tan(
M_PI*0.5-lambdaSim);
1400 double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
1401 double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
1402 double phiPull=phiRes/phiErrorRec;
1403 double dxyPull=dxyRes/track.
dxyError();
1404 double dzPull=dzRes/track.
dzError();
1407 double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
1408 ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
1409 double contrib_dxy = ((dxyRec-dxySim)/track.
dxyError())*((dxyRec-dxySim)/track.
dxyError())/5;
1410 double contrib_dz = ((dzRec-dzSim)/track.
dzError())*((dzRec-dzSim)/track.
dzError())/5;
1411 double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
1412 ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
1413 double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
1414 ((phiRec-phiSim)/phiErrorRec)/5;
1419 <<
"ptREC=" << ptRec <<
"\n" <<
"etaREC=" << track.
eta() <<
"\n" <<
"qoverpREC=" << qoverpRec <<
"\n" 1420 <<
"dxyREC=" << dxyRec <<
"\n" <<
"dzREC=" << dzRec <<
"\n" 1421 <<
"thetaREC=" << track.
theta() <<
"\n" <<
"phiREC=" << phiRec <<
"\n" 1423 <<
"qoverpError()=" << qoverpErrorRec <<
"\n" <<
"dxyError()=" << track.
dxyError() <<
"\n"<<
"dzError()=" 1425 <<
"thetaError()=" << lambdaErrorRec <<
"\n" <<
"phiError()=" << phiErrorRec <<
"\n" 1427 <<
"ptSIM=" <<
sqrt(momentumTP.perp2()) <<
"\n"<<
"etaSIM=" << momentumTP.Eta() <<
"\n"<<
"qoverpSIM=" << qoverpSim <<
"\n" 1428 <<
"dxySIM=" << dxySim <<
"\n"<<
"dzSIM=" << dzSim <<
"\n" <<
"thetaSIM=" <<
M_PI/2-lambdaSim <<
"\n" 1429 <<
"phiSIM=" << phiSim <<
"\n" 1431 <<
"contrib_Qoverp=" << contrib_Qoverp <<
"\n"<<
"contrib_dxy=" << contrib_dxy <<
"\n"<<
"contrib_dz=" << contrib_dz <<
"\n" 1432 <<
"contrib_theta=" << contrib_theta <<
"\n"<<
"contrib_phi=" << contrib_phi <<
"\n" 1434 <<
"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<
"\n";
1443 const auto etaSim =
getEta(momentumTP.eta());
1444 const auto ptSim =
getPt(
sqrt(momentumTP.perp2()));
1446 histograms.
h_pt[
count].fill(ptres/ptError);
1491 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1509 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1541 const auto hitRange = seed.
recHits();
1545 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.";
1549 for(
auto iHit = hitRange.first; iHit != hitRange.second; ++iHit, ++i) {
1550 DetId detId = iHit->geographicalId();
1553 throw cms::Exception(
"LogicError") <<
"Encountered seed hit detId " << detId.
rawId() <<
" not from Tracker, but " << detId.
det();
1557 bool subdetStrip =
false;
1580 return found->second;
1588 double dxySim,
double dzSim,
int nSimHits,
1590 int numVertices)
const {
1642 int seedsTotal)
const {
std::vector< ConcurrentMonitorElement > h_assoc2pu
std::vector< ConcurrentMonitorElement > h_assoc2pixellayer
double qoverp() const
q / p
double phiModeError() const
error on phi from mode
std::vector< ConcurrentMonitorElement > h_pileupdxy
std::vector< ConcurrentMonitorElement > h_misidphi
std::vector< ConcurrentMonitorElement > h_fakes
const edm::RefToBase< TrajectorySeed > & seedRef() const
std::vector< ConcurrentMonitorElement > h_looperdxy
T getParameter(std::string const &) const
std::vector< ConcurrentMonitorElement > h_looper_seedingLayerSet
void fill_trackBased_histos(const Histograms &histograms, int count, int assTracks, int numRecoTracks, int numRecoTracksSelected, int numSimTracksSelected) const
ConcurrentMonitorElement bookProfile(Args &&...args)
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< ConcurrentMonitorElement > h_looperlayer
std::vector< ConcurrentMonitorElement > h_assoc2dzpvzoomed
const Point & referencePoint() const
Reference point on the track.
std::vector< ConcurrentMonitorElement > h_assoczpos
std::vector< ConcurrentMonitorElement > chi2_vs_eta
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc_mvacut_hp
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPt
std::vector< ConcurrentMonitorElement > h_pileuphit
std::vector< ConcurrentMonitorElement > h_pullQoverp
std::vector< ConcurrentMonitorElement > h_pileup_seedingLayerSet
std::vector< ConcurrentMonitorElement > h_misiddzpv
~MTVHistoProducerAlgoForTracker()
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsEta
void fill_seed_histos(const Histograms &histograms, int count, int seedsFitFailed, int seedsTotal) const
std::vector< ConcurrentMonitorElement > h_assoc_dzpvsigcut_pt
std::vector< ConcurrentMonitorElement > h_pileupphi
std::vector< ConcurrentMonitorElement > nSTRIPhits_vs_eta
std::vector< ConcurrentMonitorElement > dxyres_vs_eta
std::vector< ConcurrentMonitorElement > h_pullTheta
std::vector< ConcurrentMonitorElement > h_misidpixellayer
bool trackFromSeedFitFailed(const reco::Track &track)
std::vector< std::vector< ConcurrentMonitorElement > > h_reco_mva
std::vector< ConcurrentMonitorElement > h_assoc3Dlayer
std::vector< ConcurrentMonitorElement > h_simul_dzpvcut_pt
std::vector< ConcurrentMonitorElement > h_assocFraction
std::vector< ConcurrentMonitorElement > h_pullPhi
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXR
std::vector< ConcurrentMonitorElement > h_seedsFitFailed
std::vector< ConcurrentMonitorElement > h_assoc2eta
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::vector< ConcurrentMonitorElement > h_misidhit
std::vector< ConcurrentMonitorElement > h_assoclayer
double lambdaMode() const
Lambda angle from mode.
std::vector< ConcurrentMonitorElement > h_recodr
std::vector< ConcurrentMonitorElement > h_misiddxy
std::vector< ConcurrentMonitorElement > h_pileupdr
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
std::vector< ConcurrentMonitorElement > h_assoc2zpos
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) ...
ConcurrentMonitorElement bookProfile2D(Args &&...args)
std::vector< ConcurrentMonitorElement > phires_vs_eta
std::vector< ConcurrentMonitorElement > h_looperpu
ConcurrentMonitorElement h_ptSIM
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXR
std::map< SeedingLayerSetId, unsigned int > seedingLayerSetToBin
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc2_mvacut
double theta() const
polar angle
double dxyError() const
error on dxy
std::vector< ConcurrentMonitorElement > h_nmisslayers_inner
void bookMVAHistos(DQMStore::ConcurrentBooker &ibook, Histograms &histograms, size_t nMVAs)
std::vector< ConcurrentMonitorElement > h_looperpT
void bookSimTrackPVAssociationHistos(DQMStore::ConcurrentBooker &ibook, Histograms &histograms)
std::vector< ConcurrentMonitorElement > nPXLhits_vs_eta
std::vector< ConcurrentMonitorElement > h_pileupdzpv
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)
double getEta(double eta) const
std::vector< ConcurrentMonitorElement > h_simuldxy
std::vector< ConcurrentMonitorElement > h_assocdzpv
constexpr uint32_t rawId() const
get the raw id
unsigned int side(const DetId &id) const
std::vector< ConcurrentMonitorElement > nSTRIPlayersWithMeas_vs_eta
std::vector< ConcurrentMonitorElement > nlosthits_vs_eta
std::vector< ConcurrentMonitorElement > h_charge
std::vector< ConcurrentMonitorElement > nrec_vs_nsim
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsVTXZ
std::vector< ConcurrentMonitorElement > h_simulphi
std::vector< ConcurrentMonitorElement > h_simulpT
std::vector< ConcurrentMonitorElement > h_algo
std::vector< ConcurrentMonitorElement > h_simul2_dzpvsigcut_pt
std::vector< ConcurrentMonitorElement > h_eta
std::vector< std::vector< ConcurrentMonitorElement > > h_fake_mva_vs_pt
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< ConcurrentMonitorElement > h_looperdz
std::vector< ConcurrentMonitorElement > h_misiddz
std::vector< ConcurrentMonitorElement > h_assoc2chi2
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
ConcurrentMonitorElement h_tracksSIM
std::vector< ConcurrentMonitorElement > h_assoc2_dzpvsigcut
std::vector< ConcurrentMonitorElement > h_pileupdxypv
std::vector< ConcurrentMonitorElement > h_pileupeta
std::vector< ConcurrentMonitorElement > h_assoc2phi
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPt
std::vector< ConcurrentMonitorElement > nPXFhits_vs_eta
std::vector< ConcurrentMonitorElement > h_looperdzpv
std::vector< ConcurrentMonitorElement > h_pileupchi2
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPhi
std::vector< ConcurrentMonitorElement > h_pileuppT
int pixelLayersWithMeasurement() const
std::vector< ConcurrentMonitorElement > h_assoc2dzpv
std::vector< ConcurrentMonitorElement > h_simuleta
const Vector & momentum() const
track momentum vector
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc2_mva_hp
std::vector< ConcurrentMonitorElement > h_simuldzpvzoomed
std::vector< ConcurrentMonitorElement > h_looperphi
std::vector< ConcurrentMonitorElement > h_simulhit
unsigned int getSeedingLayerSetBin(const reco::Track &track, const TrackerTopology &ttopo) const
void fill_simTrackBased_histos(const Histograms &histograms, int numSimTracks) const
std::vector< ConcurrentMonitorElement > h_misiddxypvzoomed
std::vector< ConcurrentMonitorElement > h_assoc2dxypvzoomed
std::vector< ConcurrentMonitorElement > h_pileuplayer
int trackerLayersWithMeasurement() const
std::vector< ConcurrentMonitorElement > h_reco_dzpvsigcut_pt
double cotThetaRes_rangeMax
std::vector< ConcurrentMonitorElement > h_assoc2pT
std::vector< ConcurrentMonitorElement > h_pullDz
int numberOfValidStripTOBHits() const
std::vector< ConcurrentMonitorElement > etares_vs_eta
std::vector< ConcurrentMonitorElement > ptres_vs_phi
void fill_recoAssociated_simTrack_histos(const Histograms &histograms, int count, const TrackingParticle &tp, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, double dxy, double dz, double dxyPV, double dzPV, int nSimHits, int nSimLayers, int nSimPixelLayers, int nSimStripMonoAndStereoLayers, const reco::Track *track, int numVertices, double dR, double dR_jet, const math::XYZPoint *pvPosition, const TrackingVertex::LorentzVector *simPVPosition, const math::XYZPoint &bsPosition, const std::vector< float > &mvas, unsigned int selectsLoose, unsigned int selectsHP) const
std::vector< ConcurrentMonitorElement > h_simuldzpv
std::vector< ConcurrentMonitorElement > h_pileupdzpvzoomed
std::vector< ConcurrentMonitorElement > h_pileupvertpos
std::vector< std::vector< ConcurrentMonitorElement > > h_simul2_mvacut_hp
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPhi
std::vector< ConcurrentMonitorElement > h_pileupdxypvzoomed
std::vector< ConcurrentMonitorElement > h_loopereta
std::vector< ConcurrentMonitorElement > h_hits
double qoverpMode() const
q/p from mode
double ptModeError() const
error on Pt (set to 1000 TeV if charge==0 for safety) from mode
std::vector< ConcurrentMonitorElement > h_simuldrj
TrackAlgorithm algo() const
std::vector< ConcurrentMonitorElement > h_recodrj
math::XYZPointD Point
point in the space
std::vector< ConcurrentMonitorElement > h_assoc2_dzpvcut
std::vector< ConcurrentMonitorElement > h_misiddxypv
std::vector< ConcurrentMonitorElement > nPXBhits_vs_eta
math::XYZTLorentzVectorD LorentzVector
std::vector< std::vector< ConcurrentMonitorElement > > h_fake_mva_vs_pt_hp
std::vector< ConcurrentMonitorElement > h_recodxypv
std::vector< ConcurrentMonitorElement > nrecHit_vs_nsimHit_rec2sim
std::vector< ConcurrentMonitorElement > h_simulpixellayer
std::vector< ConcurrentMonitorElement > nSTRIPlayersWith2dMeas_vs_eta
std::vector< ConcurrentMonitorElement > dxyres_vs_pt
void bookRecoHistos(DQMStore::ConcurrentBooker &ibook, Histograms &histograms, bool doResolutionPlots)
void disableAlphanumeric()
std::vector< ConcurrentMonitorElement > h_nchi2
std::tuple< GeomDetEnumerators::SubDetector, TrackerDetSide, int > SeedingLayerId
std::vector< ConcurrentMonitorElement > h_simul2_dzpvcut_pt
std::vector< ConcurrentMonitorElement > h_recozpos
unsigned int numberOfMeasurements() const
std::vector< ConcurrentMonitorElement > h_looperpixellayer
std::vector< ConcurrentMonitorElement > h_recopixellayer
std::vector< ConcurrentMonitorElement > h_assocdxypv
std::vector< ConcurrentMonitorElement > h_assocdz
std::vector< ConcurrentMonitorElement > h_looperdrj
std::vector< ConcurrentMonitorElement > phires_vs_phi
void bookSeedHistos(DQMStore::ConcurrentBooker &ibook, Histograms &histograms)
double eta() const
pseudorapidity of momentum vector
std::vector< ConcurrentMonitorElement > h_simul_simpvz
int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
std::vector< ConcurrentMonitorElement > h_pileup_dzpvcut
std::vector< ConcurrentMonitorElement > h_looperdr
std::vector< ConcurrentMonitorElement > nTOBhits_vs_eta
std::vector< std::vector< ConcurrentMonitorElement > > h_simul2_mvacut
int numberOfValidPixelBarrelHits() const
std::vector< ConcurrentMonitorElement > ptres_vs_eta
std::vector< std::vector< ConcurrentMonitorElement > > h_fake_mva_vs_eta
std::vector< ConcurrentMonitorElement > h_assoceta
std::vector< ConcurrentMonitorElement > h_reco2eta
std::vector< ConcurrentMonitorElement > h_misidpT
std::vector< ConcurrentMonitorElement > h_reco3Dlayer
std::vector< ConcurrentMonitorElement > h_assoc_dzpvcut_pt
std::vector< ConcurrentMonitorElement > dzres_vs_eta
std::vector< ConcurrentMonitorElement > h_assocdzpvzoomed
std::vector< ConcurrentMonitorElement > h_pileupdz
std::tuple< SeedingLayerSetsBuilder::SeedingLayerId, bool > SeedingLayerId
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc2_mva_vs_eta
double chi2() const
chi-squared of the fit
std::vector< ConcurrentMonitorElement > h_assoc2layer
std::vector< ConcurrentMonitorElement > h_recodzpv
std::vector< ConcurrentMonitorElement > nLayersWithMeas_vs_eta
std::vector< ConcurrentMonitorElement > h_pileup3Dlayer
auto dz(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
ConcurrentMonitorElement book2D(Args &&...args)
std::vector< ConcurrentMonitorElement > h_assoc_simpvz
std::vector< ConcurrentMonitorElement > h_reco2pu
std::vector< ConcurrentMonitorElement > h_reco_dzpvcut_pt
double ndof() const
number of degrees of freedom of the fit
std::vector< ConcurrentMonitorElement > h_simul3Dlayer
std::vector< ConcurrentMonitorElement > h_simul_dzpvcut
ConcurrentMonitorElement h_etaSIM
std::vector< ConcurrentMonitorElement > h_misiddzpvzoomed
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsEta
double pt() const
track transverse momentum
void addParameter(std::string const &name, T const &value)
std::vector< ConcurrentMonitorElement > h_misidlayer
std::vector< ConcurrentMonitorElement > ptres_vs_pt
std::unique_ptr< TrackingParticleSelector > generalTpSelector
std::vector< ConcurrentMonitorElement > h_recolayer
std::vector< ConcurrentMonitorElement > nTIDhits_vs_eta
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
std::vector< ConcurrentMonitorElement > h_pileupzpos
std::vector< ConcurrentMonitorElement > h_simul2_dzpvcut
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< ConcurrentMonitorElement > h_simulvertpos
std::vector< ConcurrentMonitorElement > h_simulzpos
void fill_simAssociated_recoTrack_histos(const Histograms &histograms, int count, const reco::Track &track) const
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPt
Tan< T >::type tan(const T &t)
std::vector< ConcurrentMonitorElement > h_assoc2hit
Abs< T >::type abs(const T &t)
void bookSimHistos(DQMStore::ConcurrentBooker &ibook, Histograms &histograms)
ConcurrentMonitorElement book1D(Args &&...args)
int numberOfValidStripTIDHits() const
double lambda() const
Lambda angle.
bool isMatched(TrackingRecHit const &hit)
std::vector< ConcurrentMonitorElement > h_recodxy
unsigned short numberOfValidHits() const
number of valid hits found
std::vector< ConcurrentMonitorElement > h_pileup_dzpvsigcut_pt
int numberOfValidStripTECHits() const
std::vector< ConcurrentMonitorElement > h_recopT
std::vector< ConcurrentMonitorElement > cotThetares_vs_pt
std::vector< ConcurrentMonitorElement > h_assoc_dzpvcut
std::vector< ConcurrentMonitorElement > h_assocvertpos
void bookSimTrackHistos(DQMStore::ConcurrentBooker &ibook, Histograms &histograms, bool doResolutionPlots)
std::vector< ConcurrentMonitorElement > h_recovertpos
std::vector< ConcurrentMonitorElement > h_assoc_dzpvsigcut
std::vector< ConcurrentMonitorElement > h_assoc2dxypv
std::vector< ConcurrentMonitorElement > dzres_vs_pt
std::vector< ConcurrentMonitorElement > phires_vs_pt
std::vector< ConcurrentMonitorElement > nhits_vs_phi
void eraseSimpleParameter(std::string const &name)
std::vector< ConcurrentMonitorElement > h_assoc2_seedingLayerSet
void copyForModify(ParameterSet const &other)
std::vector< ConcurrentMonitorElement > h_assocpixellayer
std::vector< ConcurrentMonitorElement > ptmean_vs_eta_phi
std::vector< ConcurrentMonitorElement > h_simulpu
std::vector< ConcurrentMonitorElement > h_simuldxypv
std::vector< ConcurrentMonitorElement > h_looperchi2
std::vector< std::vector< ConcurrentMonitorElement > > h_dedx_estim
std::vector< ConcurrentMonitorElement > h_duplicates_oriAlgo_vs_oriAlgo
std::vector< ConcurrentMonitorElement > h_assoc2dxy
std::vector< ConcurrentMonitorElement > phipull_vs_phi
std::vector< ConcurrentMonitorElement > h_recophi
std::vector< ConcurrentMonitorElement > h_loopervertpos
bool isTrackerStrip(GeomDetEnumerators::SubDetector m)
std::vector< ConcurrentMonitorElement > h_simullayer
double cotThetaRes_rangeMin
ConcurrentMonitorElement h_bunchxSIM
std::vector< ConcurrentMonitorElement > h_recodzpvzoomed
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
std::vector< ConcurrentMonitorElement > h_nmisslayers_outer
double dzError() const
error on dz
std::vector< ConcurrentMonitorElement > h_looper3Dlayer
static SeedingLayerId nameToEnumId(const std::string &name)
std::vector< std::vector< ConcurrentMonitorElement > > h_fake_mva_vs_eta_hp
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, const bool doSeedPlots)
std::vector< std::vector< ConcurrentMonitorElement > > h_dedx_sat
std::vector< ConcurrentMonitorElement > h_nchi2_prob
std::vector< ConcurrentMonitorElement > nhits_vs_eta
std::array< SeedingLayerId, 4 > SeedingLayerSetId
std::vector< ConcurrentMonitorElement > h_assoc2_dzpvsigcut_pt
TrackAlgorithm originalAlgo() const
void bookRecoPVAssociationHistos(DQMStore::ConcurrentBooker &ibook, Histograms &histograms)
std::vector< ConcurrentMonitorElement > h_reco_seedingLayerSet
std::vector< ConcurrentMonitorElement > h_assoc2vertpos
std::vector< ConcurrentMonitorElement > h_recohit
void fill_duplicate_histos(const Histograms &histograms, int count, const reco::Track &track1, const reco::Track &track2) const
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc_mvacut
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsPhi
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc2_mva_vs_eta_hp
std::vector< std::vector< ConcurrentMonitorElement > > h_reco_mvacut
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
std::vector< ConcurrentMonitorElement > h_assocdr
bool isSingle(TrackingRecHit const &hit)
ConcurrentMonitorElement h_vertposSIM
XYZPointD XYZPoint
point in space with cartesian internal representation
void setBinLabel(int bin, std::string const &label, int axis=1)
std::vector< ConcurrentMonitorElement > h_assocpu
std::vector< ConcurrentMonitorElement > chi2_vs_phi
std::vector< ConcurrentMonitorElement > dxypull_vs_eta
std::vector< ConcurrentMonitorElement > h_reco_dzpvcut
std::vector< ConcurrentMonitorElement > h_recochi2
double qoverpModeError() const
error on signed transverse curvature from mode
bool isNull() const
Checks for null.
std::string algoName() const
int stripLayersWithMeasurement() const
std::vector< std::vector< ConcurrentMonitorElement > > h_reco_mvacut_hp
std::vector< ConcurrentMonitorElement > h_pileup_simpvz
std::vector< ConcurrentMonitorElement > h_simul2_dzpvsigcut
int numberOfValidStripTIBHits() const
std::vector< std::vector< ConcurrentMonitorElement > > h_reco_mva_hp
std::vector< ConcurrentMonitorElement > h_assoc2dr
static const std::string algoNames[]
std::vector< ConcurrentMonitorElement > h_assoc2_dzpvcut_pt
int numberOfLostHits(HitCategory category) const
unsigned int layer(const DetId &id) const
int numberOfValidPixelEndcapHits() const
std::vector< std::vector< ConcurrentMonitorElement > > h_dedx_nom
std::vector< ConcurrentMonitorElement > dzpull_vs_eta
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXZ
double lambdaError() const
error on lambda
std::vector< ConcurrentMonitorElement > h_misid3Dlayer
double getPt(double pt) const
std::vector< std::string > seedingLayerSetNames
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc2_mva_vs_pt_hp
std::vector< ConcurrentMonitorElement > phimean_vs_eta_phi
std::vector< ConcurrentMonitorElement > h_assocdxypvzoomed
void fill(Args &&...args) const
auto dxy(const T_Vertex &vertex, const T_Momentum &momentum, const T_Point &point)
std::vector< ConcurrentMonitorElement > h_looperdzpvzoomed
std::vector< ConcurrentMonitorElement > ptpull_vs_phi
std::vector< ConcurrentMonitorElement > h_assocphi
std::vector< ConcurrentMonitorElement > h_pileup_dzpvsigcut
unsigned short found() const
Number of valid hits on track.
std::vector< ConcurrentMonitorElement > h_simul_dzpvsigcut
std::vector< ConcurrentMonitorElement > chi2_vs_nhits
std::vector< ConcurrentMonitorElement > h_pt
std::vector< ConcurrentMonitorElement > nrecHit_vs_nsimHit_sim2rec
std::vector< ConcurrentMonitorElement > h_recopu
std::vector< ConcurrentMonitorElement > phipull_vs_eta
std::vector< ConcurrentMonitorElement > h_misideta
std::vector< ConcurrentMonitorElement > h_reco_simpvz
std::vector< ConcurrentMonitorElement > h_assoc23Dlayer
std::vector< ConcurrentMonitorElement > h_assoc2_simpvz
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc2_mvacut_hp
std::vector< ConcurrentMonitorElement > h_looperzpos
std::vector< ConcurrentMonitorElement > nPXLlayersWithMeas_vs_eta
double phiMode() const
azimuthal angle of momentum vector from mode
std::vector< ConcurrentMonitorElement > nTEChits_vs_eta
std::vector< ConcurrentMonitorElement > h_recodxypvzoomed
Monte Carlo truth information used for tracking validation.
std::vector< ConcurrentMonitorElement > h_recodz
std::vector< ConcurrentMonitorElement > h_simuldxypvzoomed
std::vector< ConcurrentMonitorElement > h_seedsFitFailedFraction
int charge() const
track electric charge
std::vector< ConcurrentMonitorElement > h_misidchi2
std::vector< ConcurrentMonitorElement > h_losthits
std::vector< ConcurrentMonitorElement > cotThetares_vs_eta
std::vector< ConcurrentMonitorElement > thetapull_vs_eta
std::vector< ConcurrentMonitorElement > h_simuldz
void bookRecodEdxHistos(DQMStore::ConcurrentBooker &ibook, Histograms &histograms)
std::vector< ConcurrentMonitorElement > ptpull_vs_eta
double lambdaModeError() const
error on lambda from mode
std::vector< ConcurrentMonitorElement > h_assoc2drj
std::vector< ConcurrentMonitorElement > h_assocdrj
std::unique_ptr< GenParticleCustomSelector > generalGpSelector
std::vector< ConcurrentMonitorElement > h_reco2pT
std::vector< ConcurrentMonitorElement > h_looperdxypvzoomed
std::vector< ConcurrentMonitorElement > h_reco_dzpvsigcut
void setBinLabels(std::vector< TH2F > &depth)
std::vector< ConcurrentMonitorElement > h_simul_dzpvsigcut_pt
math::XYZVectorD Vector
point in the space
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsEta
std::vector< ConcurrentMonitorElement > h_looperhit
std::vector< ConcurrentMonitorElement > h_misidpu
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< ConcurrentMonitorElement > h_pileupdrj
std::vector< ConcurrentMonitorElement > h_simuldr
std::vector< ConcurrentMonitorElement > h_assochit
std::vector< ConcurrentMonitorElement > h_assocSharedHit
double ptMode() const
track transverse momentum from mode
int numberOfSaturatedMeasurements() const
std::vector< ConcurrentMonitorElement > h_assocdxy
std::vector< ConcurrentMonitorElement > h_assocpT
std::vector< ConcurrentMonitorElement > h_looperdxypv
std::vector< ConcurrentMonitorElement > h_looper_simpvz
std::vector< ConcurrentMonitorElement > h_pileuppu
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc2_mva_vs_pt
std::vector< ConcurrentMonitorElement > h_recoeta
std::vector< std::vector< ConcurrentMonitorElement > > h_assoc2_mva
std::vector< ConcurrentMonitorElement > h_pileup_dzpvcut_pt
std::vector< ConcurrentMonitorElement > h_pileuppixellayer
std::vector< ConcurrentMonitorElement > nSTRIPlayersWith1dMeas_vs_eta
std::vector< ConcurrentMonitorElement > h_pullDxy
std::vector< ConcurrentMonitorElement > h_assoc2dz
std::vector< ConcurrentMonitorElement > nTIBhits_vs_eta
static std::vector< std::vector< std::string > > layerNamesInSets(const std::vector< std::string > &namesPSet)
std::vector< ConcurrentMonitorElement > h_tracks
constexpr Detector det() const
get the detector field from this detid
std::vector< ConcurrentMonitorElement > thetapull_vs_phi