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) {
70 void fillMVAHistos(
const std::vector<ConcurrentMonitorElement>& h_mva,
71 const std::vector<ConcurrentMonitorElement>& h_mvacut,
72 const std::vector<ConcurrentMonitorElement>& h_mva_hp,
73 const std::vector<ConcurrentMonitorElement>& h_mvacut_hp,
74 const std::vector<float>&
mvas,
75 unsigned int selectsLoose,
unsigned int selectsHP) {
78 for(
size_t i=0;
i<mvas.size(); ++
i) {
80 h_mva[
i].fill(mvas[
i]);
81 h_mvacut[
i].fill(mvas[i]);
83 if(i>=1 && i<=selectsHP) {
84 h_mva_hp[
i].fill(mvas[i]);
85 h_mvacut_hp[
i].fill(mvas[i]);
90 void fillMVAHistos(
double xval,
91 const std::vector<ConcurrentMonitorElement>& h_mva,
92 const std::vector<ConcurrentMonitorElement>& h_mva_hp,
93 const std::vector<float>& mvas,
94 unsigned int selectsLoose,
unsigned int selectsHP) {
97 for(
size_t i=0; i<mvas.size(); ++
i) {
99 h_mva[
i].fill(xval, mvas[i]);
101 if(i>=1 && i<=selectsHP) {
102 h_mva_hp[
i].fill(xval, mvas[i]);
109 doSeedPlots_(doSeedPlots)
233 auto initTPselector = [&](
auto&
sel,
auto&
name) {
236 auto initTrackSelector = [&](
auto&
sel,
auto&
name) {
239 auto initGPselector = [&](
auto&
sel,
auto&
name) {
264 std::vector<std::pair<SeedingLayerSetId, std::string> > stripPairSets;
267 for(
size_t i=0; i<layerSets.size(); ++
i) {
268 const auto& layerSet = layerSets[
i];
273 for(
size_t j=0; j<layerSet.size(); ++j) {
278 bool isStripMono = !layerSet[j].empty() && layerSet[j][0] ==
'M';
282 if(layerSet.size() == 3 &&
isTrackerStrip(std::get<GeomDetEnumerators::SubDetector>(std::get<0>(setId[0])))) {
284 pairId[0] = setId[0];
285 pairId[1] = setId[1];
286 stripPairSets.emplace_back(pairId, layerSet[0]+
"+"+layerSet[1]);
295 for(
const auto& setIdName: stripPairSets) {
313 << minPt <<
" <= 0 out of range while requesting log scale. Using minPt = 0.1.";
318 maxVertpos = std::log10(maxVertpos);
320 minVertpos = std::log10(minVertpos);
324 <<
"minVertpos = " << minVertpos <<
" <= 0 out of range while requesting log scale. Using minVertpos = 0.1.";
346 psetTrack.
addParameter(
"quality", std::vector<std::string>{});
347 psetTrack.
addParameter(
"algorithm", std::vector<std::string>{});
348 psetTrack.
addParameter(
"originalAlgorithm", std::vector<std::string>{});
349 psetTrack.
addParameter(
"algorithmMaskContains", std::vector<std::string>{});
351 return std::make_unique<RecoTrackSelectorBase>(psetTrack);
359 histograms.
h_bunchxSIM = ibook.
book1D(
"bunchxSIM",
"bunch crossing", 21, -15.5, 5.5 );
394 "N of associated tracks (simToReco) vs transverse vert position",
396 histograms.
h_simulvertpos.push_back( make1DIfLogX(ibook,
useLogVertpos,
"num_simul_vertpos",
"N of simulated tracks vs transverse vert position",
399 histograms.
h_assoczpos.push_back( ibook.
book1D(
"num_assoc(simToReco)_zpos",
"N of associated tracks (simToReco) vs z vert position",
403 histograms.
h_assocdr.push_back( make1DIfLogX(ibook,
true,
"num_assoc(simToReco)_dr",
"N of associated tracks (simToReco) vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
404 histograms.
h_simuldr.push_back( make1DIfLogX(ibook,
true,
"num_simul_dr",
"N of simulated tracks vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
416 nalgos,0,nalgos, nalgos,0,nalgos) );
460 histograms.
h_charge.push_back( ibook.
book1D(
"charge",
"charge",3,-1.5,1.5) );
464 histograms.
h_nchi2.push_back( ibook.
book1D(
"chi2",
"normalized #chi^{2}", 200, 0, 20 ) );
465 histograms.
h_nchi2_prob.push_back( ibook.
book1D(
"chi2_prob",
"normalized #chi^{2} probability",100,0,1));
470 histograms.
h_algo.push_back( ibook.
book1D(
"h_algo",
"Tracks by algo",reco::TrackBase::algoSize, 0.,
double(reco::TrackBase::algoSize) ) );
471 for (
size_t ibin=0; ibin<reco::TrackBase::algoSize-1; ibin++)
548 histograms.
h_recodr.push_back( make1DIfLogX(ibook,
true,
"num_reco_dr",
"N of reconstructed tracks vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
549 histograms.
h_assoc2dr.push_back( make1DIfLogX(ibook,
true,
"num_assoc(recoToSim)_dr",
"N of associated tracks (recoToSim) vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
550 histograms.
h_looperdr.push_back( make1DIfLogX(ibook,
true,
"num_duplicate_dr",
"N of associated (recoToSim) looper tracks vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
551 histograms.
h_pileupdr.push_back( make1DIfLogX(ibook,
true,
"num_pileup_dr",
"N of associated (recoToSim) pileup tracks vs dR",
nintdr,log10(
mindr),log10(
maxdr)) );
580 auto bookResolutionPlots1D = [&](std::vector<ConcurrentMonitorElement>& vec,
auto&&... params) {
583 auto bookResolutionPlots2D = [&](std::vector<ConcurrentMonitorElement>& vec,
bool logx,
auto&&... params) {
584 vec.push_back( doResolutionPlots ? make2DIfLogX(ibook, logx, std::forward<decltype(params)>(params)...) :
ConcurrentMonitorElement{} );
586 auto bookResolutionPlotsProfile2D = [&](std::vector<ConcurrentMonitorElement>& vec,
auto&&... params) {
590 bookResolutionPlots1D(histograms.
h_eta,
"eta",
"pseudorapidity residue", 1000, -0.1, 0.1);
591 bookResolutionPlots1D(histograms.
h_pt,
"pullPt",
"pull of p_{t}", 100, -10, 10 );
592 bookResolutionPlots1D(histograms.
h_pullTheta,
"pullTheta",
"pull of #theta parameter",250,-25,25);
593 bookResolutionPlots1D(histograms.
h_pullPhi,
"pullPhi",
"pull of #phi parameter",250,-25,25);
594 bookResolutionPlots1D(histograms.
h_pullDxy,
"pullDxy",
"pull of dxy parameter",250,-25,25);
595 bookResolutionPlots1D(histograms.
h_pullDz,
"pullDz",
"pull of dz parameter",250,-25,25);
596 bookResolutionPlots1D(histograms.
h_pullQoverp,
"pullQoverp",
"pull of qoverp parameter",250,-25,25);
607 histograms.
h_assocFraction.push_back( ibook.
book1D(
"assocFraction",
"fraction of shared hits",200,0,2) );
608 histograms.
h_assocSharedHit.push_back(ibook.
book1D(
"assocSharedHit",
"number of shared hits",41,-0.5,40.5));
651 bookResolutionPlots2D(histograms.
ptres_vs_eta,
false,
"ptres_vs_eta",
"ptres_vs_eta",
654 bookResolutionPlots2D(histograms.
ptres_vs_phi,
false,
"ptres_vs_phi",
"p_{t} res vs #phi",
659 bookResolutionPlots2D(histograms.
cotThetares_vs_eta,
false,
"cotThetares_vs_eta",
"cotThetares_vs_eta",
666 bookResolutionPlots2D(histograms.
phires_vs_eta,
false,
"phires_vs_eta",
"phires_vs_eta",
672 bookResolutionPlots2D(histograms.
phires_vs_phi,
false,
"phires_vs_phi",
"#phi res vs #phi",
675 bookResolutionPlots2D(histograms.
dxyres_vs_eta,
false,
"dxyres_vs_eta",
"dxyres_vs_eta",
681 bookResolutionPlots2D(histograms.
dzres_vs_eta,
false,
"dzres_vs_eta",
"dzres_vs_eta",
686 bookResolutionPlotsProfile2D(histograms.
ptmean_vs_eta_phi,
"ptmean_vs_eta_phi",
"mean p_{t} vs #eta and #phi",
688 bookResolutionPlotsProfile2D(histograms.
phimean_vs_eta_phi,
"phimean_vs_eta_phi",
"mean #phi vs #eta and #phi",
805 for(
size_t i=1; i <= nMVAs; ++
i) {
806 auto istr = std::to_string(i);
824 pfix =
" (not loose-selected)";
875 double dxySim,
double dzSim,
876 double dxyPVSim,
double dzPVSim,
878 int nSimLayers,
int nSimPixelLayers,
int nSimStripMonoAndStereoLayers,
885 const std::vector<float>& mvas,
886 unsigned int selectsLoose,
unsigned int selectsHP)
const {
888 const auto eta =
getEta(momentumTP.eta());
889 const auto phi = momentumTP.phi();
891 const auto nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
893 const auto vertexTPwrtBS = vertexTP - bsPosition;
894 const auto vertxy =
std::sqrt(vertexTPwrtBS.perp2());
895 const auto vertz = vertexTPwrtBS.z();
903 for(
size_t i=0; i<mvas.size(); ++
i) {
904 if(i<=selectsLoose) {
908 if(i>=1 && i<=selectsHP) {
990 const double dzpvcut =
std::abs(track->
dz(*pvPosition));
991 const double dzpvsigcut = dzpvcut / track->
dzError();
999 const auto simpvz = simPVPosition->z();
1022 for (
unsigned int i=0; i<v_dEdx.size(); i++) {
1041 bool isChargeMatched,
1042 int numAssocRecoTracks,
1045 double sharedFraction,
1047 const std::vector<float>& mvas,
1048 unsigned int selectsLoose,
unsigned int selectsHP)
const {
1058 const auto dxy = track.
dxy(bsPosition);
1059 const auto dz = track.
dz(bsPosition);
1060 const auto dxypv = pvPosition ? track.
dxy(*pvPosition) : 0.0;
1061 const auto dzpv = pvPosition ? track.
dz(*pvPosition) : 0.0;
1062 const auto dzpvsig = pvPosition ? dzpv / track.
dzError() : 0.0;
1068 const auto vertxy =
std::sqrt(refPointWrtBS.perp2());
1069 const auto vertz = refPointWrtBS.z();
1072 const unsigned int seedingLayerSetBin = fillSeedingLayerSets ?
getSeedingLayerSetBin(track, ttopo) : 0;
1073 const auto simpvz = simPVPosition ? simPVPosition->z() : 0.0;
1181 if (numAssocRecoTracks>1) {
1288 int Layers1D = LayersAll - Layers2D;
1300 histograms.
h_fakes[
count].fill(numRecoTracks-assTracks);
1318 double qoverpSim = chargeTP/
sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
1319 double lambdaSim =
M_PI/2-momentumTP.theta();
1320 double phiSim = momentumTP.phi();
1327 double qoverpRec(0);
1328 double qoverpErrorRec(0);
1330 double ptErrorRec(0);
1331 double lambdaRec(0);
1332 double lambdaErrorRec(0);
1334 double phiErrorRec(0);
1357 lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
1360 double ptError = ptErrorRec;
1361 double ptres=ptRec-
sqrt(momentumTP.perp2());
1362 double etares=track.
eta()-momentumTP.Eta();
1365 double dxyRec = track.
dxy(bsPosition);
1366 double dzRec = track.
dz(bsPosition);
1368 const auto phiRes = phiRec-phiSim;
1369 const auto dxyRes = dxyRec-dxySim;
1370 const auto dzRes = dzRec-dzSim;
1371 const auto cotThetaRes = 1/
tan(
M_PI*0.5-lambdaRec)-1/
tan(
M_PI*0.5-lambdaSim);
1374 double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
1375 double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
1376 double phiPull=phiRes/phiErrorRec;
1377 double dxyPull=dxyRes/track.
dxyError();
1378 double dzPull=dzRes/track.
dzError();
1381 double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
1382 ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
1383 double contrib_dxy = ((dxyRec-dxySim)/track.
dxyError())*((dxyRec-dxySim)/track.
dxyError())/5;
1384 double contrib_dz = ((dzRec-dzSim)/track.
dzError())*((dzRec-dzSim)/track.
dzError())/5;
1385 double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
1386 ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
1387 double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
1388 ((phiRec-phiSim)/phiErrorRec)/5;
1393 <<
"ptREC=" << ptRec <<
"\n" <<
"etaREC=" << track.
eta() <<
"\n" <<
"qoverpREC=" << qoverpRec <<
"\n" 1394 <<
"dxyREC=" << dxyRec <<
"\n" <<
"dzREC=" << dzRec <<
"\n" 1395 <<
"thetaREC=" << track.
theta() <<
"\n" <<
"phiREC=" << phiRec <<
"\n" 1397 <<
"qoverpError()=" << qoverpErrorRec <<
"\n" <<
"dxyError()=" << track.
dxyError() <<
"\n"<<
"dzError()=" 1399 <<
"thetaError()=" << lambdaErrorRec <<
"\n" <<
"phiError()=" << phiErrorRec <<
"\n" 1401 <<
"ptSIM=" <<
sqrt(momentumTP.perp2()) <<
"\n"<<
"etaSIM=" << momentumTP.Eta() <<
"\n"<<
"qoverpSIM=" << qoverpSim <<
"\n" 1402 <<
"dxySIM=" << dxySim <<
"\n"<<
"dzSIM=" << dzSim <<
"\n" <<
"thetaSIM=" <<
M_PI/2-lambdaSim <<
"\n" 1403 <<
"phiSIM=" << phiSim <<
"\n" 1405 <<
"contrib_Qoverp=" << contrib_Qoverp <<
"\n"<<
"contrib_dxy=" << contrib_dxy <<
"\n"<<
"contrib_dz=" << contrib_dz <<
"\n" 1406 <<
"contrib_theta=" << contrib_theta <<
"\n"<<
"contrib_phi=" << contrib_phi <<
"\n" 1408 <<
"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<
"\n";
1417 const auto etaSim =
getEta(momentumTP.eta());
1418 const auto ptSim =
getPt(
sqrt(momentumTP.perp2()));
1420 histograms.
h_pt[
count].fill(ptres/ptError);
1465 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1483 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1515 const auto hitRange = seed.
recHits();
1519 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.";
1523 for(
auto iHit = hitRange.first; iHit != hitRange.second; ++iHit, ++i) {
1524 DetId detId = iHit->geographicalId();
1527 throw cms::Exception(
"LogicError") <<
"Encountered seed hit detId " << detId.
rawId() <<
" not from Tracker, but " << detId.
det();
1531 bool subdetStrip =
false;
1554 return found->second;
1562 double dxySim,
double dzSim,
int nSimHits,
1564 int numVertices)
const {
1616 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
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
unsigned int side(const DetId &id) const
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, 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 > 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
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
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
TrackAlgorithm algo() const
uint32_t rawId() const
get the raw id
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)
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 > 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
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
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
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
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, const std::vector< float > &mvas, unsigned int selectsLoose, unsigned int selectsHP) const
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::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
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...
static std::unique_ptr< RecoTrackSelectorBase > makeRecoTrackSelectorFromTPSelectorParameters(const edm::ParameterSet &pset)
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
std::vector< ConcurrentMonitorElement > thetapull_vs_phi