Skip to content

Commit 0706d0c

Browse files
Update VarManager.h with pV recal with daughter track removal
1 parent 653ea43 commit 0706d0c

File tree

1 file changed

+48
-1
lines changed

1 file changed

+48
-1
lines changed

PWGDQ/Core/VarManager.h

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,13 +701,16 @@ class VarManager : public TObject
701701
kMCVertexingTauxy,
702702
kVertexingLzProjected,
703703
kVertexingLxyProjected,
704+
kVertexingLxyProjectedRecalculatePV,
704705
kVertexingLxyzProjected,
705706
kMCVertexingLzProjected,
706707
kMCVertexingLxyProjected,
707708
kMCVertexingLxyzProjected,
708709
kVertexingTauzProjected,
709710
kVertexingTauxyProjected,
710711
kVertexingTauxyProjectedPoleJPsiMass,
712+
kVertexingTauxyProjectedPoleJPsiMass,
713+
kVertexingTauxyProjectedPoleJPsiMassRecalculatePV,
711714
kVertexingTauxyProjectedNs,
712715
kVertexingTauxyzProjected,
713716
kMCVertexingTauzProjected,
@@ -1236,7 +1239,8 @@ class VarManager : public TObject
12361239
}
12371240
return deltaPsi;
12381241
}
1239-
1242+
template <typename T, typename T1>
1243+
static o2::dataformats::VertexBase RecalculatePrimaryVertex(T const& track0, T const& track1, const T1& collision);
12401244
template <typename T, typename C>
12411245
static o2::track::TrackParCovFwd FwdToTrackPar(const T& track, const C& cov);
12421246
template <typename T, typename C>
@@ -1558,6 +1562,43 @@ KFPVertex VarManager::createKFPVertexFromCollision(const T& collision)
15581562
return kfpVertex;
15591563
}
15601564

1565+
template <typename T, typename T1>
1566+
o2::dataformats::VertexBase VarManager::RecalculatePrimaryVertex(T const& track0, T const& track1, const T1& collision)
1567+
{
1568+
KFParticle trk0KF;
1569+
KFPTrack kfpTrack0 = createKFPTrackFromTrack(track0);
1570+
trk0KF = KFParticle(kfpTrack0, -11 * track0.sign());
1571+
KFParticle trk1KF;
1572+
KFPTrack kfpTrack1 = createKFPTrackFromTrack(track1);
1573+
trk1KF = KFParticle(kfpTrack1, -11 * track1.sign());
1574+
1575+
KFParticle kVtx;
1576+
kVtx.Initialize();
1577+
kVtx.Parameter(0) = collision.posX();
1578+
kVtx.Parameter(1) = collision.posY();
1579+
kVtx.Parameter(2) = collision.posZ();
1580+
kVtx.Covariance(0) = collision.covXX();
1581+
kVtx.Covariance(1) = collision.covXY();
1582+
kVtx.Covariance(2) = collision.covYY();
1583+
kVtx.Covariance(3) = collision.covXZ();
1584+
kVtx.Covariance(4) = collision.covYZ();
1585+
kVtx.Covariance(5) = collision.covZZ();
1586+
kVtx.Chi2() = collision.chi2(); // FIX THIS! to be added in AliReducedEventInfo
1587+
kVtx.NDF() = 2 * collision.multNTracksPV() - 3;
1588+
// KFVertex kfpVertex(kVtx); // kfpVertex.Initialize();
1589+
1590+
if ((track0.flags() & o2::aod::track::PVContributor) > 0) {
1591+
trk0KF.SubtractFromVertex(kVtx); /*printf("track1 -> subtracting \n");*/
1592+
}
1593+
if ((track1.flags() & o2::aod::track::PVContributor) > 0) {
1594+
trk1KF.SubtractFromVertex(kVtx); /*printf("track2 -> subtracting \n");*/
1595+
}
1596+
1597+
o2::math_utils::Point3D<float> vtxXYZ(kVtx.Parameter(0), kVtx.Parameter(1), kVtx.Parameter(2));
1598+
std::array<float, 6> vtxCov{kVtx.Covariance(0), kVtx.Covariance(1), kVtx.Covariance(2), kVtx.Covariance(3), kVtx.Covariance(4), kVtx.Covariance(5)};
1599+
o2::dataformats::VertexBase primaryVertexRec = {std::move(vtxXYZ), std::move(vtxCov)};
1600+
return primaryVertexRec;
1601+
}
15611602
template <typename T, typename C>
15621603
o2::dataformats::GlobalFwdTrack VarManager::PropagateMuon(const T& muon, const C& collision, const int endPoint)
15631604
{
@@ -4139,6 +4180,7 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2,
41394180
}
41404181

41414182
Vec3D secondaryVertex;
4183+
o2::dataformats::VertexBase primaryVertexNew;
41424184

41434185
if constexpr (eventHasVtxCov) {
41444186

@@ -4161,6 +4203,7 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2,
41614203
v1 = {trackParVar0.getPt(), trackParVar0.getEta(), trackParVar0.getPhi(), m1};
41624204
v2 = {trackParVar1.getPt(), trackParVar1.getEta(), trackParVar1.getPhi(), m2};
41634205
v12 = v1 + v2;
4206+
primaryVertexNew = RecalculatePrimaryVertex(t1, t2, collision);
41644207

41654208
} else if constexpr (pairType == kDecayToMuMu && muonHasCov) {
41664209
// Get pca candidate from forward DCA fitter
@@ -4218,9 +4261,13 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2,
42184261
values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py()));
42194262
values[kVertexingLxyzProjected] = ((secondaryVertex[0] - collision.posX()) * v12.Px()) + ((secondaryVertex[1] - collision.posY()) * v12.Py()) + ((secondaryVertex[2] - collision.posZ()) * v12.Pz());
42204263
values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py()) + (v12.Pz() * v12.Pz()));
4264+
values[kVertexingLxyProjectedRecalculatePV] = (secondaryVertex[0] - primaryVertexNew.getX()) * v12.Px() + (secondaryVertex[1] - primaryVertexNew.getY()) * v12.Py();
4265+
values[kVertexingLxyProjectedRecalculatePV] = values[kVertexingLxyProjectedRecalculatePV] / v12.Pt();
4266+
42214267
values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * v12.M() / (v12.Pt());
42224268
values[kVertexingTauxyProjectedPoleJPsiMass] = values[kVertexingLxyProjected] * o2::constants::physics::MassJPsi / (v12.Pt());
42234269
values[kVertexingTauxyProjectedNs] = values[kVertexingTauxyProjected] / o2::constants::physics::LightSpeedCm2NS;
4270+
values[kVertexingTauxyProjectedPoleJPsiMassRecalculatePV] = values[kVertexingLxyProjectedRecalculatePV] * o2::constants::physics::MassJPsi / (v12.Pt());
42244271
values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v12.M() / TMath::Abs(v12.Pz());
42254272
values[kVertexingTauxyzProjected] = values[kVertexingLxyzProjected] * v12.M() / (v12.P());
42264273
}

0 commit comments

Comments
 (0)