Skip to content

Commit eb58a9e

Browse files
basiachBarbara Chytla
andauthored
PWGCF: FemtoUniverse - Adding FDCascParticles table to FemtoDerived (#8111)
Co-authored-by: Barbara Chytla <barbara.chytla@cern.ch>
1 parent 0694140 commit eb58a9e

3 files changed

Lines changed: 183 additions & 68 deletions

File tree

PWGCF/FemtoUniverse/DataModel/FemtoDerived.h

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,24 @@ DECLARE_SOA_COLUMN(DecayVtxZ, decayVtxZ, float); //! Z position of the decay
126126
DECLARE_SOA_COLUMN(MKaon, mKaon, float); //! The invariant mass of V0 candidate, assuming kaon
127127

128128
} // namespace femtouniverseparticle
129+
130+
/// FemtoUniverseCascadeTrack
131+
namespace femtouniversecascparticle
132+
{
133+
134+
DECLARE_SOA_COLUMN(DcaV0daughters, dcaV0daughters, float); //! DCA between V0 daughters
135+
DECLARE_SOA_COLUMN(Cpav0, cpav0, float); //! V0 cos of pointing angle
136+
DECLARE_SOA_COLUMN(V0radius, v0radius, float); //! V0 transverse radius
137+
DECLARE_SOA_COLUMN(CpaCasc, cpaCasc, float); //! cascade cosinus of pointing angle
138+
DECLARE_SOA_COLUMN(Dcacascdaughters, dcacascdaughters, float); //! DCA between cascade daughters
139+
DECLARE_SOA_COLUMN(Cascradius, cascradius, float); //! cascade transverse radius
140+
DECLARE_SOA_COLUMN(Dcapostopv, dcapostopv, float); //! DCA of positive daughter to PV
141+
DECLARE_SOA_COLUMN(Dcanegtopv, dcanegtopv, float); //! DCA of negative daughter to PV
142+
DECLARE_SOA_COLUMN(Dcabachtopv, dcabachtopv, float); //! DCA of bachelor track to PV
143+
DECLARE_SOA_COLUMN(Dcav0topv, dcav0topv, float); //! DCA of V0 to PV
144+
145+
} // namespace femtouniversecascparticle
146+
129147
DECLARE_SOA_TABLE(FDParticles, "AOD", "FDPARTICLE",
130148
o2::soa::Index<>,
131149
femtouniverseparticle::FDCollisionId,
@@ -187,6 +205,36 @@ DECLARE_SOA_TABLE(FDExtParticles, "AOD", "FDEXTPARTICLE",
187205
pidtof_tiny::TOFNSigmaDe<pidtof_tiny::TOFNSigmaStoreDe>);
188206
using FDFullParticle = FDExtParticles::iterator;
189207

208+
DECLARE_SOA_TABLE(FDCascParticles, "AOD", "FDCASCPARTICLE",
209+
o2::soa::Index<>,
210+
femtouniverseparticle::FDCollisionId,
211+
femtouniverseparticle::Pt,
212+
femtouniverseparticle::Eta,
213+
femtouniverseparticle::Phi,
214+
femtouniverseparticle::PartType,
215+
femtouniverseparticle::Cut,
216+
femtouniverseparticle::PIDCut,
217+
femtouniverseparticle::TempFitVar,
218+
femtouniverseparticle::ChildrenIds,
219+
femtouniverseparticle::MLambda,
220+
femtouniverseparticle::MAntiLambda,
221+
femtouniverseparticle::Theta<femtouniverseparticle::Eta>,
222+
femtouniverseparticle::Px<femtouniverseparticle::Pt, femtouniverseparticle::Phi>,
223+
femtouniverseparticle::Py<femtouniverseparticle::Pt, femtouniverseparticle::Phi>,
224+
femtouniverseparticle::Pz<femtouniverseparticle::Pt, femtouniverseparticle::Eta>,
225+
femtouniverseparticle::P<femtouniverseparticle::Pt, femtouniverseparticle::Eta>,
226+
femtouniversecascparticle::DcaV0daughters,
227+
femtouniversecascparticle::Cpav0,
228+
femtouniversecascparticle::V0radius,
229+
femtouniversecascparticle::CpaCasc,
230+
femtouniversecascparticle::Dcacascdaughters,
231+
femtouniversecascparticle::Cascradius,
232+
femtouniversecascparticle::Dcapostopv,
233+
femtouniversecascparticle::Dcanegtopv,
234+
femtouniversecascparticle::Dcabachtopv,
235+
femtouniversecascparticle::Dcav0topv);
236+
using FDCascParticle = FDCascParticles::iterator;
237+
190238
/// FemtoUniverseTrackMC
191239
namespace femtouniverseMCparticle
192240
{

PWGCF/FemtoUniverse/TableProducer/femtoUniverseProducerTask.cxx

Lines changed: 106 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ struct femtoUniverseProducerTask {
102102
Produces<aod::FDExtParticles> outputDebugParts;
103103
Produces<aod::FDMCLabels> outputPartsMCLabels;
104104
Produces<aod::FDExtMCParticles> outputDebugPartsMC;
105+
Produces<aod::FDCascParticles> outputCascParts;
105106

106107
Configurable<bool> ConfIsDebug{"ConfIsDebug", true, "Enable Debug tables"};
107108
// Choose if filtering or skimming version is run
@@ -123,7 +124,7 @@ struct femtoUniverseProducerTask {
123124
Configurable<bool> ConfEvtOfflineCheck{"ConfEvtOfflineCheck", false, "Evt sel: check for offline selection"};
124125
Configurable<bool> ConfIsActivateV0{"ConfIsActivateV0", false, "Activate filling of V0 into femtouniverse tables"};
125126
Configurable<bool> ConfActivateSecondaries{"ConfActivateSecondaries", false, "Fill secondary MC gen particles that were reconstructed"};
126-
Configurable<bool> ConfIsActivateCascade{"ConfIsActivateCascade", true, "Activate filling of Cascade into femtouniverse tables"};
127+
Configurable<bool> ConfIsActivateCascade{"ConfIsActivateCascade", false, "Activate filling of Cascade into femtouniverse tables"};
127128
Configurable<bool> ConfIsActivatePhi{"ConfIsActivatePhi", false, "Activate filling of Phi into femtouniverse tables"};
128129
Configurable<bool> ConfMCTruthAnalysisWithPID{"ConfMCTruthAnalysisWithPID", true, "1: take only particles with specified PDG, 0: all particles (for MC Truth)"};
129130
Configurable<std::vector<int>> ConfMCTruthPDGCodes{"ConfMCTruthPDGCodes", std::vector<int>{211, -211, 2212, -2212, 333}, "PDG of particles to be stored"};
@@ -894,13 +895,23 @@ struct femtoUniverseProducerTask {
894895
auto cutContainer = trackCuts.getCutContainer<aod::femtouniverseparticle::cutContainerType>(track);
895896

896897
// now the table is filled
897-
outputParts(outputCollision.lastIndex(), track.pt(), track.eta(),
898-
track.phi(), aod::femtouniverseparticle::ParticleType::kTrack,
899-
cutContainer.at(
900-
femtoUniverseTrackSelection::TrackContainerPosition::kCuts),
901-
cutContainer.at(
902-
femtoUniverseTrackSelection::TrackContainerPosition::kPID),
903-
track.dcaXY(), childIDs, 0, 0);
898+
if (!ConfIsActivateCascade) {
899+
outputParts(outputCollision.lastIndex(), track.pt(), track.eta(),
900+
track.phi(), aod::femtouniverseparticle::ParticleType::kTrack,
901+
cutContainer.at(
902+
femtoUniverseTrackSelection::TrackContainerPosition::kCuts),
903+
cutContainer.at(
904+
femtoUniverseTrackSelection::TrackContainerPosition::kPID),
905+
track.dcaXY(), childIDs, 0, 0);
906+
} else {
907+
outputCascParts(outputCollision.lastIndex(), track.pt(), track.eta(),
908+
track.phi(), aod::femtouniverseparticle::ParticleType::kTrack,
909+
cutContainer.at(
910+
femtoUniverseTrackSelection::TrackContainerPosition::kCuts),
911+
cutContainer.at(
912+
femtoUniverseTrackSelection::TrackContainerPosition::kPID),
913+
track.dcaXY(), childIDs, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
914+
}
904915
tmpIDtrack.push_back(track.globalIndex());
905916
if (ConfIsDebug) {
906917
fillDebugParticle<true, false, false>(track);
@@ -1027,18 +1038,28 @@ struct femtoUniverseProducerTask {
10271038
childIDs[0] = rowInPrimaryTrackTablePos; // pos
10281039
childIDs[1] = 0; // neg
10291040
childIDs[2] = 0; // bachelor
1030-
outputParts(outputCollision.lastIndex(),
1031-
casc.positivept(),
1032-
casc.positiveeta(),
1033-
casc.positivephi(),
1034-
aod::femtouniverseparticle::ParticleType::kV0Child,
1035-
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kPosCuts),
1036-
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kPosPID),
1037-
0.,
1038-
childIDs,
1039-
0,
1040-
0);
1041-
const int rowOfPosTrack = outputParts.lastIndex();
1041+
outputCascParts(outputCollision.lastIndex(),
1042+
casc.positivept(),
1043+
casc.positiveeta(),
1044+
casc.positivephi(),
1045+
aod::femtouniverseparticle::ParticleType::kV0Child,
1046+
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kPosCuts),
1047+
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kPosPID),
1048+
0.,
1049+
childIDs,
1050+
0,
1051+
0,
1052+
0,
1053+
0,
1054+
0,
1055+
0,
1056+
0,
1057+
0,
1058+
0,
1059+
0,
1060+
0,
1061+
0);
1062+
const int rowOfPosTrack = outputCascParts.lastIndex();
10421063
// if constexpr (isMC) {
10431064
// fillMCParticle(postrack, o2::aod::femtouniverseparticle::ParticleType::kV0Child);
10441065
// }
@@ -1048,18 +1069,28 @@ struct femtoUniverseProducerTask {
10481069
childIDs[0] = 0; // pos
10491070
childIDs[1] = rowInPrimaryTrackTableNeg; // neg
10501071
childIDs[2] = 0; // bachelor
1051-
outputParts(outputCollision.lastIndex(),
1052-
casc.negativept(),
1053-
casc.negativeeta(),
1054-
casc.negativephi(),
1055-
aod::femtouniverseparticle::ParticleType::kV0Child,
1056-
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kNegCuts),
1057-
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kNegPID),
1058-
0.,
1059-
childIDs,
1060-
0,
1061-
0);
1062-
const int rowOfNegTrack = outputParts.lastIndex();
1072+
outputCascParts(outputCollision.lastIndex(),
1073+
casc.negativept(),
1074+
casc.negativeeta(),
1075+
casc.negativephi(),
1076+
aod::femtouniverseparticle::ParticleType::kV0Child,
1077+
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kNegCuts),
1078+
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kNegPID),
1079+
0.,
1080+
childIDs,
1081+
0,
1082+
0,
1083+
0,
1084+
0,
1085+
0,
1086+
0,
1087+
0,
1088+
0,
1089+
0,
1090+
0,
1091+
0,
1092+
0);
1093+
const int rowOfNegTrack = outputCascParts.lastIndex();
10631094
// if constexpr (isMC) {
10641095
// fillMCParticle(negtrack, o2::aod::femtouniverseparticle::ParticleType::kV0Child);
10651096
// }
@@ -1070,31 +1101,51 @@ struct femtoUniverseProducerTask {
10701101
childIDs[0] = 0; // pos
10711102
childIDs[1] = 0; // neg
10721103
childIDs[2] = rowInPrimaryTrackTableBach; // bachelor
1073-
outputParts(outputCollision.lastIndex(),
1074-
casc.bachelorpt(),
1075-
casc.bacheloreta(),
1076-
casc.bachelorphi(),
1077-
aod::femtouniverseparticle::ParticleType::kCascadeBachelor,
1078-
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kNegCuts),
1079-
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kNegPID),
1080-
0.,
1081-
childIDs,
1082-
0,
1083-
0);
1084-
const int rowOfBachTrack = outputParts.lastIndex();
1104+
outputCascParts(outputCollision.lastIndex(),
1105+
casc.bachelorpt(),
1106+
casc.bacheloreta(),
1107+
casc.bachelorphi(),
1108+
aod::femtouniverseparticle::ParticleType::kCascadeBachelor,
1109+
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kNegCuts),
1110+
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kNegPID),
1111+
0.,
1112+
childIDs,
1113+
0,
1114+
0,
1115+
0,
1116+
0,
1117+
0,
1118+
0,
1119+
0,
1120+
0,
1121+
0,
1122+
0,
1123+
0,
1124+
0);
1125+
const int rowOfBachTrack = outputCascParts.lastIndex();
10851126
// cascade
10861127
std::vector<int> indexCascChildID = {rowOfPosTrack, rowOfNegTrack, rowOfBachTrack};
1087-
outputParts(outputCollision.lastIndex(),
1088-
casc.pt(),
1089-
casc.eta(),
1090-
casc.phi(),
1091-
aod::femtouniverseparticle::ParticleType::kCascade,
1092-
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kV0), // zmienic
1093-
0,
1094-
casc.casccosPA(col.posX(), col.posY(), col.posZ()),
1095-
indexCascChildID,
1096-
casc.mXi(),
1097-
casc.mXi());
1128+
outputCascParts(outputCollision.lastIndex(),
1129+
casc.pt(),
1130+
casc.eta(),
1131+
casc.phi(),
1132+
aod::femtouniverseparticle::ParticleType::kCascade,
1133+
0, // cutContainerV0.at(femtoUniverseV0Selection::V0ContainerPosition::kV0),
1134+
0,
1135+
0,
1136+
indexCascChildID,
1137+
casc.mXi(),
1138+
casc.mXi(),
1139+
casc.dcaV0daughters(),
1140+
casc.v0cosPA(col.posX(), col.posY(), col.posZ()),
1141+
casc.v0radius(),
1142+
casc.casccosPA(col.posX(), col.posY(), col.posZ()),
1143+
casc.dcacascdaughters(),
1144+
casc.cascradius(),
1145+
casc.dcapostopv(),
1146+
casc.dcanegtopv(),
1147+
casc.dcabachtopv(),
1148+
casc.dcav0topv(col.posX(), col.posY(), col.posZ()));
10981149
if (ConfIsDebug) {
10991150
fillDebugParticle<true, false, false>(posTrackCasc); // QA for positive daughter
11001151
fillDebugParticle<true, false, false>(negTrackCasc); // QA for negative daughter

PWGCF/FemtoUniverse/Tasks/femtoUniversePairTaskTrackCascadeExtended.cxx

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ using namespace o2::aod::pidutils;
3737
struct femtoUniversePairTaskTrackCascadeExtended {
3838

3939
SliceCache cache;
40-
using FemtoFullParticles = soa::Join<aod::FDParticles, aod::FDExtParticles>;
40+
using FemtoFullParticles = soa::Join<aod::FDCascParticles, aod::FDExtParticles>;
4141
Preslice<FemtoFullParticles> perCol = aod::femtouniverseparticle::fdCollisionId;
4242

4343
Configurable<float> ConfZVertexCut{"ConfZVertexCut", 10.f, "Event sel: Maximum z-Vertex (cm)"};
@@ -80,17 +80,27 @@ struct femtoUniversePairTaskTrackCascadeExtended {
8080
AxisSpec ptAxis = {100, 0.0f, 10.0f, "#it{p}_{T} (GeV/#it{c})"};
8181
AxisSpec etaAxis = {100, -2.0f, 2.0f, "#it{#eta}"};
8282
AxisSpec phiAxis = {100, 0.0f, 6.0f, "#it{#phi}"};
83+
AxisSpec DCADaughAxis = {1000, 0.0f, 2.0f, "DCA (cm)"};
84+
AxisSpec CPAAxis = {1000, 0.95f, 1.0f, "#it{cos #theta_{p}}"};
85+
AxisSpec tranRadAxis = {1000, 0.0f, 100.0f, "#it{r}_{xy} (cm)"};
86+
AxisSpec DCAToPVAxis = {1000, -10.0f, 10.0f, "DCA to PV (cm)"};
8387

8488
// Histograms
85-
rXiQA.add("hMassXiMinus", "hMassXiMinus", {HistType::kTH1F, {XiMassAxis}});
86-
rXiQA.add("hMassXiPlus", "hMassXiPlus", {HistType::kTH1F, {XiMassAxis}});
87-
rXiQA.add("hMassXiMinusSelected", "hMassXiSelected", {HistType::kTH1F, {XiMassAxis}});
88-
rXiQA.add("hMassXiPlusSelected", "hMassXiSelected", {HistType::kTH1F, {XiMassAxis}});
89+
rXiQA.add("hMassXi", "hMassXi", {HistType::kTH1F, {XiMassAxis}});
90+
rXiQA.add("hMassXiSelected", "hMassXiSelected", {HistType::kTH1F, {XiMassAxis}});
8991
rXiQA.add("hPtXi", "hPtXi", {HistType::kTH1F, {{ptAxis}}});
9092
rXiQA.add("hEtaXi", "hEtaXi", {HistType::kTH1F, {{etaAxis}}});
9193
rXiQA.add("hPhiXi", "hPhiXi", {HistType::kTH1F, {{phiAxis}}});
92-
rXiQA.add("hCascCosPA", "hCascCosPA", {HistType::kTH1F, {{100, 0.9f, 1.f}}});
93-
// rXiQA.add("hCascDCAV0Daughters", "hCascDCAV0Daughters", {HistType::kTH1F, {{55, 0.0f, 2.2f}}});
94+
rXiQA.add("hDCAV0Daughters", "hDCAV0Daughters", {HistType::kTH1F, {DCADaughAxis}});
95+
rXiQA.add("hV0CosPA", "hV0CosPA", {HistType::kTH1F, {CPAAxis}});
96+
rXiQA.add("hV0TranRad", "hV0TranRad", {HistType::kTH1F, {tranRadAxis}});
97+
rXiQA.add("hDCACascDaughters", "hDCACascDaughters", {HistType::kTH1F, {DCADaughAxis}});
98+
rXiQA.add("hCascCosPA", "hCascCosPA", {HistType::kTH1F, {CPAAxis}});
99+
rXiQA.add("hCascTranRad", "hCascTranRad", {HistType::kTH1F, {tranRadAxis}});
100+
rXiQA.add("hDcaPostoPV", "hDcaPostoPV", {HistType::kTH1F, {DCAToPVAxis}});
101+
rXiQA.add("hDcaNegtoPV", "hDcaNegtoPV", {HistType::kTH1F, {DCAToPVAxis}});
102+
rXiQA.add("hDcaBachtoPV", "hDcaBachtoPV", {HistType::kTH1F, {DCAToPVAxis}});
103+
rXiQA.add("hDcaV0toPV", "hDcaV0toPV", {HistType::kTH1F, {DCAToPVAxis}});
94104

95105
posChildHistos.init(&qaRegistry, ConfChildTempFitVarpTBins, ConfChildTempFitVarBins, false, 0, true);
96106
negChildHistos.init(&qaRegistry, ConfChildTempFitVarpTBins, ConfChildTempFitVarBins, false, 0, true);
@@ -103,8 +113,7 @@ struct femtoUniversePairTaskTrackCascadeExtended {
103113
// const int multCol = col.multNtr();
104114

105115
for (auto& casc : groupCascs) {
106-
rXiQA.fill(HIST("hMassXiMinus"), casc.mLambda());
107-
rXiQA.fill(HIST("hMassXiPlus"), casc.mAntiLambda());
116+
rXiQA.fill(HIST("hMassXi"), casc.mLambda());
108117

109118
// if (!invMCascade(casc.mLambda(), casc.mAntiLambda()))
110119
// continue;
@@ -141,10 +150,17 @@ struct femtoUniversePairTaskTrackCascadeExtended {
141150
rXiQA.fill(HIST("hPtXi"), casc.pt());
142151
rXiQA.fill(HIST("hEtaXi"), casc.eta());
143152
rXiQA.fill(HIST("hPhiXi"), casc.phi());
144-
rXiQA.fill(HIST("hMassXiMinusSelected"), casc.mLambda());
145-
rXiQA.fill(HIST("hMassXiPlusSelected"), casc.mAntiLambda());
146-
rXiQA.fill(HIST("hCascCosPA"), casc.tempFitVar());
147-
// rXiQA.fill(HIST("hCascDCAV0Daughters"), casc.dcaV0daughters()); // nie ma miejsca na to w FemtoDerived
153+
rXiQA.fill(HIST("hMassXiSelected"), casc.mLambda());
154+
rXiQA.fill(HIST("hDCAV0Daughters"), casc.dcaV0daughters());
155+
rXiQA.fill(HIST("hV0CosPA"), casc.cpav0());
156+
rXiQA.fill(HIST("hV0TranRad"), casc.v0radius());
157+
rXiQA.fill(HIST("hCascCosPA"), casc.cpaCasc());
158+
rXiQA.fill(HIST("hDCACascDaughters"), casc.dcacascdaughters());
159+
rXiQA.fill(HIST("hCascTranRad"), casc.cascradius());
160+
rXiQA.fill(HIST("hDcaPostoPV"), casc.dcapostopv());
161+
rXiQA.fill(HIST("hDcaNegtoPV"), casc.dcanegtopv());
162+
rXiQA.fill(HIST("hDcaBachtoPV"), casc.dcabachtopv());
163+
rXiQA.fill(HIST("hDcaV0toPV"), casc.dcav0topv());
148164

149165
posChildHistos.fillQA<false, true>(posChild);
150166
negChildHistos.fillQA<false, true>(negChild);

0 commit comments

Comments
 (0)