158 << minPt <<
" <= 0 out of range while requesting log scale. Using minPt = 0.1.";
186 h_bunchxSIM.push_back( ibook.
book1D(
"bunchxSIM",
"bunch crossing", 21, -15.5, 5.5 ) );
225 "N of associated tracks (simToReco) vs transverse vert position",
227 h_simulvertpos.push_back( ibook.
book1D(
"num_simul_vertpos",
"N of simulated tracks vs transverse vert position",
230 h_assoczpos.push_back( ibook.
book1D(
"num_assoc(simToReco)_zpos",
"N of associated tracks (simToReco) vs z vert position",
255 h_nchi2.push_back( ibook.
book1D(
"chi2",
"normalized #chi^{2}", 200, 0, 20 ) );
256 h_nchi2_prob.push_back( ibook.
book1D(
"chi2_prob",
"normalized #chi^{2} probability",100,0,1));
342 h_eta.push_back( ibook.
book1D(
"eta",
"pseudorapidity residue", 1000, -0.1, 0.1 ) );
343 h_pt.push_back( ibook.
book1D(
"pullPt",
"pull of p_{t}", 100, -10, 10 ) );
344 h_pullTheta.push_back( ibook.
book1D(
"pullTheta",
"pull of #theta parameter",250,-25,25) );
345 h_pullPhi.push_back( ibook.
book1D(
"pullPhi",
"pull of #phi parameter",250,-25,25) );
346 h_pullDxy.push_back( ibook.
book1D(
"pullDxy",
"pull of dxy parameter",250,-25,25) );
347 h_pullDz.push_back( ibook.
book1D(
"pullDz",
"pull of dz parameter",250,-25,25) );
348 h_pullQoverp.push_back( ibook.
book1D(
"pullQoverp",
"pull of qoverp parameter",250,-25,25) );
477 h_dedx_estim.emplace_back(std::initializer_list<MonitorElement*>{
481 h_dedx_nom.emplace_back(std::initializer_list<MonitorElement*>{
485 h_dedx_sat.emplace_back(std::initializer_list<MonitorElement*>{
507 double dxySim,
double dzSim,
int nSimHits,
508 int nSimLayers,
int nSimPixelLayers,
int nSimStripMonoAndStereoLayers,
513 auto const nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
574 for (
unsigned int i=0;
i<v_dEdx.size();
i++) {
589 bool isChargeMatched,
590 int numAssocRecoTracks,
593 double sharedFraction,
604 const auto dxy = track.
dxy(bsPosition);
605 const auto dz = track.
dz(bsPosition);
610 const auto deltar =
min(
max(dR,
h_recodr[count]->getTH1()->GetXaxis()->GetXmin()),
h_recodr[count]->getTH1()->GetXaxis()->GetXmax());
643 if (!isChargeMatched) {
657 if (numAssocRecoTracks>1) {
670 else if(!isSigMatched) {
714 int Layers1D = LayersAll - Layers2D;
741 double qoverpSim = chargeTP/
sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
742 double lambdaSim =
M_PI/2-momentumTP.theta();
743 double phiSim = momentumTP.phi();
744 double dxySim = (-vertexTP.x()*
sin(momentumTP.phi())+vertexTP.y()*
cos(momentumTP.phi()));
745 double dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/
sqrt(momentumTP.perp2())
746 * momentumTP.z()/
sqrt(momentumTP.perp2());
752 double qoverpErrorRec(0);
754 double ptErrorRec(0);
756 double lambdaErrorRec(0);
758 double phiErrorRec(0);
781 lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
784 double ptError = ptErrorRec;
785 double ptres=ptRec-
sqrt(momentumTP.perp2());
786 double etares=track.
eta()-momentumTP.Eta();
789 double dxyRec = track.
dxy(bsPosition);
790 double dzRec = track.
dz(bsPosition);
792 const auto phiRes = phiRec-phiSim;
793 const auto dxyRes = dxyRec-dxySim;
794 const auto dzRes = dzRec-dzSim;
795 const auto cotThetaRes = 1/
tan(
M_PI*0.5-lambdaRec)-1/
tan(
M_PI*0.5-lambdaSim);
798 double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
799 double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
800 double phiPull=phiRes/phiErrorRec;
801 double dxyPull=dxyRes/track.
dxyError();
802 double dzPull=dzRes/track.
dzError();
804 double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
805 ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
806 double contrib_dxy = ((dxyRec-dxySim)/track.
dxyError())*((dxyRec-dxySim)/track.
dxyError())/5;
807 double contrib_dz = ((dzRec-dzSim)/track.
dzError())*((dzRec-dzSim)/track.
dzError())/5;
808 double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
809 ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
810 double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
811 ((phiRec-phiSim)/phiErrorRec)/5;
816 <<
"ptREC=" << ptRec <<
"\n" <<
"etaREC=" << track.
eta() <<
"\n" <<
"qoverpREC=" << qoverpRec <<
"\n"
817 <<
"dxyREC=" << dxyRec <<
"\n" <<
"dzREC=" << dzRec <<
"\n"
818 <<
"thetaREC=" << track.
theta() <<
"\n" <<
"phiREC=" << phiRec <<
"\n"
820 <<
"qoverpError()=" << qoverpErrorRec <<
"\n" <<
"dxyError()=" << track.
dxyError() <<
"\n"<<
"dzError()="
822 <<
"thetaError()=" << lambdaErrorRec <<
"\n" <<
"phiError()=" << phiErrorRec <<
"\n"
824 <<
"ptSIM=" <<
sqrt(momentumTP.perp2()) <<
"\n"<<
"etaSIM=" << momentumTP.Eta() <<
"\n"<<
"qoverpSIM=" << qoverpSim <<
"\n"
825 <<
"dxySIM=" << dxySim <<
"\n"<<
"dzSIM=" << dzSim <<
"\n" <<
"thetaSIM=" <<
M_PI/2-lambdaSim <<
"\n"
826 <<
"phiSIM=" << phiSim <<
"\n"
828 <<
"contrib_Qoverp=" << contrib_Qoverp <<
"\n"<<
"contrib_dxy=" << contrib_dxy <<
"\n"<<
"contrib_dz=" << contrib_dz <<
"\n"
829 <<
"contrib_theta=" << contrib_theta <<
"\n"<<
"contrib_phi=" << contrib_phi <<
"\n"
831 <<
"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<
"\n";
839 const auto etaSim =
getEta(momentumTP.eta());
840 const auto ptSim =
getPt(
sqrt(momentumTP.perp2()));
887 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
888 double&
phi,
double& phiError )
const {
905 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
906 double&
phi,
double& phiError )
const {
937 double dxySim,
double dzSim,
int nSimHits,
double qoverp() const
q / p
double phiModeError() const
error on phi from mode
std::vector< MonitorElement * > h_looperhit
T getParameter(std::string const &) const
TrackingParticleSelector * generalTpSelector
std::vector< MonitorElement * > h_assoc2hit
T getUntrackedParameter(std::string const &, T const &) const
std::vector< MonitorElement * > h_recodxy
std::vector< MonitorElement * > h_assochit
std::vector< MonitorElement * > h_fakes
std::vector< MonitorElement * > h_nchi2_prob
std::vector< MonitorElement * > h_looperpT
std::vector< MonitorElement * > h_pullDz
virtual ~MTVHistoProducerAlgoForTracker()
std::vector< MonitorElement * > h_misidlayer
TrackingParticleSelector * TpSelectorForEfficiencyVsPhi
std::vector< MonitorElement * > ptpull_vs_phi
std::vector< MonitorElement * > h_looperchi2
std::vector< MonitorElement * > h_assoczpos
std::vector< MonitorElement * > nPXFhits_vs_eta
void fillPlotNoFlow(MonitorElement *h, T val)
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) ...
GenParticleCustomSelector * GpSelectorForEfficiencyVsPhi
std::vector< MonitorElement * > h_pileuphit
std::vector< MonitorElement * > h_pileupdr
std::vector< MonitorElement * > nTEChits_vs_eta
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< std::vector< MonitorElement * > > h_dedx_estim
Sin< T >::type sin(const T &t)
double getEta(double eta)
std::vector< MonitorElement * > nrec_vs_nsim
std::vector< MonitorElement * > h_pileuppT
std::vector< MonitorElement * > h_algo
std::vector< MonitorElement * > h_assocdz
std::vector< MonitorElement * > nTIDhits_vs_eta
std::vector< MonitorElement * > h_ptSIM
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_assoc2pu
double phi() const
azimuthal angle of momentum vector
unsigned short numberOfLostHits() const
number of cases where track crossed a layer without getting a hit.
TrackingParticleSelector * TpSelectorForEfficiencyVsVTXZ
std::vector< MonitorElement * > h_misidchi2
std::vector< MonitorElement * > h_vertposSIM
std::vector< MonitorElement * > h_looperdxy
std::vector< MonitorElement * > h_simuleta
std::vector< MonitorElement * > h_assoc3Dlayer
std::vector< MonitorElement * > h_looper3Dlayer
int pixelLayersWithMeasurement() const
void fill_recoAssociated_simTrack_histos(int count, const TrackingParticle &tp, const TrackingParticle::Vector &momentumTP, const TrackingParticle::Point &vertexTP, double dxy, double dz, int nSimHits, int nSimLayers, int nSimPixelLayers, int nSimStripMonoAndStereoLayers, const reco::Track *track, int numVertices, double dR)
const Vector & momentum() const
track momentum vector
std::vector< MonitorElement * > h_reco3Dlayer
std::vector< MonitorElement * > h_pileupchi2
void fill_trackBased_histos(int count, int assTracks, int numRecoTracks, int numSimTracks)
std::vector< MonitorElement * > h_assoc2dz
int trackerLayersWithMeasurement() const
double cotThetaRes_rangeMax
std::vector< MonitorElement * > chi2_vs_phi
int numberOfValidStripTOBHits() const
void bookSimHistos(DQMStore::IBooker &ibook) override
std::vector< MonitorElement * > h_assocphi
std::vector< MonitorElement * > phires_vs_phi
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, edm::ConsumesCollector &&iC)
std::vector< MonitorElement * > dzres_vs_eta
double qoverpMode() const
q/p from mode
std::vector< MonitorElement * > h_misideta
std::vector< MonitorElement * > nlosthits_vs_eta
GenParticleCustomSelector * GpSelectorForEfficiencyVsVTXZ
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
math::XYZPointD Point
point in the space
std::vector< MonitorElement * > h_looperlayer
std::vector< MonitorElement * > phires_vs_pt
SingleObjectSelector< TrackingParticleCollection,::TrackingParticleSelector > TrackingParticleSelector
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_assoc2dxy
std::vector< MonitorElement * > h_pullQoverp
int numberOfValidPixelBarrelHits() const
std::vector< MonitorElement * > h_simulpu
std::vector< MonitorElement * > h_assoc2chi2
double chi2() const
chi-squared of the fit
std::vector< MonitorElement * > h_simuldr
std::vector< MonitorElement * > h_misidhit
std::vector< MonitorElement * > nSTRIPlayersWithMeas_vs_eta
MonitorElement * bookProfile2D(Args &&...args)
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
double pt() const
track transverse momentum
std::vector< MonitorElement * > h_recophi
std::vector< MonitorElement * > h_assocpT
Cos< T >::type cos(const T &t)
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
std::vector< MonitorElement * > nSTRIPlayersWith2dMeas_vs_eta
std::vector< MonitorElement * > h_tracks
double phiError() const
error on phi
MonitorElement * book1D(Args &&...args)
std::vector< MonitorElement * > h_tracksSIM
Tan< T >::type tan(const T &t)
void fill_generic_recoTrack_histos(int count, const reco::Track &track, const math::XYZPoint &bsPosition, bool isMatched, bool isSigMatched, bool isChargeMatched, int numAssocRecoTracks, int numVertices, int nSimHits, double sharedFraction, double dR)
std::vector< MonitorElement * > nhits_vs_phi
std::vector< MonitorElement * > h_assoc2pixellayer
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_simAssociated_recoTrack_histos(int count, const reco::Track &track)
int numberOfValidStripTECHits() const
std::vector< MonitorElement * > phimean_vs_eta_phi
std::vector< MonitorElement * > h_charge
std::vector< MonitorElement * > h_misidpu
std::vector< MonitorElement * > h_loopereta
std::vector< MonitorElement * > h_misiddz
std::vector< MonitorElement * > h_simullayer
std::vector< MonitorElement * > h_pileupphi
std::vector< MonitorElement * > chi2_vs_nhits
std::vector< MonitorElement * > h_recodr
double cotThetaRes_rangeMin
std::vector< MonitorElement * > dzpull_vs_eta
void bookSimTrackHistos(DQMStore::IBooker &ibook) override
std::vector< MonitorElement * > h_simuldz
std::vector< MonitorElement * > h_misiddxy
std::vector< MonitorElement * > h_bunchxSIM
double qoverpError() const
error on signed transverse curvature
void fill_simTrackBased_histos(int count, int numSimTracks)
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
void bookRecodEdxHistos(DQMStore::IBooker &ibook) override
std::vector< MonitorElement * > thetapull_vs_phi
std::vector< MonitorElement * > h_recolayer
TrackingParticleSelector * TpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_simulvertpos
std::vector< MonitorElement * > dxyres_vs_eta
std::vector< MonitorElement * > h_simulpixellayer
std::vector< MonitorElement * > h_recopu
std::vector< MonitorElement * > h_misidpT
std::vector< MonitorElement * > h_nmisslayers_outer
std::vector< MonitorElement * > nPXLlayersWithMeas_vs_eta
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.
XYZPointD XYZPoint
point in space with cartesian internal representation
double qoverpModeError() const
error on signed transverse curvature from mode
int stripLayersWithMeasurement() const
std::vector< MonitorElement * > h_eta
std::vector< MonitorElement * > h_pt
std::vector< MonitorElement * > cotThetares_vs_pt
std::vector< MonitorElement * > h_pileuppixellayer
std::vector< MonitorElement * > h_etaSIM
int numberOfValidStripTIBHits() const
std::vector< MonitorElement * > h_simulphi
static const std::string algoNames[]
int numberOfValidPixelEndcapHits() const
std::vector< MonitorElement * > h_pullTheta
std::vector< MonitorElement * > ptmean_vs_eta_phi
std::vector< MonitorElement * > h_looperphi
double lambdaError() const
error on lambda
std::vector< MonitorElement * > h_assoc2dr
std::vector< MonitorElement * > dxypull_vs_eta
std::vector< MonitorElement * > ptres_vs_eta
GenParticleCustomSelector * generalGpSelector
std::vector< MonitorElement * > phipull_vs_eta
unsigned short found() const
Number of valid hits on track.
GenParticleCustomSelector * GpSelectorForEfficiencyVsPt
std::vector< MonitorElement * > h_simulhit
std::vector< MonitorElement * > h_recopixellayer
GenParticleCustomSelector * GpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_recopT
std::vector< MonitorElement * > h_pileup3Dlayer
std::vector< MonitorElement * > h_looperdz
std::vector< MonitorElement * > h_assocdxy
std::vector< MonitorElement * > h_misidpixellayer
double phiMode() const
azimuthal angle of momentum vector from mode
Monte Carlo truth information used for tracking validation.
std::vector< MonitorElement * > h_pileuplayer
int charge() const
track electric charge
std::vector< MonitorElement * > cotThetares_vs_eta
std::vector< MonitorElement * > h_assocFraction
void fill_generic_simTrack_histos(int counter, const TrackingParticle::Vector &, const TrackingParticle::Point &vertex, int bx)
void fill_dedx_recoTrack_histos(int count, const edm::RefToBase< reco::Track > &trackref, const std::vector< const edm::ValueMap< reco::DeDxData > * > &v_dEdx)
GenParticleCustomSelector * GpSelectorForEfficiencyVsEta
double lambdaModeError() const
error on lambda from mode
std::vector< MonitorElement * > h_pileupdxy
std::vector< MonitorElement * > h_recodz
std::vector< MonitorElement * > ptres_vs_pt
SingleObjectSelector< GenParticleCollection,::GenParticleCustomSelector > GenParticleCustomSelector
std::vector< MonitorElement * > h_pileupdz
math::XYZVectorD Vector
point in the space
std::vector< std::vector< MonitorElement * > > h_dedx_nom
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
TrackingParticleSelector * TpSelectorForEfficiencyVsVTXR
std::vector< MonitorElement * > h_assocSharedHit
std::vector< MonitorElement * > h_simul3Dlayer
void bookRecoHistos(DQMStore::IBooker &ibook) override
std::vector< MonitorElement * > nhits_vs_eta
double ptMode() const
track transverse momentum from mode
int numberOfSaturatedMeasurements() const
std::vector< MonitorElement * > h_pileupeta
std::vector< MonitorElement * > h_simuldxy
std::vector< MonitorElement * > h_assocdr
std::vector< MonitorElement * > h_assocvertpos
std::vector< MonitorElement * > h_assocpixellayer
std::vector< MonitorElement * > h_recoeta
std::vector< MonitorElement * > thetapull_vs_eta
std::vector< MonitorElement * > chi2_vs_eta
int numberOfHits(HitCategory category) const
std::vector< MonitorElement * > dxyres_vs_pt
std::vector< MonitorElement * > h_losthits
TrackingParticleSelector * TpSelectorForEfficiencyVsEta
std::vector< MonitorElement * > h_assoc2eta
std::vector< MonitorElement * > h_misidphi
std::vector< MonitorElement * > dzres_vs_pt
std::vector< MonitorElement * > h_pileuppu