Skip to content

Commit ebb75e6

Browse files
authored
[PWGDQ] Implement DQ Global Track Estimator (#18684)
1 parent b7c2920 commit ebb75e6

10 files changed

Lines changed: 445 additions & 22 deletions

‎PWGDQ/Core/HistogramsLibrary.cxx‎

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
131131
hm->AddHistogram(histClass, "MultFDDC", "MultFDDC", false, 1000, 0.0, 25000.0, VarManager::kMultFDDC);
132132
hm->AddHistogram(histClass, "MultTracklets", "MultTracklets", false, 250, 0.0, 250.0, VarManager::kMultTracklets);
133133
hm->AddHistogram(histClass, "VtxNContribReal", "Vtx n contributors", false, 150, 0.0, 150.0, VarManager::kVtxNcontribReal);
134+
hm->AddHistogram(histClass, "kMultNtrkGlobal", "kMultNtrkGlobal", false, 150, 0.0, 150.0, VarManager::kMultNtrkGlobal);
134135
hm->AddHistogram(histClass, "VtxNContrib", "Vtx n contributors", false, 100, 0.0, 100.0, VarManager::kVtxNcontrib);
135136
hm->AddHistogram(histClass, "MultNTracksPVeta1", "MultNTracksPVeta1", false, 150, 0, 150.0, VarManager::kMultNTracksPVeta1);
136137
hm->AddHistogram(histClass, "MultNTracksPVetaHalf", "MultNTracksPVetaHalf", false, 150, 0, 150.0, VarManager::kMultNTracksPVetaHalf);
@@ -153,17 +154,22 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
153154
hm->AddHistogram(histClass, "VtxZ_MultITSTPCWithPV", "VtxZ vs MultITSTPCWithPV", false, 240, -12.0, 12.0, VarManager::kVtxZ, 400, 0, 400.0, VarManager::kMultNTracksITSTPC);
154155
hm->AddHistogram(histClass, "VtxZ_MultITSOnly", "VtxZ vs MultITSOnly", false, 240, -12.0, 12.0, VarManager::kVtxZ, 400, 0, 400.0, VarManager::kMultNTracksITSOnly);
155156
hm->AddHistogram(histClass, "VtxZ_VtxNcontribReal", "VtxZ vs VtxNcontribReal", false, 100, -10.0, 10.0, VarManager::kVtxZ, 150, 0, 150.0, VarManager::kVtxNcontribReal);
157+
hm->AddHistogram(histClass, "VtxZ_MultNtrkGlobal", "VtxZ vs MultNtrkGlobal", false, 100, -10.0, 10.0, VarManager::kVtxZ, 150, 0, 150.0, VarManager::kMultNtrkGlobal);
156158
hm->AddHistogram(histClass, "VtxZ_MultNTracksPVeta1", "VtxZ vs MultNTracksPVeta1", false, 100, -10.0, 10.0, VarManager::kVtxZ, 150, 0, 150.0, VarManager::kMultNTracksPVeta1);
157159
hm->AddHistogram(histClass, "VtxZ_MultNTracksPVetaHalf", "VtxZ vs MultNTracksPVetaHalf", false, 100, -10.0, 10.0, VarManager::kVtxZ, 150, 0, 150.0, VarManager::kMultNTracksPVetaHalf);
158160
hm->AddHistogram(histClass, "VtxZ_MultFV0A", "VtxZ vs MultFV0A", false, 20, -10.0, 10.0, VarManager::kVtxZ, 200, 0, 25000.0, VarManager::kMultFV0A);
159161
hm->AddHistogram(histClass, "VtxZ_MultFT0A", "VtxZ vs MultFT0A", false, 20, -10.0, 10.0, VarManager::kVtxZ, 200, 0, 25000.0, VarManager::kMultFT0A);
160162
hm->AddHistogram(histClass, "VtxZ_MultFT0C", "VtxZ vs MultFT0C", false, 20, -10.0, 10.0, VarManager::kVtxZ, 200, 0, 25000.0, VarManager::kMultFT0C);
161163
hm->AddHistogram(histClass, "VtxZ_MultFDDA", "VtxZ vs MultFDDA", false, 20, -10.0, 10.0, VarManager::kVtxZ, 200, 0, 25000.0, VarManager::kMultFDDA);
162164
hm->AddHistogram(histClass, "VtxZ_MultFDDC", "VtxZ vs MultFDDC", false, 20, -10.0, 10.0, VarManager::kVtxZ, 200, 0, 25000.0, VarManager::kMultFDDC);
165+
hm->AddHistogram(histClass, "MultNtrkGlobal_VtxNcontribReal", "MultNtrkGlobal vs VtxNcontribReal", false, 150, 0, 150.0, VarManager::kMultNtrkGlobal, 150, 0, 150.0, VarManager::kVtxNcontribReal);
163166
hm->AddHistogram(histClass, "MultNTracksPVetaHalf_MultMCNParticlesEta05", "MultNTracksPVetaHalf vs MultMCNParticlesEta05", false, 150, 0, 150.0, VarManager::kMultNTracksPVetaHalf, 150, 0, 150.0, VarManager::kMultMCNParticlesEta05);
164167
hm->AddHistogram(histClass, "VtxNcontribReal_MultMCNParticlesEta08", "VtxNcontribReal vs MultMCNParticlesEta08", false, 150, 0, 150.0, VarManager::kVtxNcontribReal, 150, 0, 150.0, VarManager::kMultMCNParticlesEta08);
165168
hm->AddHistogram(histClass, "MultNTracksPVeta1_MultMCNParticlesEta10", "MultNTracksPVeta1 vs MultMCNParticlesEta10", false, 150, 0, 150.0, VarManager::kMultNTracksPVeta1, 150, 0, 150.0, VarManager::kMultMCNParticlesEta10);
166-
169+
hm->AddHistogram(histClass, "MultNtrkGlobal_MultMCNParticlesEta05", "MultNtrkGlobal vs MultMCNParticlesEta05", false, 150, 0, 150.0, VarManager::kMultNtrkGlobal, 150, 0, 150.0, VarManager::kMultMCNParticlesEta05);
170+
hm->AddHistogram(histClass, "MultNtrkGlobal_MultMCNParticlesEta08", "MultNtrkGlobal vs MultMCNParticlesEta08", false, 150, 0, 150.0, VarManager::kMultNtrkGlobal, 150, 0, 150.0, VarManager::kMultMCNParticlesEta08);
171+
hm->AddHistogram(histClass, "MultNtrkGlobal_MultMCNParticlesEta10", "MultNtrkGlobal vs MultMCNParticlesEta10", false, 150, 0, 150.0, VarManager::kMultNtrkGlobal, 150, 0, 150.0, VarManager::kMultMCNParticlesEta10);
172+
hm->AddHistogram(histClass, "MultNtrkGlobal_MultMCNParticlesGlobal", "MultNtrkGlobal vs MultMCNParticlesEta10", false, 150, 0, 150.0, VarManager::kMultNtrkGlobal, 150, 0, 150.0, VarManager::kMultMCGlobalParticles);
167173
} else {
168174
hm->AddHistogram(histClass, "MultTPC", "MultTPC", false, 200, 0.0, 50000.0, VarManager::kMultTPC);
169175
hm->AddHistogram(histClass, "MultTPC_vsTimeSOR", "MultTPC vs time from SOR", true, 10000, 0.0, 1000.0, VarManager::kTimeFromSOR, 10, 0.0, 50000.0, VarManager::kMultTPC);
@@ -177,6 +183,7 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
177183
hm->AddHistogram(histClass, "MultZNA_ZNC", "MultZNA vs ZNC", false, 400, 0.0, 400.0, VarManager::kMultZNA, 400, 0.0, 400.0, VarManager::kMultZNC);
178184
hm->AddHistogram(histClass, "MultTracklets", "MultTracklets", false, 100, 0.0, 25000.0, VarManager::kMultTracklets);
179185
hm->AddHistogram(histClass, "VtxNContribReal", "Vtx n contributors (real)", false, 100, 0.0, 5000.0, VarManager::kVtxNcontribReal);
186+
hm->AddHistogram(histClass, "kMultNtrkGlobal", "kMultNtrkGlobal", false, 150, 0.0, 150.0, VarManager::kMultNtrkGlobal);
180187
hm->AddHistogram(histClass, "VtxNContribReal_vsTimeSOR", "VtxNContribReal vs time from SOR", true, 10000, 0.0, 1000.0, VarManager::kTimeFromSOR, 10, 0.0, 5000.0, VarManager::kVtxNcontribReal);
181188
hm->AddHistogram(histClass, "VtxNContrib", "Vtx n contributors", false, 100, 0.0, 20000.0, VarManager::kVtxNcontrib);
182189
hm->AddHistogram(histClass, "MultTPC_MultFV0A", "MultTPC vs MultFV0A", false, 100, 0, 50000.0, VarManager::kMultTPC, 100, 0, 300000.0, VarManager::kMultFV0A);
@@ -271,6 +278,7 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
271278
hm->AddHistogram(histClass, "MultMCNParticlesEta05", "MultMCNParticlesEta05", false, 150, 0.0, 150.0, VarManager::kMultMCNParticlesEta05);
272279
hm->AddHistogram(histClass, "MultMCNParticlesEta08", "MultMCNParticlesEta08", false, 150, 0.0, 150.0, VarManager::kMultMCNParticlesEta08);
273280
hm->AddHistogram(histClass, "MultMCNParticlesEta10", "MultMCNParticlesEta10", false, 150, 0.0, 150.0, VarManager::kMultMCNParticlesEta10);
281+
hm->AddHistogram(histClass, "MultMCGlobalParticles", "MultMCGlobalParticles", false, 150, 0.0, 150.0, VarManager::kMultMCGlobalParticles);
274282
}
275283
if (subGroupStr.Contains("subgen")) {
276284
hm->AddHistogram(histClass, "SubGenID", "SubGenerator ID", false, 11, -0.5, 10.5, VarManager::kMCEventSubGeneratorId);
@@ -1405,6 +1413,11 @@ void o2::aod::dqhistograms::DefineHistograms(HistogramManager* hm, const char* h
14051413
hm->AddHistogram(histClass, "Mass_VtxNcontribReal_VtxZ", "Mass vs VtxNcontribReal vs VtxZ", false, 200, 2.0, 5.0, VarManager::kMass, 150, 0, 150.0, VarManager::kVtxNcontribReal, 20, -10.0, 10.0, VarManager::kVtxZ);
14061414
hm->AddHistogram(histClass, "VtxZ_VtxNcontribReal", "VtxZ vs VtxNcontribReal", false, 240, -12.0, 12.0, VarManager::kVtxZ, 200, 0, 200.0, VarManager::kVtxNcontribReal);
14071415
}
1416+
if (subGroupStr.Contains("mult_global")) {
1417+
hm->AddHistogram(histClass, "Mass_MultGlobal", "Mass vs global tracks", false, 200, 0.0, 5.0, VarManager::kMass, 200, 0, 200.0, VarManager::kMultNtrkGlobal);
1418+
hm->AddHistogram(histClass, "Mass_MultGlobal_VtxZ", "Mass vs global tracks vs VtxZ", false, 200, 2.0, 5.0, VarManager::kMass, 150, 0, 150.0, VarManager::kMultNtrkGlobal, 20, -10.0, 10.0, VarManager::kVtxZ);
1419+
hm->AddHistogram(histClass, "VtxZ_MultGlobal", "VtxZ vs global tracks", false, 240, -12.0, 12.0, VarManager::kVtxZ, 200, 0, 200.0, VarManager::kMultNtrkGlobal);
1420+
}
14081421
if (subGroupStr.Contains("alice3barrel")) {
14091422
std::array<double, 21> pTBins = {
14101423
0.1, 0.5, 1.0, 1.25, 1.5, 2.0, 2.5, 3.0,

‎PWGDQ/Core/VarManager.cxx‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -768,6 +768,8 @@ void VarManager::SetDefaultVarNames()
768768
fgVariableUnits[kVtxNcontrib] = "";
769769
fgVariableNames[kVtxNcontribReal] = "Real Vtx contrib.";
770770
fgVariableUnits[kVtxNcontribReal] = "";
771+
fgVariableNames[kMultNtrkGlobal] = "Global tracks";
772+
fgVariableUnits[kMultNtrkGlobal] = "";
771773
fgVariableNames[kVtxCovXX] = "Vtx covXX";
772774
fgVariableUnits[kVtxCovXX] = "cm";
773775
fgVariableNames[kVtxCovXY] = "Vtx covXY";
@@ -829,6 +831,7 @@ void VarManager::SetDefaultVarNames()
829831
fgVariableNames[kMultMCNParticlesEta05] = "MC Multiplicity Central Barrel for |eta| < 0.5";
830832
fgVariableNames[kMultMCNParticlesEta08] = "MC Multiplicity Central Barrel for |eta| < 0.8";
831833
fgVariableNames[kMultMCNParticlesEta10] = "MC Multiplicity Central Barrel for |eta| < 1.0";
834+
fgVariableNames[kMultMCGlobalParticles] = "MC Multiplicity corresponding to global track definition";
832835
fgVariableUnits[kMCEventGeneratorId] = "";
833836
fgVariableUnits[kMCEventSubGeneratorId] = "";
834837
fgVariableUnits[kMCVtxX] = "cm";
@@ -842,6 +845,7 @@ void VarManager::SetDefaultVarNames()
842845
fgVariableUnits[kMultMCNParticlesEta05] = "Multiplicity_eta05";
843846
fgVariableUnits[kMultMCNParticlesEta08] = "Multiplicity_eta08";
844847
fgVariableUnits[kMultMCNParticlesEta10] = "Multiplicity_eta10";
848+
fgVariableUnits[kMultMCGlobalParticles] = "Multiplicity_globalTrk";
845849
fgVariableNames[kTwoEvPosZ1] = "vtx-z_{1}";
846850
fgVariableUnits[kTwoEvPosZ1] = "cm";
847851
fgVariableNames[kTwoEvPosZ2] = "vtx-z_{2}";
@@ -2125,6 +2129,7 @@ void VarManager::SetDefaultVarNames()
21252129
fgVarNamesMap["kVtxZ"] = kVtxZ;
21262130
fgVarNamesMap["kVtxNcontrib"] = kVtxNcontrib;
21272131
fgVarNamesMap["kVtxNcontribReal"] = kVtxNcontribReal;
2132+
fgVarNamesMap["kMultNtrkGlobal"] = kMultNtrkGlobal;
21282133
fgVarNamesMap["kVtxCovXX"] = kVtxCovXX;
21292134
fgVarNamesMap["kVtxCovXY"] = kVtxCovXY;
21302135
fgVarNamesMap["kVtxCovXZ"] = kVtxCovXZ;
@@ -2219,6 +2224,7 @@ void VarManager::SetDefaultVarNames()
22192224
fgVarNamesMap["kMultMCNParticlesEta05"] = kMultMCNParticlesEta05;
22202225
fgVarNamesMap["kMultMCNParticlesEta08"] = kMultMCNParticlesEta08;
22212226
fgVarNamesMap["kMultMCNParticlesEta10"] = kMultMCNParticlesEta10;
2227+
fgVarNamesMap["kMultMCGlobalParticles"] = kMultMCGlobalParticles;
22222228
fgVarNamesMap["kQ1ZNAX"] = kQ1ZNAX;
22232229
fgVarNamesMap["kQ1ZNAY"] = kQ1ZNAY;
22242230
fgVarNamesMap["kQ1ZNCX"] = kQ1ZNCX;

‎PWGDQ/Core/VarManager.h‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ class VarManager : public TObject
254254
kVtxZ,
255255
kVtxNcontrib,
256256
kVtxNcontribReal,
257+
kMultNtrkGlobal,
257258
kVtxCovXX,
258259
kVtxCovXY,
259260
kVtxCovXZ,
@@ -350,6 +351,7 @@ class VarManager : public TObject
350351
kMultMCNParticlesEta10,
351352
kMultMCNParticlesEta08,
352353
kMultMCNParticlesEta05,
354+
kMultMCGlobalParticles,
353355
kQ1ZNAX,
354356
kQ1ZNAY,
355357
kQ1ZNCX,
@@ -2726,6 +2728,14 @@ void VarManager::FillEvent(T const& event, float* values)
27262728
values[kDCAzFracAbove10mm] = event.dcazFracAbove10mm();
27272729
}
27282730

2731+
if constexpr (requires { event.multNtrkGlobal(); }) {
2732+
values[kMultNtrkGlobal] = event.multNtrkGlobal();
2733+
}
2734+
2735+
if constexpr (requires { event.multMCGlobalParticles(); }) {
2736+
values[kMultMCGlobalParticles] = event.multMCGlobalParticles();
2737+
}
2738+
27292739
// FillEventDerived(values);
27302740
}
27312741

‎PWGDQ/DataModel/ReducedInfoTables.h‎

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,28 @@ DECLARE_SOA_TABLE(ReducedEventsMultAll, "AOD", "REMULTALL", //! Multiplicity in
200200
reducedevent::NTPCoccupMeanTimeShortA, reducedevent::NTPCoccupMeanTimeShortC,
201201
reducedevent::NTPCoccupMedianTimeShortA, reducedevent::NTPCoccupMedianTimeShortC);
202202

203+
namespace globalmult
204+
{
205+
DECLARE_SOA_COLUMN(MultNtrkGlobal, multNtrkGlobal, int);
206+
} // namespace globalmult
207+
208+
DECLARE_SOA_TABLE(GlobalTrackMultiplicity, "AOD", "GLOBALTRKMULT",
209+
globalmult::MultNtrkGlobal);
210+
211+
DECLARE_SOA_TABLE(ReducedEventsGlobalTrk, "AOD", "REGLOBALTRK",
212+
globalmult::MultNtrkGlobal);
213+
214+
namespace mcglobalmult
215+
{
216+
DECLARE_SOA_COLUMN(MultMCGlobalParticles, multMCGlobalParticles, int);
217+
} // namespace mcglobalmult
218+
219+
DECLARE_SOA_TABLE(McGlobalMultiplicities, "AOD", "MCGLOBALMULT",
220+
mcglobalmult::MultMCGlobalParticles);
221+
222+
DECLARE_SOA_TABLE(ReducedMCGlobalMultiplicities, "AOD", "REMCGLOBALMULT",
223+
mcglobalmult::MultMCGlobalParticles);
224+
203225
DECLARE_SOA_TABLE(ReducedEventsVtxCov, "AOD", "REVTXCOV", //! Event vertex covariance matrix
204226
collision::CovXX, collision::CovXY, collision::CovXZ,
205227
collision::CovYY, collision::CovYZ, collision::CovZZ, collision::Chi2);
@@ -873,21 +895,21 @@ DECLARE_SOA_COLUMN(BdtBackground, bdtBackground, float);
873895
DECLARE_SOA_COLUMN(BdtPrompt, bdtPrompt, float); //! BDT output score for the prompt class
874896
DECLARE_SOA_COLUMN(BdtNonprompt, bdtNonprompt, float); //! BDT output score for the nonprompt class
875897
// DECLARE_SOA_INDEX_COLUMN(ReducedMuon, reducedmuon2); //!
876-
DECLARE_SOA_COLUMN(CosThetaHE, costhetaHE, float); //! Cosine in the helicity frame
877-
DECLARE_SOA_COLUMN(PhiHE, phiHe, float); //! Phi in the helicity frame
878-
DECLARE_SOA_COLUMN(PhiTildeHE, phiTildeHe, float); //! Tilde Phi in the helicity frame
879-
DECLARE_SOA_COLUMN(CosThetaCS, costhetaCS, float); //! Cosine in the Collins-Soper frame
880-
DECLARE_SOA_COLUMN(PhiCS, phiCS, float); //! Phi in the Collins-Soper frame
881-
DECLARE_SOA_COLUMN(PhiTildeCS, phiTildeCS, float); //! Tilde Phi in the Collins-Soper frame
882-
DECLARE_SOA_COLUMN(CosThetaPP, costhetaPP, float); //! Cosine in the Production Plane frame
883-
DECLARE_SOA_COLUMN(PhiPP, phiPP, float); //! Phi in the Production Plane frame
884-
DECLARE_SOA_COLUMN(PhiTildePP, phiTildePP, float); //! Tilde Phi in the Production Plane frame
885-
DECLARE_SOA_COLUMN(CosThetaRM, costhetaRM, float); //! Cosine in the Random frame
886-
DECLARE_SOA_COLUMN(CosThetaStarTPC, costhetaStarTPC, float); //! global polarization, event plane reconstructed from TPC tracks
887-
DECLARE_SOA_COLUMN(CosThetaStarFT0A, costhetaStarFT0A, float); //! global polarization, event plane reconstructed from FT0A tracks
888-
DECLARE_SOA_COLUMN(CosThetaStarFT0C, costhetaStarFT0C, float); //! global polarization, event plane reconstructed from FT0C tracks
898+
DECLARE_SOA_COLUMN(CosThetaHE, costhetaHE, float); //! Cosine in the helicity frame
899+
DECLARE_SOA_COLUMN(PhiHE, phiHe, float); //! Phi in the helicity frame
900+
DECLARE_SOA_COLUMN(PhiTildeHE, phiTildeHe, float); //! Tilde Phi in the helicity frame
901+
DECLARE_SOA_COLUMN(CosThetaCS, costhetaCS, float); //! Cosine in the Collins-Soper frame
902+
DECLARE_SOA_COLUMN(PhiCS, phiCS, float); //! Phi in the Collins-Soper frame
903+
DECLARE_SOA_COLUMN(PhiTildeCS, phiTildeCS, float); //! Tilde Phi in the Collins-Soper frame
904+
DECLARE_SOA_COLUMN(CosThetaPP, costhetaPP, float); //! Cosine in the Production Plane frame
905+
DECLARE_SOA_COLUMN(PhiPP, phiPP, float); //! Phi in the Production Plane frame
906+
DECLARE_SOA_COLUMN(PhiTildePP, phiTildePP, float); //! Tilde Phi in the Production Plane frame
907+
DECLARE_SOA_COLUMN(CosThetaRM, costhetaRM, float); //! Cosine in the Random frame
908+
DECLARE_SOA_COLUMN(CosThetaStarTPC, costhetaStarTPC, float); //! global polarization, event plane reconstructed from TPC tracks
909+
DECLARE_SOA_COLUMN(CosThetaStarFT0A, costhetaStarFT0A, float); //! global polarization, event plane reconstructed from FT0A tracks
910+
DECLARE_SOA_COLUMN(CosThetaStarFT0C, costhetaStarFT0C, float); //! global polarization, event plane reconstructed from FT0C tracks
889911
DECLARE_SOA_COLUMN(CosThetaStarRandom, costhetaStarRandom, float); //! global polarization, event plane reconstructed from random tracks
890-
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //!
912+
DECLARE_SOA_DYNAMIC_COLUMN(Px, px, //!
891913
[](float pt, float phi) -> float { return pt * std::cos(phi); });
892914
DECLARE_SOA_DYNAMIC_COLUMN(Py, py, //!
893915
[](float pt, float phi) -> float { return pt * std::sin(phi); });

‎PWGDQ/TableProducer/CMakeLists.txt‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,9 @@ o2physics_add_dpl_workflow(generated-quarkonia-mc
5050
REUSE_FROM DQAnalysisPCH
5151
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DetectorsBase O2Physics::PWGDQCore
5252
COMPONENT_NAME Analysis)
53+
54+
o2physics_add_dpl_workflow(global-track-estimator
55+
SOURCES globalTrackEstimator.cxx
56+
REUSE_FROM DQAnalysisPCH
57+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2::DetectorsBase O2Physics::PWGDQCore
58+
COMPONENT_NAME Analysis)

0 commit comments

Comments
 (0)