Skip to content

Commit fb96566

Browse files
authored
add triton QA in HadNucleiFemto.cxx
1 parent db4aa34 commit fb96566

1 file changed

Lines changed: 35 additions & 10 deletions

File tree

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

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,13 @@ using CollisionsFullWithPVMult = CollisionsFull;
9696
using CollisionsFullMC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::CentFT0Cs, aod::FT0Mults, aod::PVMults>;
9797
using HadHyperCollisionsFull = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0As, aod::CentFT0Cs, aod::CentFT0Ms, aod::FT0Mults>;
9898
using HadHyperCollisionsFullMC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::CentFT0As, aod::CentFT0Cs, aod::CentFT0Ms, aod::FT0Mults>;
99-
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>;
100-
using TrackCandidatesMC = 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, aod::McTrackLabels>;
99+
using TrackCandidates = soa::Join<aod::pidTOFmass, 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>;
100+
using TrackCandidatesMC = soa::Join<aod::pidTOFmass, 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, aod::McTrackLabels>;
101101
// The DCA-template process explicitly subscribes to the propagated covariance
102102
// table. This makes the propagation service enter the branch where TrackTuner
103103
// corrections can be applied when enabled, without adding that dependency to
104104
// unrelated MC process switches.
105-
using TrackCandidatesMCDca = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCov, 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, aod::McTrackLabels>;
105+
using TrackCandidatesMCDca = soa::Join<aod::pidTOFmass, aod::TracksIU, aod::TracksExtra, aod::TracksCov, 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, aod::McTrackLabels>;
106106

107107
namespace
108108
{
@@ -435,13 +435,16 @@ struct HadNucleiFemto {
435435
std::string prefix{"tritonPid"};
436436
// Triton track-quality, purity and PID cuts
437437
Configurable<int> settingITSNClsMinTr{"settingITSNClsMinTr", 5, "Minimum number of ITS clusters for triton candidates"};
438+
Configurable<float> settingTPCChi2NClMaxTr{"settingTPCChi2NClMaxTr", 4.f, "Maximum TPC chi2 per cluster for triton candidates"};
439+
Configurable<float> settingITSChi2NClMaxTr{"settingITSChi2NClMaxTr", 36.f, "Maximum ITS chi2 per cluster for triton candidates"};
438440
Configurable<float> settingPIDMomentumSplitTr{"settingPIDMomentumSplitTr", 2.f, "Momentum separating low- and high-momentum triton TPC PID"};
439441
Configurable<float> settingCutTPCNsigmaLowPTr{"settingCutTPCNsigmaLowPTr", 3.f, "Maximum absolute TPC n-sigma for tritons below the momentum split"};
440442
Configurable<float> settingCutITSNsigmaLowPTr{"settingCutITSNsigmaLowPTr", 3.f, "Maximum absolute ITS n-sigma for tritons below the momentum split"};
441443
Configurable<float> settingCutTPCNsigmaHighPMinTr{"settingCutTPCNsigmaHighPMinTr", -2.f, "Minimum TPC n-sigma for tritons above the momentum split"};
442444
Configurable<float> settingCutTPCNsigmaHighPMaxTr{"settingCutTPCNsigmaHighPMaxTr", 3.f, "Maximum TPC n-sigma for tritons above the momentum split"};
443445
Configurable<float> settingTOFMassMomentumMinTr{"settingTOFMassMomentumMinTr", 1.2f, "Minimum momentum to apply the triton TOF mass cut"};
444446
Configurable<float> settingTOFMassMinTr{"settingTOFMassMinTr", 2.5f, "Minimum triton TOF mass"};
447+
Configurable<bool> settingUseTOFMassTableTr{"settingUseTOFMassTableTr", false, "Use pidTOFmass mass for triton PID and purity instead of computeTOFMass"};
445448
Configurable<float> settingTOFMassMaxTr{"settingTOFMassMaxTr", 3.4f, "Maximum triton TOF mass"};
446449
Configurable<float> settingTPCRejectNsig{"settingTPCRejectNsig", 3.f, "Minimum absolute TPC n-sigma from deuteron, proton and pion hypotheses"};
447450
} tritonPid;
@@ -836,6 +839,8 @@ struct HadNucleiFemto {
836839
{"h2NsigmaHadKaTOF", "NsigmaHad TOF distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(K)", {HistType::kTH1F, {{200, -5.0f, 5.0f}}}},
837840

838841
// Purity
842+
{"h2MassTOFTrComputedVsTable", "Triton TOF mass comparison before mass cut;computed mass (GeV/#it{c}^{2});table mass (GeV/#it{c}^{2})", {HistType::kTH2F, {{280, 0.f, 7.f}, {280, 0.f, 7.f}}}},
843+
{"purity/h2MassTOFTrComputedVsTable", "Triton TOF mass comparison before mass cut;computed mass (GeV/#it{c}^{2});table mass (GeV/#it{c}^{2})", {HistType::kTH2F, {{280, 0.f, 7.f}, {280, 0.f, 7.f}}}},
839844
{"purity/h2MassTOFTr_preselection", "Triton TOF mass before mass cut; signed #it{p}_{T} (GeV/#it{c}); m_{TOF} (GeV/#it{c}^{2})", {HistType::kTH2F, {{280, -7.0f, 7.0f}, {280, 0.0f, 7.0f}}}},
840845
{"purity/h2NsigmaNuTPC_preselection", "NsigmaNu TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(Nu)", {HistType::kTH2F, {{280, -7.0f, 7.0f}, {400, -10.0f, 10.0f}}}},
841846
{"purity/h2NsigmaNuTPC_preselecComp", "NsigmaNu TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(Nu)", {HistType::kTH2F, {{280, -7.0f, 7.0f}, {400, -10.0f, 10.0f}}}},
@@ -1261,18 +1266,16 @@ struct HadNucleiFemto {
12611266
constexpr float maxAbsDcaXY = 0.2f;
12621267
constexpr float maxAbsDcaZ = 0.2f;
12631268
constexpr int minTPCCrossedRows = 70;
1264-
constexpr float maxTPCChi2NCl = 5.f;
12651269
constexpr float maxTPCFractionSharedCls = 0.3f;
1266-
constexpr float maxITSChi2NCl = 10.f;
12671270

12681271
return !(std::abs(candidate.eta()) >= maxAbsEta ||
12691272
std::abs(candidate.dcaXY()) >= maxAbsDcaXY ||
12701273
std::abs(candidate.dcaZ()) >= maxAbsDcaZ ||
12711274
candidate.tpcNClsCrossedRows() < minTPCCrossedRows ||
1272-
candidate.tpcChi2NCl() >= maxTPCChi2NCl ||
1275+
candidate.tpcChi2NCl() >= tritonPid.settingTPCChi2NClMaxTr ||
12731276
candidate.tpcFractionSharedCls() >= maxTPCFractionSharedCls ||
12741277
candidate.itsNCls() < tritonPid.settingITSNClsMinTr ||
1275-
candidate.itsChi2NCl() >= maxITSChi2NCl);
1278+
candidate.itsChi2NCl() >= tritonPid.settingITSChi2NClMaxTr);
12761279
}
12771280

12781281
bool useDeuteronNucleus() const
@@ -1925,6 +1928,26 @@ struct HadNucleiFemto {
19251928
return std::abs(candidate.tpcInnerParam()) * std::sqrt(1.f / (beta * beta) - 1.f);
19261929
}
19271930

1931+
template <typename Ttrack>
1932+
float tritonTOFMass(const Ttrack& candidate) const
1933+
{
1934+
return tritonPid.settingUseTOFMassTableTr.value ? candidate.mass() : computeTOFMass(candidate);
1935+
}
1936+
1937+
template <typename Ttrack>
1938+
void fillTritonTOFMassComparison(const Ttrack& candidate, bool isPurity)
1939+
{
1940+
const float computedMass = computeTOFMass(candidate);
1941+
const float tableMass = candidate.mass();
1942+
if (std::isfinite(computedMass) && std::isfinite(tableMass)) {
1943+
if (isPurity) {
1944+
mQaRegistry.fill(HIST("purity/h2MassTOFTrComputedVsTable"), computedMass, tableMass);
1945+
} else {
1946+
mQaRegistry.fill(HIST("h2MassTOFTrComputedVsTable"), computedMass, tableMass);
1947+
}
1948+
}
1949+
}
1950+
19281951
template <typename Ttrack>
19291952
bool selectionPIDTr(const Ttrack& candidate)
19301953
{
@@ -1957,9 +1980,10 @@ struct HadNucleiFemto {
19571980
if (!candidate.hasTOF()) {
19581981
return false;
19591982
}
1960-
const float massTOFTr = computeTOFMass(candidate);
1983+
fillTritonTOFMassComparison(candidate, false);
1984+
const float massTOFTr = tritonTOFMass(candidate);
19611985
mQaRegistry.fill(HIST("h2MassTOFTr"), candidate.sign() * absP, massTOFTr);
1962-
if (massTOFTr <= tritonPid.settingTOFMassMinTr || massTOFTr >= tritonPid.settingTOFMassMaxTr) {
1986+
if (!std::isfinite(massTOFTr) || massTOFTr <= tritonPid.settingTOFMassMinTr || massTOFTr >= tritonPid.settingTOFMassMaxTr) {
19631987
return false;
19641988
}
19651989
}
@@ -4109,7 +4133,8 @@ struct HadNucleiFemto {
41094133
mQaRegistry.fill(HIST("purity/h2NsigmaNuTPC_preselection"), signedPtTr, tpcNSigmaTr);
41104134
// Apply the triton TPC PID cut but keep TOF mass uncut to retain its sidebands.
41114135
if (passTPCTr && absPTr > tritonPid.settingTOFMassMomentumMinTr && track.hasTOF()) {
4112-
const float massTOFTr = computeTOFMass(track);
4136+
fillTritonTOFMassComparison(track, true);
4137+
const float massTOFTr = tritonTOFMass(track);
41134138
if (std::isfinite(massTOFTr)) {
41144139
mQaRegistry.fill(HIST("purity/h2MassTOFTr_preselection"), signedPtTr, massTOFTr);
41154140
}

0 commit comments

Comments
 (0)