Skip to content

Commit 1e4a0c9

Browse files
authored
[PWGLF] Replaced FT0M with FT0C and addition of Armenteros-Podolanski plot pre-selections for V0s (#14335)
1 parent 415799b commit 1e4a0c9

File tree

1 file changed

+48
-32
lines changed

1 file changed

+48
-32
lines changed

PWGLF/Tasks/Strangeness/strangenessInJetsIons.cxx

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,11 @@ using namespace o2::constants::math;
7676
using std::array;
7777

7878
// Define convenient aliases for joined AOD tables
79-
using SelCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms>;
79+
using SelCollisions = soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Cs>;
8080
using SimCollisions = soa::Join<aod::McCollisionLabels,
8181
aod::Collisions,
8282
aod::EvSels,
83-
aod::CentFT0Ms>;
83+
aod::CentFT0Cs>;
8484
using DaughterTracks = soa::Join<aod::Tracks, aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::TracksDCA,
8585
aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr,
8686
aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr>;
@@ -125,21 +125,21 @@ struct StrangenessInJetsIons {
125125
Configurable<std::string> triggerName{"triggerName", "fOmega", "Software trigger name"};
126126

127127
// Event selection
128-
Configurable<bool> isApplySameBunchPileup{"isApplySameBunchPileup", true, "Enable SameBunchPileup cut"};
129-
Configurable<bool> isApplyGoodZvtxFT0vsPV{"isApplyGoodZvtxFT0vsPV", true, "Enable GoodZvtxFT0vsPV cut"};
128+
Configurable<bool> requireNoSameBunchPileup{"requireNoSameBunchPileup", true, "Require kNoSameBunchPileup selection"};
129+
Configurable<bool> requireGoodZvtxFT0vsPV{"requireGoodZvtxFT0vsPV", true, "Require kIsGoodZvtxFT0vsPV selection"};
130130

131131
// Track analysis parameters
132132
Configurable<int> minITSnCls{"minITSnCls", 4, "Minimum number of ITS clusters"};
133133
Configurable<int> minNCrossedRowsTPC{"minNCrossedRowsTPC", 70, "Minimum number of TPC crossed rows"};
134134
Configurable<double> maxChi2TPC{"maxChi2TPC", 4.0f, "Maximum chi2 per cluster TPC"};
135135
Configurable<double> etaMin{"etaMin", -0.8f, "Minimum eta"};
136136
Configurable<double> etaMax{"etaMax", +0.8f, "Maximum eta"};
137-
Configurable<double> ptMinV0Proton{"ptMinV0Proton", 0.3f, "Minimum pt of protons from V0"};
138-
Configurable<double> ptMaxV0Proton{"ptMaxV0Proton", 10.0f, "Maximum pt of protons from V0"};
139-
Configurable<double> ptMinV0Pion{"ptMinV0Pion", 0.1f, "Minimum pt of pions from V0"};
140-
Configurable<double> ptMaxV0Pion{"ptMaxV0Pion", 1.5f, "Maximum pt of pions from V0"};
141-
Configurable<double> ptMinK0Pion{"ptMinK0Pion", 0.3f, "Minimum pt of pions from K0"};
142-
Configurable<double> ptMaxK0Pion{"ptMaxK0Pion", 10.0f, "Maximum pt of pions from K0"};
137+
Configurable<double> ptMinV0Proton{"ptMinV0Proton", 0.0f, "Minimum pt of protons from V0"};
138+
Configurable<double> ptMaxV0Proton{"ptMaxV0Proton", 100.0f, "Maximum pt of protons from V0"};
139+
Configurable<double> ptMinV0Pion{"ptMinV0Pion", 0.0f, "Minimum pt of pions from V0"};
140+
Configurable<double> ptMaxV0Pion{"ptMaxV0Pion", 100.0f, "Maximum pt of pions from V0"};
141+
Configurable<double> ptMinK0Pion{"ptMinK0Pion", 0.0f, "Minimum pt of pions from K0"};
142+
Configurable<double> ptMaxK0Pion{"ptMaxK0Pion", 100.0f, "Maximum pt of pions from K0"};
143143
Configurable<double> nsigmaTPCmin{"nsigmaTPCmin", -3.0f, "Minimum nsigma TPC"};
144144
Configurable<double> nsigmaTPCmax{"nsigmaTPCmax", +3.0f, "Maximum nsigma TPC"};
145145
Configurable<double> nsigmaTOFmin{"nsigmaTOFmin", -3.0f, "Minimum nsigma TOF"};
@@ -158,7 +158,7 @@ struct StrangenessInJetsIons {
158158
Configurable<double> dcaNegToPVminK0s{"dcaNegToPVminK0s", 0.1f, "Minimum DCA of negative track to primary vertex in K0S decays (cm)"};
159159
Configurable<double> dcaPosToPVminK0s{"dcaPosToPVminK0s", 0.1f, "Minimum DCA of positive track to primary vertex in K0S decays (cm)"};
160160
Configurable<bool> requireArmenterosCut{"requireArmenterosCut", true, "Require Armenteros Cut"};
161-
Configurable<float> paramArmenterosCut{"paramArmenterosCut", 2.0f, "Parameter Armenteros Cut (K0S only). This parameters multiplies qtarm"};
161+
Configurable<float> paramArmenterosCut{"paramArmenterosCut", 0.2f, "Parameter Armenteros Cut (K0S only). This parameters multiplies alphaArm (Check if: qtarm >= this * |alphaArm|)"};
162162
Configurable<float> ctauK0s{"ctauK0s", 20.0f, "C tau K0S (cm)"};
163163
// Lambda/anti-Lambda paramaters
164164
Configurable<double> dcaProtonToPVmin{"dcaProtonToPVmin", 0.05f, "Minimum DCA of proton/anti-proton track to primary vertex in Lambda/anti-Lambda decays (cm)"};
@@ -204,7 +204,7 @@ struct StrangenessInJetsIons {
204204

205205
// Define binning and axis specifications for multiplicity, eta, pT, PID, and invariant mass histograms
206206
std::vector<double> multBinning = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
207-
AxisSpec multAxis = {multBinning, "FT0M percentile"};
207+
AxisSpec multAxis = {multBinning, "FT0C percentile"};
208208
const AxisSpec ptAxis{100, 0.0, 10.0, "#it{p}_{T} (GeV/#it{c})"};
209209
const AxisSpec invMassK0sAxis{200, 0.44, 0.56, "m_{#pi#pi} (GeV/#it{c}^{2})"};
210210
const AxisSpec invMassLambdaAxis{200, 1.09, 1.14, "m_{p#pi} (GeV/#it{c}^{2})"};
@@ -214,6 +214,8 @@ struct StrangenessInJetsIons {
214214
const AxisSpec nsigmaTOFAxis{longLivedOptions.longLivedBinsNsigma, "n#sigma_{TOF}"};
215215
const AxisSpec nsigmaTPCAxis{longLivedOptions.longLivedBinsNsigma, "n#sigma_{TPC}"};
216216
const AxisSpec dcaAxis{longLivedOptions.longLivedBinsDca, "DCA_{xy} (cm)"};
217+
const AxisSpec alphaArmAxis{1000, -1.0f, 1.0f, "#alpha^{arm}"};
218+
const AxisSpec qtarmAxis{1000, 0.0f, 0.30f, "q_{T}^{arm}"};
217219

218220
// Join enum ParticleOfInterest and the configurable vector particlesOfInterest in a map particleOfInterestDict
219221
const std::vector<int>& particleOnOff = particleOfInterest;
@@ -250,6 +252,9 @@ struct StrangenessInJetsIons {
250252
registryData.get<TH1>(HIST("number_of_events_data"))->GetXaxis()->SetBinLabel(7, "No empty events");
251253
registryData.get<TH1>(HIST("number_of_events_data"))->GetXaxis()->SetBinLabel(8, "At least one jet");
252254

255+
// Armenteros-Podolanski plot
256+
registryQC.add("ArmenterosPreSel_DATA", "ArmenterosPreSel_DATA", HistType::kTH2F, {alphaArmAxis, qtarmAxis});
257+
253258
// Histograms for analysis of strange hadrons
254259
if (particleOfInterestDict[ParticleOfInterest::kV0Particles]) {
255260
registryData.add("Lambda_in_jet", "Lambda_in_jet", HistType::kTH3F, {multAxis, ptAxis, invMassLambdaAxis});
@@ -342,10 +347,14 @@ struct StrangenessInJetsIons {
342347
registryMC.get<TH1>(HIST("number_of_events_mc_rec"))->GetXaxis()->SetBinLabel(4, "kNoSameBunchPileup");
343348
registryMC.get<TH1>(HIST("number_of_events_mc_rec"))->GetXaxis()->SetBinLabel(5, "kIsGoodZvtxFT0vsPV");
344349
registryMC.get<TH1>(HIST("number_of_events_mc_rec"))->GetXaxis()->SetBinLabel(6, "No empty events");
350+
registryMC.get<TH1>(HIST("number_of_events_mc_rec"))->GetXaxis()->SetBinLabel(7, "At least one jet");
345351

346352
// Add histogram to store multiplicity of the event
347353
registryMC.add("number_of_events_vsmultiplicity_rec", "number of events vs multiplicity", HistType::kTH1D, {{101, -0.5, 100.5, "Multiplicity percentile"}});
348354

355+
// Armenteros-Podolanski plot
356+
registryQC.add("ArmenterosPreSel_REC", "ArmenterosPreSel_REC", HistType::kTH2F, {alphaArmAxis, qtarmAxis});
357+
349358
// Histograms for analysis
350359
if (particleOfInterestDict[ParticleOfInterest::kV0Particles]) {
351360
registryMC.add("K0s_reconstructed_jet", "K0s_reconstructed_jet", HistType::kTH2F, {multAxis, ptAxis});
@@ -355,12 +364,12 @@ struct StrangenessInJetsIons {
355364
registryMC.add("AntiLambda_reconstructed_jet", "AntiLambda_reconstructed_jet", HistType::kTH2F, {multAxis, ptAxis});
356365
registryMC.add("AntiLambda_reconstructed_ue", "AntiLambda_reconstructed_ue", HistType::kTH2F, {multAxis, ptAxis});
357366
// Histograms for secondary hadrons
358-
registryMC.add("K0s_reconstructed_jet_incl", "K0s_reconstructed_jet_incl", HistType::kTH2F, {multBinning, ptAxis});
359-
registryMC.add("K0s_reconstructed_ue_incl", "K0s_reconstructed_ue_incl", HistType::kTH2F, {multBinning, ptAxis});
360-
registryMC.add("Lambda_reconstructed_jet_incl", "Lambda_reconstructed_jet_incl", HistType::kTH2F, {multBinning, ptAxis});
361-
registryMC.add("Lambda_reconstructed_ue_incl", "Lambda_reconstructed_ue_incl", HistType::kTH2F, {multBinning, ptAxis});
362-
registryMC.add("AntiLambda_reconstructed_jet_incl", "AntiLambda_reconstructed_jet_incl", HistType::kTH2F, {multBinning, ptAxis});
363-
registryMC.add("AntiLambda_reconstructed_ue_incl", "AntiLambda_reconstructed_ue_incl", HistType::kTH2F, {multBinning, ptAxis});
367+
registryMC.add("K0s_reconstructed_jet_incl", "K0s_reconstructed_jet_incl", HistType::kTH2F, {multAxis, ptAxis});
368+
registryMC.add("K0s_reconstructed_ue_incl", "K0s_reconstructed_ue_incl", HistType::kTH2F, {multAxis, ptAxis});
369+
registryMC.add("Lambda_reconstructed_jet_incl", "Lambda_reconstructed_jet_incl", HistType::kTH2F, {multAxis, ptAxis});
370+
registryMC.add("Lambda_reconstructed_ue_incl", "Lambda_reconstructed_ue_incl", HistType::kTH2F, {multAxis, ptAxis});
371+
registryMC.add("AntiLambda_reconstructed_jet_incl", "AntiLambda_reconstructed_jet_incl", HistType::kTH2F, {multAxis, ptAxis});
372+
registryMC.add("AntiLambda_reconstructed_ue_incl", "AntiLambda_reconstructed_ue_incl", HistType::kTH2F, {multAxis, ptAxis});
364373
}
365374
if (particleOfInterestDict[ParticleOfInterest::kCascades]) {
366375
registryMC.add("XiPos_reconstructed_jet", "XiPos_reconstructed_jet", HistType::kTH2F, {multAxis, ptAxis});
@@ -709,10 +718,6 @@ struct StrangenessInJetsIons {
709718
if (pionNeg.Pt() < ptMinK0Pion || pionNeg.Pt() > ptMaxK0Pion)
710719
return false;
711720

712-
// Armenteros-Podolanski cut
713-
if (std::abs(v0.alpha()) >= (paramArmenterosCut * v0.qtarm()) && (requireArmenterosCut))
714-
return false;
715-
716721
// V0 selections
717722
if (v0.v0cosPA() < v0cospaMin)
718723
return false;
@@ -726,6 +731,11 @@ struct StrangenessInJetsIons {
726731
return false;
727732
if (std::fabs(v0.dcanegtopv()) < dcaNegToPVminK0s)
728733
return false;
734+
735+
// Armenteros-Podolanski cut
736+
if (v0.qtarm() < (paramArmenterosCut * std::abs(v0.alpha())) && (requireArmenterosCut))
737+
return false;
738+
729739
if (v0.v0Type() != v0type && requireV0type) {
730740
registryQC.fill(HIST("V0_type"), v0.v0Type());
731741
return false;
@@ -1006,10 +1016,10 @@ struct StrangenessInJetsIons {
10061016
if (std::fabs(recoColl.posZ()) > zVtx)
10071017
return false;
10081018

1009-
if (isApplySameBunchPileup && !recoColl.selection_bit(o2::aod::evsel::kNoSameBunchPileup))
1019+
if (requireNoSameBunchPileup && !recoColl.selection_bit(o2::aod::evsel::kNoSameBunchPileup))
10101020
return false;
10111021

1012-
if (isApplyGoodZvtxFT0vsPV && !recoColl.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV))
1022+
if (requireGoodZvtxFT0vsPV && !recoColl.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV))
10131023
return false;
10141024

10151025
return true;
@@ -1052,14 +1062,14 @@ struct StrangenessInJetsIons {
10521062
registryData.fill(HIST("number_of_events_data"), 3.5);
10531063

10541064
// Reject collisions associated to the same found BC
1055-
if (isApplySameBunchPileup && !collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup))
1065+
if (requireNoSameBunchPileup && !collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup))
10561066
return;
10571067

10581068
// Fill event counter after selection kNoSameBunchPileup
10591069
registryData.fill(HIST("number_of_events_data"), 4.5);
10601070

10611071
// Compatible z_vtx from FT0 and from PV
1062-
if (isApplyGoodZvtxFT0vsPV && !collision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV))
1072+
if (requireGoodZvtxFT0vsPV && !collision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV))
10631073
return;
10641074

10651075
// Fill event counter after selection kIsGoodZvtxFT0vsPV
@@ -1130,7 +1140,7 @@ struct StrangenessInJetsIons {
11301140
registryData.fill(HIST("number_of_events_data"), 7.5);
11311141

11321142
// Event multiplicity
1133-
const float multiplicity = collision.centFT0M();
1143+
const float multiplicity = collision.centFT0C();
11341144

11351145
// Fill event multiplicity
11361146
registryData.fill(HIST("number_of_events_vsmultiplicity"), multiplicity);
@@ -1159,6 +1169,9 @@ struct StrangenessInJetsIons {
11591169
// Vertex position vector
11601170
TVector3 vtxPos(collision.posX(), collision.posY(), collision.posZ());
11611171

1172+
// Fill Armenteros-Podolanski TH2
1173+
registryQC.fill(HIST("ArmenterosPreSel_DATA"), v0.alpha(), v0.qtarm());
1174+
11621175
// K0s
11631176
if (passedK0ShortSelection(v0, pos, neg, vtxPos)) {
11641177
if (deltaRjet < rJet) {
@@ -1338,7 +1351,7 @@ struct StrangenessInJetsIons {
13381351
if (!selectRecoEvent(recoColl))
13391352
continue;
13401353

1341-
multiplicity = recoColl.centFT0M();
1354+
multiplicity = recoColl.centFT0C();
13421355
// LOGF(info, " MC GEN index: %d", collision.globalIndex());
13431356
// LOGF(info, " MC RECO index: %d", recoColl.mcCollisionId());
13441357
// LOGF(info, " multiplicity: %f", multiplicity);
@@ -1641,21 +1654,21 @@ struct StrangenessInJetsIons {
16411654
registryMC.fill(HIST("number_of_events_mc_rec"), 2.5);
16421655

16431656
// Reject collisions associated to the same found BC
1644-
if (isApplySameBunchPileup && !collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup))
1657+
if (requireNoSameBunchPileup && !collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup))
16451658
continue;
16461659

16471660
// Fill event counter after selection kNoSameBunchPileup
16481661
registryMC.fill(HIST("number_of_events_mc_rec"), 3.5);
16491662

16501663
// Compatible z_vtx from FT0 and from PV
1651-
if (isApplyGoodZvtxFT0vsPV && !collision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV))
1664+
if (requireGoodZvtxFT0vsPV && !collision.selection_bit(o2::aod::evsel::kIsGoodZvtxFT0vsPV))
16521665
continue;
16531666

16541667
// Fill event counter after selection kIsGoodZvtxFT0vsPV
16551668
registryMC.fill(HIST("number_of_events_mc_rec"), 4.5);
16561669

16571670
// Event multiplicity
1658-
const float multiplicity = collision.centFT0M();
1671+
const float multiplicity = collision.centFT0C();
16591672

16601673
// Number of V0 and cascades per collision
16611674
auto v0sPerColl = fullV0s.sliceBy(perCollisionV0, collision.globalIndex());
@@ -1716,7 +1729,7 @@ struct StrangenessInJetsIons {
17161729
continue;
17171730

17181731
// Fill event counter for events with at least one selected jet
1719-
registryMC.fill(HIST("number_of_events_mc_rec"), 4.5);
1732+
registryMC.fill(HIST("number_of_events_mc_rec"), 6.5);
17201733
registryMC.fill(HIST("number_of_events_vsmultiplicity_rec"), multiplicity);
17211734

17221735
// Loop over selected jets
@@ -1765,6 +1778,9 @@ struct StrangenessInJetsIons {
17651778
// Vertex position vector
17661779
TVector3 vtxPos(collision.posX(), collision.posY(), collision.posZ());
17671780

1781+
// Fill Armenteros-Podolanski TH2
1782+
registryQC.fill(HIST("ArmenterosPreSel_REC"), v0.alpha(), v0.qtarm());
1783+
17681784
// K0s
17691785
if (passedK0ShortSelection(v0, pos, neg, vtxPos) && pdgParent == kK0Short && isPhysPrim) {
17701786
if (deltaRjet < rJet) {

0 commit comments

Comments
 (0)