Skip to content

Commit 03f975b

Browse files
[PWGDQ] pV recal with daughter track removal (#14677)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 11ce4cc commit 03f975b

File tree

3 files changed

+55
-3
lines changed

3 files changed

+55
-3
lines changed

PWGDQ/Core/HistogramsLibrary.cxx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,17 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
8282
}
8383
if (subGroupStr.Contains("vtxpp")) {
8484
hm->AddHistogram(histClass, "VtxNContrib", "Vtx n contributors", false, 100, 0.0, 100.0, VarManager::kVtxNcontrib);
85+
hm->AddHistogram(histClass, "VtxNContrib_VtxNContribReal", "VtxNContrib_VtxNContribReal", false, 200, 0.0, 200.0, VarManager::kVtxNcontrib, 200, 0.0, 200.0, VarManager::kVtxNcontribReal);
86+
hm->AddHistogram(histClass, "VtxNContribReal_kMultFT0C", "VtxNContribReal_kMultFT0C", false, 200, 0.0, 200.0, VarManager::kVtxNcontrib, 2500, 0.0, 25000, VarManager::kMultFT0C);
87+
hm->AddHistogram(histClass, "VtxNContribReal_kMultFT0A", "VtxNContribReal_kMultFT0A", false, 200, 0.0, 200.0, VarManager::kVtxNcontrib, 2500, 0.0, 25000, VarManager::kMultFT0A);
8588
}
8689
if (subGroupStr.Contains("vtxPbPb")) {
8790
hm->AddHistogram(histClass, "VtxNContrib", "Vtx n contributors", false, 100, 0.0, 20000.0, VarManager::kVtxNcontrib);
8891
}
8992
if (subGroupStr.Contains("cent")) {
9093
hm->AddHistogram(histClass, "CentFT0C", "CentFT0C", false, 100, 0., 100., VarManager::kCentFT0C);
94+
hm->AddHistogram(histClass, "CentFT0M", "CentFT0M", false, 100, 0., 100., VarManager::kCentFT0M);
95+
hm->AddHistogram(histClass, "CentFT0M_VtxNContribReal", "CentFT0M_VtxNContribReal", false, 100, 0.0, 100.0, VarManager::kCentFT0M, 200, 0.0, 200.0, VarManager::kVtxNcontribReal);
9196
hm->AddHistogram(histClass, "CentFT0C_vtxZ", "CentFT0C vs Vtx Z", false, 60, -15.0, 15.0, VarManager::kVtxZ, 20, 0., 100., VarManager::kCentFT0C);
9297
hm->AddHistogram(histClass, "CentFT0C_MultTPC", "CentFT0C vs MultTPC", false, 100, 0., 100., VarManager::kCentFT0C, 100, 0., 50000., VarManager::kMultTPC);
9398
hm->AddHistogram(histClass, "CentFT0C_Run", "Cent FT0C", true, 1, -0.5, 0.5, VarManager::kRunNo, 100, 0., 100., VarManager::kCentFT0C, 1, 0, 1, VarManager::kNothing, "", "", "", VarManager::kNothing, VarManager::kNothing, false, true);

PWGDQ/Core/VarManager.h

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,13 +701,15 @@ 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+
kVertexingTauxyProjectedPoleJPsiMassRecalculatePV,
711713
kVertexingTauxyProjectedNs,
712714
kVertexingTauxyzProjected,
713715
kMCVertexingTauzProjected,
@@ -1236,7 +1238,8 @@ class VarManager : public TObject
12361238
}
12371239
return deltaPsi;
12381240
}
1239-
1241+
template <typename T, typename T1>
1242+
static o2::dataformats::VertexBase RecalculatePrimaryVertex(T const& track0, T const& track1, const T1& collision);
12401243
template <typename T, typename C>
12411244
static o2::track::TrackParCovFwd FwdToTrackPar(const T& track, const C& cov);
12421245
template <typename T, typename C>
@@ -1558,6 +1561,43 @@ KFPVertex VarManager::createKFPVertexFromCollision(const T& collision)
15581561
return kfpVertex;
15591562
}
15601563

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

41414181
Vec3D secondaryVertex;
4182+
o2::dataformats::VertexBase primaryVertexNew;
41424183

41434184
if constexpr (eventHasVtxCov) {
41444185

@@ -4161,6 +4202,7 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2,
41614202
v1 = {trackParVar0.getPt(), trackParVar0.getEta(), trackParVar0.getPhi(), m1};
41624203
v2 = {trackParVar1.getPt(), trackParVar1.getEta(), trackParVar1.getPhi(), m2};
41634204
v12 = v1 + v2;
4205+
primaryVertexNew = RecalculatePrimaryVertex(t1, t2, collision);
41644206

41654207
} else if constexpr (pairType == kDecayToMuMu && muonHasCov) {
41664208
// Get pca candidate from forward DCA fitter
@@ -4218,9 +4260,13 @@ void VarManager::FillPairVertexing(C const& collision, T const& t1, T const& t2,
42184260
values[kVertexingLxyProjected] = values[kVertexingLxyProjected] / TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py()));
42194261
values[kVertexingLxyzProjected] = ((secondaryVertex[0] - collision.posX()) * v12.Px()) + ((secondaryVertex[1] - collision.posY()) * v12.Py()) + ((secondaryVertex[2] - collision.posZ()) * v12.Pz());
42204262
values[kVertexingLxyzProjected] = values[kVertexingLxyzProjected] / TMath::Sqrt((v12.Px() * v12.Px()) + (v12.Py() * v12.Py()) + (v12.Pz() * v12.Pz()));
4263+
values[kVertexingLxyProjectedRecalculatePV] = (secondaryVertex[0] - primaryVertexNew.getX()) * v12.Px() + (secondaryVertex[1] - primaryVertexNew.getY()) * v12.Py();
4264+
values[kVertexingLxyProjectedRecalculatePV] = values[kVertexingLxyProjectedRecalculatePV] / v12.Pt();
4265+
42214266
values[kVertexingTauxyProjected] = values[kVertexingLxyProjected] * v12.M() / (v12.Pt());
42224267
values[kVertexingTauxyProjectedPoleJPsiMass] = values[kVertexingLxyProjected] * o2::constants::physics::MassJPsi / (v12.Pt());
42234268
values[kVertexingTauxyProjectedNs] = values[kVertexingTauxyProjected] / o2::constants::physics::LightSpeedCm2NS;
4269+
values[kVertexingTauxyProjectedPoleJPsiMassRecalculatePV] = values[kVertexingLxyProjectedRecalculatePV] * o2::constants::physics::MassJPsi / (v12.Pt());
42244270
values[kVertexingTauzProjected] = values[kVertexingLzProjected] * v12.M() / TMath::Abs(v12.Pz());
42254271
values[kVertexingTauxyzProjected] = values[kVertexingLxyzProjected] * v12.M() / (v12.P());
42264272
}

PWGDQ/Tasks/tableReader_withAssoc.cxx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ DECLARE_SOA_COLUMN(Massee, massJPsi2ee, float);
150150
DECLARE_SOA_COLUMN(Ptee, ptJPsi2ee, float);
151151
DECLARE_SOA_COLUMN(Lxyee, lxyJPsi2ee, float);
152152
DECLARE_SOA_COLUMN(LxyeePoleMass, lxyJPsi2eePoleMass, float);
153+
DECLARE_SOA_COLUMN(LRecalxyeePoleMass, lRecalxyeePoleMass, float);
153154
DECLARE_SOA_COLUMN(Lzee, lzJPsi2ee, float);
154155
DECLARE_SOA_COLUMN(AmbiguousInBunchPairs, AmbiguousJpsiPairsInBunch, bool);
155156
DECLARE_SOA_COLUMN(AmbiguousOutOfBunchPairs, AmbiguousJpsiPairsOutOfBunch, bool);
@@ -189,7 +190,7 @@ DECLARE_SOA_TABLE(JPsiMuonCandidates, "AOD", "DQJPSIMUONA",
189190
dqanalysisflags::DeltaEta, dqanalysisflags::DeltaPhi,
190191
dqanalysisflags::MassDileptonCandidate, dqanalysisflags::Ptpair, dqanalysisflags::Etapair, dqanalysisflags::Ptassoc, dqanalysisflags::Etaassoc, dqanalysisflags::Phiassoc,
191192
dqanalysisflags::Ptleg1, dqanalysisflags::Etaleg1, dqanalysisflags::Phileg1, dqanalysisflags::Ptleg2, dqanalysisflags::Etaleg2, dqanalysisflags::Phileg2);
192-
DECLARE_SOA_TABLE(JPsieeCandidates, "AOD", "DQPSEUDOPROPER", dqanalysisflags::Massee, dqanalysisflags::Ptee, dqanalysisflags::Lxyee, dqanalysisflags::LxyeePoleMass, dqanalysisflags::Lzee, dqanalysisflags::AmbiguousInBunchPairs, dqanalysisflags::AmbiguousOutOfBunchPairs, dqanalysisflags::MultiplicityFT0A, dqanalysisflags::MultiplicityFT0C, dqanalysisflags::PercentileFT0M, dqanalysisflags::MultiplicityNContrib);
193+
DECLARE_SOA_TABLE(JPsieeCandidates, "AOD", "DQPSEUDOPROPER", dqanalysisflags::Massee, dqanalysisflags::Ptee, dqanalysisflags::Lxyee, dqanalysisflags::LxyeePoleMass, dqanalysisflags::Lzee, dqanalysisflags::LRecalxyeePoleMass, dqanalysisflags::AmbiguousInBunchPairs, dqanalysisflags::AmbiguousOutOfBunchPairs, dqanalysisflags::MultiplicityFT0A, dqanalysisflags::MultiplicityFT0C, dqanalysisflags::PercentileFT0M, dqanalysisflags::MultiplicityNContrib);
193194
} // namespace o2::aod
194195

195196
// Declarations of various short names
@@ -1983,7 +1984,7 @@ struct AnalysisSameEventPairing {
19831984
}
19841985
}
19851986
if (sign1 * sign2 < 0) {
1986-
PromptNonPromptSepTable(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMass], VarManager::fgValues[VarManager::kVertexingTauzProjected], isAmbiInBunch, isAmbiOutOfBunch, VarManager::fgValues[VarManager::kMultFT0A], VarManager::fgValues[VarManager::kMultFT0C], VarManager::fgValues[VarManager::kCentFT0M], VarManager::fgValues[VarManager::kVtxNcontribReal]);
1987+
PromptNonPromptSepTable(VarManager::fgValues[VarManager::kMass], VarManager::fgValues[VarManager::kPt], VarManager::fgValues[VarManager::kVertexingTauxyProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMass], VarManager::fgValues[VarManager::kVertexingTauzProjected], VarManager::fgValues[VarManager::kVertexingTauxyProjectedPoleJPsiMassRecalculatePV], isAmbiInBunch, isAmbiOutOfBunch, VarManager::fgValues[VarManager::kMultFT0A], VarManager::fgValues[VarManager::kMultFT0C], VarManager::fgValues[VarManager::kCentFT0M], VarManager::fgValues[VarManager::kVtxNcontribReal]);
19871988
if constexpr (TPairType == VarManager::kDecayToMuMu) {
19881989
fHistMan->FillHistClass(histNames[icut][0].Data(), VarManager::fgValues);
19891990
if (fConfigAmbiguousMuonHistograms) {

0 commit comments

Comments
 (0)