@@ -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>
@@ -3301,6 +3303,36 @@ void VarManager::FillTrackCollisionMC(T1 const& track, T2 const& MotherTrack, C
33013303 values[kMCVertexingTauxyzProjected ] = values[kMCVertexingLxyzProjected ] * m / (MotherTrack.p ());
33023304}
33033305
3306+ template <int candidateType, typename T1>
3307+ void VarManager::FillTrackCollisionMC (T1 const & track, const std::array<double , 3 >& collPos, float massHyp, float * values){
3308+
3309+ if (!values) {
3310+ values = fgValues;
3311+ }
3312+
3313+ float m = o2::constants::physics::MassJPsi;
3314+ if (massHyp) m = massHyp;
3315+
3316+ // displaced vertex is computed with decay product (track) and vertex collPos
3317+ values[kMCVertexingLxy ] = (collPos[0 ]-track.vx ()) * (collPos[0 ]-track.vx ()) +
3318+ (collPos[1 ]-track.vy ()) * (collPos[1 ]-track.vy ());
3319+ values[kMCVertexingLz ] = (collPos[2 ]-track.vz ()) * (collPos[2 ]-track.vz ());
3320+ values[kMCVertexingLxyz ] = values[kMCVertexingLxy ] + values[kMCVertexingLz ];
3321+ values[kMCVertexingLxy ] = std::sqrt (values[kMCVertexingLxy ]);
3322+ values[kMCVertexingLz ] = std::sqrt (values[kMCVertexingLz ]);
3323+ values[kMCVertexingLxyz ] = std::sqrt (values[kMCVertexingLxyz ]);
3324+ values[kMCVertexingTauz ] = (collPos[2 ]-track.vz ()) * m / (TMath::Abs (track.pz ()) * o2::constants::physics::LightSpeedCm2NS);
3325+ values[kMCVertexingTauxy ] = values[kMCVertexingLxy ] * m / (track.pt () * o2::constants::physics::LightSpeedCm2NS);
3326+
3327+ values[kMCVertexingLzProjected ] = ((track.vz ()-collPos[2 ]) * track.pz ()) / TMath::Abs (track.pz ());
3328+ values[kMCVertexingLxyProjected ] = (((track.vx ()-collPos[0 ]) * track.px ()) + ((track.vy ()-collPos[1 ]) * track.py ())) / TMath::Abs (track.pt ());
3329+ values[kMCVertexingLxyzProjected ] = (((track.vx ()-collPos[0 ]) * track.px ()) + ((track.vy ()-collPos[1 ]) * track.py ()) + ((track.vz ()-collPos[2 ]) * track.pz ())) / track.p ();
3330+ values[kMCVertexingTauxyProjected ] = values[kMCVertexingLxyProjected ] * m / (track.pt ());
3331+ values[kMCVertexingTauzProjected ] = values[kMCVertexingLzProjected ] * m / TMath::Abs (track.pz ());
3332+ values[kMCVertexingTauxyzProjected ] = values[kMCVertexingLxyzProjected ] * m / (track.p ());
3333+ }
3334+
3335+
33043336template <int pairType, typename T, typename T1>
33053337void VarManager::FillEnergyCorrelatorsMC (T const & track, T1 const & t1, float * values, float Translow, float Transhigh)
33063338{
0 commit comments