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) {
51 void fillMVAHistos(std::vector<MonitorElement *>& h_mva,
52 std::vector<MonitorElement *>& h_mvacut,
53 std::vector<MonitorElement *>& h_mva_hp,
54 std::vector<MonitorElement *>& h_mvacut_hp,
55 const std::vector<float>&
mvas,
56 unsigned int selectsLoose,
unsigned int selectsHP) {
59 for(
size_t i=0;
i<mvas.size(); ++
i) {
61 fillPlotNoFlow(h_mva[
i], mvas[i]);
62 h_mvacut[
i]->Fill(mvas[
i]);
64 if(
i>=1 &&
i<=selectsHP) {
65 fillPlotNoFlow(h_mva_hp[
i], mvas[i]);
66 h_mvacut_hp[
i]->Fill(mvas[
i]);
73 doSeedPlots_(doSeedPlots),
197 auto initTPselector = [&](
auto& sel,
auto&
name) {
200 auto initTrackSelector = [&](
auto& sel,
auto&
name) {
203 auto initGPselector = [&](
auto& sel,
auto&
name) {
228 std::vector<std::pair<SeedingLayerSetId, std::string> > stripPairSets;
231 for(
size_t i=0;
i<layerSets.size(); ++
i) {
232 const auto& layerSet = layerSets[
i];
237 for(
size_t j=0; j<layerSet.size(); ++j) {
242 bool isStripMono = !layerSet[j].empty() && layerSet[j][0] ==
'M';
246 if(layerSet.size() == 3 &&
isTrackerStrip(std::get<GeomDetEnumerators::SubDetector>(std::get<0>(setId[0])))) {
248 pairId[0] = setId[0];
249 pairId[1] = setId[1];
250 stripPairSets.emplace_back(pairId, layerSet[0]+
"+"+layerSet[1]);
259 for(
const auto& setIdName: stripPairSets) {
277 << minPt <<
" <= 0 out of range while requesting log scale. Using minPt = 0.1.";
301 psetTrack.
addParameter(
"quality", std::vector<std::string>{});
302 psetTrack.
addParameter(
"algorithm", std::vector<std::string>{});
303 psetTrack.
addParameter(
"originalAlgorithm", std::vector<std::string>{});
304 psetTrack.
addParameter(
"algorithmMaskContains", std::vector<std::string>{});
306 return std::make_unique<RecoTrackSelectorBase>(psetTrack, iC);
317 throw cms::Exception(
"LogicError") <<
"bookSimHistos() has already been called";
362 "N of associated tracks (simToReco) vs transverse vert position",
364 h_simulvertpos.push_back( ibook.
book1D(
"num_simul_vertpos",
"N of simulated tracks vs transverse vert position",
367 h_assoczpos.push_back( ibook.
book1D(
"num_assoc(simToReco)_zpos",
"N of associated tracks (simToReco) vs z vert position",
431 h_nchi2.push_back( ibook.
book1D(
"chi2",
"normalized #chi^{2}", 200, 0, 20 ) );
432 h_nchi2_prob.push_back( ibook.
book1D(
"chi2_prob",
"normalized #chi^{2} probability",100,0,1));
520 BinLogX(
h_recodr.back()->getTH1F());
551 h_eta.push_back( ibook.
book1D(
"eta",
"pseudorapidity residue", 1000, -0.1, 0.1 ) );
552 h_pt.push_back( ibook.
book1D(
"pullPt",
"pull of p_{t}", 100, -10, 10 ) );
553 h_pullTheta.push_back( ibook.
book1D(
"pullTheta",
"pull of #theta parameter",250,-25,25) );
554 h_pullPhi.push_back( ibook.
book1D(
"pullPhi",
"pull of #phi parameter",250,-25,25) );
555 h_pullDxy.push_back( ibook.
book1D(
"pullDxy",
"pull of dxy parameter",250,-25,25) );
556 h_pullDz.push_back( ibook.
book1D(
"pullDz",
"pull of dz parameter",250,-25,25) );
557 h_pullQoverp.push_back( ibook.
book1D(
"pullQoverp",
"pull of qoverp parameter",250,-25,25) );
680 BinLogX(
h_recopT.back()->getTH1F());
738 h_dedx_estim.emplace_back(std::initializer_list<MonitorElement*>{
742 h_dedx_nom.emplace_back(std::initializer_list<MonitorElement*>{
746 h_dedx_sat.emplace_back(std::initializer_list<MonitorElement*>{
774 for(
size_t i=1;
i <= nMVAs; ++
i) {
775 auto istr = std::to_string(
i);
788 pfix =
" (not loose-selected)";
827 double dxySim,
double dzSim,
828 double dxyPVSim,
double dzPVSim,
830 int nSimLayers,
int nSimPixelLayers,
int nSimStripMonoAndStereoLayers,
836 const std::vector<float>& mvas,
837 unsigned int selectsLoose,
unsigned int selectsHP) {
839 const auto eta =
getEta(momentumTP.eta());
840 const auto phi = momentumTP.phi();
842 const auto nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
843 const auto vertxy =
sqrt(vertexTP.perp2());
844 const auto vertz = vertexTP.z();
852 for(
size_t i=0;
i<mvas.size(); ++
i) {
853 if(
i<=selectsLoose) {
857 if(
i>=1 &&
i<=selectsHP) {
872 if (isMatched) fillPlotNoFlow(
h_assocphi[count], phi);
886 fillPlotNoFlow(
h_simulpu[count], numVertices);
887 if(isMatched) fillPlotNoFlow(
h_assocpu[count],numVertices);
890 if (isMatched) fillPlotNoFlow(
h_assocdr[count],dR);
895 if (isMatched) fillPlotNoFlow(
h_assocpT[count],
pt);
900 if (isMatched) fillPlotNoFlow(
h_assocdxy[count],dxySim);
917 if (isMatched) fillPlotNoFlow(
h_assocdz[count],dzSim);
920 if (isMatched) fillPlotNoFlow(
h_assoczpos[count], vertz);
939 const double dzpvcut =
std::abs(track->
dz(*pvPosition));
940 const double dzpvsigcut = dzpvcut / track->
dzError();
948 const auto simpvz = simPVPosition->z();
964 for (
unsigned int i=0;
i<v_dEdx.size();
i++) {
982 bool isChargeMatched,
983 int numAssocRecoTracks,
986 double sharedFraction,
988 const std::vector<float>& mvas,
989 unsigned int selectsLoose,
unsigned int selectsHP) {
999 const auto dxy = track.
dxy(bsPosition);
1000 const auto dz = track.
dz(bsPosition);
1001 const auto dxypv = pvPosition ? track.
dxy(*pvPosition) : 0.0;
1002 const auto dzpv = pvPosition ? track.
dz(*pvPosition) : 0.0;
1003 const auto dzpvsig = pvPosition ? dzpv / track.
dzError() : 0.0;
1013 const unsigned int seedingLayerSetBin = fillSeedingLayerSets ?
getSeedingLayerSetBin(track, ttopo) : 0;
1014 const auto simpvz = simPVPosition ? simPVPosition->z() : 0.0;
1054 fillPlotNoFlow(
h_recopu[count],numVertices);
1056 fillPlotNoFlow(
h_reco2pu[count], numVertices);
1092 fillPlotNoFlow(
h_assoc2pu[count],numVertices);
1110 fillPlotNoFlow(
h_misidpu[count], numVertices);
1120 if (numAssocRecoTracks>1) {
1143 fillPlotNoFlow(
h_looperpu[count], numVertices);
1176 fillPlotNoFlow(
h_pileuppu[count], numVertices);
1219 int Layers1D = LayersAll - Layers2D;
1248 double qoverpSim = chargeTP/
sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
1249 double lambdaSim =
M_PI/2-momentumTP.theta();
1250 double phiSim = momentumTP.phi();
1257 double qoverpRec(0);
1258 double qoverpErrorRec(0);
1260 double ptErrorRec(0);
1261 double lambdaRec(0);
1262 double lambdaErrorRec(0);
1264 double phiErrorRec(0);
1287 lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
1290 double ptError = ptErrorRec;
1291 double ptres=ptRec-
sqrt(momentumTP.perp2());
1292 double etares=track.
eta()-momentumTP.Eta();
1295 double dxyRec = track.
dxy(bsPosition);
1296 double dzRec = track.
dz(bsPosition);
1298 const auto phiRes = phiRec-phiSim;
1299 const auto dxyRes = dxyRec-dxySim;
1300 const auto dzRes = dzRec-dzSim;
1301 const auto cotThetaRes = 1/
tan(
M_PI*0.5-lambdaRec)-1/
tan(
M_PI*0.5-lambdaSim);
1304 double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
1305 double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
1306 double phiPull=phiRes/phiErrorRec;
1307 double dxyPull=dxyRes/track.
dxyError();
1308 double dzPull=dzRes/track.
dzError();
1311 double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
1312 ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
1313 double contrib_dxy = ((dxyRec-dxySim)/track.
dxyError())*((dxyRec-dxySim)/track.
dxyError())/5;
1314 double contrib_dz = ((dzRec-dzSim)/track.
dzError())*((dzRec-dzSim)/track.
dzError())/5;
1315 double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
1316 ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
1317 double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
1318 ((phiRec-phiSim)/phiErrorRec)/5;
1323 <<
"ptREC=" << ptRec <<
"\n" <<
"etaREC=" << track.
eta() <<
"\n" <<
"qoverpREC=" << qoverpRec <<
"\n" 1324 <<
"dxyREC=" << dxyRec <<
"\n" <<
"dzREC=" << dzRec <<
"\n" 1325 <<
"thetaREC=" << track.
theta() <<
"\n" <<
"phiREC=" << phiRec <<
"\n" 1327 <<
"qoverpError()=" << qoverpErrorRec <<
"\n" <<
"dxyError()=" << track.
dxyError() <<
"\n"<<
"dzError()=" 1329 <<
"thetaError()=" << lambdaErrorRec <<
"\n" <<
"phiError()=" << phiErrorRec <<
"\n" 1331 <<
"ptSIM=" <<
sqrt(momentumTP.perp2()) <<
"\n"<<
"etaSIM=" << momentumTP.Eta() <<
"\n"<<
"qoverpSIM=" << qoverpSim <<
"\n" 1332 <<
"dxySIM=" << dxySim <<
"\n"<<
"dzSIM=" << dzSim <<
"\n" <<
"thetaSIM=" <<
M_PI/2-lambdaSim <<
"\n" 1333 <<
"phiSIM=" << phiSim <<
"\n" 1335 <<
"contrib_Qoverp=" << contrib_Qoverp <<
"\n"<<
"contrib_dxy=" << contrib_dxy <<
"\n"<<
"contrib_dz=" << contrib_dz <<
"\n" 1336 <<
"contrib_theta=" << contrib_theta <<
"\n"<<
"contrib_phi=" << contrib_phi <<
"\n" 1338 <<
"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<
"\n";
1347 const auto etaSim =
getEta(momentumTP.eta());
1348 const auto ptSim =
getPt(
sqrt(momentumTP.perp2()));
1395 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1413 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1445 const auto hitRange = seed.
recHits();
1449 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.";
1453 for(
auto iHit = hitRange.first; iHit != hitRange.second; ++iHit, ++i) {
1454 DetId detId = iHit->geographicalId();
1457 throw cms::Exception(
"LogicError") <<
"Encountered seed hit detId " << detId.
rawId() <<
" not from Tracker, but " << detId.
det();
1461 bool subdetStrip =
false;
1473 switch(ttopo.
side(detId)) {
1483 bool isStripMono =
false;
1484 if(i == nhits-1 && subdetStrip) {
1493 return found->second;
1500 double dxySim,
double dzSim,
int nSimHits,
1513 fillPlotNoFlow(
h_simulphi[count],momentumTP.phi());
1514 if (isMatched) fillPlotNoFlow(
h_assocphi[count],momentumTP.phi());
1516 fillPlotNoFlow(
h_simulhit[count],(
int)nSimHits);
1518 fillPlotNoFlow(
h_assochit[count],(
int)nSimHits);
1522 fillPlotNoFlow(
h_simulpu[count],numVertices);
1523 if (isMatched) fillPlotNoFlow(
h_assocpu[count],numVertices);
1535 if (isMatched) fillPlotNoFlow(
h_assocdxy[count],dxySim);
1543 if (isMatched) fillPlotNoFlow(
h_assocdz[count],dzSim);
1546 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< 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
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
void bookSimTrackHistos(DQMStore::IBooker &ibook)
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< 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
bool isTrackerStrip(const GeomDetEnumerators::SubDetector m)
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_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 std::vector< float > &mvas, unsigned int selectsLoose, unsigned int selectsHP)
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
MonitorElement * book1D(Args &&...args)
std::unique_ptr< RecoTrackSelectorBase > trackSelectorVsPt
Tan< T >::type tan(const T &t)
std::vector< MonitorElement * > nhits_vs_phi
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)
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< MonitorElement * > h_looperdxypv
std::vector< MonitorElement * > h_charge
std::vector< MonitorElement * > h_misidpu
void eraseSimpleParameter(std::string const &name)
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
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
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.
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
MonitorElement * h_tracksSIM
int numberOfValidStripTIBHits() const
std::vector< MonitorElement * > h_simulphi
std::vector< MonitorElement * > h_pileup_dzpvcut
static const std::string algoNames[]
void bookRecoHistos(DQMStore::IBooker &ibook)
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< 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< 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
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