Skip to content

Commit 5fa37b5

Browse files
authored
[PWGCF] Add pi-d systematic configurable in HadNucleiFemto.cxx (#18414)
1 parent e473593 commit 5fa37b5

2 files changed

Lines changed: 25 additions & 15 deletions

File tree

‎PWGCF/Femto/FemtoNuclei/DataModel/HadronNucleiTables.h‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ DECLARE_SOA_COLUMN(ZVertex, zVertex, float);
183183
DECLARE_SOA_COLUMN(Multiplicity, multiplicity, uint16_t);
184184
DECLARE_SOA_COLUMN(CentFT0C, centFT0C, float);
185185
DECLARE_SOA_COLUMN(MultiplicityFT0C, multiplicityFT0C, float);
186+
DECLARE_SOA_COLUMN(MultNTracksPV, multNTracksPV, int32_t);
186187

187188
} // namespace hadron_nuclei_tables
188189

@@ -268,7 +269,8 @@ DECLARE_SOA_TABLE(HadronNucleiMult, "AOD", "HADNUCLEIMULT",
268269
hadron_nuclei_tables::ZVertex,
269270
hadron_nuclei_tables::Multiplicity,
270271
hadron_nuclei_tables::CentFT0C,
271-
hadron_nuclei_tables::MultiplicityFT0C)
272+
hadron_nuclei_tables::MultiplicityFT0C,
273+
hadron_nuclei_tables::MultNTracksPV)
272274

273275
// Reduced hadron-hypertriton pair output. Reconstructable quantities such as
274276
// k*, invariant mass and pointing variables are intentionally derived offline.

‎PWGCF/Femto/FemtoNuclei/TableProducer/HadNucleiFemto.cxx‎

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,11 @@ using std::array;
8989
using CollBracket = o2::math_utils::Bracket<int>;
9090
using HyperCandidates = aod::DataHypCandsWColl;
9191
using HyperCandidatesMC = aod::MCHypCandsWColl;
92-
using CollisionsFull = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::FT0Mults>;
93-
// The standard Femto producer stores multNTracksPV as its collision
94-
// multiplicity. Subscribe to PVMults only in the mixed-event process so the
95-
// same vertex--multiplicity pool definition can optionally be reproduced.
96-
using CollisionsFullWithPVMult = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::FT0Mults, aod::PVMults>;
97-
using CollisionsFullMC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::CentFT0Cs, aod::FT0Mults>;
92+
// Save the PV-track multiplicity alongside numContrib in the event-info output
93+
// for both same-event and mixed-event pairs.
94+
using CollisionsFull = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs, aod::FT0Mults, aod::PVMults>;
95+
using CollisionsFullWithPVMult = CollisionsFull;
96+
using CollisionsFullMC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::CentFT0Cs, aod::FT0Mults, aod::PVMults>;
9897
using HadHyperCollisionsFull = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0As, aod::CentFT0Cs, aod::CentFT0Ms, aod::FT0Mults>;
9998
using HadHyperCollisionsFullMC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::CentFT0As, aod::CentFT0Cs, aod::CentFT0Ms, aod::FT0Mults>;
10099
using TrackCandidates = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TracksDCA, aod::TrackSelection, aod::pidTPCFullDe, aod::pidTPCFullTr, aod::pidTOFFullDe, aod::pidTOFFullTr, aod::pidTOFFullHe, aod::pidTPCFullPr, aod::pidTOFFullPr, aod::pidTPCFullPi, aod::pidTOFFullPi, aod::pidTPCFullKa, aod::pidTOFFullKa, aod::TOFSignal, aod::TOFEvTime>;
@@ -317,6 +316,7 @@ struct BufferedCollision {
317316
uint16_t numContrib{0u};
318317
float centFT0C{0.f};
319318
float multFT0C{0.f};
319+
int32_t multNTracksPV{0};
320320
std::vector<BufferedTrack> nuclei;
321321
std::vector<BufferedTrack> hadrons;
322322
};
@@ -403,6 +403,12 @@ struct HadNucleiFemto {
403403
// cppcheck-suppress unusedStructMember
404404
std::string prefix{"deuteronPid"};
405405
// Deuteron purity and PID cuts
406+
Configurable<int> settingTPCNClsFoundMinDe{"settingTPCNClsFoundMinDe", 110, "Minimum found TPC clusters for deuterons"};
407+
Configurable<int> settingTPCCrossedRowsMinDe{"settingTPCCrossedRowsMinDe", 100, "Minimum crossed TPC rows for deuterons"};
408+
Configurable<float> settingDeDCAxyOffset{"settingDeDCAxyOffset", 0.004f, "Deuteron DCAxy cut offset in cm"};
409+
Configurable<float> settingDeDCAxyPtCoeff{"settingDeDCAxyPtCoeff", 0.013f, "Deuteron DCAxy inverse-pT cut coefficient"};
410+
Configurable<float> settingDeDCAzOffset{"settingDeDCAzOffset", 0.004f, "Deuteron DCAz cut offset in cm"};
411+
Configurable<float> settingDeDCAzPtCoeff{"settingDeDCAzPtCoeff", 0.013f, "Deuteron DCAz inverse-pT cut coefficient"};
406412
Configurable<float> settingCutPinMinDe{"settingCutPinMinDe", 0.0f, "Minimum Pin for De"};
407413
Configurable<float> settingCutDeptMin{"settingCutDeptMin", 0.6f, "Minimum PT cut on De"};
408414
Configurable<float> settingCutDeptMax{"settingCutDeptMax", 1.6f, "Maximum PT cut on De"};
@@ -1230,16 +1236,14 @@ struct HadNucleiFemto {
12301236
return false;
12311237
}
12321238

1233-
constexpr int minTPCNClsFound = 110;
1234-
constexpr int minTPCNClsCrossedRows = 100;
12351239
constexpr float minTPCCrossedRowsOverFound = 0.f;
12361240
constexpr int maxTPCNClsShared = 160;
12371241
constexpr float maxSharedTPCFraction = 1.f;
12381242
constexpr int minITSNClsInnerBarrel = 1;
12391243
const float tpcCrossedRowsOverFound = candidate.tpcNClsFound() > 0 ? static_cast<float>(candidate.tpcNClsCrossedRows()) / candidate.tpcNClsFound() : 0.f;
12401244

1241-
return !(candidate.tpcNClsFound() < minTPCNClsFound ||
1242-
candidate.tpcNClsCrossedRows() < minTPCNClsCrossedRows ||
1245+
return !(candidate.tpcNClsFound() < deuteronPid.settingTPCNClsFoundMinDe ||
1246+
candidate.tpcNClsCrossedRows() < deuteronPid.settingTPCCrossedRowsMinDe ||
12431247
tpcCrossedRowsOverFound < minTPCCrossedRowsOverFound ||
12441248
candidate.tpcNClsShared() > maxTPCNClsShared ||
12451249
candidate.tpcFractionSharedCls() > maxSharedTPCFraction ||
@@ -1840,8 +1844,8 @@ struct HadNucleiFemto {
18401844
if (absPt <= 0.f) {
18411845
return false;
18421846
}
1843-
const float deDCAxyMax = 0.004f + 0.013f / absPt;
1844-
const float deDCAzMax = 0.004f + 0.013f / absPt;
1847+
const float deDCAxyMax = deuteronPid.settingDeDCAxyOffset + deuteronPid.settingDeDCAxyPtCoeff / absPt;
1848+
const float deDCAzMax = deuteronPid.settingDeDCAzOffset + deuteronPid.settingDeDCAzPtCoeff / absPt;
18451849
if (std::abs(candidate.dcaXY()) > deDCAxyMax || std::abs(candidate.dcaZ()) > deDCAzMax) {
18461850
return false;
18471851
}
@@ -2645,7 +2649,8 @@ struct HadNucleiFemto {
26452649
collision.posZ(),
26462650
collision.numContrib(),
26472651
collision.centFT0C(),
2648-
collision.multFT0C());
2652+
collision.multFT0C(),
2653+
collision.multNTracksPV());
26492654
}
26502655
}
26512656

@@ -2658,7 +2663,8 @@ struct HadNucleiFemto {
26582663
collision.posZ,
26592664
collision.numContrib,
26602665
collision.centFT0C,
2661-
collision.multFT0C);
2666+
collision.multFT0C,
2667+
collision.multNTracksPV);
26622668
}
26632669
}
26642670

@@ -3371,6 +3377,7 @@ struct HadNucleiFemto {
33713377
currentCollision.numContrib = collision.numContrib();
33723378
currentCollision.centFT0C = collision.centFT0C();
33733379
currentCollision.multFT0C = collision.multFT0C();
3380+
currentCollision.multNTracksPV = collision.multNTracksPV();
33743381

33753382
const uint64_t collIdx = collision.globalIndex();
33763383
auto tracksThisCollision = tracks.sliceBy(mPerCol, collIdx);
@@ -3548,6 +3555,7 @@ struct HadNucleiFemto {
35483555
current.numContrib = collision.numContrib();
35493556
current.centFT0C = collision.centFT0C();
35503557
current.multFT0C = collision.multFT0C();
3558+
current.multNTracksPV = collision.multNTracksPV();
35513559
row.eventId = current.eventId;
35523560
auto tracksThisCollision = tracks.sliceBy(mPerCol, collision.globalIndex());
35533561
tracksThisCollision.bindExternalIndices(&tracks);

0 commit comments

Comments
 (0)