Skip to content

Commit cf1304d

Browse files
authored
[PWGCF] Update lambdaR2Correlation.cxx
Modified kaon track table Added check for kaon track shared with lambda daughter track
1 parent d0ce0a1 commit cf1304d

1 file changed

Lines changed: 103 additions & 46 deletions

File tree

PWGCF/TwoParticleCorrelations/Tasks/lambdaR2Correlation.cxx

Lines changed: 103 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
#include "PWGLF/DataModel/LFStrangenessTables.h"
1717

1818
#include "Common/CCDB/EventSelectionParams.h"
19+
#include "Common/CCDB/TriggerAliases.h"
1920
#include "Common/Core/RecoDecay.h"
2021
#include "Common/DataModel/Centrality.h"
2122
#include "Common/DataModel/CollisionAssociationTables.h"
2223
#include "Common/DataModel/EventSelection.h"
2324
#include "Common/DataModel/Multiplicity.h"
24-
#include "Common/DataModel/PIDResponseTOF.h"
2525
#include "Common/DataModel/PIDResponseTPC.h"
2626
#include "Common/DataModel/TrackSelectionTables.h"
2727

@@ -46,7 +46,6 @@
4646
#include <TPDGCode.h>
4747
#include <TString.h>
4848

49-
#include <chrono>
5049
#include <cmath>
5150
#include <cstdint>
5251
#include <string>
@@ -160,6 +159,18 @@ DECLARE_SOA_TABLE(LambdaTracksExt, "AOD", "LAMBDATRACKSEXT",
160159

161160
using LambdaTrackExt = LambdaTracksExt::iterator;
162161

162+
namespace kaontrackext
163+
{
164+
DECLARE_SOA_COLUMN(KaonSharingLambdaDau, kaonSharingLambdaDau, bool);
165+
DECLARE_SOA_COLUMN(KaonSharingLambdaDauIds, kaonSharingLambdaDauIds, std::vector<int64_t>);
166+
DECLARE_SOA_COLUMN(TrueKaonFlag, trueKaonFlag, bool);
167+
} // namespace kaontrackext
168+
DECLARE_SOA_TABLE(KaonTracksExt, "AOD", "KAONTRACKSEXT",
169+
kaontrackext::KaonSharingLambdaDau,
170+
kaontrackext::KaonSharingLambdaDauIds,
171+
kaontrackext::TrueKaonFlag);
172+
using KaonTrackExt = KaonTracksExt::iterator;
173+
163174
namespace lambdamcgentrack
164175
{
165176
DECLARE_SOA_INDEX_COLUMN(LambdaMcGenCollision, lambdaMcGenCollision);
@@ -1186,12 +1197,15 @@ struct LambdaTableProducer {
11861197
};
11871198

11881199
struct LambdaTracksExtProducer {
1189-
1200+
// Tables
11901201
Produces<aod::LambdaTracksExt> lambdaTrackExtTable;
1202+
Produces<aod::KaonTracksExt> kaonTrackExtTable;
11911203

11921204
// Configurables
11931205
Configurable<bool> cAcceptAllLambda{"cAcceptAllLambda", false, "Accept all Lambda"};
11941206
Configurable<bool> cRejAllLambdaShaDau{"cRejAllLambdaShaDau", true, "Reject all Lambda sharing daughters"};
1207+
Configurable<bool> cAcceptAllKaon{"cAcceptAllKaon", false, "Accept all Kaons"};
1208+
Configurable<bool> cRejAllKaonShaLaDau{"cRejAllKaonShaLaDau", true, "Reject all Kaons sharing Lambda daughters"};
11951209

11961210
// Histogram Registry.
11971211
HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};
@@ -1200,9 +1214,6 @@ struct LambdaTracksExtProducer {
12001214
{
12011215
// Axis Specifications
12021216
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)");
12061217
const AxisSpec axisDEta(320, -1.6, 1.6, "#Delta#eta");
12071218
const AxisSpec axisDPhi(640, -PIHalf, 3. * PIHalf, "#Delta#varphi");
12081219

@@ -1211,26 +1222,20 @@ struct LambdaTracksExtProducer {
12111222
histos.add("h1i_totantilambda_mult", "Multiplicity", kTH1I, {axisMult});
12121223
histos.add("h1i_lambda_mult", "Multiplicity", kTH1I, {axisMult});
12131224
histos.add("h1i_antilambda_mult", "Multiplicity", kTH1I, {axisMult});
1225+
1226+
histos.add("h1i_totkaplus_mult", "Multiplicity", kTH1I, {axisMult});
1227+
histos.add("h1i_totkaminus_mult", "Multiplicity", kTH1I, {axisMult});
1228+
histos.add("h1i_kaplus_mult", "Multiplicity", kTH1I, {axisMult});
1229+
histos.add("h1i_kaminus_mult", "Multiplicity", kTH1I, {axisMult});
1230+
12141231
histos.add("h2d_n2_etaphi_LaP_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
12151232
histos.add("h2d_n2_etaphi_LaP_LaP", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
12161233
histos.add("h2d_n2_etaphi_LaM_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
12171234

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-
}
1235+
histos.add("h2d_n2_etaphi_KaP_LaP", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
1236+
histos.add("h2d_n2_etaphi_KaP_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
1237+
histos.add("h2d_n2_etaphi_KaM_LaP", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
1238+
histos.add("h2d_n2_etaphi_KaM_LaM", "#rho_{2}^{SharePair}", kTH2D, {axisDEta, axisDPhi});
12341239
}
12351240

12361241
void processDummy(aod::LambdaCollisions::iterator const&) {}
@@ -1273,13 +1278,7 @@ struct LambdaTracksExtProducer {
12731278
}
12741279
}
12751280

1276-
// fill QA histograms
1277-
if (lambdaSharingDauFlag) {
1278-
fillHistos<kLambdaShareDau>(lambda);
1279-
} else {
1280-
fillHistos<kUniqueLambda>(lambda);
1281-
}
1282-
1281+
// Accept/Reject
12831282
if (cAcceptAllLambda) { // Accept all lambda
12841283
trueLambdaFlag = true;
12851284
} else if (cRejAllLambdaShaDau && !lambdaSharingDauFlag) { // Reject all lambda sharing daughter
@@ -1295,7 +1294,7 @@ struct LambdaTracksExtProducer {
12951294
}
12961295
}
12971296

1298-
// fill LambdaTrackExt table
1297+
// Fill LambdaTrackExt table
12991298
lambdaTrackExtTable(lambdaSharingDauFlag, vSharedDauLambdaIndex, trueLambdaFlag);
13001299
}
13011300

@@ -1318,6 +1317,78 @@ struct LambdaTracksExtProducer {
13181317
}
13191318

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

13231394
struct LambdaR2Correlation {
@@ -1386,8 +1457,6 @@ struct LambdaR2Correlation {
13861457
histos.add("Event/Reco/h1f_collision_posz", "V_{Z} Distribution", kTH1F, {axisPosZ});
13871458
histos.add("Event/Reco/h1f_ft0m_mult_percentile", "FT0M (%)", kTH1F, {axisCent});
13881459
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});
13911460

13921461
// Efficiency Histograms
13931462
// Single Particle Efficiencies
@@ -1483,9 +1552,6 @@ struct LambdaR2Correlation {
14831552
int ntrk = 0;
14841553

14851554
for (auto const& track : tracks) {
1486-
// count tracks
1487-
++ntrk;
1488-
14891555
// Efficiency Plots
14901556
histos.fill(HIST(SubDirRecGen[rec_gen]) + HIST("Efficiency/h2f_n1_centpt_") + HIST(SubDirHist[part]), cent, track.pt());
14911557
histos.fill(HIST(SubDirRecGen[rec_gen]) + HIST("Efficiency/h3f_n1_centptrap_") + HIST(SubDirHist[part]), cent, track.pt(), track.rap());
@@ -1499,15 +1565,6 @@ struct LambdaR2Correlation {
14991565
// Rho1 for N1RapPhi
15001566
histos.fill(HIST(SubDirRecGen[rec_gen]) + HIST("h3f_n1_rapphi_") + HIST(SubDirHist[part]), cent, track.rap(), track.phi(), track.corrFact());
15011567
}
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-
}
15111568
}
15121569

15131570
template <ParticlePairType partpair, RecGenType rec_gen, bool same, typename T1, typename T2>
@@ -1531,8 +1588,8 @@ struct LambdaR2Correlation {
15311588
SliceCache cache;
15321589
Partition<LambdaTracks> partLambdaTracks = (aod::lambdatrack::partType == (int8_t)kLambda) && (aod::lambdatrackext::trueLambdaFlag == true);
15331590
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);
1591+
Partition<KaonTracks> partKaonPlusTracks = (aod::kaontrack::partType == (int8_t)kKaonPlus /*&& (aod::kaontrackext::trueKaonFlag == true)*/);
1592+
Partition<KaonTracks> partKaonMinusTracks = (aod::kaontrack::partType == (int8_t)kKaonMinus /*&& (aod::kaontrackext::trueKaonFlag == true)*/);
15361593

15371594
void processDummy(aod::LambdaCollisions::iterator const&) {}
15381595

0 commit comments

Comments
 (0)