Skip to content

Commit 259e3d8

Browse files
authored
[PWGLF] Further studies for dNdEta with phi (#12173)
1 parent d59ce93 commit 259e3d8

File tree

1 file changed

+35
-22
lines changed

1 file changed

+35
-22
lines changed

PWGLF/Tasks/Strangeness/phik0shortanalysis.cxx

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ struct Phik0shortanalysis {
102102
// Configurables for track selection (not necessarily common for trigger and the two associated particles)
103103
struct : ConfigurableGroup {
104104
Configurable<float> cfgCutCharge{"cfgCutCharge", 0.0f, "Cut on charge"};
105+
Configurable<float> cfgMinAbsCharge{"cfgMinAbsCharge", 3.0f, "Cut on absolute charge"};
105106
Configurable<bool> cfgGlobalWoDCATrack{"cfgGlobalWoDCATrack", true, "Global track selection without DCA"};
106107
Configurable<bool> cfgPVContributor{"cfgPVContributor", true, "PV contributor track selection"};
107108
Configurable<float> cMinKaonPtcut{"cMinKaonPtcut", 0.15f, "Track minimum pt cut"};
@@ -259,7 +260,10 @@ struct Phik0shortanalysis {
259260
SliceCache cache;
260261

261262
// Preslice for manual slicing
262-
Preslice<aod::McParticles> perMCColl = aod::mcparticle::mcCollisionId;
263+
struct : PresliceGroup {
264+
Preslice<aod::Tracks> perColl = aod::track::collisionId;
265+
Preslice<aod::McParticles> perMCColl = aod::mcparticle::mcCollisionId;
266+
} preslices;
263267

264268
// Positive and negative tracks partitions
265269
Partition<FullTracks> posTracks = aod::track::signed1Pt > trackConfigs.cfgCutCharge;
@@ -957,6 +961,21 @@ struct Phik0shortanalysis {
957961
return false;
958962
}
959963

964+
template <typename T>
965+
bool isGenParticleCharged(const T& mcParticle)
966+
{
967+
if (!mcParticle.isPhysicalPrimary() || std::abs(mcParticle.eta()) > trackConfigs.etaMax)
968+
return false;
969+
970+
auto pdgTrack = pdgDB->GetParticle(mcParticle.pdgCode());
971+
if (pdgTrack == nullptr)
972+
return false;
973+
if (std::abs(pdgTrack->Charge()) < trackConfigs.cfgMinAbsCharge)
974+
return false;
975+
976+
return true;
977+
}
978+
960979
// Get phi-meson purity functions from CCDB
961980
void getPhiPurityFunctionsFromCCDB()
962981
{
@@ -2436,7 +2455,7 @@ struct Phik0shortanalysis {
24362455
return;
24372456
const auto& mcCollision = collision.mcCollision_as<MCCollisions>();
24382457

2439-
auto mcParticlesThisColl = mcParticles.sliceBy(perMCColl, mcCollision.globalIndex());
2458+
auto mcParticlesThisColl = mcParticles.sliceBy(preslices.perMCColl, mcCollision.globalIndex());
24402459

24412460
if (filterOnMcPhi && !eventHasMCPhi(mcParticlesThisColl))
24422461
return;
@@ -2456,13 +2475,7 @@ struct Phik0shortanalysis {
24562475
}
24572476

24582477
for (const auto& mcParticle : mcParticlesThisColl) {
2459-
if (!mcParticle.isPhysicalPrimary() || std::abs(mcParticle.eta()) > trackConfigs.etaMax)
2460-
continue;
2461-
2462-
auto pdgTrack = pdgDB->GetParticle(mcParticle.pdgCode());
2463-
if (pdgTrack == nullptr)
2464-
continue;
2465-
if (pdgTrack->Charge() == trackConfigs.cfgCutCharge)
2478+
if (!isGenParticleCharged(mcParticle))
24662479
continue;
24672480

24682481
mcEventHist.fill(HIST("h2GenMCEtaDistributionReco"), genmultiplicity, mcParticle.eta());
@@ -2471,7 +2484,7 @@ struct Phik0shortanalysis {
24712484

24722485
PROCESS_SWITCH(Phik0shortanalysis, processdNdetaWPhiMCReco, "Process function for dN/deta values in MCReco", false);
24732486

2474-
void processdNdetaWPhiMCGen(MCCollisions::iterator const& mcCollision, soa::SmallGroups<SimCollisions> const& collisions, aod::McParticles const& mcParticles)
2487+
void processdNdetaWPhiMCGen(MCCollisions::iterator const& mcCollision, soa::SmallGroups<SimCollisions> const& collisions, FilteredMCTracks const& filteredMCTracks, aod::McParticles const& mcParticles)
24752488
{
24762489
if (std::abs(mcCollision.posZ()) > cutZVertex)
24772490
return;
@@ -2487,14 +2500,20 @@ struct Phik0shortanalysis {
24872500
if (acceptEventQA<true>(collision, false)) {
24882501
mcEventHist.fill(HIST("hGenMCRecoMultiplicityPercent"), genmultiplicity);
24892502

2490-
for (const auto& mcParticle : mcParticles) {
2491-
if (!mcParticle.isPhysicalPrimary() || std::abs(mcParticle.eta()) > trackConfigs.etaMax)
2503+
auto filteredMCTracksThisColl = filteredMCTracks.sliceBy(preslices.perColl, collision.globalIndex());
2504+
for (const auto& track : filteredMCTracksThisColl) {
2505+
if (!track.has_mcParticle())
24922506
continue;
24932507

2494-
auto pdgTrack = pdgDB->GetParticle(mcParticle.pdgCode());
2495-
if (pdgTrack == nullptr)
2508+
auto mcTrack = track.mcParticle();
2509+
if (!mcTrack.isPhysicalPrimary() || std::abs(mcTrack.eta()) > trackConfigs.etaMax)
24962510
continue;
2497-
if (pdgTrack->Charge() == trackConfigs.cfgCutCharge)
2511+
2512+
mcEventHist.fill(HIST("h2RecoCheckMCEtaDistribution"), genmultiplicity, mcTrack.eta());
2513+
}
2514+
2515+
for (const auto& mcParticle : mcParticles) {
2516+
if (!isGenParticleCharged(mcParticle))
24982517
continue;
24992518

25002519
mcEventHist.fill(HIST("h2GenMCEtaDistributionRecoCheck"), genmultiplicity, mcParticle.eta());
@@ -2509,13 +2528,7 @@ struct Phik0shortanalysis {
25092528
mcEventHist.fill(HIST("hGenMCAssocRecoMultiplicityPercent"), genmultiplicity);
25102529

25112530
for (const auto& mcParticle : mcParticles) {
2512-
if (!mcParticle.isPhysicalPrimary() || std::abs(mcParticle.eta()) > trackConfigs.etaMax)
2513-
continue;
2514-
2515-
auto pdgTrack = pdgDB->GetParticle(mcParticle.pdgCode());
2516-
if (pdgTrack == nullptr)
2517-
continue;
2518-
if (pdgTrack->Charge() == trackConfigs.cfgCutCharge)
2531+
if (!isGenParticleCharged(mcParticle))
25192532
continue;
25202533

25212534
mcEventHist.fill(HIST("h2GenMCEtaDistribution"), genmultiplicity, mcParticle.eta());

0 commit comments

Comments
 (0)