Skip to content

Commit ecbed18

Browse files
[PWGLF] Add same and mixed event version with derived data (#18295)
1 parent 4bf8885 commit ecbed18

5 files changed

Lines changed: 1662 additions & 471 deletions

File tree

‎PWGLF/DataModel/LFDoubleOmegaTables.h‎

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ DECLARE_SOA_COLUMN(GenDecayLength, genDecayLength, float);
6262
DECLARE_SOA_COLUMN(PdgDoubleOmega, pdgDoubleOmega, int);
6363
DECLARE_SOA_COLUMN(GenMotherId, genMotherId, int64_t); // MC particle index within the input dataframe.
6464
DECLARE_SOA_COLUMN(IsReco, isReco, bool);
65+
66+
DECLARE_SOA_COLUMN(MixingType, mixingType, uint8_t); // 1: Omega, 2: Lambda, 3: kaon from another collision; 4: Omega, Lambda and kaon from three different collisions.
6567
} // namespace DoubleOmegaTables
6668

6769
#define DOUBLE_OMEGA_RECO_COLUMNS \
@@ -107,8 +109,116 @@ DECLARE_SOA_TABLE(DoubleOmegaTableMC, "AOD", "DBLOMEGAMCTABLE",
107109
DoubleOmegaTables::GenMotherId,
108110
DoubleOmegaTables::IsReco);
109111

112+
DECLARE_SOA_TABLE(DoubleOmegaMixedTable, "AOD", "DBLOMEGAMIXTABLE",
113+
DOUBLE_OMEGA_RECO_COLUMNS,
114+
DoubleOmegaTables::MixingType);
115+
110116
#undef DOUBLE_OMEGA_RECO_COLUMNS
111117

118+
// Derived data: Omega, Lambda and kaon candidates of the collisions with at least one Omega, one
119+
// Lambda and one kaon candidate not sharing tracks with it. The tables only index each other, so
120+
// they are self-contained and dataframes can be merged.
121+
namespace domega
122+
{
123+
DECLARE_SOA_COLUMN(MultFT0M, multFT0M, float); //! FT0M multiplicity of the collision
124+
DECLARE_SOA_COLUMN(Bz, bz, float); //! Nominal magnetic field (kG)
125+
} // namespace domega
126+
127+
DECLARE_SOA_TABLE(DOmegaColls, "AOD", "DOMEGACOLL", //! Collisions with double-Omega building blocks
128+
o2::soa::Index<>,
129+
collision::PosX, collision::PosY, collision::PosZ,
130+
domega::MultFT0M,
131+
bc::RunNumber,
132+
domega::Bz);
133+
134+
namespace domega
135+
{
136+
DECLARE_SOA_INDEX_COLUMN_FULL(DOmegaColl, dOmegaColl, int, DOmegaColls, ""); //! Collision index
137+
138+
// Track parametrisation covariance, in the order expected by getTrackParCov.
139+
DECLARE_SOA_COLUMN(CYY, cYY, float);
140+
DECLARE_SOA_COLUMN(CZY, cZY, float);
141+
DECLARE_SOA_COLUMN(CZZ, cZZ, float);
142+
DECLARE_SOA_COLUMN(CSnpY, cSnpY, float);
143+
DECLARE_SOA_COLUMN(CSnpZ, cSnpZ, float);
144+
DECLARE_SOA_COLUMN(CSnpSnp, cSnpSnp, float);
145+
DECLARE_SOA_COLUMN(CTglY, cTglY, float);
146+
DECLARE_SOA_COLUMN(CTglZ, cTglZ, float);
147+
DECLARE_SOA_COLUMN(CTglSnp, cTglSnp, float);
148+
DECLARE_SOA_COLUMN(CTglTgl, cTglTgl, float);
149+
DECLARE_SOA_COLUMN(C1PtY, c1PtY, float);
150+
DECLARE_SOA_COLUMN(C1PtZ, c1PtZ, float);
151+
DECLARE_SOA_COLUMN(C1PtSnp, c1PtSnp, float);
152+
DECLARE_SOA_COLUMN(C1PtTgl, c1PtTgl, float);
153+
DECLARE_SOA_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float);
154+
155+
DECLARE_SOA_COLUMN(TPCNSigmaKa, tpcNSigmaKa, float); //! -999 when TPC is unavailable
156+
DECLARE_SOA_COLUMN(TOFNSigmaKa, tofNSigmaKa, float); //! -999 when TOF is unavailable
157+
DECLARE_SOA_COLUMN(DetectorMap, detectorMap, uint8_t); //! ITS, TPC, TOF bits
158+
DECLARE_SOA_COLUMN(DcaXYToPV, dcaXYToPV, float); //! Transverse DCA to the primary vertex of its collision
159+
DECLARE_SOA_COLUMN(IsKaon, isKaon, bool); //! Selected as a direct-kaon candidate
160+
} // namespace domega
161+
162+
#define DOMEGA_TRACK_PAR_COV_COLUMNS \
163+
track::X, track::Alpha, track::Y, track::Z, track::Snp, track::Tgl, track::Signed1Pt, \
164+
domega::CYY, domega::CZY, domega::CZZ, domega::CSnpY, domega::CSnpZ, domega::CSnpSnp, \
165+
domega::CTglY, domega::CTglZ, domega::CTglSnp, domega::CTglTgl, \
166+
domega::C1PtY, domega::C1PtZ, domega::C1PtSnp, domega::C1PtTgl, domega::C1Pt21Pt2
167+
168+
DECLARE_SOA_TABLE(DOmegaTracks, "AOD", "DOMEGATRACK", //! Direct-kaon candidates and Omega/Lambda daughters, at the innermost update
169+
o2::soa::Index<>,
170+
domega::DOmegaCollId,
171+
DOMEGA_TRACK_PAR_COV_COLUMNS,
172+
domega::TPCNSigmaKa,
173+
domega::TOFNSigmaKa,
174+
domega::DetectorMap,
175+
domega::DcaXYToPV,
176+
domega::IsKaon,
177+
track::Sign<track::Signed1Pt>);
178+
179+
namespace domega
180+
{
181+
DECLARE_SOA_INDEX_COLUMN_FULL(PosTrack, posTrack, int, DOmegaTracks, "_Pos"); //! Positive daughter
182+
DECLARE_SOA_INDEX_COLUMN_FULL(NegTrack, negTrack, int, DOmegaTracks, "_Neg"); //! Negative daughter
183+
DECLARE_SOA_INDEX_COLUMN_FULL(Bachelor, bachelor, int, DOmegaTracks, "_Bach"); //! Bachelor kaon of the Omega
184+
185+
DECLARE_SOA_COLUMN(DecayX, decayX, float);
186+
DECLARE_SOA_COLUMN(DecayY, decayY, float);
187+
DECLARE_SOA_COLUMN(DecayZ, decayZ, float);
188+
DECLARE_SOA_COLUMN(Px, px, float);
189+
DECLARE_SOA_COLUMN(Py, py, float);
190+
DECLARE_SOA_COLUMN(Pz, pz, float);
191+
DECLARE_SOA_COLUMN(MassOmega, massOmega, float);
192+
DECLARE_SOA_COLUMN(MassXi, massXi, float);
193+
DECLARE_SOA_COLUMN(MassLambda, massLambda, float);
194+
DECLARE_SOA_COLUMN(DcaDaughters, dcaDaughters, float); //! DCA between the daughters
195+
DECLARE_SOA_COLUMN(Sign, sign, int8_t); //! Charge of the Omega (Omega table) or of the Omega the Lambda can be paired with (Lambda table)
196+
} // namespace domega
197+
198+
DECLARE_SOA_TABLE(DOmegaOmegas, "AOD", "DOMEGAOMEGA", //! Omega candidates; track parameters at the Omega decay vertex
199+
o2::soa::Index<>,
200+
domega::DOmegaCollId,
201+
domega::PosTrackId, domega::NegTrackId, domega::BachelorId,
202+
DOMEGA_TRACK_PAR_COV_COLUMNS,
203+
domega::DecayX, domega::DecayY, domega::DecayZ,
204+
domega::Px, domega::Py, domega::Pz,
205+
domega::MassOmega, domega::MassXi,
206+
domega::DcaDaughters,
207+
domega::Sign);
208+
209+
DECLARE_SOA_TABLE(DOmegaLambdas, "AOD", "DOMEGALAMBDA", //! Lambda candidates; neutral track parameters at the Lambda decay vertex
210+
o2::soa::Index<>,
211+
domega::DOmegaCollId,
212+
domega::PosTrackId, domega::NegTrackId,
213+
DOMEGA_TRACK_PAR_COV_COLUMNS,
214+
domega::DecayX, domega::DecayY, domega::DecayZ,
215+
domega::Px, domega::Py, domega::Pz,
216+
domega::MassLambda,
217+
domega::DcaDaughters,
218+
domega::Sign);
219+
220+
#undef DOMEGA_TRACK_PAR_COV_COLUMNS
221+
112222
} // namespace o2::aod
113223

114224
#endif // PWGLF_DATAMODEL_LFDOUBLEOMEGATABLES_H_

‎PWGLF/TableProducer/Strangeness/CMakeLists.txt‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ o2physics_add_dpl_workflow(double-omega-tree-creator
7070
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::EventFilteringUtils
7171
COMPONENT_NAME Analysis)
7272

73+
o2physics_add_dpl_workflow(double-omega-builder
74+
SOURCES doubleOmegaBuilder.cxx
75+
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::EventFilteringUtils
76+
COMPONENT_NAME Analysis)
77+
7378
o2physics_add_dpl_workflow(lambdakzerofinder
7479
SOURCES lambdakzerofinder.cxx
7580
REUSE_FROM LfStrangenessPCH

0 commit comments

Comments
 (0)