@@ -52,11 +52,6 @@ DECLARE_SOA_COLUMN(MomentumCovMat, momentumCovMat, float[6]); //! covariance mat
5252DECLARE_SOA_COLUMN (KFV0Chi2, kfV0Chi2, float ); // !
5353
5454// Derived expressions
55- // Momenta
56- DECLARE_SOA_DYNAMIC_COLUMN (Pt, pt, // ! V0 pT
57- [](float pxpos, float pypos, float pxneg, float pyneg) -> float { return RecoDecay::sqrtSumOfSquares (pxpos + pxneg, pypos + pyneg); });
58- DECLARE_SOA_DYNAMIC_COLUMN (P, p, // ! V0 pT
59- [](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) -> float { return std::hypot (pxpos + pxneg, pypos + pyneg, pzpos + pzneg); });
6055// Account for rigidity in case of hypertriton
6156DECLARE_SOA_DYNAMIC_COLUMN (PtHypertriton, ptHypertriton, // ! V0 pT
6257 [](float pxpos, float pypos, float pxneg, float pyneg) -> float { return RecoDecay::sqrtSumOfSquares (2 .0f * pxpos + pxneg, 2 .0f * pypos + pyneg); });
@@ -170,10 +165,6 @@ DECLARE_SOA_DYNAMIC_COLUMN(Rapidity, rapidity, //! rapidity (0:K0, 1:L, 2:Lbar)
170165 return RecoDecay::y (std::array{Px, Py, Pz}, o2::constants::physics::MassLambda);
171166 return 0 .0f ;
172167 });
173- DECLARE_SOA_DYNAMIC_COLUMN (Eta, eta, // ! V0 eta
174- [](float Px, float Py, float Pz) -> float { return RecoDecay::eta (std::array{Px, Py, Pz}); });
175- DECLARE_SOA_DYNAMIC_COLUMN (Phi, phi, // ! V0 phi
176- [](float Px, float Py) -> float { return RecoDecay::phi (Px, Py); });
177168
178169DECLARE_SOA_DYNAMIC_COLUMN (NegativePt, negativept, // ! negative daughter pT
179170 [](float pxneg, float pyneg) -> float { return RecoDecay::sqrtSumOfSquares (pxneg, pyneg); });
@@ -194,6 +185,31 @@ DECLARE_SOA_EXPRESSION_COLUMN(Py, py, //! V0 py
194185 float , 1 .f * aod::v0data::pypos + 1 .f * aod::v0data::pyneg);
195186DECLARE_SOA_EXPRESSION_COLUMN (Pz, pz, // ! V0 pz
196187 float , 1 .f * aod::v0data::pzpos + 1 .f * aod::v0data::pzneg);
188+
189+ DECLARE_SOA_EXPRESSION_COLUMN (Pt, pt, float , // ! Transverse momentum in GeV/c
190+ nsqrt (aod::v0data::px* aod::v0data::px +
191+ aod::v0data::py * aod::v0data::py));
192+ DECLARE_SOA_EXPRESSION_COLUMN (P, p, float , // ! Total momentum in GeV/c
193+ nsqrt (aod::v0data::px* aod::v0data::px +
194+ aod::v0data::py * aod::v0data::py +
195+ aod::v0data::pz * aod::v0data::pz));
196+ DECLARE_SOA_EXPRESSION_COLUMN (Phi, phi, float , // ! Phi in the range [0, 2pi)
197+ o2::constants::math::PI + natan2(-1 .0f * aod::v0data::py, -1 .0f * aod::v0data::px));
198+ DECLARE_SOA_EXPRESSION_COLUMN (Eta, eta, float , // ! Pseudorapidity, conditionally defined to avoid FPEs
199+ ifnode ((nsqrt(aod::v0data::px * aod::v0data::px +
200+ aod::v0data::py * aod::v0data::py +
201+ aod::v0data::pz * aod::v0data::pz) -
202+ aod::v0data::pz) < static_cast<float>(1e-7 ),
203+ ifnode(aod::v0data::pz < 0 .f, -100 .f, 100 .f),
204+ 0.5f * nlog((nsqrt(aod::v0data::px * aod::v0data::px +
205+ aod::v0data::py * aod::v0data::py +
206+ aod::v0data::pz * aod::v0data::pz) +
207+ aod::v0data::pz) /
208+ (nsqrt(aod::v0data::px * aod::v0data::px +
209+ aod::v0data::py * aod::v0data::py +
210+ aod::v0data::pz * aod::v0data::pz) -
211+ aod::v0data::pz))));
212+
197213} // namespace v0data
198214
199215DECLARE_SOA_TABLE_FULL (StoredV0Datas, " V0Datas" , " AOD" , " V0DATA" , // !
@@ -205,8 +221,6 @@ DECLARE_SOA_TABLE_FULL(StoredV0Datas, "V0Datas", "AOD", "V0DATA", //!
205221 v0data::DCAV0Daughters, v0data::DCAPosToPV, v0data::DCANegToPV,
206222
207223 // Dynamic columns
208- v0data::Pt<v0data::PxPos, v0data::PyPos, v0data::PxNeg, v0data::PyNeg>,
209- v0data::P<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
210224 v0data::PtHypertriton<v0data::PxPos, v0data::PyPos, v0data::PxNeg, v0data::PyNeg>,
211225 v0data::PtAntiHypertriton<v0data::PxPos, v0data::PyPos, v0data::PxNeg, v0data::PyNeg>,
212226 v0data::V0Radius<v0data::X, v0data::Y>,
@@ -234,8 +248,6 @@ DECLARE_SOA_TABLE_FULL(StoredV0Datas, "V0Datas", "AOD", "V0DATA", //!
234248 v0data::YHypertriton<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
235249 v0data::YAntiHypertriton<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
236250 v0data::Rapidity<v0data::Px, v0data::Py, v0data::Pz>,
237- v0data::Eta<v0data::Px, v0data::Py, v0data::Pz>,
238- v0data::Phi<v0data::Px, v0data::Py>,
239251 v0data::NegativePt<v0data::PxNeg, v0data::PyNeg>,
240252 v0data::PositivePt<v0data::PxPos, v0data::PyPos>,
241253 v0data::NegativeEta<v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
@@ -247,9 +259,10 @@ DECLARE_SOA_TABLE_FULL(V0Covs, "V0Covs", "AOD", "V0COVS", //!
247259 v0data::PositionCovMat, v0data::MomentumCovMat);
248260
249261// extended table with expression columns that can be used as arguments of dynamic columns
250- DECLARE_SOA_EXTENDED_TABLE_USER (V0Datas, StoredV0Datas, " V0DATAEXT" , // !
251- v0data::Px, v0data::Py, v0data::Pz); // the table name has here to be the one with EXT which is not nice and under study
262+ DECLARE_SOA_EXTENDED_TABLE_USER (V0Datas, StoredV0Datas, " V0DATAEXT" , // !
263+ 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
252264
265+ // using V0Datas = soa::Join<V0Indices,V0Topos>
253266using V0Data = V0Datas::iterator;
254267namespace v0data
255268{
@@ -374,10 +387,6 @@ DECLARE_SOA_COLUMN(TopologyChi2, topologyChi2, float); //!
374387DECLARE_SOA_COLUMN (ItsClsSize, itsCluSize, float ); // !
375388
376389// Derived expressions
377- // Momenta
378- DECLARE_SOA_DYNAMIC_COLUMN (Pt, pt, // !
379- [](float Px, float Py) -> float { return RecoDecay::sqrtSumOfSquares (Px, Py); });
380-
381390// Length quantities
382391DECLARE_SOA_DYNAMIC_COLUMN (V0Radius, v0radius, // !
383392 [](float xlambda, float ylambda) -> float { return RecoDecay::sqrtSumOfSquares (xlambda, ylambda); });
@@ -416,10 +425,6 @@ DECLARE_SOA_DYNAMIC_COLUMN(Rapidity, rapidity, //! rapidity (0, 1: Xi; 2, 3: Ome
416425 return RecoDecay::y (std::array{Px, Py, Pz}, o2::constants::physics::MassOmegaMinus);
417426 return 0 .0f ;
418427 });
419- DECLARE_SOA_DYNAMIC_COLUMN (Eta, eta, // !
420- [](float Px, float Py, float Pz) -> float { return RecoDecay::eta (std::array{Px, Py, Pz}); });
421- DECLARE_SOA_DYNAMIC_COLUMN (Phi, phi, // ! cascade phi
422- [](float Px, float Py) -> float { return RecoDecay::phi (Px, Py); });
423428} // namespace cascdata
424429
425430namespace cascdataext
@@ -430,6 +435,29 @@ DECLARE_SOA_EXPRESSION_COLUMN(PyLambda, pylambda, //!
430435 float , 1 .f * aod::cascdata::pypos + 1 .f * aod::cascdata::pyneg);
431436DECLARE_SOA_EXPRESSION_COLUMN (PzLambda, pzlambda, // !
432437 float , 1 .f * aod::cascdata::pzpos + 1 .f * aod::cascdata::pzneg);
438+ DECLARE_SOA_EXPRESSION_COLUMN (Pt, pt, float , // ! Transverse momentum in GeV/c
439+ nsqrt (aod::cascdata::px* aod::cascdata::px +
440+ aod::cascdata::py * aod::cascdata::py));
441+ DECLARE_SOA_EXPRESSION_COLUMN (P, p, float , // ! Total momentum in GeV/c
442+ nsqrt (aod::cascdata::px* aod::cascdata::px +
443+ aod::cascdata::py * aod::cascdata::py +
444+ aod::cascdata::pz * aod::cascdata::pz));
445+ DECLARE_SOA_EXPRESSION_COLUMN (Phi, phi, float , // ! Phi in the range [0, 2pi)
446+ o2::constants::math::PI + natan2(-1 .0f * aod::cascdata::py, -1 .0f * aod::cascdata::px));
447+ DECLARE_SOA_EXPRESSION_COLUMN (Eta, eta, float , // ! Pseudorapidity, conditionally defined to avoid FPEs
448+ ifnode ((nsqrt(aod::cascdata::px * aod::cascdata::px +
449+ aod::cascdata::py * aod::cascdata::py +
450+ aod::cascdata::pz * aod::cascdata::pz) -
451+ aod::cascdata::pz) < static_cast<float>(1e-7 ),
452+ ifnode(aod::cascdata::pz < 0 .f, -100 .f, 100 .f),
453+ 0.5f * nlog((nsqrt(aod::cascdata::px * aod::cascdata::px +
454+ aod::cascdata::py * aod::cascdata::py +
455+ aod::cascdata::pz * aod::cascdata::pz) +
456+ aod::cascdata::pz) /
457+ (nsqrt(aod::cascdata::px * aod::cascdata::px +
458+ aod::cascdata::py * aod::cascdata::py +
459+ aod::cascdata::pz * aod::cascdata::pz) -
460+ aod::cascdata::pz))));
433461} // namespace cascdataext
434462
435463DECLARE_SOA_TABLE (StoredCascDatas, " AOD" , " CASCDATA" , // !
@@ -446,7 +474,6 @@ DECLARE_SOA_TABLE(StoredCascDatas, "AOD", "CASCDATA", //!
446474 cascdata::BachBaryonCosPA, cascdata::BachBaryonDCAxyToPV,
447475
448476 // Dynamic columns
449- cascdata::Pt<cascdata::Px, cascdata::Py>,
450477 cascdata::V0Radius<cascdata::Xlambda, cascdata::Ylambda>,
451478 cascdata::CascRadius<cascdata::X, cascdata::Y>,
452479 cascdata::V0CosPA<cascdata::Xlambda, cascdata::Ylambda, cascdata::Zlambda, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
@@ -460,9 +487,7 @@ DECLARE_SOA_TABLE(StoredCascDatas, "AOD", "CASCDATA", //!
460487 // Longitudinal
461488 cascdata::YXi<cascdata::Px, cascdata::Py, cascdata::Pz>,
462489 cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>,
463- cascdata::Rapidity<cascdata::Px, cascdata::Py, cascdata::Pz>,
464- cascdata::Eta<cascdata::Px, cascdata::Py, cascdata::Pz>,
465- cascdata::Phi<cascdata::Px, cascdata::Py>);
490+ cascdata::Rapidity<cascdata::Px, cascdata::Py, cascdata::Pz>);
466491
467492DECLARE_SOA_TABLE (StoredKFCascDatas, " AOD" , " KFCASCDATA" , // !
468493 o2::soa::Index<>, cascdata::V0Id, cascdata::CascadeId, cascdata::BachelorId, cascdata::CollisionId,
@@ -481,7 +506,6 @@ DECLARE_SOA_TABLE(StoredKFCascDatas, "AOD", "KFCASCDATA", //!
481506 kfcascdata::MLambda, cascdata::KFV0Chi2, cascdata::KFCascadeChi2,
482507
483508 // Dynamic columns
484- cascdata::Pt<cascdata::Px, cascdata::Py>,
485509 cascdata::V0Radius<cascdata::Xlambda, cascdata::Ylambda>,
486510 cascdata::CascRadius<cascdata::X, cascdata::Y>,
487511 cascdata::V0CosPA<cascdata::Xlambda, cascdata::Ylambda, cascdata::Zlambda, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
@@ -493,9 +517,7 @@ DECLARE_SOA_TABLE(StoredKFCascDatas, "AOD", "KFCASCDATA", //!
493517
494518 // Longitudinal
495519 cascdata::YXi<cascdata::Px, cascdata::Py, cascdata::Pz>,
496- cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>,
497- cascdata::Eta<cascdata::Px, cascdata::Py, cascdata::Pz>,
498- cascdata::Phi<cascdata::Px, cascdata::Py>);
520+ cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>);
499521
500522DECLARE_SOA_TABLE (StoredTraCascDatas, " AOD" , " TRACASCDATA" , // !
501523 o2::soa::Index<>, cascdata::V0Id, cascdata::CascadeId, cascdata::BachelorId, cascdata::StrangeTrackId, cascdata::CollisionId,
@@ -514,7 +536,6 @@ DECLARE_SOA_TABLE(StoredTraCascDatas, "AOD", "TRACASCDATA", //!
514536 cascdata::MatchingChi2, cascdata::TopologyChi2, cascdata::ItsClsSize,
515537
516538 // Dynamic columns
517- cascdata::Pt<cascdata::Px, cascdata::Py>,
518539 cascdata::V0Radius<cascdata::Xlambda, cascdata::Ylambda>,
519540 cascdata::CascRadius<cascdata::X, cascdata::Y>,
520541 cascdata::V0CosPA<cascdata::Xlambda, cascdata::Ylambda, cascdata::Zlambda, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
@@ -526,9 +547,7 @@ DECLARE_SOA_TABLE(StoredTraCascDatas, "AOD", "TRACASCDATA", //!
526547
527548 // Longitudinal
528549 cascdata::YXi<cascdata::Px, cascdata::Py, cascdata::Pz>,
529- cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>,
530- cascdata::Eta<cascdata::Px, cascdata::Py, cascdata::Pz>,
531- cascdata::Phi<cascdata::Px, cascdata::Py>);
550+ cascdata::YOmega<cascdata::Px, cascdata::Py, cascdata::Pz>);
532551
533552DECLARE_SOA_TABLE_FULL (CascCovs, " CascCovs" , " AOD" , " CASCCOVS" , // !
534553 cascdata::PositionCovMat, cascdata::MomentumCovMat);
@@ -538,15 +557,17 @@ DECLARE_SOA_TABLE_FULL(KFCascCovs, "KFCascCovs", "AOD", "KFCASCCOVS", //!
538557
539558// extended table with expression columns that can be used as arguments of dynamic columns
540559DECLARE_SOA_EXTENDED_TABLE_USER (CascDatas, StoredCascDatas, " CascDATAEXT" , // !
541- cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda);
560+ cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda, cascdataext::Pt, cascdataext::P, cascdataext::Eta, cascdataext::Phi );
542561
543562// extended table with expression columns that can be used as arguments of dynamic columns
544563DECLARE_SOA_EXTENDED_TABLE_USER (KFCascDatas, StoredKFCascDatas, " KFCascDATAEXT" , // !
545- cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda);
564+ cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda,
565+ cascdataext::Pt, cascdataext::P, cascdataext::Eta, cascdataext::Phi);
546566
547567// extended table with expression columns that can be used as arguments of dynamic columns
548568DECLARE_SOA_EXTENDED_TABLE_USER (TraCascDatas, StoredTraCascDatas, " TraCascDATAEXT" , // !
549- cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda);
569+ cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda,
570+ cascdataext::Pt, cascdataext::P, cascdataext::Eta, cascdataext::Phi);
550571
551572using CascData = CascDatas::iterator;
552573using KFCascData = KFCascDatas::iterator;
0 commit comments