17 void BinLogX(TH1 *
h) {
18 TAxis *axis = h->GetXaxis();
19 int bins = axis->GetNbins();
21 float from = axis->GetXmin();
22 float to = axis->GetXmax();
23 float width = (to - from) / bins;
24 std::vector<float> new_bins(bins+1, 0);
26 for (
int i = 0;
i <= bins;
i++) {
27 new_bins[
i] = TMath::Power(10, from +
i * width);
29 axis->Set(bins, new_bins.data());
37 for(
size_t i=0;
i<labels.size(); ++
i) {
42 void fillMVAHistos(std::vector<MonitorElement *>& h_mva,
43 std::vector<MonitorElement *>& h_mvacut,
44 std::vector<MonitorElement *>& h_mva_hp,
45 std::vector<MonitorElement *>& h_mvacut_hp,
46 const std::vector<float>& mvas,
47 unsigned int selectsLoose,
unsigned int selectsHP) {
50 for(
size_t i=0;
i<mvas.size(); ++
i) {
52 fillPlotNoFlow(h_mva[
i], mvas[i]);
53 h_mvacut[
i]->Fill(mvas[
i]);
55 if(
i>=1 &&
i<=selectsHP) {
56 fillPlotNoFlow(h_mva_hp[
i], mvas[i]);
57 h_mvacut_hp[
i]->Fill(mvas[
i]);
64 doSeedPlots_(doSeedPlots),
186 auto initTPselector = [&](
auto&
sel,
auto&
name) {
189 auto initGPselector = [&](
auto&
sel,
auto&
name) {
210 std::vector<std::pair<SeedingLayerSetId, std::string> > stripPairSets;
213 for(
size_t i=0;
i<layerSets.size(); ++
i) {
214 const auto& layerSet = layerSets[
i];
219 for(
size_t j=0;
j<layerSet.size(); ++
j) {
224 bool isStripMono = !layerSet[
j].empty() && layerSet[
j][0] ==
'M';
228 if(layerSet.size() == 3 &&
isTrackerStrip(std::get<GeomDetEnumerators::SubDetector>(std::get<0>(setId[0])))) {
230 pairId[0] = setId[0];
231 pairId[1] = setId[1];
232 stripPairSets.emplace_back(pairId, layerSet[0]+
"+"+layerSet[1]);
241 for(
const auto& setIdName: stripPairSets) {
259 << minPt <<
" <= 0 out of range while requesting log scale. Using minPt = 0.1.";
270 throw cms::Exception(
"LogicError") <<
"bookSimHistos() has already been called";
315 "N of associated tracks (simToReco) vs transverse vert position",
317 h_simulvertpos.push_back( ibook.
book1D(
"num_simul_vertpos",
"N of simulated tracks vs transverse vert position",
320 h_assoczpos.push_back( ibook.
book1D(
"num_assoc(simToReco)_zpos",
"N of associated tracks (simToReco) vs z vert position",
378 h_nchi2.push_back( ibook.
book1D(
"chi2",
"normalized #chi^{2}", 200, 0, 20 ) );
379 h_nchi2_prob.push_back( ibook.
book1D(
"chi2_prob",
"normalized #chi^{2} probability",100,0,1));
464 BinLogX(
h_recodr.back()->getTH1F());
495 h_eta.push_back( ibook.
book1D(
"eta",
"pseudorapidity residue", 1000, -0.1, 0.1 ) );
496 h_pt.push_back( ibook.
book1D(
"pullPt",
"pull of p_{t}", 100, -10, 10 ) );
497 h_pullTheta.push_back( ibook.
book1D(
"pullTheta",
"pull of #theta parameter",250,-25,25) );
498 h_pullPhi.push_back( ibook.
book1D(
"pullPhi",
"pull of #phi parameter",250,-25,25) );
499 h_pullDxy.push_back( ibook.
book1D(
"pullDxy",
"pull of dxy parameter",250,-25,25) );
500 h_pullDz.push_back( ibook.
book1D(
"pullDz",
"pull of dz parameter",250,-25,25) );
501 h_pullQoverp.push_back( ibook.
book1D(
"pullQoverp",
"pull of qoverp parameter",250,-25,25) );
622 BinLogX(
h_recopT.back()->getTH1F());
667 h_dedx_estim.emplace_back(std::initializer_list<MonitorElement*>{
671 h_dedx_nom.emplace_back(std::initializer_list<MonitorElement*>{
675 h_dedx_sat.emplace_back(std::initializer_list<MonitorElement*>{
703 for(
size_t i=1;
i <= nMVAs; ++
i) {
704 auto istr = std::to_string(
i);
717 pfix =
" (not loose-selected)";
756 double dxySim,
double dzSim,
757 double dxyPVSim,
double dzPVSim,
759 int nSimLayers,
int nSimPixelLayers,
int nSimStripMonoAndStereoLayers,
765 const std::vector<float>& mvas,
766 unsigned int selectsLoose,
unsigned int selectsHP) {
768 const auto eta =
getEta(momentumTP.eta());
769 const auto phi = momentumTP.phi();
771 const auto nSim3DLayers = nSimPixelLayers + nSimStripMonoAndStereoLayers;
772 const auto vertxy =
sqrt(vertexTP.perp2());
773 const auto vertz = vertexTP.z();
777 for(
size_t i=0;
i<mvas.size(); ++
i) {
778 if(
i<=selectsLoose) {
782 if(
i>=1 &&
i<=selectsHP) {
797 if (isMatched) fillPlotNoFlow(
h_assocphi[count], phi);
811 fillPlotNoFlow(
h_simulpu[count], numVertices);
812 if(isMatched) fillPlotNoFlow(
h_assocpu[count],numVertices);
815 if (isMatched) fillPlotNoFlow(
h_assocdr[count],dR);
820 if (isMatched) fillPlotNoFlow(
h_assocpT[count],
pt);
825 if (isMatched) fillPlotNoFlow(
h_assocdxy[count],dxySim);
828 if (isMatched) fillPlotNoFlow(
h_assocdxypv[count], dxyPVSim);
838 if (isMatched) fillPlotNoFlow(
h_assocdz[count],dzSim);
841 if (isMatched) fillPlotNoFlow(
h_assoczpos[count], vertz);
858 const double dzpvcut =
std::abs(track->
dz(*pvPosition));
859 const double dzpvsigcut = dzpvcut / track->
dzError();
867 const auto simpvz = simPVPosition->z();
883 for (
unsigned int i=0;
i<v_dEdx.size();
i++) {
901 bool isChargeMatched,
902 int numAssocRecoTracks,
905 double sharedFraction,
907 const std::vector<float>& mvas,
908 unsigned int selectsLoose,
unsigned int selectsHP) {
918 const auto dxy = track.
dxy(bsPosition);
919 const auto dz = track.
dz(bsPosition);
920 const auto dxypv = pvPosition ? track.
dxy(*pvPosition) : 0.0;
921 const auto dzpv = pvPosition ? track.
dz(*pvPosition) : 0.0;
922 const auto dzpvsig = pvPosition ? dzpv / track.
dzError() : 0.0;
929 const auto deltar =
min(
max(dR,
h_recodr[count]->getTH1()->GetXaxis()->GetXmin()),
h_recodr[count]->getTH1()->GetXaxis()->GetXmax());
932 const unsigned int seedingLayerSetBin = fillSeedingLayerSets ?
getSeedingLayerSetBin(track, ttopo) : 0;
933 const auto simpvz = simPVPosition ? simPVPosition->z() : 0.0;
942 fillPlotNoFlow(
h_recodz[count], dz);
965 fillPlotNoFlow(
h_recopu[count],numVertices);
998 fillPlotNoFlow(
h_assoc2pu[count],numVertices);
1016 fillPlotNoFlow(
h_misidpu[count], numVertices);
1024 if (numAssocRecoTracks>1) {
1045 fillPlotNoFlow(
h_looperpu[count], numVertices);
1076 fillPlotNoFlow(
h_pileuppu[count], numVertices);
1111 int Layers1D = LayersAll - Layers2D;
1140 double qoverpSim = chargeTP/
sqrt(momentumTP.x()*momentumTP.x()+momentumTP.y()*momentumTP.y()+momentumTP.z()*momentumTP.z());
1141 double lambdaSim =
M_PI/2-momentumTP.theta();
1142 double phiSim = momentumTP.phi();
1143 double dxySim = (-vertexTP.x()*
sin(momentumTP.phi())+vertexTP.y()*
cos(momentumTP.phi()));
1144 double dzSim = vertexTP.z() - (vertexTP.x()*momentumTP.x()+vertexTP.y()*momentumTP.y())/
sqrt(momentumTP.perp2())
1145 * momentumTP.z()/
sqrt(momentumTP.perp2());
1150 double qoverpRec(0);
1151 double qoverpErrorRec(0);
1153 double ptErrorRec(0);
1154 double lambdaRec(0);
1155 double lambdaErrorRec(0);
1157 double phiErrorRec(0);
1180 lambdaRec,lambdaErrorRec, phiRec, phiErrorRec);
1183 double ptError = ptErrorRec;
1184 double ptres=ptRec-
sqrt(momentumTP.perp2());
1185 double etares=track.
eta()-momentumTP.Eta();
1188 double dxyRec = track.
dxy(bsPosition);
1189 double dzRec = track.
dz(bsPosition);
1191 const auto phiRes = phiRec-phiSim;
1192 const auto dxyRes = dxyRec-dxySim;
1193 const auto dzRes = dzRec-dzSim;
1194 const auto cotThetaRes = 1/
tan(
M_PI*0.5-lambdaRec)-1/
tan(
M_PI*0.5-lambdaSim);
1197 double qoverpPull=(qoverpRec-qoverpSim)/qoverpErrorRec;
1198 double thetaPull=(lambdaRec-lambdaSim)/lambdaErrorRec;
1199 double phiPull=phiRes/phiErrorRec;
1200 double dxyPull=dxyRes/track.
dxyError();
1201 double dzPull=dzRes/track.
dzError();
1204 double contrib_Qoverp = ((qoverpRec-qoverpSim)/qoverpErrorRec)*
1205 ((qoverpRec-qoverpSim)/qoverpErrorRec)/5;
1206 double contrib_dxy = ((dxyRec-dxySim)/track.
dxyError())*((dxyRec-dxySim)/track.
dxyError())/5;
1207 double contrib_dz = ((dzRec-dzSim)/track.
dzError())*((dzRec-dzSim)/track.
dzError())/5;
1208 double contrib_theta = ((lambdaRec-lambdaSim)/lambdaErrorRec)*
1209 ((lambdaRec-lambdaSim)/lambdaErrorRec)/5;
1210 double contrib_phi = ((phiRec-phiSim)/phiErrorRec)*
1211 ((phiRec-phiSim)/phiErrorRec)/5;
1216 <<
"ptREC=" << ptRec <<
"\n" <<
"etaREC=" << track.
eta() <<
"\n" <<
"qoverpREC=" << qoverpRec <<
"\n"
1217 <<
"dxyREC=" << dxyRec <<
"\n" <<
"dzREC=" << dzRec <<
"\n"
1218 <<
"thetaREC=" << track.
theta() <<
"\n" <<
"phiREC=" << phiRec <<
"\n"
1220 <<
"qoverpError()=" << qoverpErrorRec <<
"\n" <<
"dxyError()=" << track.
dxyError() <<
"\n"<<
"dzError()="
1222 <<
"thetaError()=" << lambdaErrorRec <<
"\n" <<
"phiError()=" << phiErrorRec <<
"\n"
1224 <<
"ptSIM=" <<
sqrt(momentumTP.perp2()) <<
"\n"<<
"etaSIM=" << momentumTP.Eta() <<
"\n"<<
"qoverpSIM=" << qoverpSim <<
"\n"
1225 <<
"dxySIM=" << dxySim <<
"\n"<<
"dzSIM=" << dzSim <<
"\n" <<
"thetaSIM=" <<
M_PI/2-lambdaSim <<
"\n"
1226 <<
"phiSIM=" << phiSim <<
"\n"
1228 <<
"contrib_Qoverp=" << contrib_Qoverp <<
"\n"<<
"contrib_dxy=" << contrib_dxy <<
"\n"<<
"contrib_dz=" << contrib_dz <<
"\n"
1229 <<
"contrib_theta=" << contrib_theta <<
"\n"<<
"contrib_phi=" << contrib_phi <<
"\n"
1231 <<
"chi2PULL="<<contrib_Qoverp+contrib_dxy+contrib_dz+contrib_theta+contrib_phi<<
"\n";
1240 const auto etaSim =
getEta(momentumTP.eta());
1241 const auto ptSim =
getPt(
sqrt(momentumTP.perp2()));
1288 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1289 double&
phi,
double& phiError )
const {
1306 double& qoverp,
double& qoverpError,
double& lambda,
double& lambdaError,
1307 double&
phi,
double& phiError )
const {
1338 const auto hitRange = seed.
recHits();
1342 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.";
1346 for(
auto iHit = hitRange.first; iHit != hitRange.second; ++iHit, ++i) {
1347 DetId detId = iHit->geographicalId();
1350 throw cms::Exception(
"LogicError") <<
"Encountered seed hit detId " << detId.
rawId() <<
" not from Tracker, but " << detId.
det();
1354 bool subdetStrip =
false;
1366 switch(ttopo.
side(detId)) {
1376 bool isStripMono =
false;
1377 if(i == nhits-1 && subdetStrip) {
1386 return found->second;
1393 double dxySim,
double dzSim,
int nSimHits,
1406 fillPlotNoFlow(
h_simulphi[count],momentumTP.phi());
1407 if (isMatched) fillPlotNoFlow(
h_assocphi[count],momentumTP.phi());
1409 fillPlotNoFlow(
h_simulhit[count],(
int)nSimHits);
1411 fillPlotNoFlow(
h_assochit[count],(
int)nSimHits);
1415 fillPlotNoFlow(
h_simulpu[count],numVertices);
1416 if (isMatched) fillPlotNoFlow(
h_assocpu[count],numVertices);
1428 if (isMatched) fillPlotNoFlow(
h_assocdxy[count],dxySim);
1436 if (isMatched) fillPlotNoFlow(
h_assocdz[count],dzSim);
1439 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
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
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
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
std::vector< MonitorElement * > nTEChits_vs_eta
std::unique_ptr< TrackingParticleSelector > TpSelectorForEfficiencyVsVTXR
std::map< SeedingLayerSetId, unsigned int > seedingLayerSetToBin
std::vector< MonitorElement * > h_hits
MTVHistoProducerAlgoForTracker(const edm::ParameterSet &pset, const bool doSeedPlots, edm::ConsumesCollector &&iC)
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
std::vector< MonitorElement * > h_assoc_dzpvcut_pt
Sin< T >::type sin(const T &t)
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
std::vector< MonitorElement * > h_assoc2pu
std::vector< MonitorElement * > h_pileup_seedingLayerSet
double phi() const
azimuthal angle of momentum vector
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::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
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
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_assocphi
std::unique_ptr< GenParticleCustomSelector > GpSelectorForEfficiencyVsPhi
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_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)
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
std::vector< MonitorElement * > h_assocpT
std::unique_ptr< TrackingParticleSelector > generalTpSelector
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 * > h_seedsFitFailedFraction
std::vector< MonitorElement * > nSTRIPlayersWith2dMeas_vs_eta
std::vector< MonitorElement * > h_tracks
double phiError() const
error on phi
MonitorElement * book1D(Args &&...args)
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
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 * > 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 * > dxyres_vs_eta
std::array< SeedingLayerId, 4 > SeedingLayerSetId
std::vector< std::vector< MonitorElement * > > h_simul2_mvacut_hp
std::vector< MonitorElement * > h_simuldxypv
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_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< 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)
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_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
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_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)
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
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 * > 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
tuple size
Write out results.
std::vector< MonitorElement * > h_assocpixellayer
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