Skip to content

Commit 60d7f83

Browse files
[PWGLF] Added rapidity range for handling pO analysis (#17801)
1 parent c38aab7 commit 60d7f83

1 file changed

Lines changed: 29 additions & 27 deletions

File tree

PWGLF/Tasks/Nuspex/spectraTOF.cxx

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ struct tofSpectra {
131131
Configurable<float> cfgCutNsigma{"cfgCutNsigma", 100.0f, "nsigma cut range for tracks"};
132132
Configurable<float> cfgCutEtaMin{"cfgCutEtaMin", -0.8f, "Min eta range for tracks"};
133133
Configurable<float> cfgCutdcaZMin{"cfgCutdcaZMin", -0.02f, "Min dcaZ range for tracks"};
134-
Configurable<float> cfgCutY{"cfgCutY", 0.5f, "Y range for tracks"};
134+
Configurable<float> cfgCutYMax{"cfgCutYMax", 0.5f, "Max Y range for tracks"};
135+
Configurable<float> cfgCutYMin{"cfgCutYMin", -0.5f, "Min Y range for tracks"};
135136
Configurable<int> lastRequiredTrdCluster{"lastRequiredTrdCluster", 5, "Last cluster to require in TRD for track selection. -1 does not require any TRD cluster"};
136137
Configurable<bool> requireTrdOnly{"requireTrdOnly", false, "Require only tracks from TRD"};
137138
Configurable<bool> requireNoTrd{"requireNoTrd", false, "Require tracks without TRD"};
@@ -900,7 +901,8 @@ struct tofSpectra {
900901
template <bool fillFullInfo, PID::ID id, typename T, typename C>
901902
void fillParticleHistos(const T& track, const C& collision)
902903
{
903-
if (std::abs(track.rapidity(PID::getMass(id))) > trkselOptions.cfgCutY) {
904+
const auto rapidity = track.rapidity(PID::getMass(id));
905+
if (rapidity < trkselOptions.cfgCutYMin || rapidity > trkselOptions.cfgCutYMax) {
904906
return;
905907
}
906908
if constexpr (id == PID::Kaon) {
@@ -1556,14 +1558,14 @@ struct tofSpectra {
15561558
bool isTOFKaon = track.hasTOF() && std::abs(nsigmaTOFKa) < trkselOptions.cfgCutNsigma;
15571559
bool isTOFProton = track.hasTOF() && std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma;
15581560
// Precompute rapidity values to avoid redundant calculations
1559-
double rapidityPi = std::abs(track.rapidity(PID::getMass(2)));
1560-
double rapidityKa = std::abs(track.rapidity(PID::getMass(3)));
1561-
double rapidityPr = std::abs(track.rapidity(PID::getMass(4)));
1561+
double rapidityPi = track.rapidity(PID::getMass(2));
1562+
double rapidityKa = track.rapidity(PID::getMass(3));
1563+
double rapidityPr = track.rapidity(PID::getMass(4));
15621564
if (track.eta() < trkselOptions.cfgCutEtaMin || track.eta() > trkselOptions.cfgCutEtaMax) {
15631565
return;
15641566
}
15651567
if (mcParticle.isPhysicalPrimary()) {
1566-
if (isTPCPion && rapidityPi <= trkselOptions.cfgCutY) {
1568+
if (isTPCPion && rapidityPi >= trkselOptions.cfgCutYMin && rapidityPi <= trkselOptions.cfgCutYMax) {
15671569
if (usePDGcode) {
15681570
if (pdgCode == kPiPlus) {
15691571
histos.fill(HIST("nsigmatpc/mc_closure/pos/pi"), track.pt(), nsigmaTPCPi, multiplicity);
@@ -1575,7 +1577,7 @@ struct tofSpectra {
15751577
histos.fill(HIST("nsigmatpc/mc_closure/neg/pi"), track.pt(), nsigmaTPCPi, multiplicity);
15761578
}
15771579
}
1578-
if (isTPCKaon && rapidityKa <= trkselOptions.cfgCutY) {
1580+
if (isTPCKaon && rapidityKa >= trkselOptions.cfgCutYMin && rapidityKa <= trkselOptions.cfgCutYMax) {
15791581
if (usePDGcode) {
15801582
if (pdgCode == kKPlus) {
15811583
histos.fill(HIST("nsigmatpc/mc_closure/pos/ka"), track.pt(), nsigmaTPCKa, multiplicity);
@@ -1587,7 +1589,7 @@ struct tofSpectra {
15871589
histos.fill(HIST("nsigmatpc/mc_closure/neg/ka"), track.pt(), nsigmaTPCKa, multiplicity);
15881590
}
15891591
}
1590-
if (isTPCProton && rapidityPr <= trkselOptions.cfgCutY) {
1592+
if (isTPCProton && rapidityPr >= trkselOptions.cfgCutYMin && rapidityPr <= trkselOptions.cfgCutYMax) {
15911593
if (usePDGcode) {
15921594
if (pdgCode == kProton) {
15931595
histos.fill(HIST("nsigmatpc/mc_closure/pos/pr"), track.pt(), nsigmaTPCPr, multiplicity);
@@ -1601,7 +1603,7 @@ struct tofSpectra {
16011603
}
16021604

16031605
// TOF Selection and Histogram Filling
1604-
if (isTOFPion && rapidityPi <= trkselOptions.cfgCutY) {
1606+
if (isTOFPion && rapidityPi >= trkselOptions.cfgCutYMin && rapidityPi <= trkselOptions.cfgCutYMax) {
16051607
if (usePDGcode) {
16061608
if (pdgCode == kPiPlus) {
16071609
histos.fill(HIST("nsigmatof/mc_closure/pos/pi"), track.pt(), nsigmaTOFPi, multiplicity);
@@ -1613,7 +1615,7 @@ struct tofSpectra {
16131615
histos.fill(HIST("nsigmatof/mc_closure/neg/pi"), track.pt(), nsigmaTOFPi, multiplicity);
16141616
}
16151617
}
1616-
if (isTOFKaon && rapidityKa <= trkselOptions.cfgCutY) {
1618+
if (isTOFKaon && rapidityKa >= trkselOptions.cfgCutYMin && rapidityKa <= trkselOptions.cfgCutYMax) {
16171619
if (usePDGcode) {
16181620
if (pdgCode == kKPlus) {
16191621
histos.fill(HIST("nsigmatof/mc_closure/pos/ka"), track.pt(), nsigmaTOFKa, multiplicity);
@@ -1625,7 +1627,7 @@ struct tofSpectra {
16251627
histos.fill(HIST("nsigmatof/mc_closure/neg/ka"), track.pt(), nsigmaTOFKa, multiplicity);
16261628
}
16271629
}
1628-
if (isTOFProton && rapidityPr <= trkselOptions.cfgCutY) {
1630+
if (isTOFProton && rapidityPr >= trkselOptions.cfgCutYMin && rapidityPr <= trkselOptions.cfgCutYMax) {
16291631
if (usePDGcode) {
16301632
if (pdgCode == kProton) {
16311633
histos.fill(HIST("nsigmatof/mc_closure/pos/pr"), track.pt(), nsigmaTOFPr, multiplicity);
@@ -1693,21 +1695,21 @@ struct tofSpectra {
16931695
const bool isTOFProton = track.hasTOF() && std::abs(nsigmaTOFPr) < trkselOptions.cfgCutNsigma;
16941696

16951697
// Apply rapidity cut for identified particles
1696-
if (isTPCPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) {
1698+
if (isTPCPion && track.rapidity(PID::getMass(2)) >= trkselOptions.cfgCutYMin && track.rapidity(PID::getMass(2)) <= trkselOptions.cfgCutYMax) {
16971699
tpcCount++;
16981700
if (track.sign() > 0) {
16991701
histos.fill(HIST("nsigmatpc/test_occupancy/pos/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy);
17001702
} else {
17011703
histos.fill(HIST("nsigmatpc/test_occupancy/neg/pi"), track.pt(), nsigmaTPCPi, multiplicity, occupancy);
17021704
}
1703-
} else if (isTPCKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) {
1705+
} else if (isTPCKaon && track.rapidity(PID::getMass(3)) >= trkselOptions.cfgCutYMin && track.rapidity(PID::getMass(3)) <= trkselOptions.cfgCutYMax) {
17041706
tpcCount++;
17051707
if (track.sign() > 0) {
17061708
histos.fill(HIST("nsigmatpc/test_occupancy/pos/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy);
17071709
} else {
17081710
histos.fill(HIST("nsigmatpc/test_occupancy/neg/ka"), track.pt(), nsigmaTPCKa, multiplicity, occupancy);
17091711
}
1710-
} else if (isTPCProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) {
1712+
} else if (isTPCProton && track.rapidity(PID::getMass(4)) >= trkselOptions.cfgCutYMin && track.rapidity(PID::getMass(4)) <= trkselOptions.cfgCutYMax) {
17111713
tpcCount++;
17121714
if (track.sign() > 0) {
17131715
histos.fill(HIST("nsigmatpc/test_occupancy/pos/pr"), track.pt(), nsigmaTPCPr, multiplicity, occupancy);
@@ -1717,21 +1719,21 @@ struct tofSpectra {
17171719
}
17181720

17191721
// TOF PID histograms
1720-
if (isTOFPion && std::abs(track.rapidity(PID::getMass(2))) < trkselOptions.cfgCutY) {
1722+
if (isTOFPion && track.rapidity(PID::getMass(2)) >= trkselOptions.cfgCutYMin && track.rapidity(PID::getMass(2)) <= trkselOptions.cfgCutYMax) {
17211723
tofCount++;
17221724
if (track.sign() > 0) {
17231725
histos.fill(HIST("nsigmatof/test_occupancy/pos/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy);
17241726
} else {
17251727
histos.fill(HIST("nsigmatof/test_occupancy/neg/pi"), track.pt(), nsigmaTOFPi, multiplicity, occupancy);
17261728
}
1727-
} else if (isTOFKaon && std::abs(track.rapidity(PID::getMass(3))) < trkselOptions.cfgCutY) {
1729+
} else if (isTOFKaon && track.rapidity(PID::getMass(3)) >= trkselOptions.cfgCutYMin && track.rapidity(PID::getMass(3)) <= trkselOptions.cfgCutYMax) {
17281730
tofCount++;
17291731
if (track.sign() > 0) {
17301732
histos.fill(HIST("nsigmatof/test_occupancy/pos/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy);
17311733
} else {
17321734
histos.fill(HIST("nsigmatof/test_occupancy/neg/ka"), track.pt(), nsigmaTOFKa, multiplicity, occupancy);
17331735
}
1734-
} else if (isTOFProton && std::abs(track.rapidity(PID::getMass(4))) < trkselOptions.cfgCutY) {
1736+
} else if (isTOFProton && track.rapidity(PID::getMass(4)) >= trkselOptions.cfgCutYMin && track.rapidity(PID::getMass(4)) <= trkselOptions.cfgCutYMax) {
17351737
tofCount++;
17361738
if (track.sign() > 0) {
17371739
histos.fill(HIST("nsigmatof/test_occupancy/pos/pr"), track.pt(), nsigmaTOFPr, multiplicity, occupancy);
@@ -1975,7 +1977,7 @@ struct tofSpectra {
19751977
return;
19761978
}
19771979

1978-
if (std::abs(mcParticle.y()) > trkselOptions.cfgCutY) {
1980+
if (mcParticle.y() < trkselOptions.cfgCutYMin || mcParticle.y() > trkselOptions.cfgCutYMax) {
19791981
return;
19801982
}
19811983
if (enablePureDCAHistogram) {
@@ -2624,7 +2626,7 @@ struct tofSpectra {
26242626
const float multiplicity = getMultiplicity(collision);
26252627
for (const auto& mcParticle : particlesInCollision) {
26262628

2627-
if (std::abs(mcParticle.y()) > trkselOptions.cfgCutY) {
2629+
if (mcParticle.y() < trkselOptions.cfgCutYMin || mcParticle.y() > trkselOptions.cfgCutYMax) {
26282630
continue;
26292631
}
26302632
static_for<0, 17>([&](auto i) {
@@ -2634,7 +2636,7 @@ struct tofSpectra {
26342636
}
26352637
} else {
26362638
for (const auto& mcParticle : mcParticles) {
2637-
if (std::abs(mcParticle.y()) > trkselOptions.cfgCutY) {
2639+
if (mcParticle.y() < trkselOptions.cfgCutYMin || mcParticle.y() > trkselOptions.cfgCutYMax) {
26382640
continue;
26392641
}
26402642

@@ -2668,7 +2670,7 @@ struct tofSpectra {
26682670
histos.fill(HIST("MC/MultiplicityRecoEv"), getMultiplicityMC(mcCollision));
26692671
}
26702672
for (const auto& mcParticle : particlesInCollision) {
2671-
if (std::abs(mcParticle.y()) > trkselOptions.cfgCutY) {
2673+
if (mcParticle.y() < trkselOptions.cfgCutYMin || mcParticle.y() > trkselOptions.cfgCutYMax) {
26722674
continue;
26732675
}
26742676
static_for<0, 17>([&](auto i) {
@@ -2699,7 +2701,7 @@ struct tofSpectra {
26992701
}
27002702
histos.fill(HIST("MC/MultiplicityMCINELgt1"), getMultiplicityMC(mcCollision));
27012703
for (const auto& mcParticle : particlesInCollision) {
2702-
if (std::abs(mcParticle.y()) > trkselOptions.cfgCutY) {
2704+
if (mcParticle.y() < trkselOptions.cfgCutYMin || mcParticle.y() > trkselOptions.cfgCutYMax) {
27032705
continue;
27042706
}
27052707
static_for<0, 17>([&](auto i) {
@@ -2729,8 +2731,8 @@ struct tofSpectra {
27292731
continue;
27302732
int pdgCode = mcParticleGen.pdgCode();
27312733
float pt = mcParticleGen.pt();
2732-
float absY = std::abs(mcParticleGen.y());
2733-
if (absY > trkselOptions.cfgCutY) {
2734+
float rapidity = mcParticleGen.y();
2735+
if (rapidity < trkselOptions.cfgCutYMin || rapidity > trkselOptions.cfgCutYMax) {
27342736
continue;
27352737
}
27362738

@@ -2793,8 +2795,8 @@ struct tofSpectra {
27932795

27942796
int pdgCode = mcParticle.pdgCode();
27952797
float pt = mcParticle.pt();
2796-
float absY = std::abs(mcParticle.y());
2797-
if (absY > trkselOptions.cfgCutY) {
2798+
float rapidity = mcParticle.y();
2799+
if (rapidity < trkselOptions.cfgCutYMin || rapidity > trkselOptions.cfgCutYMax) {
27982800
continue;
27992801
}
28002802

@@ -2877,7 +2879,7 @@ struct tofSpectra {
28772879
// Precompute rapidity values to avoid redundant calculations
28782880
double rapiditypar = std::abs(track.rapidity(PID::getMass(par)));
28792881
// TPC Selection and histogram filling
2880-
if (isTPCpar && rapiditypar <= trkselOptions.cfgCutY) {
2882+
if (isTPCpar && rapiditypar >= trkselOptions.cfgCutYMin && rapiditypar <= trkselOptions.cfgCutYMax) {
28812883
static_for<0, NpCharge - 1>([&](auto i) {
28822884
if (pdgCode == PDGs[i]) {
28832885
hMCPdgNsigmaTPC[par - 2][i]->Fill(track.pt(), nsigmaTPCpar, multiplicity);

0 commit comments

Comments
 (0)