Skip to content

Commit a75c45f

Browse files
authored
[PWGCF] Update lambdaR2Correlation.cxx
Modify kaon track table Check for kaon track sharing lambda daughter tracks
1 parent d0ce0a1 commit a75c45f

1 file changed

Lines changed: 103 additions & 45 deletions

File tree

PWGCF/TwoParticleCorrelations/Tasks/lambdaR2Correlation.cxx

Lines changed: 103 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,18 @@ DECLARE_SOA_TABLE(LambdaTracksExt, "AOD", "LAMBDATRACKSEXT",
160160

161161
using LambdaTrackExt = LambdaTracksExt::iterator;
162162

163+
namespace kaontrackext
164+
{
165+
DECLARE_SOA_COLUMN(KaonSharingLambdaDau, kaonSharingLambdaDau, bool);
166+
DECLARE_SOA_COLUMN(KaonSharingLambdaDauIds, kaonSharingLambdaDauIds, std::vector<int64_t>);
167+
DECLARE_SOA_COLUMN(TrueKaonFlag, trueKaonFlag, bool);
168+
} // namespace kaontrackext
169+
DECLARE_SOA_TABLE(KaonTracksExt, "AOD", "KAONTRACKSEXT",
170+
kaontrackext::KaonSharingLambdaDau,
171+
kaontrackext::KaonSharingLambdaDauIds,
172+
kaontrackext::TrueKaonFlag);
173+
using KaonTrackExt = KaonTracksExt::iterator;
174+
163175
namespace lambdamcgentrack
164176
{
165177
DECLARE_SOA_INDEX_COLUMN(LambdaMcGenCollision, lambdaMcGenCollision);
@@ -1186,12 +1198,15 @@ struct LambdaTableProducer {
11861198
};
11871199

11881200
struct LambdaTracksExtProducer {
1189-
1201+
// Tables
11901202
Produces<aod::LambdaTracksExt> lambdaTrackExtTable;
1203+
Produces<aod::KaonTracksExt> kaonTrackExtTable;
11911204

11921205
// Configurables
11931206
Configurable<bool> cAcceptAllLambda{"cAcceptAllLambda", false, "Accept all Lambda"};
11941207
Configurable<bool> cRejAllLambdaShaDau{"cRejAllLambdaShaDau", true, "Reject all Lambda sharing daughters"};
1208+
Configurable<bool> cAcceptAllKaon{"cAcceptAllKaon", false, "Accept all Kaons"};
1209+
Configurable<bool> cRejAllKaonShaLaDau{"cRejAllKaonShaLaDau", true, "Reject all Kaons sharing Lambda daughters"};
11951210

11961211
// Histogram Registry.
11971212
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
@@ -1200,9 +1215,6 @@ struct LambdaTracksExtProducer {
12001215
{
12011216
// Axis Specifications
12021217
const AxisSpec axisMult(10, 0, 10);
1203-
const AxisSpec axisMass(100, 1.06, 1.16, "Inv Mass (GeV/#it{c}^{2})");
1204-
const AxisSpec axisCPA(100, 0.995, 1.0, "cos(#theta_{PA})");
1205-
const AxisSpec axisDcaDau(75, 0., 1.5, "Daug DCA (#sigma)");
12061218
const AxisSpec axisDEta(320, -1.6, 1.6, "#Delta#eta");
12071219
const AxisSpec axisDPhi(640, -PIHalf, 3. * PIHalf, "#Delta#varphi");
12081220

@@ -1211,26 +1223,20 @@ struct LambdaTracksExtProducer {
12111223
histos.add("h1i_totantilambda_mult", "Multiplicity", kTH1I, {axisMult});
12121224
histos.add("h1i_lambda_mult", "Multiplicity", kTH1I, {axisMult});
12131225
histos.add("h1i_antilambda_mult", "Multiplicity", kTH1I, {axisMult});
1226+
1227+
histos.add("h1i_totkaplus_mult", "Multiplicity", kTH1I, {axisMult});
1228+
histos.add("h1i_totkaminus_mult", "Multiplicity", kTH1I, {axisMult});
1229+
histos.add("h1i_kaplus_mult", "Multiplicity", kTH1I, {axisMult});
1230+
histos.add("h1i_kaminus_mult", "Multiplicity", kTH1I, {axisMult});
1231+
12141232
histos.add("h2d_n2_etaphi_LaP_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
12151233
histos.add("h2d_n2_etaphi_LaP_LaP", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
12161234
histos.add("h2d_n2_etaphi_LaM_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
12171235

1218-
// InvMass, DcaDau and CosPA
1219-
histos.add("Reco/h1f_lambda_invmass", "M_{p#pi}", kTH1F, {axisMass});
1220-
histos.add("Reco/h1f_antilambda_invmass", "M_{p#pi}", kTH1F, {axisMass});
1221-
histos.addClone("Reco/", "SharingDau/");
1222-
}
1223-
1224-
template <ShareDauLambda sd, typename T>
1225-
void fillHistos(T const& track)
1226-
{
1227-
static constexpr std::string_view SubDir[] = {"Reco/", "SharingDau/"};
1228-
1229-
if (track.partType() == kLambda) {
1230-
histos.fill(HIST(SubDir[sd]) + HIST("h1f_lambda_invmass"), track.mass());
1231-
} else {
1232-
histos.fill(HIST(SubDir[sd]) + HIST("h1f_antilambda_invmass"), track.mass());
1233-
}
1236+
histos.add("h2d_n2_etaphi_KaP_LaP", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
1237+
histos.add("h2d_n2_etaphi_KaP_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
1238+
histos.add("h2d_n2_etaphi_KaM_LaP", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
1239+
histos.add("h2d_n2_etaphi_KaM_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
12341240
}
12351241

12361242
void processDummy(aod::LambdaCollisions::iterator const&) {}
@@ -1273,13 +1279,7 @@ struct LambdaTracksExtProducer {
12731279
}
12741280
}
12751281

1276-
// fill QA histograms
1277-
if (lambdaSharingDauFlag) {
1278-
fillHistos<kLambdaShareDau>(lambda);
1279-
} else {
1280-
fillHistos<kUniqueLambda>(lambda);
1281-
}
1282-
1282+
// Accept/Reject
12831283
if (cAcceptAllLambda) { // Accept all lambda
12841284
trueLambdaFlag = true;
12851285
} else if (cRejAllLambdaShaDau && !lambdaSharingDauFlag) { // Reject all lambda sharing daughter
@@ -1295,7 +1295,7 @@ struct LambdaTracksExtProducer {
12951295
}
12961296
}
12971297

1298-
// fill LambdaTrackExt table
1298+
// Fill LambdaTrackExt table
12991299
lambdaTrackExtTable(lambdaSharingDauFlag, vSharedDauLambdaIndex, trueLambdaFlag);
13001300
}
13011301

@@ -1318,6 +1318,78 @@ struct LambdaTracksExtProducer {
13181318
}
13191319

13201320
PROCESS_SWITCH(LambdaTracksExtProducer, processLambdaTrackExt, "Process for lambda track extension", false);
1321+
1322+
void processKaonTrackExt(aod::LambdaCollisions::iterator const&, aod::LambdaTracks const& lambdaTracks, aod::KaonTracks const& kaonTracks)
1323+
{
1324+
int nTotKaonPlus = 0, nTotKaonMinus = 0, nSelKaonPlus = 0, nSelKaonMinus = 0;
1325+
1326+
for (auto const& kaonTrack : kaonTracks) {
1327+
bool kaonSharingLambdaDauFlag = false, trueKaonFlag = false;
1328+
std::vector<int64_t> vKaonShareDauLambdaIndex;
1329+
1330+
if (kaonTrack.partType() == kKaonPlus) {
1331+
++nTotKaonPlus;
1332+
} else if (kaonTrack.partType() == kKaonMinus) {
1333+
++nTotKaonMinus;
1334+
}
1335+
1336+
for (auto const& lambdaTrack : lambdaTracks) {
1337+
if (kaonTrack.kaonTrackId() == lambdaTrack.posTrackId() || kaonTrack.kaonTrackId() == lambdaTrack.negTrackId()) {
1338+
vKaonShareDauLambdaIndex.push_back(kaonTrack.kaonTrackId());
1339+
kaonSharingLambdaDauFlag = true;
1340+
1341+
// Fill Deta-Dphi Histogram
1342+
if (kaonTrack.partType() == kKaonPlus && lambdaTrack.partType() == kLambda) {
1343+
histos.fill(HIST("h2d_n2_etaphi_KaPLaP"), kaonTrack.eta() - lambdaTrack.eta(), RecoDecay::constrainAngle(kaonTrack.phi() - lambdaTrack.phi()), -PIHalf);
1344+
} else if (kaonTrack.partType() == kKaonPlus && lambdaTrack.partType() == kAntiLambda) {
1345+
histos.fill(HIST("h2d_n2_etaphi_KaPLaM"), kaonTrack.eta() - lambdaTrack.eta(), RecoDecay::constrainAngle(kaonTrack.phi() - lambdaTrack.phi()), -PIHalf);
1346+
} else if (kaonTrack.partType() == kKaonMinus && lambdaTrack.partType() == kLambda) {
1347+
histos.fill(HIST("h2d_n2_etaphi_KaMLaP"), kaonTrack.eta() - lambdaTrack.eta(), RecoDecay::constrainAngle(kaonTrack.phi() - lambdaTrack.phi()), -PIHalf);
1348+
} else if (kaonTrack.partType() == kKaonMinus && lambdaTrack.partType() == kAntiLambda) {
1349+
histos.fill(HIST("h2d_n2_etaphi_KaMLaM"), kaonTrack.eta() - lambdaTrack.eta(), RecoDecay::constrainAngle(kaonTrack.phi() - lambdaTrack.phi()), -PIHalf);
1350+
}
1351+
}
1352+
}
1353+
1354+
// Accept / Reject
1355+
if (cAcceptAllKaon) {
1356+
trueKaonFlag = true;
1357+
} else if (cRejAllKaonShaLaDau && !kaonSharingLambdaDauFlag) {
1358+
trueKaonFlag = true;
1359+
}
1360+
1361+
// Multiplicity of selected kaons
1362+
if (trueKaonFlag) {
1363+
if (kaonTrack.partType() == kKaonPlus) {
1364+
++nSelKaonPlus;
1365+
} else if (kaonTrack.partType() == kKaonMinus) {
1366+
++nSelKaonMinus;
1367+
}
1368+
}
1369+
1370+
// Fill LambdaTrackExt table
1371+
kaonTrackExtTable(kaonSharingLambdaDauFlag, vKaonShareDauLambdaIndex, trueKaonFlag);
1372+
}
1373+
1374+
// Fill multiplicity histograms
1375+
if (nTotKaonPlus != 0) {
1376+
histos.fill(HIST("h1i_totkaplus_mult"), nTotKaonPlus);
1377+
}
1378+
1379+
if (nTotKaonMinus != 0) {
1380+
histos.fill(HIST("h1i_totkaminus_mult"), nTotKaonMinus);
1381+
}
1382+
1383+
if (nSelKaonPlus != 0) {
1384+
histos.fill(HIST("h1i_kaplus_mult"), nSelKaonPlus);
1385+
}
1386+
1387+
if (nSelKaonMinus != 0) {
1388+
histos.fill(HIST("h1i_kaminus_mult"), nSelKaonMinus);
1389+
}
1390+
}
1391+
1392+
PROCESS_SWITCH(LambdaTracksExtProducer, processKaonTrackExt, "Process for kaon track extension", false);
13211393
};
13221394

13231395
struct LambdaR2Correlation {
@@ -1386,8 +1458,6 @@ struct LambdaR2Correlation {
13861458
histos.add("Event/Reco/h1f_collision_posz", "V_{Z} Distribution", kTH1F, {axisPosZ});
13871459
histos.add("Event/Reco/h1f_ft0m_mult_percentile", "FT0M (%)", kTH1F, {axisCent});
13881460
histos.add("Event/Reco/h2f_Mult_vs_Centrality", "N_{ch} vs FT0M(%)", kTProfile, {axisCent});
1389-
histos.add("Event/Reco/h2f_lambda_mult", "#Lambda - Multiplicity", kTProfile, {axisCent});
1390-
histos.add("Event/Reco/h2f_antilambda_mult", "#bar{#Lambda} - Multiplicity", kTProfile, {axisCent});
13911461

13921462
// Efficiency Histograms
13931463
// Single Particle Efficiencies
@@ -1483,9 +1553,6 @@ struct LambdaR2Correlation {
14831553
int ntrk = 0;
14841554

14851555
for (auto const& track : tracks) {
1486-
// count tracks
1487-
++ntrk;
1488-
14891556
// Efficiency Plots
14901557
histos.fill(HIST(SubDirRecGen[rec_gen]) + HIST("Efficiency/h2f_n1_centpt_") + HIST(SubDirHist[part]), cent, track.pt());
14911558
histos.fill(HIST(SubDirRecGen[rec_gen]) + HIST("Efficiency/h3f_n1_centptrap_") + HIST(SubDirHist[part]), cent, track.pt(), track.rap());
@@ -1499,15 +1566,6 @@ struct LambdaR2Correlation {
14991566
// Rho1 for N1RapPhi
15001567
histos.fill(HIST(SubDirRecGen[rec_gen]) + HIST("h3f_n1_rapphi_") + HIST(SubDirHist[part]), cent, track.rap(), track.phi(), track.corrFact());
15011568
}
1502-
1503-
// fill multiplicity histograms
1504-
if (ntrk != 0) {
1505-
if (part == kLambda) {
1506-
histos.fill(HIST("Event/") + HIST(SubDirRecGen[rec_gen]) + HIST("h2f_lambda_mult"), cent, ntrk);
1507-
} else if (part == kAntiLambda) {
1508-
histos.fill(HIST("Event/") + HIST(SubDirRecGen[rec_gen]) + HIST("h2f_antilambda_mult"), cent, ntrk);
1509-
}
1510-
}
15111569
}
15121570

15131571
template <ParticlePairType partpair, RecGenType rec_gen, bool same, typename T1, typename T2>
@@ -1526,13 +1584,13 @@ struct LambdaR2Correlation {
15261584

15271585
using LambdaCollisions = aod::LambdaCollisions;
15281586
using LambdaTracks = soa::Join<aod::LambdaTracks, aod::LambdaTracksExt>;
1529-
using KaonTracks = aod::KaonTracks;
1587+
using KaonTracks = soa::Join<aod::KaonTracks, aod::KaonTracksExt>;
15301588

15311589
SliceCache cache;
15321590
Partition<LambdaTracks> partLambdaTracks = (aod::lambdatrack::partType == (int8_t)kLambda) && (aod::lambdatrackext::trueLambdaFlag == true);
15331591
Partition<LambdaTracks> partAntiLambdaTracks = (aod::lambdatrack::partType == (int8_t)kAntiLambda) && (aod::lambdatrackext::trueLambdaFlag == true);
1534-
Partition<KaonTracks> partKaonPlusTracks = (aod::kaontrack::partType == (int8_t)kKaonPlus);
1535-
Partition<KaonTracks> partKaonMinusTracks = (aod::kaontrack::partType == (int8_t)kKaonMinus);
1592+
Partition<KaonTracks> partKaonPlusTracks = (aod::kaontrack::partType == (int8_t)kKaonPlus) && (aod::kaontrackext::trueKaonFlag == true);
1593+
Partition<KaonTracks> partKaonMinusTracks = (aod::kaontrack::partType == (int8_t)kKaonMinus) && (aod::kaontrackext::trueKaonFlag == true);
15361594

15371595
void processDummy(aod::LambdaCollisions::iterator const&) {}
15381596

0 commit comments

Comments
 (0)