@@ -52,14 +52,30 @@ DECLARE_SOA_DYNAMIC_COLUMN(V0Radius, v0radius, [](float x, float y) { return Rec
52
52
DECLARE_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}); });
53
53
DECLARE_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)); });
54
54
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
+
55
69
// Calculated on the fly with mass assumption + dynamic tables
56
70
DECLARE_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 )}); });
57
71
DECLARE_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 )}); });
58
72
DECLARE_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 )}); });
59
74
60
75
DECLARE_SOA_DYNAMIC_COLUMN (YK0Short, yK0Short, [](float Px, float Py, float Pz) { return RecoDecay::Y (array{Px, Py, Pz}, RecoDecay::getMassPDG (kK0 )); });
61
76
DECLARE_SOA_DYNAMIC_COLUMN (YLambda, yLambda, [](float Px, float Py, float Pz) { return RecoDecay::Y (array{Px, Py, Pz}, RecoDecay::getMassPDG (kLambda0 )); });
62
77
DECLARE_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); });
63
79
64
80
DECLARE_SOA_EXPRESSION_COLUMN (Px, px, float , 1 .f * aod::v0data::pxpos + 1 .f * aod::v0data::pxneg);
65
81
DECLARE_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",
79
95
v0data::V0Radius<v0data::X, v0data::Y>,
80
96
v0data::V0CosPA<v0data::X, v0data::Y, v0data::Z, v0data::Px, v0data::Py, v0data::Pz>,
81
97
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>,
82
100
83
101
// Invariant masses
84
102
v0data::MLambda<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
85
103
v0data::MAntiLambda<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
86
104
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>,
87
106
88
107
// Longitudinal
89
108
v0data::YK0Short<v0data::Px, v0data::Py, v0data::Pz>,
90
109
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>);
92
112
93
113
// extended table with expression columns that can be used as arguments of dynamic columns
94
114
DECLARE_SOA_EXTENDED_TABLE_USER (V0Datas, StoredV0Datas, " V0DATAEXT" ,
0 commit comments