174 if (trk.getNtracklets() < npntCut) {
178 static float prevBz = -99999.;
179 if (prevBz != propagator->getNominalBz()) {
180 prevBz = propagator->getNominalBz();
185 const auto trackletsRaw = recoData->getTRDTracklets();
187 int nPntIni = algTrack->
getNPoints(), npoints = 0;
190 if (trk.getTrackletIndex(il) == -1) {
193 int trkltId = trk.getTrackletIndex(il);
194 const auto& trackletRaw = trackletsRaw[trkltId];
195 const auto trackletCalibLoc = transformer->transformTracklet(trackletRaw,
false);
196 int trkltDet = trackletRaw.getDetector();
198 if (sensor->isDummy()) {
199 LOGP(error,
"Dummy sensor {} is referred by a track", trkltDet);
203 double locXYZ[3] = {trackletCalibLoc.getX(), trackletCalibLoc.getY(), trackletCalibLoc.getZ()}, locXYZC[3], traXYZ[3];
204 const auto& matAlg = sensor->getMatrixClAlg();
205 matAlg.LocalToMaster(locXYZ, locXYZC);
206 const auto& mat = sensor->getMatrixT2L();
207 mat.MasterToLocal(locXYZC, traXYZ);
208 int trkltSec = sensor->getSector();
209 float alpSens = sensor->getAlpTracking();
211 !trkParam.rotateParam(alpSens) ||
212 !propagator->propagateTo(trkParam, traXYZ[0], propagator->getNominalBz(),
o2::base::Propagator::MAX_SIN_PHI, 10., o2::base::Propagator::MatCorrType::USEMatCorrNONE)) {
217 float tilt = std::tan(TMath::DegToRad() * pad->getTiltingAngle());
218 float tiltCorrUp = tilt * (traXYZ[2] - trkParam.getZ());
220 float padLength = pad->getRowSize(trackletRaw.getPadRow());
221 if (std::fabs(traXYZ[2] - trkParam.getZ()) < padLength) {
224 std::array<float, 2> trkltPosUp{float(traXYZ[1] - tiltCorrUp), zPosCorrUp};
225 std::array<float, 3> trkltCovUp;
231 auto snp = trkParam.getSnp();
232 auto slpY = snp / std::sqrt((1.f - snp) * (1.f + snp));
233 trkltPosUp[0] += slpY * dvt;
236 auto& pnt = algTrack->addDetectorPoint();
237 const auto* sysE = sensor->getAddError();
238 pnt.setYZErrTracking(trkltCovUp[0] + sysE[0] * sysE[0], trkltCovUp[1], trkltCovUp[2] + sysE[1] * sysE[1]);
240 pnt.setNeedUpdateFromTrack();
242 pnt.setXYZTracking(traXYZ[0], trkltPosUp[0], trkltPosUp[1]);
243 pnt.setSensor(sensor);
244 pnt.setAlphaSens(alpSens);
245 pnt.setXSens(sensor->getXTracking());
247 pnt.setSID(sensor->getSID());
248 pnt.setContainsMeasurement();
254 algTrack->suppressLastPoints(npoints);
void recalcTrkltCov(const float tilt, const float snp, const float rowSize, std::array< float, 3 > &cov) const
Recalculate tracklet covariance based on phi angle of related track.