175 if (trk.getNtracklets() < npntCut) {
179 static bool firstCall =
true;
186 const auto trackletsRaw = recoData->getTRDTracklets();
188 int nPntIni = algTrack->
getNPoints(), npoints = 0;
191 if (trk.getTrackletIndex(il) == -1) {
194 int trkltId = trk.getTrackletIndex(il);
195 const auto& trackletRaw = trackletsRaw[trkltId];
196 const auto trackletCalibLoc = transformer->transformTracklet(trackletRaw,
false);
197 int trkltDet = trackletRaw.getDetector();
199 if (sensor->isDummy()) {
200 LOGP(error,
"Dummy sensor {} is referred by a track", trkltDet);
204 double locXYZ[3] = {trackletCalibLoc.getX(), trackletCalibLoc.getY(), trackletCalibLoc.getZ()}, locXYZC[3], traXYZ[3];
205 const auto& matAlg = sensor->getMatrixClAlg();
206 matAlg.LocalToMaster(locXYZ, locXYZC);
207 const auto& mat = sensor->getMatrixT2L();
208 mat.MasterToLocal(locXYZC, traXYZ);
209 int trkltSec = sensor->getSector();
210 float alpSens = sensor->getAlpTracking();
212 !trkParam.rotateParam(alpSens) ||
213 !propagator->propagateTo(trkParam, traXYZ[0], propagator->getNominalBz(),
o2::base::Propagator::MAX_SIN_PHI, 10., o2::base::Propagator::MatCorrType::USEMatCorrNONE)) {
218 float tilt = std::tan(TMath::DegToRad() * pad->getTiltingAngle());
219 float tiltCorrUp = tilt * (traXYZ[2] - trkParam.getZ());
221 float padLength = pad->getRowSize(trackletRaw.getPadRow());
222 if (std::fabs(traXYZ[2] - trkParam.getZ()) < padLength) {
225 std::array<float, 2> trkltPosUp{float(traXYZ[1] - tiltCorrUp), zPosCorrUp};
226 std::array<float, 3> trkltCovUp;
227 mRecoParam.recalcTrkltCov(tilt, trkParam.getSnp(), pad->getRowSize(trackletRaw.getPadRow()), trkltCovUp);
232 auto snp = trkParam.getSnp();
233 auto slpY = snp / std::sqrt((1.f - snp) * (1.f + snp));
234 trkltPosUp[0] += slpY * dvt;
237 auto& pnt = algTrack->addDetectorPoint();
238 const auto* sysE = sensor->getAddError();
239 pnt.setYZErrTracking(trkltCovUp[0] + sysE[0] * sysE[0], trkltCovUp[1], trkltCovUp[2] + sysE[1] * sysE[1]);
241 pnt.setNeedUpdateFromTrack();
243 pnt.setXYZTracking(traXYZ[0], trkltPosUp[0], trkltPosUp[1]);
244 pnt.setSensor(sensor);
245 pnt.setAlphaSens(alpSens);
246 pnt.setXSens(sensor->getXTracking());
248 pnt.setSID(sensor->getSID());
249 pnt.setContainsMeasurement();
255 algTrack->suppressLastPoints(npoints);