Skip to content

Commit d46dd75

Browse files
[PWGLF] added pt correction for he3 tracked as triton in the purity studies
1 parent 118f315 commit d46dd75

File tree

1 file changed

+77
-3
lines changed

1 file changed

+77
-3
lines changed

PWGLF/TableProducer/Nuspex/he3HadronFemto.cxx

Lines changed: 77 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ std::array<float, 3> kDCAzResolutionParams[static_cast<int>(Species::kAllSpecies
129129
{0.0021, 1.1122, 0.0021} // Pr
130130
};
131131

132+
std::array<float, 2> kHePidTrkParams = {0.1593, -0.0445};
133+
132134
} // namespace
133135

134136
struct He3HadCandidate {
@@ -310,16 +312,20 @@ struct he3HadronFemto {
310312
{"He3/h2dEdxHe3candidates", "dEdx distribution; #it{p} (GeV/#it{c}); dE/dx (a.u.)", {HistType::kTH2F, {{200, -5.0f, 5.0f}, {100, 0.0f, 2000.0f}}}},
311313
{"He3/h2NsigmaHe3TPC", "NsigmaHe3 TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(^{3}He)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {200, -5.0f, 5.0f}}}},
312314
{"He3/h2NsigmaHe3TPC_preselection", "NsigmaHe3 TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(^{3}He)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {400, -10.0f, 10.0f}}}},
313-
{"He3/h2NSigmaHe3ITS_preselection", "NsigmaHe3 ITS distribution; signed #it{p}_{T} (GeV/#it{c}); n#sigma_{ITS} ^{3}He", {HistType::kTH2F, {{50, -5.0f, 5.0f}, {120, -3.0f, 3.0f}}}},
314315
{"He3/h2NSigmaHe3ITS", "NsigmaHe3 ITS distribution; signed #it{p}_{T} (GeV/#it{c}); n#sigma_{ITS} ^{3}He", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {120, -3.0f, 3.0f}}}},
316+
{"He3/h2NSigmaHe3ITS_preselection", "NsigmaHe3 ITS distribution; signed #it{p}_{T} (GeV/#it{c}); n#sigma_{ITS} ^{3}He", {HistType::kTH2F, {{50, -5.0f, 5.0f}, {120, -3.0f, 3.0f}}}},
315317

316318
{"Had/hNClsHadITS", "had;N_{ITS} Cluster", {HistType::kTH1F, {{20, -10.0f, 10.0f}}}},
317319
{"Had/hChi2NClHadITS", "had;Chi2_{ITS} Ncluster", {HistType::kTH1F, {{100, 0, 100.0f}}}},
318320
{"Had/hHadronPt", "had; #it{p}_{T} (GeV/#it{c})", {HistType::kTH1F, {{120, -3.0f, 3.0f}}}},
319321
{"Had/h2NsigmaHadronTPC", "NsigmaHadron TPC distribution; #it{p}_{T}(GeV/#it{c}); n#sigma_{TPC}(had)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {200, -5.0f, 5.0f}}}},
320-
{"Had/h2NsigmaHadronTPC_preselection", "NsigmaHe3 TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(had)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {400, -10.0f, 10.0f}}}},
322+
{"Had/h2NsigmaHadronTPC_preselection", "NsigmaHadron TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(had)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {400, -10.0f, 10.0f}}}},
323+
{"Had/h2NsigmaHadronTPC_mcBackground", "NsigmaHadron TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(had)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {400, -10.0f, 10.0f}}}},
324+
{"Had/h2NsigmaHadronTPC_mcSignal", "NsigmaHadron TPC distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TPC}(had)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {400, -10.0f, 10.0f}}}},
321325
{"Had/h2NsigmaHadronTOF", "NsigmaHadron TOF distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TOF}(had)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {200, -5.0f, 5.0f}}}},
322326
{"Had/h2NsigmaHadronTOF_preselection", "NsigmaHadron TOF distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TOF}(had)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {400, -10.0f, 10.0f}}}},
327+
{"Had/h2NsigmaHadronTOF_mcBackground", "NsigmaHadron TOF distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TOF}(had)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {400, -10.0f, 10.0f}}}},
328+
{"Had/h2NsigmaHadronTOF_mcSignal", "NsigmaHadron TOF distribution; #it{p}_{T} (GeV/#it{c}); n#sigma_{TOF}(had)", {HistType::kTH2F, {{100, -5.0f, 5.0f}, {400, -10.0f, 10.0f}}}},
323329
},
324330
OutputObjHandlingPolicy::AnalysisObject,
325331
false,
@@ -468,6 +474,15 @@ struct he3HadronFemto {
468474
return true;
469475
}
470476

477+
template <typename Ttrack>
478+
float correctPtHe3TrackedAsTriton(const Ttrack& candidate)
479+
{
480+
if (candidate.pt() < 2.5 && candidate.pidForTracking() == o2::track::PID::Triton)
481+
return candidate.pt() * 2. * (1. - kHePidTrkParams[0] - kHePidTrkParams[1] * candidate.pt() * 2.);
482+
483+
return candidate.pt() * 2.;
484+
}
485+
471486
float computeNsigmaDCA(const float pt, const float dca, const int iSpecies, const char* dcaType = "xy")
472487
{
473488

@@ -1330,6 +1345,65 @@ struct he3HadronFemto {
13301345
}
13311346
}
13321347

1348+
if (!selectTrack(track, Species::kHe3) || !selectDcaNsigmaCut(track, Species::kHe3))
1349+
continue;
1350+
1351+
const float ptHe3Corrected = correctPtHe3TrackedAsTriton(track);
1352+
1353+
mQaRegistry.fill(HIST("He3/hHe3Pt"), ptHe3Corrected);
1354+
mQaRegistry.fill(HIST("He3/hDCAxyHe3"), track.dcaXY());
1355+
mQaRegistry.fill(HIST("He3/hDCAzHe3"), track.dcaZ());
1356+
1357+
bool heliumPID = track.pidForTracking() == o2::track::PID::Helium3 || track.pidForTracking() == o2::track::PID::Alpha;
1358+
float correctedTPCinnerParam = (heliumPID && settingCompensatePIDinTracking) ? track.tpcInnerParam() / 2.f : track.tpcInnerParam();
1359+
if (correctedTPCinnerParam < settingCutRigidityMinHe3) {
1360+
continue;
1361+
}
1362+
1363+
const float nSigmaHe3 = computeNSigmaHe3(track);
1364+
mQaRegistry.fill(HIST("He3/h2NsigmaHe3TPC_preselection"), track.sign() * ptHe3Corrected, nSigmaHe3);
1365+
}
1366+
}
1367+
PROCESS_SWITCH(he3HadronFemto, processPurity, "Process for purity studies", false);
1368+
1369+
void processPurityMc(const CollisionsFullMC::iterator& collision, const TrackCandidatesMC& tracks, const aod::BCsWithTimestamps& bcs, const aod::McParticles& /*mcParticles*/, const aod::McTrackLabels& /*mcTrackLabels*/)
1370+
{
1371+
if (!selectCollision</*isMC*/ false>(collision, bcs))
1372+
return;
1373+
1374+
for (const auto& track : tracks) {
1375+
1376+
if (!track.has_mcParticle())
1377+
continue;
1378+
const auto& particle = track.mcParticle_as<aod::McParticles>();
1379+
1380+
if (!selectTrack(track, Species::kHad))
1381+
continue;
1382+
1383+
if (selectDcaNsigmaCut(track, Species::kHad)) {
1384+
mQaRegistry.fill(HIST("Had/hHadronPt"), track.pt());
1385+
1386+
const float tpcNSigmaHad = computeTPCNSigmaHadron(track);
1387+
mQaRegistry.fill(HIST("Had/h2NsigmaHadronTPC_preselection"), track.sign() * track.tpcInnerParam(), tpcNSigmaHad);
1388+
1389+
if (std::abs(particle.pdgCode()) != settingHadPDGCode) {
1390+
mQaRegistry.fill(HIST("Had/h2NsigmaHadronTPC_mcBackground"), track.sign() * track.tpcInnerParam(), tpcNSigmaHad);
1391+
} else {
1392+
mQaRegistry.fill(HIST("Had/h2NsigmaHadronTPC_mcSignal"), track.sign() * track.tpcInnerParam(), tpcNSigmaHad);
1393+
}
1394+
1395+
if (track.hasTOF()) {
1396+
const float tofNSigmaHad = computeTOFNSigmaHadron(track);
1397+
mQaRegistry.fill(HIST("Had/h2NsigmaHadronTOF_preselection"), track.sign() * track.pt(), tofNSigmaHad);
1398+
1399+
if (std::abs(particle.pdgCode()) != settingHadPDGCode) {
1400+
mQaRegistry.fill(HIST("Had/h2NsigmaHadronTOF_mcBackground"), track.sign() * track.tpcInnerParam(), tofNSigmaHad);
1401+
} else {
1402+
mQaRegistry.fill(HIST("Had/h2NsigmaHadronTOF_mcSignal"), track.sign() * track.tpcInnerParam(), tofNSigmaHad);
1403+
}
1404+
}
1405+
}
1406+
13331407
if (!selectTrack(track, Species::kHe3) || !selectDcaNsigmaCut(track, Species::kHe3))
13341408
continue;
13351409

@@ -1347,7 +1421,7 @@ struct he3HadronFemto {
13471421
mQaRegistry.fill(HIST("He3/h2NsigmaHe3TPC_preselection"), track.sign() * 2 * track.pt(), nSigmaHe3);
13481422
}
13491423
}
1350-
PROCESS_SWITCH(he3HadronFemto, processPurity, "Process for purity studies", false);
1424+
PROCESS_SWITCH(he3HadronFemto, processPurityMc, "Process for purity studies mc", false);
13511425
};
13521426

13531427
WorkflowSpec defineDataProcessing(const ConfigContext& cfgc)

0 commit comments

Comments
 (0)