Skip to content

Commit 83e925b

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents 1399f53 + 037dfc5 commit 83e925b

140 files changed

Lines changed: 18510 additions & 8171 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ALICE3/Tasks/alice3Multicharm.cxx

Lines changed: 54 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ struct Alice3Multicharm {
6969
Configurable<int64_t> timestampCCDB{"timestampCCDB", 1695750420200, "timestamp of the ONNX file for ML model used to query in CCDB. Please use 1695750420200"};
7070
Configurable<bool> loadModelsFromCCDB{"loadModelsFromCCDB", false, "Flag to enable or disable the loading of models from CCDB"};
7171
Configurable<bool> enableOptimizations{"enableOptimizations", false, "Enables the ONNX extended model-optimization: sessionOptions.SetGraphOptimizationLevel(GraphOptimizationLevel::ORT_ENABLE_EXTENDED)"};
72-
Configurable<bool> enableML{"enableML", false, "Enables bdt model"};
72+
Configurable<bool> enableML{"enableML", true, "Enables bdt model"};
7373
} bdt;
7474

7575
ConfigurableAxis axisEta{"axisEta", {80, -4.0f, +4.0f}, "#eta"};
@@ -196,36 +196,32 @@ struct Alice3Multicharm {
196196
bdtMCharm.initModel(bdt.localPath.value, bdt.enableOptimizations.value);
197197
}
198198

199-
histos.add("hBDTScore", "hBDTScore", kTH1D, {axisBDTScore});
200-
histos.add("hBDTScoreVsXiccMass", "hBDTScoreVsXiccMass", kTH2D, {axisXiccMass, axisBDTScore});
201-
histos.add("hBDTScoreVsXiccPt", "hBDTScoreVsXiccPt", kTH2D, {axisPt, axisBDTScore});
202-
histos.add("h3dBDTScore", "h3dBDTScore", kTH3D, {axisPt, axisXiccMass, axisBDTScore});
203-
histos.add("hDCAXicDaughters", "hDCAXicDaughters", kTH2D, {{axisBDTScore, axisDcaDaughters}});
204-
histos.add("hDCAXiccDaughters", "hDCAXiccDaughters", kTH2D, {{axisBDTScore, axisDcaDaughters}});
205-
histos.add("hDCAxyXi", "hDCAxyXi", kTH2D, {{axisBDTScore, axisDCA}});
206-
histos.add("hDCAzXi", "hDCAzXi", kTH2D, {{axisBDTScore, axisDCA}});
207-
histos.add("hDCAxyXic", "hDCAxyXic", kTH2D, {{axisBDTScore, axisDCA}});
208-
histos.add("hDCAzXic", "hDCAzXic", kTH2D, {{axisBDTScore, axisDCA}});
209-
histos.add("hDCAxyXicc", "hDCAxyXicc", kTH2D, {{axisBDTScore, axisDCA}});
210-
histos.add("hDCAzXicc", "hDCAzXicc", kTH2D, {{axisBDTScore, axisDCA}});
211-
histos.add("hDecayRadiusXic", "hDecayRadiusXic", kTH2D, {{axisBDTScore, axisRadius}});
212-
histos.add("hDecayRadiusXicc", "hDecayRadiusXicc", kTH2D, {{axisBDTScore, axisRadius}});
213-
histos.add("hDecayDistanceFromPVXic", "hDecayDistanceFromPVXic", kTH2D, {{axisBDTScore, axisDecayLength}});
214-
histos.add("hProperLengthXic", "hProperLengthXic", kTH2D, {{axisBDTScore, axisDecayLength}});
215-
histos.add("hProperLengthXicc", "hProperLengthXicc", kTH2D, {{axisBDTScore, axisDecayLength}});
216-
histos.add("hPi1cDCAxy", "hPi1cDCAxy", kTH2D, {{axisBDTScore, axisDCA}});
217-
histos.add("hPi1cDCAz", "hPi1cDCAz", kTH2D, {{axisBDTScore, axisDCA}});
218-
histos.add("hPi2cDCAxy", "hPi2cDCAxy", kTH2D, {{axisBDTScore, axisDCA}});
219-
histos.add("hPi2cDCAz", "hPi2cDCAz", kTH2D, {{axisBDTScore, axisDCA}});
220-
histos.add("hPiccDCAxy", "hPiccDCAxy", kTH2D, {{axisBDTScore, axisDCA}});
221-
histos.add("hPiccDCAz", "hPiccDCAz", kTH2D, {{axisBDTScore, axisDCA}});
222-
histos.add("hPi1cPt", "hPi1cPt", kTH2D, {{axisBDTScore, axisPt}});
223-
histos.add("hPi2cPt", "hPi2cPt", kTH2D, {{axisBDTScore, axisPt}});
224-
histos.add("hPiccPt", "hPiccPt", kTH2D, {{axisBDTScore, axisPt}});
225-
histos.add("hXiccMass", "hXiccMass", kTH2D, {{axisBDTScore, axisXiccMass}});
226-
histos.add("hXicMass", "hXicMass", kTH2D, {{axisBDTScore, axisXicMass}});
227-
histos.add("hXiccPt", "hXiccPt", kTH2D, {{axisBDTScore, axisPt}});
228-
histos.add("hXicPt", "hXicPt", kTH2D, {{axisBDTScore, axisPt}});
199+
histos.add("BDT/hBDTScore", "hBDTScore", kTH1D, {axisBDTScore});
200+
histos.add("BDT/hBDTScoreVsXiccMass", "hBDTScoreVsXiccMass", kTH2D, {axisXiccMass, axisBDTScore});
201+
histos.add("BDT/hBDTScoreVsXiccPt", "hBDTScoreVsXiccPt", kTH2D, {axisPt, axisBDTScore});
202+
histos.add("BDT/h3dBDTScore", "h3dBDTScore", kTH3D, {axisPt, axisXiccMass, axisBDTScore});
203+
histos.add("BDT/hDCAXicDaughters", "hDCAXicDaughters", kTH2D, {{axisBDTScore, axisDcaDaughters}});
204+
histos.add("BDT/hDCAXiccDaughters", "hDCAXiccDaughters", kTH2D, {{axisBDTScore, axisDcaDaughters}});
205+
histos.add("BDT/hDCAxyXi", "hDCAxyXi", kTH2D, {{axisBDTScore, axisDCA}});
206+
histos.add("BDT/hDCAzXi", "hDCAzXi", kTH2D, {{axisBDTScore, axisDCA}});
207+
histos.add("BDT/hDCAxyXic", "hDCAxyXic", kTH2D, {{axisBDTScore, axisDCA}});
208+
histos.add("BDT/hDCAzXic", "hDCAzXic", kTH2D, {{axisBDTScore, axisDCA}});
209+
histos.add("BDT/hDCAxyXicc", "hDCAxyXicc", kTH2D, {{axisBDTScore, axisDCA}});
210+
histos.add("BDT/hDCAzXicc", "hDCAzXicc", kTH2D, {{axisBDTScore, axisDCA}});
211+
histos.add("BDT/hDecayRadiusXic", "hDecayRadiusXic", kTH2D, {{axisBDTScore, axisRadius}});
212+
histos.add("BDT/hDecayRadiusXicc", "hDecayRadiusXicc", kTH2D, {{axisBDTScore, axisRadius}});
213+
histos.add("BDT/hDecayDistanceFromPVXic", "hDecayDistanceFromPVXic", kTH2D, {{axisBDTScore, axisDecayLength}});
214+
histos.add("BDT/hProperLengthXic", "hProperLengthXic", kTH2D, {{axisBDTScore, axisDecayLength}});
215+
histos.add("BDT/hProperLengthXicc", "hProperLengthXicc", kTH2D, {{axisBDTScore, axisDecayLength}});
216+
histos.add("BDT/hPi1cDCAxy", "hPi1cDCAxy", kTH2D, {{axisBDTScore, axisDCA}});
217+
histos.add("BDT/hPi1cDCAz", "hPi1cDCAz", kTH2D, {{axisBDTScore, axisDCA}});
218+
histos.add("BDT/hPi2cDCAxy", "hPi2cDCAxy", kTH2D, {{axisBDTScore, axisDCA}});
219+
histos.add("BDT/hPi2cDCAz", "hPi2cDCAz", kTH2D, {{axisBDTScore, axisDCA}});
220+
histos.add("BDT/hPiccDCAxy", "hPiccDCAxy", kTH2D, {{axisBDTScore, axisDCA}});
221+
histos.add("BDT/hPiccDCAz", "hPiccDCAz", kTH2D, {{axisBDTScore, axisDCA}});
222+
histos.add("BDT/hPi1cPt", "hPi1cPt", kTH2D, {{axisBDTScore, axisPt}});
223+
histos.add("BDT/hPi2cPt", "hPi2cPt", kTH2D, {{axisBDTScore, axisPt}});
224+
histos.add("BDT/hPiccPt", "hPiccPt", kTH2D, {{axisBDTScore, axisPt}});
229225
}
230226
}
231227

@@ -260,37 +256,33 @@ struct Alice3Multicharm {
260256
float* probabilityMCharm = bdtMCharm.evalModel(inputFeatures);
261257
float bdtScore = probabilityMCharm[1];
262258

263-
histos.fill(HIST("hBDTScore"), bdtScore);
264-
histos.fill(HIST("hBDTScoreVsXiccMass"), xiccCand.xiccMass(), bdtScore);
265-
histos.fill(HIST("hBDTScoreVsXiccPt"), xiccCand.xiccPt(), bdtScore);
266-
histos.fill(HIST("h3dBDTScore"), xiccCand.xiccPt(), xiccCand.xiccMass(), bdtScore);
267-
histos.fill(HIST("hDCAXicDaughters"), xiccCand.xiccPt(), bdtScore);
268-
histos.fill(HIST("hDCAXiccDaughters"), xiccCand.xiccPt(), bdtScore);
269-
histos.fill(HIST("hDCAxyXi"), xiccCand.xiccPt(), bdtScore);
270-
histos.fill(HIST("hDCAzXi"), xiccCand.xiccPt(), bdtScore);
271-
histos.fill(HIST("hDCAxyXic"), xiccCand.xiccPt(), bdtScore);
272-
histos.fill(HIST("hDCAzXic"), xiccCand.xiccPt(), bdtScore);
273-
histos.fill(HIST("hDCAxyXicc"), xiccCand.xiccPt(), bdtScore);
274-
histos.fill(HIST("hDCAzXicc"), xiccCand.xiccPt(), bdtScore);
275-
histos.fill(HIST("hDecayRadiusXic"), xiccCand.xiccPt(), bdtScore);
276-
histos.fill(HIST("hDecayRadiusXicc"), xiccCand.xiccPt(), bdtScore);
277-
histos.fill(HIST("hDecayDistanceFromPVXic"), xiccCand.xiccPt(), bdtScore);
278-
histos.fill(HIST("hProperLengthXic"), xiccCand.xiccPt(), bdtScore);
279-
histos.fill(HIST("hProperLengthXicc"), xiccCand.xiccPt(), bdtScore);
280-
histos.fill(HIST("hPi1cDCAxy"), xiccCand.xiccPt(), bdtScore);
281-
histos.fill(HIST("hPi1cDCAz"), xiccCand.xiccPt(), bdtScore);
282-
histos.fill(HIST("hPi2cDCAxy"), xiccCand.xiccPt(), bdtScore);
283-
histos.fill(HIST("hPi2cDCAz"), xiccCand.xiccPt(), bdtScore);
284-
histos.fill(HIST("hPiccDCAxy"), xiccCand.xiccPt(), bdtScore);
285-
histos.fill(HIST("hPiccDCAz"), xiccCand.xiccPt(), bdtScore);
286-
histos.fill(HIST("hPi1cPt"), xiccCand.xiccPt(), bdtScore);
287-
histos.fill(HIST("hPi2cPt"), xiccCand.xiccPt(), bdtScore);
288-
histos.fill(HIST("hPiccPt"), xiccCand.xiccPt(), bdtScore);
289-
histos.fill(HIST("hXiccMass"), xiccCand.xiccPt(), bdtScore);
290-
histos.fill(HIST("hXicMass"), xiccCand.xiccPt(), bdtScore);
291-
histos.fill(HIST("hXicPt"), xiccCand.xiccPt(), bdtScore);
292-
histos.fill(HIST("hXiccPt"), xiccCand.xiccPt(), bdtScore);
293-
histos.fill(HIST("h3dXicc"), xiccCand.xiccPt(), bdtScore);
259+
histos.fill(HIST("BDT/hBDTScore"), bdtScore);
260+
histos.fill(HIST("BDT/hBDTScoreVsXiccMass"), xiccCand.xiccMass(), bdtScore);
261+
histos.fill(HIST("BDT/hBDTScoreVsXiccPt"), xiccCand.xiccPt(), bdtScore);
262+
histos.fill(HIST("BDT/h3dBDTScore"), xiccCand.xiccPt(), xiccCand.xiccMass(), bdtScore);
263+
264+
histos.fill(HIST("BDT/hDCAXicDaughters"), bdtScore, xiccCand.xicDauDCA() * 1e+4);
265+
histos.fill(HIST("BDT/hDCAXiccDaughters"), bdtScore, xiccCand.xiccDauDCA() * 1e+4);
266+
histos.fill(HIST("BDT/hDCAxyXi"), bdtScore, std::fabs(xiccCand.xiDCAxy() * 1e+4));
267+
histos.fill(HIST("BDT/hDCAzXi"), bdtScore, std::fabs(xiccCand.xiDCAz() * 1e+4));
268+
histos.fill(HIST("BDT/hDCAxyXic"), bdtScore, std::fabs(xiccCand.xicDCAxy() * 1e+4));
269+
histos.fill(HIST("BDT/hDCAzXic"), bdtScore, std::fabs(xiccCand.xicDCAz() * 1e+4));
270+
histos.fill(HIST("BDT/hDCAxyXicc"), bdtScore, std::fabs(xiccCand.xiccDCAxy() * 1e+4));
271+
histos.fill(HIST("BDT/hDCAzXicc"), bdtScore, std::fabs(xiccCand.xiccDCAz() * 1e+4));
272+
histos.fill(HIST("BDT/hDecayRadiusXic"), bdtScore, xiccCand.xicDecayRadius2D() * 1e+4);
273+
histos.fill(HIST("BDT/hDecayRadiusXicc"), bdtScore, xiccCand.xiccDecayRadius2D() * 1e+4);
274+
histos.fill(HIST("BDT/hDecayDistanceFromPVXic"), bdtScore, xiccCand.xicDistanceFromPV() * 1e+4);
275+
histos.fill(HIST("BDT/hProperLengthXic"), bdtScore, xiccCand.xicProperLength() * 1e+4);
276+
histos.fill(HIST("BDT/hProperLengthXicc"), bdtScore, xiccCand.xiccProperLength() * 1e+4);
277+
histos.fill(HIST("BDT/hPi1cDCAxy"), bdtScore, xiccCand.pi1cDCAxy() * 1e+4);
278+
histos.fill(HIST("BDT/hPi1cDCAz"), bdtScore, xiccCand.pi1cDCAz() * 1e+4);
279+
histos.fill(HIST("BDT/hPi2cDCAxy"), bdtScore, xiccCand.pi2cDCAxy() * 1e+4);
280+
histos.fill(HIST("BDT/hPi2cDCAz"), bdtScore, xiccCand.pi2cDCAz() * 1e+4);
281+
histos.fill(HIST("BDT/hPiccDCAxy"), bdtScore, xiccCand.piccDCAxy() * 1e+4);
282+
histos.fill(HIST("BDT/hPiccDCAz"), bdtScore, xiccCand.piccDCAz() * 1e+4);
283+
histos.fill(HIST("BDT/hPi1cPt"), bdtScore, xiccCand.pi1cPt());
284+
histos.fill(HIST("BDT/hPi2cPt"), bdtScore, xiccCand.pi2cPt());
285+
histos.fill(HIST("BDT/hPiccPt"), bdtScore, xiccCand.piccPt());
294286
}
295287

296288
histos.fill(HIST("hMCharmBuilding"), 0);

ALICE3/Tasks/alice3TrackingPerformance.cxx

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,25 @@ std::map<int, std::shared_ptr<TH2>> invPtResolutionVsPt;
5252
std::map<int, std::shared_ptr<TProfile2D>> invPtResolutionVsEta;
5353
std::map<int, std::shared_ptr<TH2>> dcaXyResolutionVsPt;
5454
std::map<int, std::shared_ptr<TH2>> dcaZResolutionVsPt;
55+
std::map<int, std::shared_ptr<TH2>> covariancePtPtVsPt;
56+
std::map<int, std::shared_ptr<TH2>> covarianceDcaXyDcaXyVsPt;
57+
std::map<int, std::shared_ptr<TH2>> covarianceDcaZDcaZVsPt;
5558

5659
struct Alice3TrackingPerformance {
5760
Configurable<std::vector<int>> pdgCodes{"pdgCodes", {0, 211}, "List of PDG codes to consider for efficiency calculation. (0 means all)"};
5861
HistogramRegistry histos{"Histos", {}, OutputObjHandlingPolicy::AnalysisObject};
59-
Configurable<std::pair<float, float>> etaRange{"etaRange", {-5.f, 5.f}, "Eta range for efficiency calculation"};
62+
ConfigurableAxis ptAxis{"ptAxis", {500, 0, 100}, "#it{p}_{T} (GeV/#it{c})"};
63+
ConfigurableAxis etaAxis{"etaAxis", {100, -5.f, 5.f}, "#eta"};
64+
ConfigurableAxis invPtDeltaAxis{"invPtDeltaAxis", {1000, -0.1f, 0.1f}, "1./#it{p}_{T}^{gen} - 1./#it{p}_{T}^{reco} (GeV/#it{c})^{-1}"};
6065

6166
void init(o2::framework::InitContext&)
6267
{
63-
const AxisSpec axisPt{500, 0, 100, "#it{p}_{T} (GeV/#it{c})"};
64-
const AxisSpec axisEta{100, etaRange.value.first, etaRange.value.second, "#eta"};
6568
const AxisSpec axisPtDelta{100, -1, 1, "(#it{p}_{T}^{reco} - #it{p}_{T}^{gen}) / #it{p}_{T}^{gen}"};
66-
const AxisSpec axisInvPtDelta{100, -1, 1, "1./#it{p}_{T}^{gen} - 1./#it{p}_{T}^{reco} (GeV/#it{c})^{-1}"};
6769
const AxisSpec axisDcaXy{100, -1, 1, "DCA_{xy} (cm)"};
6870
const AxisSpec axisDcaZ{100, -1, 1, "DCA_{z} (cm)"};
71+
const AxisSpec axisCovariancePtPt{100, 0, 10, "cov(#it{p}_{T}, #it{p}_{T}) ((GeV/#it{c})^{2})"};
72+
const AxisSpec axisCovarianceDcaXyDcaXy{100, 0, 1, "cov(DCA_{xy}, DCA_{xy}) (cm^{2})"};
73+
const AxisSpec axisCovarianceDcaZDcaZ{100, 0, 1, "cov(DCA_{z}, DCA_{z}) (cm^{2})"};
6974
particlePdgCodes = histos.add<TH1>("particlePdgCodes", "", kTH1D, {AxisSpec{100, -0.5, 99.5, "PDG Code"}});
7075
for (const int& pdg : pdgCodes.value) {
7176
std::string prefix = Form("%i", pdg);
@@ -74,30 +79,31 @@ struct Alice3TrackingPerformance {
7479
}
7580
const std::string tag = "_" + prefix;
7681
prefix += "/";
77-
particlePtDistribution[pdg] = histos.add<TH1>(prefix + "particlePtDistribution" + tag, "", kTH1D, {axisPt});
78-
particleEtaDistribution[pdg] = histos.add<TH1>(prefix + "particleEtaDistribution" + tag, "", kTH1D, {axisEta});
82+
particlePtDistribution[pdg] = histos.add<TH1>(prefix + "particlePtDistribution" + tag, "", kTH1D, {ptAxis});
83+
particleEtaDistribution[pdg] = histos.add<TH1>(prefix + "particleEtaDistribution" + tag, "", kTH1D, {etaAxis});
7984

80-
ptDistribution[pdg] = histos.add<TH1>(prefix + "ptDistribution" + tag, "", kTH1D, {axisPt});
81-
ptResolutionVsPt[pdg] = histos.add<TH2>(prefix + "ptResolutionVsPt" + tag, "", kTH2D, {axisPt, axisPtDelta});
82-
ptResolutionVsEta[pdg] = histos.add<TProfile2D>(prefix + "ptResolutionVsEta" + tag, "", kTProfile2D, {axisPt, axisEta});
83-
invPtResolutionVsPt[pdg] = histos.add<TH2>(prefix + "invPtResolutionVsPt" + tag, "", kTH2D, {axisPt, axisInvPtDelta});
84-
invPtResolutionVsEta[pdg] = histos.add<TProfile2D>(prefix + "invPtResolutionVsEta" + tag, "", kTProfile2D, {axisPt, axisEta});
85-
dcaXyResolutionVsPt[pdg] = histos.add<TH2>(prefix + "dcaXyResolutionVsPt" + tag, "", kTH2D, {axisPt, axisDcaXy});
86-
dcaZResolutionVsPt[pdg] = histos.add<TH2>(prefix + "dcaZResolutionVsPt" + tag, "", kTH2D, {axisPt, axisDcaZ});
85+
ptDistribution[pdg] = histos.add<TH1>(prefix + "ptDistribution" + tag, "", kTH1D, {ptAxis});
86+
ptResolutionVsPt[pdg] = histos.add<TH2>(prefix + "ptResolutionVsPt" + tag, "", kTH2D, {ptAxis, axisPtDelta});
87+
ptResolutionVsEta[pdg] = histos.add<TProfile2D>(prefix + "ptResolutionVsEta" + tag, "", kTProfile2D, {ptAxis, etaAxis});
88+
invPtResolutionVsPt[pdg] = histos.add<TH2>(prefix + "invPtResolutionVsPt" + tag, "", kTH2D, {ptAxis, invPtDeltaAxis});
89+
invPtResolutionVsEta[pdg] = histos.add<TProfile2D>(prefix + "invPtResolutionVsEta" + tag, "", kTProfile2D, {ptAxis, etaAxis});
90+
dcaXyResolutionVsPt[pdg] = histos.add<TH2>(prefix + "dcaXyResolutionVsPt" + tag, "", kTH2D, {ptAxis, axisDcaXy});
91+
dcaZResolutionVsPt[pdg] = histos.add<TH2>(prefix + "dcaZResolutionVsPt" + tag, "", kTH2D, {ptAxis, axisDcaZ});
92+
covariancePtPtVsPt[pdg] = histos.add<TH2>(prefix + "covariancePtPtVsPt" + tag, "", kTH2D, {ptAxis, axisCovariancePtPt});
93+
covarianceDcaXyDcaXyVsPt[pdg] = histos.add<TH2>(prefix + "covarianceDcaXyDcaXyVsPt" + tag, "", kTH2D, {ptAxis, axisCovarianceDcaXyDcaXy});
94+
covarianceDcaZDcaZVsPt[pdg] = histos.add<TH2>(prefix + "covarianceDcaZDcaZVsPt" + tag, "", kTH2D, {ptAxis, axisCovarianceDcaZDcaZ});
8795
}
8896
}
8997

90-
void process(soa::Join<aod::Tracks, o2::aod::McTrackLabels, o2::aod::TracksDCA> const& tracks,
98+
void process(soa::Join<aod::Tracks, o2::aod::TracksCov, o2::aod::McTrackLabels, o2::aod::TracksDCA, o2::aod::TracksDCACov> const& tracks,
9199
aod::McParticles const& mcParticles)
92100
{
93101
auto isParticleSelected = [&](const o2::aod::McParticle& p) {
94102
if (!p.isPhysicalPrimary()) {
95103
return false;
96104
}
97-
if (p.eta() < etaRange.value.first) {
98-
return false;
99-
}
100-
if (p.eta() > etaRange.value.second) {
105+
const int etaBin = particleEtaDistribution[0]->GetXaxis()->FindBin(p.eta());
106+
if (etaBin < 1 || etaBin > particleEtaDistribution[0]->GetXaxis()->GetNbins()) {
101107
return false;
102108
}
103109
return true;
@@ -123,6 +129,7 @@ struct Alice3TrackingPerformance {
123129
const auto& mcParticle = track.mcParticle();
124130
const float ptResolution = (track.pt() - mcParticle.pt()) / mcParticle.pt();
125131
const float invptResolution = 1.f / track.pt() - 1.f / mcParticle.pt();
132+
const float covariancePtPt = track.sigma1Pt() * track.sigma1Pt() * track.pt() * track.pt() * track.pt() * track.pt();
126133

127134
auto fillResolutionHistograms = [&](const int p) {
128135
ptDistribution[p]->Fill(track.pt());
@@ -132,6 +139,9 @@ struct Alice3TrackingPerformance {
132139
invPtResolutionVsEta[p]->Fill(mcParticle.pt(), mcParticle.eta(), invptResolution);
133140
dcaXyResolutionVsPt[p]->Fill(mcParticle.pt(), track.dcaXY());
134141
dcaZResolutionVsPt[p]->Fill(mcParticle.pt(), track.dcaZ());
142+
covariancePtPtVsPt[p]->Fill(mcParticle.pt(), covariancePtPt);
143+
covarianceDcaXyDcaXyVsPt[p]->Fill(mcParticle.pt(), track.sigmaDcaXY2());
144+
covarianceDcaZDcaZVsPt[p]->Fill(mcParticle.pt(), track.sigmaDcaZ2());
135145
};
136146

137147
fillResolutionHistograms(0);

Common/Tools/Multiplicity/MultModule.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,8 @@ struct standardConfigurables : o2::framework::ConfigurableGroup {
308308
// Autoconfigure process functions
309309
o2::framework::Configurable<bool> autoConfigureProcess{"autoConfigureProcess", false, "if true, will configure process function switches based on metadata"};
310310

311+
o2::framework::Configurable<bool> doNTrackStudies{"doNTrackStudies", true, "if true, will fill Ntracks in MultsExtra"};
312+
311313
// do vertex-Z equalized or not
312314
o2::framework::Configurable<int> doVertexZeq{"doVertexZeq", 1, "if 1: do vertex Z eq mult table"};
313315

@@ -903,9 +905,15 @@ class MultModule
903905
if (internalOpts.mEnabledTables[kMultsExtra]) {
904906
cursors.tableExtra(collision.numContrib(), collision.chi2(), collision.collisionTimeRes(),
905907
bc.runNumber(), collision.posZ(), collision.sel8(),
906-
mults.multHasITS, mults.multHasTPC, mults.multHasTOF, mults.multHasTRD,
907-
mults.multITSOnly, mults.multTPCOnly, mults.multITSTPC,
908-
mults.multAllTracksTPCOnly, mults.multAllTracksITSTPC,
908+
static_cast<int>(internalOpts.doNTrackStudies) * mults.multHasITS,
909+
static_cast<int>(internalOpts.doNTrackStudies) * mults.multHasTPC,
910+
static_cast<int>(internalOpts.doNTrackStudies) * mults.multHasTOF,
911+
static_cast<int>(internalOpts.doNTrackStudies) * mults.multHasTRD,
912+
static_cast<int>(internalOpts.doNTrackStudies) * mults.multITSOnly,
913+
static_cast<int>(internalOpts.doNTrackStudies) * mults.multTPCOnly,
914+
static_cast<int>(internalOpts.doNTrackStudies) * mults.multITSTPC,
915+
static_cast<int>(internalOpts.doNTrackStudies) * mults.multAllTracksTPCOnly,
916+
static_cast<int>(internalOpts.doNTrackStudies) * mults.multAllTracksITSTPC,
909917
collision.trackOccupancyInTimeRange(),
910918
collision.ft0cOccupancyInTimeRange(),
911919
collision.flags());

0 commit comments

Comments
 (0)