Skip to content
Merged
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
97 changes: 59 additions & 38 deletions PWGLF/DataModel/LFStrangenessTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,6 @@ DECLARE_SOA_COLUMN(MomentumCovMat, momentumCovMat, float[6]); //! covariance mat
DECLARE_SOA_COLUMN(KFV0Chi2, kfV0Chi2, float); //!

// Derived expressions
// Momenta
DECLARE_SOA_DYNAMIC_COLUMN(Pt, pt, //! V0 pT
[](float pxpos, float pypos, float pxneg, float pyneg) -> float { return RecoDecay::sqrtSumOfSquares(pxpos + pxneg, pypos + pyneg); });
DECLARE_SOA_DYNAMIC_COLUMN(P, p, //! V0 pT
[](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) -> float { return std::hypot(pxpos + pxneg, pypos + pyneg, pzpos + pzneg); });
// Account for rigidity in case of hypertriton
DECLARE_SOA_DYNAMIC_COLUMN(PtHypertriton, ptHypertriton, //! V0 pT
[](float pxpos, float pypos, float pxneg, float pyneg) -> float { return RecoDecay::sqrtSumOfSquares(2.0f * pxpos + pxneg, 2.0f * pypos + pyneg); });
Expand Down Expand Up @@ -170,10 +165,6 @@ DECLARE_SOA_DYNAMIC_COLUMN(Rapidity, rapidity, //! rapidity (0:K0, 1:L, 2:Lbar)
return RecoDecay::y(std::array{Px, Py, Pz}, o2::constants::physics::MassLambda);
return 0.0f;
});
DECLARE_SOA_DYNAMIC_COLUMN(Eta, eta, //! V0 eta
[](float Px, float Py, float Pz) -> float { return RecoDecay::eta(std::array{Px, Py, Pz}); });
DECLARE_SOA_DYNAMIC_COLUMN(Phi, phi, //! V0 phi
[](float Px, float Py) -> float { return RecoDecay::phi(Px, Py); });

DECLARE_SOA_DYNAMIC_COLUMN(NegativePt, negativept, //! negative daughter pT
[](float pxneg, float pyneg) -> float { return RecoDecay::sqrtSumOfSquares(pxneg, pyneg); });
Expand All @@ -194,6 +185,31 @@ DECLARE_SOA_EXPRESSION_COLUMN(Py, py, //! V0 py
float, 1.f * aod::v0data::pypos + 1.f * aod::v0data::pyneg);
DECLARE_SOA_EXPRESSION_COLUMN(Pz, pz, //! V0 pz
float, 1.f * aod::v0data::pzpos + 1.f * aod::v0data::pzneg);

DECLARE_SOA_EXPRESSION_COLUMN(Pt, pt, float, //! Transverse momentum in GeV/c
nsqrt(aod::v0data::px* aod::v0data::px +
aod::v0data::py * aod::v0data::py));
DECLARE_SOA_EXPRESSION_COLUMN(P, p, float, //! Total momentum in GeV/c
nsqrt(aod::v0data::px* aod::v0data::px +
aod::v0data::py * aod::v0data::py +
aod::v0data::pz * aod::v0data::pz));
DECLARE_SOA_EXPRESSION_COLUMN(Phi, phi, float, //! Phi in the range [0, 2pi)
o2::constants::math::PI + natan2(-1.0f * aod::v0data::py, -1.0f * aod::v0data::px));
DECLARE_SOA_EXPRESSION_COLUMN(Eta, eta, float, //! Pseudorapidity, conditionally defined to avoid FPEs
ifnode((nsqrt(aod::v0data::px * aod::v0data::px +
aod::v0data::py * aod::v0data::py +
aod::v0data::pz * aod::v0data::pz) -
aod::v0data::pz) < static_cast<float>(1e-7),
ifnode(aod::v0data::pz < 0.f, -100.f, 100.f),
0.5f * nlog((nsqrt(aod::v0data::px * aod::v0data::px +
aod::v0data::py * aod::v0data::py +
aod::v0data::pz * aod::v0data::pz) +
aod::v0data::pz) /
(nsqrt(aod::v0data::px * aod::v0data::px +
aod::v0data::py * aod::v0data::py +
aod::v0data::pz * aod::v0data::pz) -
aod::v0data::pz))));

} // namespace v0data

DECLARE_SOA_TABLE_FULL(StoredV0Datas, "V0Datas", "AOD", "V0DATA", //!
Expand All @@ -205,8 +221,6 @@ DECLARE_SOA_TABLE_FULL(StoredV0Datas, "V0Datas", "AOD", "V0DATA", //!
v0data::DCAV0Daughters, v0data::DCAPosToPV, v0data::DCANegToPV,

// Dynamic columns
v0data::Pt<v0data::PxPos, v0data::PyPos, v0data::PxNeg, v0data::PyNeg>,
v0data::P<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
v0data::PtHypertriton<v0data::PxPos, v0data::PyPos, v0data::PxNeg, v0data::PyNeg>,
v0data::PtAntiHypertriton<v0data::PxPos, v0data::PyPos, v0data::PxNeg, v0data::PyNeg>,
v0data::V0Radius<v0data::X, v0data::Y>,
Expand Down Expand Up @@ -234,8 +248,6 @@ DECLARE_SOA_TABLE_FULL(StoredV0Datas, "V0Datas", "AOD", "V0DATA", //!
v0data::YHypertriton<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
v0data::YAntiHypertriton<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
v0data::Rapidity<v0data::Px, v0data::Py, v0data::Pz>,
v0data::Eta<v0data::Px, v0data::Py, v0data::Pz>,
v0data::Phi<v0data::Px, v0data::Py>,
v0data::NegativePt<v0data::PxNeg, v0data::PyNeg>,
v0data::PositivePt<v0data::PxPos, v0data::PyPos>,
v0data::NegativeEta<v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
Expand All @@ -247,9 +259,10 @@ DECLARE_SOA_TABLE_FULL(V0Covs, "V0Covs", "AOD", "V0COVS", //!
v0data::PositionCovMat, v0data::MomentumCovMat);

// extended table with expression columns that can be used as arguments of dynamic columns
DECLARE_SOA_EXTENDED_TABLE_USER(V0Datas, StoredV0Datas, "V0DATAEXT", //!
v0data::Px, v0data::Py, v0data::Pz); // the table name has here to be the one with EXT which is not nice and under study
DECLARE_SOA_EXTENDED_TABLE_USER(V0Datas, StoredV0Datas, "V0DATAEXT", //!
v0data::Px, v0data::Py, v0data::Pz, v0data::Pt, v0data::P, v0data::Phi, v0data::Eta); // the table name has here to be the one with EXT which is not nice and under study

// using V0Datas = soa::Join<V0Indices,V0Topos>
using V0Data = V0Datas::iterator;
namespace v0data
{
Expand Down Expand Up @@ -374,10 +387,6 @@ DECLARE_SOA_COLUMN(TopologyChi2, topologyChi2, float); //!
DECLARE_SOA_COLUMN(ItsClsSize, itsCluSize, float); //!

// Derived expressions
// Momenta
DECLARE_SOA_DYNAMIC_COLUMN(Pt, pt, //!
[](float Px, float Py) -> float { return RecoDecay::sqrtSumOfSquares(Px, Py); });

// Length quantities
DECLARE_SOA_DYNAMIC_COLUMN(V0Radius, v0radius, //!
[](float xlambda, float ylambda) -> float { return RecoDecay::sqrtSumOfSquares(xlambda, ylambda); });
Expand Down Expand Up @@ -416,10 +425,6 @@ DECLARE_SOA_DYNAMIC_COLUMN(Rapidity, rapidity, //! rapidity (0, 1: Xi; 2, 3: Ome
return RecoDecay::y(std::array{Px, Py, Pz}, o2::constants::physics::MassOmegaMinus);
return 0.0f;
});
DECLARE_SOA_DYNAMIC_COLUMN(Eta, eta, //!
[](float Px, float Py, float Pz) -> float { return RecoDecay::eta(std::array{Px, Py, Pz}); });
DECLARE_SOA_DYNAMIC_COLUMN(Phi, phi, //! cascade phi
[](float Px, float Py) -> float { return RecoDecay::phi(Px, Py); });
} // namespace cascdata

namespace cascdataext
Expand All @@ -430,6 +435,29 @@ DECLARE_SOA_EXPRESSION_COLUMN(PyLambda, pylambda, //!
float, 1.f * aod::cascdata::pypos + 1.f * aod::cascdata::pyneg);
DECLARE_SOA_EXPRESSION_COLUMN(PzLambda, pzlambda, //!
float, 1.f * aod::cascdata::pzpos + 1.f * aod::cascdata::pzneg);
DECLARE_SOA_EXPRESSION_COLUMN(Pt, pt, float, //! Transverse momentum in GeV/c
nsqrt(aod::cascdata::px* aod::cascdata::px +
aod::cascdata::py * aod::cascdata::py));
DECLARE_SOA_EXPRESSION_COLUMN(P, p, float, //! Total momentum in GeV/c
nsqrt(aod::cascdata::px* aod::cascdata::px +
aod::cascdata::py * aod::cascdata::py +
aod::cascdata::pz * aod::cascdata::pz));
DECLARE_SOA_EXPRESSION_COLUMN(Phi, phi, float, //! Phi in the range [0, 2pi)
o2::constants::math::PI + natan2(-1.0f * aod::cascdata::py, -1.0f * aod::cascdata::px));
DECLARE_SOA_EXPRESSION_COLUMN(Eta, eta, float, //! Pseudorapidity, conditionally defined to avoid FPEs
ifnode((nsqrt(aod::cascdata::px * aod::cascdata::px +
aod::cascdata::py * aod::cascdata::py +
aod::cascdata::pz * aod::cascdata::pz) -
aod::cascdata::pz) < static_cast<float>(1e-7),
ifnode(aod::cascdata::pz < 0.f, -100.f, 100.f),
0.5f * nlog((nsqrt(aod::cascdata::px * aod::cascdata::px +
aod::cascdata::py * aod::cascdata::py +
aod::cascdata::pz * aod::cascdata::pz) +
aod::cascdata::pz) /
(nsqrt(aod::cascdata::px * aod::cascdata::px +
aod::cascdata::py * aod::cascdata::py +
aod::cascdata::pz * aod::cascdata::pz) -
aod::cascdata::pz))));
} // namespace cascdataext

DECLARE_SOA_TABLE(StoredCascDatas, "AOD", "CASCDATA", //!
Expand All @@ -446,7 +474,6 @@ DECLARE_SOA_TABLE(StoredCascDatas, "AOD", "CASCDATA", //!
cascdata::BachBaryonCosPA, cascdata::BachBaryonDCAxyToPV,

// Dynamic columns
cascdata::Pt<cascdata::Px, cascdata::Py>,
cascdata::V0Radius<cascdata::Xlambda, cascdata::Ylambda>,
cascdata::CascRadius<cascdata::X, cascdata::Y>,
cascdata::V0CosPA<cascdata::Xlambda, cascdata::Ylambda, cascdata::Zlambda, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
Expand All @@ -460,9 +487,7 @@ DECLARE_SOA_TABLE(StoredCascDatas, "AOD", "CASCDATA", //!
// Longitudinal
cascdata::YXi<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::Rapidity<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::Eta<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::Phi<cascdata::Px, cascdata::Py>);
cascdata::Rapidity<cascdata::Px, cascdata::Py, cascdata::Pz>);

DECLARE_SOA_TABLE(StoredKFCascDatas, "AOD", "KFCASCDATA", //!
o2::soa::Index<>, cascdata::V0Id, cascdata::CascadeId, cascdata::BachelorId, cascdata::CollisionId,
Expand All @@ -481,7 +506,6 @@ DECLARE_SOA_TABLE(StoredKFCascDatas, "AOD", "KFCASCDATA", //!
kfcascdata::MLambda, cascdata::KFV0Chi2, cascdata::KFCascadeChi2,

// Dynamic columns
cascdata::Pt<cascdata::Px, cascdata::Py>,
cascdata::V0Radius<cascdata::Xlambda, cascdata::Ylambda>,
cascdata::CascRadius<cascdata::X, cascdata::Y>,
cascdata::V0CosPA<cascdata::Xlambda, cascdata::Ylambda, cascdata::Zlambda, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
Expand All @@ -493,9 +517,7 @@ DECLARE_SOA_TABLE(StoredKFCascDatas, "AOD", "KFCASCDATA", //!

// Longitudinal
cascdata::YXi<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::Eta<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::Phi<cascdata::Px, cascdata::Py>);
cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>);

DECLARE_SOA_TABLE(StoredTraCascDatas, "AOD", "TRACASCDATA", //!
o2::soa::Index<>, cascdata::V0Id, cascdata::CascadeId, cascdata::BachelorId, cascdata::StrangeTrackId, cascdata::CollisionId,
Expand All @@ -514,7 +536,6 @@ DECLARE_SOA_TABLE(StoredTraCascDatas, "AOD", "TRACASCDATA", //!
cascdata::MatchingChi2, cascdata::TopologyChi2, cascdata::ItsClsSize,

// Dynamic columns
cascdata::Pt<cascdata::Px, cascdata::Py>,
cascdata::V0Radius<cascdata::Xlambda, cascdata::Ylambda>,
cascdata::CascRadius<cascdata::X, cascdata::Y>,
cascdata::V0CosPA<cascdata::Xlambda, cascdata::Ylambda, cascdata::Zlambda, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
Expand All @@ -526,9 +547,7 @@ DECLARE_SOA_TABLE(StoredTraCascDatas, "AOD", "TRACASCDATA", //!

// Longitudinal
cascdata::YXi<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::Eta<cascdata::Px, cascdata::Py, cascdata::Pz>,
cascdata::Phi<cascdata::Px, cascdata::Py>);
cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>);

DECLARE_SOA_TABLE_FULL(CascCovs, "CascCovs", "AOD", "CASCCOVS", //!
cascdata::PositionCovMat, cascdata::MomentumCovMat);
Expand All @@ -538,15 +557,17 @@ DECLARE_SOA_TABLE_FULL(KFCascCovs, "KFCascCovs", "AOD", "KFCASCCOVS", //!

// extended table with expression columns that can be used as arguments of dynamic columns
DECLARE_SOA_EXTENDED_TABLE_USER(CascDatas, StoredCascDatas, "CascDATAEXT", //!
cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda);
cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda, cascdataext::Pt, cascdataext::P, cascdataext::Eta, cascdataext::Phi);

// extended table with expression columns that can be used as arguments of dynamic columns
DECLARE_SOA_EXTENDED_TABLE_USER(KFCascDatas, StoredKFCascDatas, "KFCascDATAEXT", //!
cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda);
cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda,
cascdataext::Pt, cascdataext::P, cascdataext::Eta, cascdataext::Phi);

// extended table with expression columns that can be used as arguments of dynamic columns
DECLARE_SOA_EXTENDED_TABLE_USER(TraCascDatas, StoredTraCascDatas, "TraCascDATAEXT", //!
cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda);
cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda,
cascdataext::Pt, cascdataext::P, cascdataext::Eta, cascdataext::Phi);

using CascData = CascDatas::iterator;
using KFCascData = KFCascDatas::iterator;
Expand Down
16 changes: 8 additions & 8 deletions PWGLF/Tasks/cascadeanalysis.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -295,31 +295,31 @@ struct cascadeAnalysis {
if (casc.sign() < 0) { // FIXME: could be done better...
if (TMath::Abs(casc.yXi()) < 0.5 && lCompatiblePID_Xi) {
if (!doCentralityStudy) {
registry.fill(HIST("h2dMassXiMinus"), casc.template pt(), casc.mXi());
registry.fill(HIST("h2dMassXiMinus"), casc.pt(), casc.mXi());
} else {
registry.fill(HIST("h3dMassXiMinus"), lPercentile, casc.template pt(), casc.mXi());
registry.fill(HIST("h3dMassXiMinus"), lPercentile, casc.pt(), casc.mXi());
}
}
if (TMath::Abs(casc.yOmega()) < 0.5 && lCompatiblePID_Om) {
if (!doCentralityStudy) {
registry.fill(HIST("h2dMassOmegaMinus"), casc.template pt(), casc.mOmega());
registry.fill(HIST("h2dMassOmegaMinus"), casc.pt(), casc.mOmega());
} else {
registry.fill(HIST("h3dMassOmegaMinus"), lPercentile, casc.template pt(), casc.mOmega());
registry.fill(HIST("h3dMassOmegaMinus"), lPercentile, casc.pt(), casc.mOmega());
}
}
} else {
if (TMath::Abs(casc.yXi()) < 0.5 && lCompatiblePID_Xi) {
if (!doCentralityStudy) {
registry.fill(HIST("h2dMassXiPlus"), casc.template pt(), casc.mXi());
registry.fill(HIST("h2dMassXiPlus"), casc.pt(), casc.mXi());
} else {
registry.fill(HIST("h3dMassXiPlus"), lPercentile, casc.template pt(), casc.mXi());
registry.fill(HIST("h3dMassXiPlus"), lPercentile, casc.pt(), casc.mXi());
}
}
if (TMath::Abs(casc.yOmega()) < 0.5 && lCompatiblePID_Om) {
if (!doCentralityStudy) {
registry.fill(HIST("h2dMassOmegaPlus"), casc.template pt(), casc.mOmega());
registry.fill(HIST("h2dMassOmegaPlus"), casc.pt(), casc.mOmega());
} else {
registry.fill(HIST("h3dMassOmegaPlus"), lPercentile, casc.template pt(), casc.mOmega());
registry.fill(HIST("h3dMassOmegaPlus"), lPercentile, casc.pt(), casc.mOmega());
}
}
}
Expand Down
16 changes: 8 additions & 8 deletions PWGLF/Tasks/cascadeanalysisMC.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -357,31 +357,31 @@ struct cascadeAnalysisMC {
if (casc.sign() < 0) { // FIXME: could be done better...
if (TMath::Abs(casc.yXi()) < 0.5 && lCompatiblePID_Xi && ((!assocMC) || (lPDG == 3312))) {
if (!doCentralityStudy) {
registry.fill(HIST("h2dMassXiMinus"), casc.template pt(), casc.mXi());
registry.fill(HIST("h2dMassXiMinus"), casc.pt(), casc.mXi());
} else {
registry.fill(HIST("h3dMassXiMinus"), lPercentile, casc.template pt(), casc.mXi());
registry.fill(HIST("h3dMassXiMinus"), lPercentile, casc.pt(), casc.mXi());
}
}
if (TMath::Abs(casc.yOmega()) < 0.5 && lCompatiblePID_Om && ((!assocMC) || (lPDG == 3334))) {
if (!doCentralityStudy) {
registry.fill(HIST("h2dMassOmegaMinus"), casc.template pt(), casc.mOmega());
registry.fill(HIST("h2dMassOmegaMinus"), casc.pt(), casc.mOmega());
} else {
registry.fill(HIST("h3dMassOmegaMinus"), lPercentile, casc.template pt(), casc.mOmega());
registry.fill(HIST("h3dMassOmegaMinus"), lPercentile, casc.pt(), casc.mOmega());
}
}
} else {
if (TMath::Abs(casc.yXi()) < 0.5 && lCompatiblePID_Xi && ((!assocMC) || (lPDG == -3312))) {
if (!doCentralityStudy) {
registry.fill(HIST("h2dMassXiPlus"), casc.template pt(), casc.mXi());
registry.fill(HIST("h2dMassXiPlus"), casc.pt(), casc.mXi());
} else {
registry.fill(HIST("h3dMassXiPlus"), lPercentile, casc.template pt(), casc.mXi());
registry.fill(HIST("h3dMassXiPlus"), lPercentile, casc.pt(), casc.mXi());
}
}
if (TMath::Abs(casc.yOmega()) < 0.5 && lCompatiblePID_Om && ((!assocMC) || (lPDG == -3334))) {
if (!doCentralityStudy) {
registry.fill(HIST("h2dMassOmegaPlus"), casc.template pt(), casc.mOmega());
registry.fill(HIST("h2dMassOmegaPlus"), casc.pt(), casc.mOmega());
} else {
registry.fill(HIST("h3dMassOmegaPlus"), lPercentile, casc.template pt(), casc.mOmega());
registry.fill(HIST("h3dMassOmegaPlus"), lPercentile, casc.pt(), casc.mOmega());
}
}
}
Expand Down