Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions PWGLF/DataModel/LFDoubleOmegaTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ DECLARE_SOA_COLUMN(GenDecayLength, genDecayLength, float);
DECLARE_SOA_COLUMN(PdgDoubleOmega, pdgDoubleOmega, int);
DECLARE_SOA_COLUMN(GenMotherId, genMotherId, int64_t); // MC particle index within the input dataframe.
DECLARE_SOA_COLUMN(IsReco, isReco, bool);

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.
} // namespace DoubleOmegaTables

#define DOUBLE_OMEGA_RECO_COLUMNS \
Expand Down Expand Up @@ -107,8 +109,116 @@ DECLARE_SOA_TABLE(DoubleOmegaTableMC, "AOD", "DBLOMEGAMCTABLE",
DoubleOmegaTables::GenMotherId,
DoubleOmegaTables::IsReco);

DECLARE_SOA_TABLE(DoubleOmegaMixedTable, "AOD", "DBLOMEGAMIXTABLE",
DOUBLE_OMEGA_RECO_COLUMNS,
DoubleOmegaTables::MixingType);

#undef DOUBLE_OMEGA_RECO_COLUMNS

// Derived data: Omega, Lambda and kaon candidates of the collisions with at least one Omega, one
// Lambda and one kaon candidate not sharing tracks with it. The tables only index each other, so
// they are self-contained and dataframes can be merged.
namespace domega
{
DECLARE_SOA_COLUMN(MultFT0M, multFT0M, float); //! FT0M multiplicity of the collision
DECLARE_SOA_COLUMN(Bz, bz, float); //! Nominal magnetic field (kG)
} // namespace domega

DECLARE_SOA_TABLE(DOmegaColls, "AOD", "DOMEGACOLL", //! Collisions with double-Omega building blocks
o2::soa::Index<>,
collision::PosX, collision::PosY, collision::PosZ,
domega::MultFT0M,
bc::RunNumber,
domega::Bz);

namespace domega
{
DECLARE_SOA_INDEX_COLUMN_FULL(DOmegaColl, dOmegaColl, int, DOmegaColls, ""); //! Collision index

// Track parametrisation covariance, in the order expected by getTrackParCov.
DECLARE_SOA_COLUMN(CYY, cYY, float);
DECLARE_SOA_COLUMN(CZY, cZY, float);
DECLARE_SOA_COLUMN(CZZ, cZZ, float);
DECLARE_SOA_COLUMN(CSnpY, cSnpY, float);
DECLARE_SOA_COLUMN(CSnpZ, cSnpZ, float);
DECLARE_SOA_COLUMN(CSnpSnp, cSnpSnp, float);
DECLARE_SOA_COLUMN(CTglY, cTglY, float);
DECLARE_SOA_COLUMN(CTglZ, cTglZ, float);
DECLARE_SOA_COLUMN(CTglSnp, cTglSnp, float);
DECLARE_SOA_COLUMN(CTglTgl, cTglTgl, float);
DECLARE_SOA_COLUMN(C1PtY, c1PtY, float);
DECLARE_SOA_COLUMN(C1PtZ, c1PtZ, float);
DECLARE_SOA_COLUMN(C1PtSnp, c1PtSnp, float);
DECLARE_SOA_COLUMN(C1PtTgl, c1PtTgl, float);
DECLARE_SOA_COLUMN(C1Pt21Pt2, c1Pt21Pt2, float);

DECLARE_SOA_COLUMN(TPCNSigmaKa, tpcNSigmaKa, float); //! -999 when TPC is unavailable
DECLARE_SOA_COLUMN(TOFNSigmaKa, tofNSigmaKa, float); //! -999 when TOF is unavailable
DECLARE_SOA_COLUMN(DetectorMap, detectorMap, uint8_t); //! ITS, TPC, TOF bits
DECLARE_SOA_COLUMN(DcaXYToPV, dcaXYToPV, float); //! Transverse DCA to the primary vertex of its collision
DECLARE_SOA_COLUMN(IsKaon, isKaon, bool); //! Selected as a direct-kaon candidate
} // namespace domega

#define DOMEGA_TRACK_PAR_COV_COLUMNS \
track::X, track::Alpha, track::Y, track::Z, track::Snp, track::Tgl, track::Signed1Pt, \
domega::CYY, domega::CZY, domega::CZZ, domega::CSnpY, domega::CSnpZ, domega::CSnpSnp, \
domega::CTglY, domega::CTglZ, domega::CTglSnp, domega::CTglTgl, \
domega::C1PtY, domega::C1PtZ, domega::C1PtSnp, domega::C1PtTgl, domega::C1Pt21Pt2

DECLARE_SOA_TABLE(DOmegaTracks, "AOD", "DOMEGATRACK", //! Direct-kaon candidates and Omega/Lambda daughters, at the innermost update
o2::soa::Index<>,
domega::DOmegaCollId,
DOMEGA_TRACK_PAR_COV_COLUMNS,
domega::TPCNSigmaKa,
domega::TOFNSigmaKa,
domega::DetectorMap,
domega::DcaXYToPV,
domega::IsKaon,
track::Sign<track::Signed1Pt>);

namespace domega
{
DECLARE_SOA_INDEX_COLUMN_FULL(PosTrack, posTrack, int, DOmegaTracks, "_Pos"); //! Positive daughter
DECLARE_SOA_INDEX_COLUMN_FULL(NegTrack, negTrack, int, DOmegaTracks, "_Neg"); //! Negative daughter
DECLARE_SOA_INDEX_COLUMN_FULL(Bachelor, bachelor, int, DOmegaTracks, "_Bach"); //! Bachelor kaon of the Omega

DECLARE_SOA_COLUMN(DecayX, decayX, float);
DECLARE_SOA_COLUMN(DecayY, decayY, float);
DECLARE_SOA_COLUMN(DecayZ, decayZ, float);
DECLARE_SOA_COLUMN(Px, px, float);
DECLARE_SOA_COLUMN(Py, py, float);
DECLARE_SOA_COLUMN(Pz, pz, float);
DECLARE_SOA_COLUMN(MassOmega, massOmega, float);
DECLARE_SOA_COLUMN(MassXi, massXi, float);
DECLARE_SOA_COLUMN(MassLambda, massLambda, float);
DECLARE_SOA_COLUMN(DcaDaughters, dcaDaughters, float); //! DCA between the daughters
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)
} // namespace domega

DECLARE_SOA_TABLE(DOmegaOmegas, "AOD", "DOMEGAOMEGA", //! Omega candidates; track parameters at the Omega decay vertex
o2::soa::Index<>,
domega::DOmegaCollId,
domega::PosTrackId, domega::NegTrackId, domega::BachelorId,
DOMEGA_TRACK_PAR_COV_COLUMNS,
domega::DecayX, domega::DecayY, domega::DecayZ,
domega::Px, domega::Py, domega::Pz,
domega::MassOmega, domega::MassXi,
domega::DcaDaughters,
domega::Sign);

DECLARE_SOA_TABLE(DOmegaLambdas, "AOD", "DOMEGALAMBDA", //! Lambda candidates; neutral track parameters at the Lambda decay vertex
o2::soa::Index<>,
domega::DOmegaCollId,
domega::PosTrackId, domega::NegTrackId,
DOMEGA_TRACK_PAR_COV_COLUMNS,
domega::DecayX, domega::DecayY, domega::DecayZ,
domega::Px, domega::Py, domega::Pz,
domega::MassLambda,
domega::DcaDaughters,
domega::Sign);

#undef DOMEGA_TRACK_PAR_COV_COLUMNS

} // namespace o2::aod

#endif // PWGLF_DATAMODEL_LFDOUBLEOMEGATABLES_H_
5 changes: 5 additions & 0 deletions PWGLF/TableProducer/Strangeness/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ o2physics_add_dpl_workflow(double-omega-tree-creator
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::EventFilteringUtils
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(double-omega-builder
SOURCES doubleOmegaBuilder.cxx
PUBLIC_LINK_LIBRARIES O2Physics::AnalysisCore O2Physics::EventFilteringUtils
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(lambdakzerofinder
SOURCES lambdakzerofinder.cxx
PUBLIC_LINK_LIBRARIES O2::DCAFitter O2Physics::AnalysisCore
Expand Down
Loading
Loading