@@ -1330,6 +1330,8 @@ class VarManager : public TObject
13301330 static void FillTrackCollision (T const & track, C const & collision, float * values = nullptr );
13311331 template <int candidateType, uint32_t fillMap, typename T1, typename T2, typename C>
13321332 static void FillTrackCollisionMC (T1 const & track, T2 const & MotherTrack, C const & collision, float * values = nullptr );
1333+ template <int candidateType, typename T1>
1334+ static void FillTrackCollisionMC (T1 const & track, const std::array<double , 3 >& collPos, float massHyp = -1 ., float * values = nullptr );
13331335 template <uint32_t fillMap, typename T, typename C, typename M, typename P>
13341336 static void FillTrackCollisionMatCorr (T const & track, C const & collision, M const & materialCorr, P const & propagator, float * values = nullptr );
13351337 template <typename U, typename T>
@@ -3304,6 +3306,37 @@ void VarManager::FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C
33043306 values[kMCVertexingTauxyzProjected ] = values[kMCVertexingLxyzProjected ] * m / (MotherTrack.p ());
33053307}
33063308
3309+ template <int candidateType, typename T1>
3310+ void VarManager::FillTrackCollisionMC (T1 const & track, const std::array<double , 3 >& collPos, float massHyp, float * values)
3311+ {
3312+
3313+ if (!values) {
3314+ values = fgValues;
3315+ }
3316+
3317+ float m = o2::constants::physics::MassJPsi;
3318+ if (massHyp)
3319+ m = massHyp;
3320+
3321+ // displaced vertex is computed with decay product (track) and vertex collPos
3322+ values[kMCVertexingLxy ] = (collPos[0 ] - track.vx ()) * (collPos[0 ] - track.vx ()) +
3323+ (collPos[1 ] - track.vy ()) * (collPos[1 ] - track.vy ());
3324+ values[kMCVertexingLz ] = (collPos[2 ] - track.vz ()) * (collPos[2 ] - track.vz ());
3325+ values[kMCVertexingLxyz ] = values[kMCVertexingLxy ] + values[kMCVertexingLz ];
3326+ values[kMCVertexingLxy ] = std::sqrt (values[kMCVertexingLxy ]);
3327+ values[kMCVertexingLz ] = std::sqrt (values[kMCVertexingLz ]);
3328+ values[kMCVertexingLxyz ] = std::sqrt (values[kMCVertexingLxyz ]);
3329+ values[kMCVertexingTauz ] = (collPos[2 ] - track.vz ()) * m / (TMath::Abs (track.pz ()) * o2::constants::physics::LightSpeedCm2NS);
3330+ values[kMCVertexingTauxy ] = values[kMCVertexingLxy ] * m / (track.pt () * o2::constants::physics::LightSpeedCm2NS);
3331+
3332+ values[kMCVertexingLzProjected ] = ((track.vz () - collPos[2 ]) * track.pz ()) / TMath::Abs (track.pz ());
3333+ values[kMCVertexingLxyProjected ] = (((track.vx () - collPos[0 ]) * track.px ()) + ((track.vy () - collPos[1 ]) * track.py ())) / TMath::Abs (track.pt ());
3334+ values[kMCVertexingLxyzProjected ] = (((track.vx () - collPos[0 ]) * track.px ()) + ((track.vy () - collPos[1 ]) * track.py ()) + ((track.vz () - collPos[2 ]) * track.pz ())) / track.p ();
3335+ values[kMCVertexingTauxyProjected ] = values[kMCVertexingLxyProjected ] * m / (track.pt ());
3336+ values[kMCVertexingTauzProjected ] = values[kMCVertexingLzProjected ] * m / TMath::Abs (track.pz ());
3337+ values[kMCVertexingTauxyzProjected ] = values[kMCVertexingLxyzProjected ] * m / (track.p ());
3338+ }
3339+
33073340template <int pairType, typename T, typename T1>
33083341void VarManager::FillEnergyCorrelatorsMC (T const & track, T1 const & t1, float * values, float Translow, float Transhigh)
33093342{
0 commit comments