4 namespace PFTrackAlgoTools {
7 const std::vector<double>&
cuts,
8 bool hltIterativeTracking =
true) {
36 return hltIterativeTracking ? cuts[1] : cuts[0];
38 return hltIterativeTracking ? cuts[2] : cuts[0];
42 return hltIterativeTracking ? cuts.at(5) : cuts[0];
47 const std::vector<unsigned int>&
cuts,
48 bool hltIterativeTracking =
true) {
76 return hltIterativeTracking ? cuts[1] : cuts[0];
78 return hltIterativeTracking ? cuts[2] : cuts[0];
82 return hltIterativeTracking ? cuts.at(5) : cuts[0];
109 return errorScale[0];
111 return errorScale[1];
237 const std::vector<double>& DPtovPtCut,
238 const std::vector<unsigned>& NHitCut,
239 bool useIterTracking,
242 if (!trackref->quality(trackQuality))
245 const double p = trackref->p();
246 const double pT = trackref->pt();
247 const double dpT = trackref->ptError();
248 const unsigned int nHit = trackref->hitPattern().trackerLayersWithMeasurement();
250 const unsigned int lostHits = trackref->numberOfLostHits();
251 const double sigmaHad =
std::sqrt(1.20 * 1.20 / p + 0.06 * 0.06) / (1. + lostHits);
257 LogDebug(
"goodPtResolution") <<
" PFBlockAlgo: PFrecTrack->Track Pt= " << pT <<
" DPt = " << dpT << std::endl;
259 double dptCut =
dPtCut(trackref->algo(), DPtovPtCut, useIterTracking);
260 unsigned int nhitCut =
nHitCut(trackref->algo(), NHitCut, useIterTracking);
262 if ((dptCut > 0. && dpT / pT > dptCut * sigmaHad) || nHit < nhitCut) {
263 LogDebug(
"goodPtResolution") <<
" PFBlockAlgo: skip badly measured track"
264 <<
", P = " << p <<
", Pt = " << pT <<
" DPt = " << dpT <<
", N(hits) = " << nHit
265 <<
" (Lost : " << lostHits <<
"/" << nLostHit <<
")"
266 <<
", Algo = " << trackref->algo() << std::endl;
267 LogDebug(
"goodPtResolution") <<
" cut is DPt/Pt < " << dptCut * sigmaHad << std::endl;
268 LogDebug(
"goodPtResolution") <<
" cut is NHit >= " << nhitCut << std::endl;
TrackQuality
track quality
TrackAlgorithm
track algorithm
TkSoA const *__restrict__ CAHitNtupletGeneratorKernelsGPU::QualityCuts cuts