175 if (trk.getNtracklets() < npntCut) {
179 static bool firstCall =
true;
188 const auto trackletsRaw = recoData->getTRDTracklets();
190 int nPntIni = algTrack->
getNPoints(), npoints = 0;
193 if (trk.getTrackletIndex(il) == -1) {
196 int trkltId = trk.getTrackletIndex(il);
197 const auto& trackletRaw = trackletsRaw[trkltId];
198 const auto trackletCalibLoc = transformer->transformTracklet(trackletRaw,
false);
199 int trkltDet = trackletRaw.getDetector();
201 if (sensor->isDummy()) {
202 LOGP(error,
"Dummy sensor {} is referred by a track", trkltDet);
206 double locXYZ[3] = {trackletCalibLoc.getX(), trackletCalibLoc.getY(), trackletCalibLoc.getZ()}, locXYZC[3], traXYZ[3];
207 const auto& matAlg = sensor->getMatrixClAlg();
208 matAlg.LocalToMaster(locXYZ, locXYZC);
209 const auto& mat = sensor->getMatrixT2L();
210 mat.MasterToLocal(locXYZC, traXYZ);
211 int trkltSec = sensor->getSector();
212 float alpSens = sensor->getAlpTracking();
214 !trkParam.rotateParam(alpSens) ||
215 !propagator->propagateTo(trkParam, traXYZ[0], propagator->getNominalBz(),
o2::base::Propagator::MAX_SIN_PHI, 10., o2::base::Propagator::MatCorrType::USEMatCorrNONE)) {
220 float tilt = std::tan(TMath::DegToRad() * pad->getTiltingAngle());
221 float tiltCorrUp = tilt * (traXYZ[2] - trkParam.getZ());
223 float padLength = pad->getRowSize(trackletRaw.getPadRow());
224 if (std::fabs(traXYZ[2] - trkParam.getZ()) < padLength) {
227 std::array<float, 2> trkltPosUp{float(traXYZ[1] - tiltCorrUp), zPosCorrUp};
228 std::array<float, 3> trkltCovUp;
229 mRecoParam.recalcTrkltCov(tilt, trkParam.getSnp(), pad->getRowSize(trackletRaw.getPadRow()), trkltCovUp);
234 auto snp = trkParam.getSnp();
235 auto slpY = snp / std::sqrt((1.f - snp) * (1.f + snp));
236 trkltPosUp[0] += slpY * dvt;
239 auto& pnt = algTrack->addDetectorPoint();
240 const auto* sysE = sensor->getAddError();
241 pnt.setYZErrTracking(trkltCovUp[0] + sysE[0] * sysE[0], trkltCovUp[1], trkltCovUp[2] + sysE[1] * sysE[1]);
243 pnt.setNeedUpdateFromTrack();
245 pnt.setXYZTracking(traXYZ[0], trkltPosUp[0], trkltPosUp[1]);
246 pnt.setSensor(sensor);
247 pnt.setAlphaSens(alpSens);
248 pnt.setXSens(sensor->getXTracking());
250 pnt.setSID(sensor->getSID());
251 pnt.setContainsMeasurement();
257 algTrack->suppressLastPoints(npoints);