@@ -47,6 +47,10 @@ DECLARE_SOA_DYNAMIC_COLUMN(V0CosPA, v0cosPA, [](float X, float Y, float Z, float
4747DECLARE_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 )}); });
4848DECLARE_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 )}); });
4949DECLARE_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 )}); });
50+
51+ DECLARE_SOA_DYNAMIC_COLUMN (YK0Short, yK0Short, [](float Px, float Py, float Pz) { return RecoDecay::Y (array{Px, Py, Pz}, RecoDecay::getMassPDG (kK0 )); });
52+ DECLARE_SOA_DYNAMIC_COLUMN (YLambda, yLambda, [](float Px, float Py, float Pz) { return RecoDecay::Y (array{Px, Py, Pz}, RecoDecay::getMassPDG (kLambda0 )); });
53+ DECLARE_SOA_DYNAMIC_COLUMN (Eta, eta, [](float Px, float Py, float Pz) { return RecoDecay::Eta (array{Px, Py, Pz}); });
5054} // namespace v0data
5155
5256namespace v0dataext
@@ -70,7 +74,12 @@ DECLARE_SOA_TABLE(V0Data, "AOD", "V0DATA",
7074 // Invariant masses
7175 v0data::MLambda<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
7276 v0data::MAntiLambda<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
73- v0data::MK0Short<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>);
77+ v0data::MK0Short<v0data::PxPos, v0data::PyPos, v0data::PzPos, v0data::PxNeg, v0data::PyNeg, v0data::PzNeg>,
78+
79+ // Longitudinal
80+ v0data::YK0Short<v0dataext::Px, v0dataext::Py, v0dataext::Pz>,
81+ v0data::YLambda<v0dataext::Px, v0dataext::Py, v0dataext::Pz>,
82+ v0data::Eta<v0dataext::Px, v0dataext::Py, v0dataext::Pz>);
7483
7584using V0DataOrigin = V0Data;
7685
@@ -80,6 +89,111 @@ DECLARE_SOA_EXTENDED_TABLE_USER(V0DataExt, V0DataOrigin, "V0DATAEXT",
8089
8190using V0DataFull = V0DataExt;
8291
92+ namespace v0finderdata
93+ {
94+ DECLARE_SOA_INDEX_COLUMN (Collision, collision);
95+ }
96+ DECLARE_SOA_TABLE (V0FinderData, " AOD" , " V0FINDERDATA" , o2::soa::Index<>, v0finderdata::CollisionId);
97+
98+ namespace cascdata
99+ {
100+ // General V0 properties: position, momentum
101+ DECLARE_SOA_COLUMN (Charge, charge, int );
102+ DECLARE_SOA_COLUMN (PxPos, pxpos, float );
103+ DECLARE_SOA_COLUMN (PyPos, pypos, float );
104+ DECLARE_SOA_COLUMN (PzPos, pzpos, float );
105+ DECLARE_SOA_COLUMN (PxNeg, pxneg, float );
106+ DECLARE_SOA_COLUMN (PyNeg, pyneg, float );
107+ DECLARE_SOA_COLUMN (PzNeg, pzneg, float );
108+ DECLARE_SOA_COLUMN (PxBach, pxbach, float );
109+ DECLARE_SOA_COLUMN (PyBach, pybach, float );
110+ DECLARE_SOA_COLUMN (PzBach, pzbach, float );
111+ DECLARE_SOA_COLUMN (X, x, float );
112+ DECLARE_SOA_COLUMN (Y, y, float );
113+ DECLARE_SOA_COLUMN (Z, z, float );
114+ DECLARE_SOA_COLUMN (Xlambda, xlambda, float );
115+ DECLARE_SOA_COLUMN (Ylambda, ylambda, float );
116+ DECLARE_SOA_COLUMN (Zlambda, zlambda, float );
117+
118+ // Saved from finding: DCAs
119+ DECLARE_SOA_COLUMN (DCAV0Daughters, dcaV0daughters, float );
120+ DECLARE_SOA_COLUMN (DCACascDaughters, dcacascdaughters, float );
121+ DECLARE_SOA_COLUMN (DCAPosToPV, dcapostopv, float );
122+ DECLARE_SOA_COLUMN (DCANegToPV, dcanegtopv, float );
123+ DECLARE_SOA_COLUMN (DCABachToPV, dcabachtopv, float );
124+
125+ // Derived expressions
126+ // Momenta
127+ DECLARE_SOA_DYNAMIC_COLUMN (Pt, pt, [](float Px, float Py) { return RecoDecay::sqrtSumOfSquares (Px, Py); });
128+
129+ // Length quantities
130+ DECLARE_SOA_DYNAMIC_COLUMN (V0Radius, v0radius, [](float xlambda, float ylambda) { return RecoDecay::sqrtSumOfSquares (xlambda, ylambda); });
131+ DECLARE_SOA_DYNAMIC_COLUMN (CascRadius, cascradius, [](float x, float y) { return RecoDecay::sqrtSumOfSquares (x, y); });
132+
133+ // CosPAs
134+ DECLARE_SOA_DYNAMIC_COLUMN (V0CosPA, v0cosPA, [](float Xlambda, float Ylambda, float Zlambda, float PxLambda, float PyLambda, float PzLambda, float pvX, float pvY, float pvZ) { return RecoDecay::CPA (array{pvX, pvY, pvZ}, array{Xlambda, Ylambda, Zlambda}, array{PxLambda, PyLambda, PzLambda}); });
135+ DECLARE_SOA_DYNAMIC_COLUMN (CascCosPA, casccosPA, [](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}); });
136+ 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 TMath::Sqrt ((TMath::Power ((pvY - Y) * Pz - (pvZ - Z) * Py, 2 ) + TMath::Power ((pvX - X) * Pz - (pvZ - Z) * Px, 2 ) + TMath::Power ((pvX - X) * Py - (pvY - Y) * Px, 2 )) / (Px * Px + Py * Py + Pz * Pz)); });
137+ DECLARE_SOA_DYNAMIC_COLUMN (DCACascToPV, dcacasctopv, [](float X, float Y, float Z, float Px, float Py, float Pz, float pvX, float pvY, float pvZ) { return TMath::Sqrt ((TMath::Power ((pvY - Y) * Pz - (pvZ - Z) * Py, 2 ) + TMath::Power ((pvX - X) * Pz - (pvZ - Z) * Px, 2 ) + TMath::Power ((pvX - X) * Py - (pvY - Y) * Px, 2 )) / (Px * Px + Py * Py + Pz * Pz)); });
138+
139+ // Calculated on the fly with mass assumption + dynamic tables
140+ DECLARE_SOA_DYNAMIC_COLUMN (MLambda, mLambda , [](int charge, float pxpos, float pypos, float pzpos, float pxneg, float pyneg, float pzneg) { return RecoDecay::M (array{array{pxpos, pypos, pzpos}, array{pxneg, pyneg, pzneg}}, charge < 0 ? array{RecoDecay::getMassPDG (kProton ), RecoDecay::getMassPDG (kPiPlus )} : array{RecoDecay::getMassPDG (kPiPlus ), RecoDecay::getMassPDG (kProton )}); });
141+ // Calculated on the fly with mass assumption + dynamic tables
142+
143+ DECLARE_SOA_DYNAMIC_COLUMN (MXi, mXi , [](float pxbach, float pybach, float pzbach, float PxLambda, float PyLambda, float PzLambda) { return RecoDecay::M (array{array{pxbach, pybach, pzbach}, array{PxLambda, PyLambda, PzLambda}}, array{RecoDecay::getMassPDG (kPiPlus ), RecoDecay::getMassPDG (kLambda0 )}); });
144+ DECLARE_SOA_DYNAMIC_COLUMN (MOmega, mOmega , [](float pxbach, float pybach, float pzbach, float PxLambda, float PyLambda, float PzLambda) { return RecoDecay::M (array{array{pxbach, pybach, pzbach}, array{PxLambda, PyLambda, PzLambda}}, array{RecoDecay::getMassPDG (kKPlus ), RecoDecay::getMassPDG (kLambda0 )}); });
145+
146+ DECLARE_SOA_DYNAMIC_COLUMN (YXi, yXi, [](float Px, float Py, float Pz) { return RecoDecay::Y (array{Px, Py, Pz}, 1.32171 ); });
147+ DECLARE_SOA_DYNAMIC_COLUMN (YOmega, yOmega, [](float Px, float Py, float Pz) { return RecoDecay::Y (array{Px, Py, Pz}, 1.67245 ); });
148+ DECLARE_SOA_DYNAMIC_COLUMN (Eta, eta, [](float Px, float Py, float Pz) { return RecoDecay::Eta (array{Px, Py, Pz}); });
149+ } // namespace cascdata
150+
151+ namespace cascdataext
152+ {
153+ DECLARE_SOA_EXPRESSION_COLUMN (PxLambda, pxlambda, float , 1 .f * aod::cascdata::pxpos + 1 .f * aod::cascdata::pxneg);
154+ DECLARE_SOA_EXPRESSION_COLUMN (PyLambda, pylambda, float , 1 .f * aod::cascdata::pypos + 1 .f * aod::cascdata::pyneg);
155+ DECLARE_SOA_EXPRESSION_COLUMN (PzLambda, pzlambda, float , 1 .f * aod::cascdata::pzpos + 1 .f * aod::cascdata::pzneg);
156+ DECLARE_SOA_EXPRESSION_COLUMN (Px, px, float , 1 .f * aod::cascdata::pxpos + 1 .f * aod::cascdata::pxneg + 1 .f * aod::cascdata::pxbach);
157+ DECLARE_SOA_EXPRESSION_COLUMN (Py, py, float , 1 .f * aod::cascdata::pypos + 1 .f * aod::cascdata::pyneg + 1 .f * aod::cascdata::pybach);
158+ DECLARE_SOA_EXPRESSION_COLUMN (Pz, pz, float , 1 .f * aod::cascdata::pzpos + 1 .f * aod::cascdata::pzneg + 1 .f * aod::cascdata::pzbach);
159+ } // namespace cascdataext
160+
161+ DECLARE_SOA_TABLE (CascData, " AOD" , " CASCDATA" ,
162+ cascdata::Charge,
163+ cascdata::X, cascdata::Y, cascdata::Z,
164+ cascdata::Xlambda, cascdata::Ylambda, cascdata::Zlambda,
165+ cascdata::PxPos, cascdata::PyPos, cascdata::PzPos,
166+ cascdata::PxNeg, cascdata::PyNeg, cascdata::PzNeg,
167+ cascdata::PxBach, cascdata::PyBach, cascdata::PzBach,
168+ cascdata::DCAV0Daughters, cascdata::DCACascDaughters,
169+ cascdata::DCAPosToPV, cascdata::DCANegToPV, cascdata::DCABachToPV,
170+
171+ // Dynamic columns
172+ cascdata::Pt<cascdataext::Px, cascdataext::Py>,
173+ cascdata::V0Radius<cascdata::Xlambda, cascdata::Ylambda>,
174+ cascdata::CascRadius<cascdata::X, cascdata::Y>,
175+ cascdata::V0CosPA<cascdata::Xlambda, cascdata::Ylambda, cascdata::Zlambda, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
176+ cascdata::CascCosPA<cascdata::X, cascdata::Y, cascdata::Z, cascdataext::Px, cascdataext::Py, cascdataext::Pz>,
177+ cascdata::DCAV0ToPV<cascdata::Xlambda, cascdata::Ylambda, cascdata::Zlambda, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
178+ cascdata::DCACascToPV<cascdata::X, cascdata::Y, cascdata::Z, cascdataext::Px, cascdataext::Py, cascdataext::Pz>,
179+
180+ // Invariant masses
181+ cascdata::MLambda<cascdata::Charge, cascdata::PxPos, cascdata::PyPos, cascdata::PzPos, cascdata::PxNeg, cascdata::PyNeg, cascdata::PzNeg>,
182+ cascdata::MXi<cascdata::PxBach, cascdata::PyBach, cascdata::PzBach, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
183+ cascdata::MOmega<cascdata::PxBach, cascdata::PyBach, cascdata::PzBach, cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda>,
184+ // Longitudinal
185+ cascdata::YXi<cascdataext::Px, cascdataext::Py, cascdataext::Pz>,
186+ cascdata::YOmega<cascdataext::Px, cascdataext::Py, cascdataext::Pz>,
187+ cascdata::Eta<cascdataext::Px, cascdataext::Py, cascdataext::Pz>);
188+
189+ using CascDataOrigin = CascData;
190+
191+ // extended table with expression columns that can be used as arguments of dynamic columns
192+ DECLARE_SOA_EXTENDED_TABLE_USER (CascDataExt, CascDataOrigin, " CascDATAEXT" ,
193+ cascdataext::PxLambda, cascdataext::PyLambda, cascdataext::PzLambda,
194+ cascdataext::Px, cascdataext::Py, cascdataext::Pz);
195+
196+ using CascDataFull = CascDataExt;
83197} // namespace o2::aod
84198
85199#endif // O2_ANALYSIS_STRANGENESSTABLES_H_
0 commit comments