@@ -663,7 +663,7 @@ void TrackInterpolation::interpolateTrack(int iSeed)
663663 const auto & trkTRD = mRecoCont ->getITSTPCTRDTrack <o2::trd::TrackTRD>(gidTable[GTrackID::ITSTPCTRD]);
664664 for (int iLayer = 0 ; iLayer < o2::trd::constants::NLAYER; iLayer++) {
665665 std::array<float , 2 > trkltTRDYZ{};
666- int res = processTRDLayer (trkTRD, iLayer, trkWork, &trkltTRDYZ);
666+ int res = processTRDLayer (trkTRD, iLayer, trkWork, &trkltTRDYZ, nullptr , &trackData );
667667 if (res == -1 ) { // no traklet on this layer
668668 continue ;
669669 }
@@ -757,7 +757,7 @@ void TrackInterpolation::interpolateTrack(int iSeed)
757757}
758758
759759int TrackInterpolation::processTRDLayer (const o2::trd::TrackTRD& trkTRD, int iLayer, o2::track::TrackParCov& trkWork,
760- std::array<float , 2 >* trkltTRDYZ, std::array<float , 3 >* trkltTRDCov)
760+ std::array<float , 2 >* trkltTRDYZ, std::array<float , 3 >* trkltTRDCov, TrackData* trkData )
761761{
762762 // return chamber ID (0:539) in case of successful processing, -1 if there is no TRD tracklet at given layer, -2 if processing failed
763763 int trkltIdx = trkTRD.getTrackletIndex (iLayer);
@@ -793,6 +793,12 @@ int TrackInterpolation::processTRDLayer(const o2::trd::TrackTRD& trkTRD, int iLa
793793 mRecoParam .recalcTrkltCov (tilt, trkWork.getSnp (), pad->getRowSize (trdTrklt.getPadRow ()), *trkltTRDCov);
794794 }
795795 }
796+ if (trkData) {
797+ auto slope = trdSP.getDy ();
798+ if (std::abs (slope) < param::MaxTRDSlope) {
799+ trkData->TRDTrkltSlope [iLayer] = slope * 0x7fff / param::MaxTRDSlope;
800+ }
801+ }
796802 return trkltDet;
797803}
798804
@@ -915,9 +921,10 @@ void TrackInterpolation::extrapolateTrack(int iSeed)
915921 const auto & gidTableFull = mGIDtables [iSeedFull];
916922 if (gidTableFull[GTrackID::TRD].isIndexSet ()) {
917923 const auto & trkTRD = mRecoCont ->getITSTPCTRDTrack <o2::trd::TrackTRD>(gidTableFull[GTrackID::ITSTPCTRD]);
924+ trackData.nTrkltsTRD = trkTRD.getNtracklets ();
918925 for (int iLayer = 0 ; iLayer < o2::trd::constants::NLAYER; iLayer++) {
919926 std::array<float , 2 > trkltTRDYZ{};
920- int res = processTRDLayer (trkTRD, iLayer, trkWork, &trkltTRDYZ);
927+ int res = processTRDLayer (trkTRD, iLayer, trkWork, &trkltTRDYZ, nullptr , &trackData );
921928 if (res == -1 ) { // no traklet on this layer
922929 continue ;
923930 }
@@ -932,7 +939,6 @@ void TrackInterpolation::extrapolateTrack(int iSeed)
932939 const auto sec = clusterResiduals[iCl].sec ;
933940 if ((std::abs (dy) < param::MaxResid) && (std::abs (dz) < param::MaxResid) && (std::abs (trkWork.getY ()) < param::MaxY) && (std::abs (trkWork.getZ ()) < param::MaxZ) && (std::abs (tgPhi) < param::MaxTgSlp)) {
934941 mClRes .emplace_back (dy, dz, tgPhi, trkWork.getY (), trkWork.getZ (), 160 + iLayer, o2::math_utils::angle2Sector (trkWork.getAlpha ()), (short )res);
935- trackData.nTrkltsTRD ++;
936942 trackData.nExtDetResid ++;
937943 }
938944 }
0 commit comments