1818#define O2_MCH_TRACKEXTRAP_H_
1919
2020#include < cstddef>
21+ #include < optional>
2122
2223#include < TMatrixD.h>
2324
@@ -70,17 +71,21 @@ class TrackExtrap
7071 // / Add branson correction resolution to parameter covariances
7172 return extrapToVertex (trackParam, xVtx, yVtx, zVtx, errXVtx, errYVtx, true , false );
7273 }
73- static bool extrapToVertexWithoutBranson (TrackParam& trackParam, double zVtx)
74+ static bool extrapToVertexWithoutBranson (TrackParam& trackParam, double zVtx,
75+ double xUpstream = 0 ., double yUpstream = 0 .,
76+ std::optional<double > zUpstream = std::nullopt )
7477 {
7578 // / Extrapolate track parameters to vertex, corrected for energy loss effects only
7679 // / Add dispersion due to multiple scattering and energy loss fluctuation to parameter covariances
77- return extrapToVertex (trackParam, 0 ., 0 ., zVtx, 0 ., 0 ., false , true );
80+ return extrapToVertex (trackParam, 0 ., 0 ., zVtx, 0 ., 0 ., false , true , xUpstream, yUpstream, zUpstream );
7881 }
79- static bool extrapToVertexUncorrected (TrackParam& trackParam, double zVtx)
82+ static bool extrapToVertexUncorrected (TrackParam& trackParam, double zVtx,
83+ double xUpstream = 0 ., double yUpstream = 0 .,
84+ std::optional<double > zUpstream = std::nullopt )
8085 {
8186 // / Extrapolate track parameters to vertex without multiple scattering and energy loss corrections
8287 // / Add dispersion due to multiple scattering to parameter covariances
83- return extrapToVertex (trackParam, 0 ., 0 ., zVtx, 0 ., 0 ., false , false );
88+ return extrapToVertex (trackParam, 0 ., 0 ., zVtx, 0 ., 0 ., false , false , xUpstream, yUpstream, zUpstream );
8489 }
8590
8691 static bool extrapToMID (TrackParam& trackParam);
@@ -92,7 +97,8 @@ class TrackExtrap
9297
9398 private:
9499 static bool extrapToVertex (TrackParam& trackParam, double xVtx, double yVtx, double zVtx,
95- double errXVtx, double errYVtx, bool correctForMCS, bool correctForEnergyLoss);
100+ double errXVtx, double errYVtx, bool correctForMCS, bool correctForEnergyLoss,
101+ double xUpstream = 0 ., double yUpstream = 0 ., std::optional<double > zUpstream = std::nullopt );
96102
97103 static bool getAbsorberCorrectionParam (double trackXYZIn[3 ], double trackXYZOut[3 ], double pTotal,
98104 double & pathLength, double & f0, double & f1, double & f2,
0 commit comments