@@ -52,14 +52,30 @@ DECLARE_SOA_DYNAMIC_COLUMN(V0Radius, v0radius, [](float x, float y) { return Rec
5252DECLARE_SOA_DYNAMIC_COLUMN (V0CosPA, v0cosPA, [](float X, float Y, float Z, float Px, float Py, float Pz, float pvX, float pvY, float pvZ) { return RecoDecay::CPA (array{pvX, pvY, pvZ}, array{X, Y, Z}, array{Px, Py, Pz}); });
5353DECLARE_SOA_DYNAMIC_COLUMN (DCAV0ToPV, dcav0topv, [](float X, float Y, float Z, float Px, float Py, float Pz, float pvX, float pvY, float pvZ) { return std::sqrt ((std::pow ((pvY - Y) * Pz - (pvZ - Z) * Py, 2 ) + std::pow ((pvX - X) * Pz - (pvZ - Z) * Px, 2 ) + std::pow ((pvX - X) * Py - (pvY - Y) * Px, 2 )) / (Px * Px + Py * Py + Pz * Pz)); });
5454
55+ // Armenteros-Podolanski variables
56+ DECLARE_SOA_DYNAMIC_COLUMN (Alpha, alpha, [](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) {
57+ float momTot = RecoDecay::P (pxpos + pxneg, pypos + pyneg, pzpos + pzneg);
58+ float lQlNeg = RecoDecay::dotProd (array{pxneg, pyneg, pzneg}, array{pxpos + pxneg, pypos + pyneg, pzpos + pzneg}) / momTot;
59+ float lQlPos = RecoDecay::dotProd (array{pxpos, pypos, pzpos}, array{pxpos + pxneg, pypos + pyneg, pzpos + pzneg}) / momTot;
60+ return (lQlPos - lQlNeg) / (lQlPos + lQlNeg); // alphav0
61+ });
62+
63+ DECLARE_SOA_DYNAMIC_COLUMN (QtArm, qtarm, [](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) {
64+ float momTot = RecoDecay::P2 (pxpos + pxneg, pypos + pyneg, pzpos + pzneg);
65+ float dp = RecoDecay::dotProd (array{pxneg, pyneg, pzneg}, array{pxpos + pxneg, pypos + pyneg, pzpos + pzneg});
66+ return std::sqrt (RecoDecay::P2 (pxneg, pyneg, pzneg) - dp * dp / momTot); // qtarm
67+ });
68+
5569// Calculated on the fly with mass assumption + dynamic tables
5670DECLARE_SOA_DYNAMIC_COLUMN (MLambda, mLambda , [](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) { return RecoDecay::M (array{array{pxpos, pypos, pzpos}, array{pxneg, pyneg, pzneg}}, array{RecoDecay::getMassPDG (kProton ), RecoDecay::getMassPDG (kPiPlus )}); });
5771DECLARE_SOA_DYNAMIC_COLUMN (MAntiLambda, mAntiLambda , [](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) { return RecoDecay::M (array{array{pxpos, pypos, pzpos}, array{pxneg, pyneg, pzneg}}, array{RecoDecay::getMassPDG (kPiPlus ), RecoDecay::getMassPDG (kProton )}); });
5872DECLARE_SOA_DYNAMIC_COLUMN (MK0Short, mK0Short , [](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) { return RecoDecay::M (array{array{pxpos, pypos, pzpos}, array{pxneg, pyneg, pzneg}}, array{RecoDecay::getMassPDG (kPiPlus ), RecoDecay::getMassPDG (kPiPlus )}); });
73+ DECLARE_SOA_DYNAMIC_COLUMN (MGamma, mGamma , [](float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) { return RecoDecay::M (array{array{pxpos, pypos, pzpos}, array{pxneg, pyneg, pzneg}}, array{RecoDecay::getMassPDG (kElectron ), RecoDecay::getMassPDG (kElectron )}); });
5974
6075DECLARE_SOA_DYNAMIC_COLUMN (YK0Short, yK0Short, [](float Px, float Py, float Pz) { return RecoDecay::Y (array{Px, Py, Pz}, RecoDecay::getMassPDG (kK0 )); });
6176DECLARE_SOA_DYNAMIC_COLUMN (YLambda, yLambda, [](float Px, float Py, float Pz) { return RecoDecay::Y (array{Px, Py, Pz}, RecoDecay::getMassPDG (kLambda0 )); });
6277DECLARE_SOA_DYNAMIC_COLUMN (Eta, eta, [](float Px, float Py, float Pz) { return RecoDecay::Eta (array{Px, Py, Pz}); });
78+ DECLARE_SOA_DYNAMIC_COLUMN (Phi, phi, [](float Px, float Py) { return RecoDecay::Phi (Px, Py); });
6379
6480DECLARE_SOA_EXPRESSION_COLUMN (Px, px, float , 1 .f * aod::v0data::pxpos + 1 .f * aod::v0data::pxneg);
6581DECLARE_SOA_EXPRESSION_COLUMN (Py, py, float , 1 .f * aod::v0data::pypos + 1 .f * aod::v0data::pyneg);
@@ -79,16 +95,20 @@ DECLARE_SOA_TABLE_FULL(StoredV0Datas, "V0Datas", "AOD", "V0DATA",
7995 v0data::V0Radius<v0data::X, v0data::Y>,
8096 v0data::V0CosPA<v0data::X, v0data::Y, v0data::Z, v0data::Px, v0data::Py, v0data::Pz>,
8197 v0data::DCAV0ToPV<v0data::X, v0data::Y, v0data::Z, v0data::Px, v0data::Py, v0data::Pz>,
98+ v0data::Alpha<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
99+ v0data::QtArm<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
82100
83101 // Invariant masses
84102 v0data::MLambda<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
85103 v0data::MAntiLambda<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
86104 v0data::MK0Short<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
105+ v0data::MGamma<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
87106
88107 // Longitudinal
89108 v0data::YK0Short<v0data::Px, v0data::Py, v0data::Pz>,
90109 v0data::YLambda<v0data::Px, v0data::Py, v0data::Pz>,
91- v0data::Eta<v0data::Px, v0data::Py, v0data::Pz>);
110+ v0data::Eta<v0data::Px, v0data::Py, v0data::Pz>,
111+ v0data::Phi<v0data::Px, v0data::Py>);
92112
93113// extended table with expression columns that can be used as arguments of dynamic columns
94114DECLARE_SOA_EXTENDED_TABLE_USER (V0Datas, StoredV0Datas, " V0DATAEXT" ,
0 commit comments