@@ -159,6 +159,111 @@ DECLARE_SOA_TABLE(SlimKinkCandsMC, "AOD", "SLIMKINKCANDSMC",
159159 kinkcand::MothPdgCode, kinkcand::DaugPdgCode,
160160 kinkcand::PtMC, kinkcand::PzMC, kinkcand::MassMC, kinkcand::DecayRadiusMC, kinkcand::CollisionIdCheck);
161161
162+ namespace sigmapluscand
163+ {
164+
165+ DECLARE_SOA_COLUMN (XDecVtx, xDecVtx, float ); // ! Decay vertex of the candidate (x direction)
166+ DECLARE_SOA_COLUMN (YDecVtx, yDecVtx, float ); // ! Decay vertex of the candidate (y direction)
167+ DECLARE_SOA_COLUMN (ZDecVtx, zDecVtx, float ); // ! Decay vertex of the candidate (z direction)
168+ DECLARE_SOA_COLUMN (Radius, radius, float ); // ! Decay radius of the candidate (cm)
169+ DECLARE_SOA_COLUMN (DcaProtonGamma, dcaProtonGamma, float ); // ! DCA between proton and photon at the fitted vertex (cm)
170+
171+ DECLARE_SOA_COLUMN (PxProton, pxProton, float ); // ! Px of the proton
172+ DECLARE_SOA_COLUMN (PyProton, pyProton, float ); // ! Py of the proton
173+ DECLARE_SOA_COLUMN (PzProton, pzProton, float ); // ! Pz of the proton
174+ DECLARE_SOA_COLUMN (PxGamma1, pxGamma1, float ); // ! Px of the measured (PCM) photon
175+ DECLARE_SOA_COLUMN (PyGamma1, pyGamma1, float ); // ! Py of the measured (PCM) photon
176+ DECLARE_SOA_COLUMN (PzGamma1, pzGamma1, float ); // ! Pz of the measured (PCM) photon
177+ DECLARE_SOA_COLUMN (PxGamma2, pxGamma2, float ); // ! Px of the reconstructed (missing) photon
178+ DECLARE_SOA_COLUMN (PyGamma2, pyGamma2, float ); // ! Py of the reconstructed (missing) photon
179+ DECLARE_SOA_COLUMN (PzGamma2, pzGamma2, float ); // ! Pz of the reconstructed (missing) photon
180+
181+ DECLARE_SOA_COLUMN (NSigmaTPCProton, nSigmaTPCProton, float ); // ! TPC nSigma of the proton track
182+ DECLARE_SOA_COLUMN (NSigmaTOFProton, nSigmaTOFProton, float ); // ! TOF nSigma of the proton track
183+ DECLARE_SOA_COLUMN (NSigmaTPCElPos, nSigmaTPCElPos, float ); // ! TPC nSigma_el of the photon's positive daughter
184+ DECLARE_SOA_COLUMN (NSigmaTPCElNeg, nSigmaTPCElNeg, float ); // ! TPC nSigma_el of the photon's negative daughter
185+
186+ // MC columns
187+ DECLARE_SOA_COLUMN (IsSignal, isSignal, bool ); // ! True if proton and photon are MC-truth matched to the same Sigma+
188+
189+ DECLARE_SOA_COLUMN (ProtonPdgCode, protonPdgCode, int ); // ! PDG code of the proton's MC particle
190+ DECLARE_SOA_COLUMN (ProtonMotherPdgCode, protonMotherPdgCode, int ); // ! PDG code of the proton's MC mother
191+ DECLARE_SOA_COLUMN (GammaPdgCode, gammaPdgCode, int ); // ! PDG code of the measured photon's MC particle
192+ DECLARE_SOA_COLUMN (GammaMotherPdgCode, gammaMotherPdgCode, int ); // ! PDG code of the photon's MC mother (expected: pi0)
193+ DECLARE_SOA_COLUMN (GammaGMotherPdgCode, gammaGMotherPdgCode, int ); // ! PDG code of the photon's MC grandmother (expected: Sigma+)
194+
195+ DECLARE_SOA_COLUMN (XDecVtxMC, xDecVtxMC, float ); // ! MC-truth Sigma+ decay vertex (x direction)
196+ DECLARE_SOA_COLUMN (YDecVtxMC, yDecVtxMC, float ); // ! MC-truth Sigma+ decay vertex (y direction)
197+ DECLARE_SOA_COLUMN (ZDecVtxMC, zDecVtxMC, float ); // ! MC-truth Sigma+ decay vertex (z direction)
198+ DECLARE_SOA_COLUMN (PxProtonMC, pxProtonMC, float ); // ! MC-truth proton Px
199+ DECLARE_SOA_COLUMN (PyProtonMC, pyProtonMC, float ); // ! MC-truth proton Py
200+ DECLARE_SOA_COLUMN (PzProtonMC, pzProtonMC, float ); // ! MC-truth proton Pz
201+ DECLARE_SOA_COLUMN (PxGammaMC, pxGammaMC, float ); // ! MC-truth momentum of the measured photon (Px)
202+ DECLARE_SOA_COLUMN (PyGammaMC, pyGammaMC, float ); // ! MC-truth momentum of the measured photon (Py)
203+ DECLARE_SOA_COLUMN (PzGammaMC, pzGammaMC, float ); // ! MC-truth momentum of the measured photon (Pz)
204+
205+ // DYNAMIC COLUMNS
206+
207+ DECLARE_SOA_DYNAMIC_COLUMN (PxSigmaPlus, pxSigmaPlus, // ! Px of the Sigma+ candidate
208+ [](float pxProton, float pxGamma1, float pxGamma2) -> float { return pxProton + pxGamma1 + pxGamma2; });
209+
210+ DECLARE_SOA_DYNAMIC_COLUMN (PySigmaPlus, pySigmaPlus, // ! Py of the Sigma+ candidate
211+ [](float pyProton, float pyGamma1, float pyGamma2) -> float { return pyProton + pyGamma1 + pyGamma2; });
212+
213+ DECLARE_SOA_DYNAMIC_COLUMN (PzSigmaPlus, pzSigmaPlus, // ! Pz of the Sigma+ candidate
214+ [](float pzProton, float pzGamma1, float pzGamma2) -> float { return pzProton + pzGamma1 + pzGamma2; });
215+
216+ DECLARE_SOA_DYNAMIC_COLUMN (PtSigmaPlus, ptSigmaPlus, // ! pT of the Sigma+ candidate
217+ [](float pxProton, float pxGamma1, float pxGamma2, float pyProton, float pyGamma1, float pyGamma2) -> float { return std::hypot (pxProton + pxGamma1 + pxGamma2, pyProton + pyGamma1 + pyGamma2); });
218+
219+ DECLARE_SOA_DYNAMIC_COLUMN (MassSigmaPlus, massSigmaPlus, // ! Invariant mass of the Sigma+ candidate (p + gamma1 + gamma2)
220+ [](float pxProton, float pyProton, float pzProton,
221+ float pxGamma1, float pyGamma1, float pzGamma1,
222+ float pxGamma2, float pyGamma2, float pzGamma2) -> float { return RecoDecay::m (std::array{std::array{pxProton, pyProton, pzProton},
223+ std::array{pxGamma1, pyGamma1, pzGamma1},
224+ std::array{pxGamma2, pyGamma2, pzGamma2}},
225+ std::array{o2::constants::physics::MassProton, o2::constants::physics::MassGamma, o2::constants::physics::MassGamma}); });
226+
227+ } // namespace sigmapluscand
228+
229+ DECLARE_SOA_TABLE (SigmaPlusCands, " AOD" , " SIGMAPLUSCANDS" ,
230+ sigmapluscand::XDecVtx, sigmapluscand::YDecVtx, sigmapluscand::ZDecVtx,
231+ sigmapluscand::Radius, sigmapluscand::DcaProtonGamma,
232+ sigmapluscand::PxProton, sigmapluscand::PyProton, sigmapluscand::PzProton,
233+ sigmapluscand::PxGamma1, sigmapluscand::PyGamma1, sigmapluscand::PzGamma1,
234+ sigmapluscand::PxGamma2, sigmapluscand::PyGamma2, sigmapluscand::PzGamma2,
235+ sigmapluscand::NSigmaTPCProton, sigmapluscand::NSigmaTOFProton,
236+ sigmapluscand::NSigmaTPCElPos, sigmapluscand::NSigmaTPCElNeg,
237+
238+ // dynamic columns
239+ sigmapluscand::PxSigmaPlus<sigmapluscand::PxProton, sigmapluscand::PxGamma1, sigmapluscand::PxGamma2>,
240+ sigmapluscand::PySigmaPlus<sigmapluscand::PyProton, sigmapluscand::PyGamma1, sigmapluscand::PyGamma2>,
241+ sigmapluscand::PzSigmaPlus<sigmapluscand::PzProton, sigmapluscand::PzGamma1, sigmapluscand::PzGamma2>,
242+ sigmapluscand::PtSigmaPlus<sigmapluscand::PxProton, sigmapluscand::PxGamma1, sigmapluscand::PxGamma2, sigmapluscand::PyProton, sigmapluscand::PyGamma1, sigmapluscand::PyGamma2>,
243+ sigmapluscand::MassSigmaPlus<sigmapluscand::PxProton, sigmapluscand::PyProton, sigmapluscand::PzProton, sigmapluscand::PxGamma1, sigmapluscand::PyGamma1, sigmapluscand::PzGamma1, sigmapluscand::PxGamma2, sigmapluscand::PyGamma2, sigmapluscand::PzGamma2>);
244+
245+ DECLARE_SOA_TABLE (SigmaPlusCandsMC, " AOD" , " SIGMAPLUSMC" ,
246+ sigmapluscand::XDecVtx, sigmapluscand::YDecVtx, sigmapluscand::ZDecVtx,
247+ sigmapluscand::Radius, sigmapluscand::DcaProtonGamma,
248+ sigmapluscand::PxProton, sigmapluscand::PyProton, sigmapluscand::PzProton,
249+ sigmapluscand::PxGamma1, sigmapluscand::PyGamma1, sigmapluscand::PzGamma1,
250+ sigmapluscand::PxGamma2, sigmapluscand::PyGamma2, sigmapluscand::PzGamma2,
251+ sigmapluscand::NSigmaTPCProton, sigmapluscand::NSigmaTOFProton,
252+ sigmapluscand::NSigmaTPCElPos, sigmapluscand::NSigmaTPCElNeg,
253+ sigmapluscand::IsSignal,
254+ sigmapluscand::ProtonPdgCode, sigmapluscand::ProtonMotherPdgCode,
255+ sigmapluscand::GammaPdgCode, sigmapluscand::GammaMotherPdgCode, sigmapluscand::GammaGMotherPdgCode,
256+ sigmapluscand::XDecVtxMC, sigmapluscand::YDecVtxMC, sigmapluscand::ZDecVtxMC,
257+ sigmapluscand::PxProtonMC, sigmapluscand::PyProtonMC, sigmapluscand::PzProtonMC,
258+ sigmapluscand::PxGammaMC, sigmapluscand::PyGammaMC, sigmapluscand::PzGammaMC,
259+
260+ // dynamic columns
261+ sigmapluscand::PxSigmaPlus<sigmapluscand::PxProton, sigmapluscand::PxGamma1, sigmapluscand::PxGamma2>,
262+ sigmapluscand::PySigmaPlus<sigmapluscand::PyProton, sigmapluscand::PyGamma1, sigmapluscand::PyGamma2>,
263+ sigmapluscand::PzSigmaPlus<sigmapluscand::PzProton, sigmapluscand::PzGamma1, sigmapluscand::PzGamma2>,
264+ sigmapluscand::PtSigmaPlus<sigmapluscand::PxProton, sigmapluscand::PxGamma1, sigmapluscand::PxGamma2, sigmapluscand::PyProton, sigmapluscand::PyGamma1, sigmapluscand::PyGamma2>,
265+ sigmapluscand::MassSigmaPlus<sigmapluscand::PxProton, sigmapluscand::PyProton, sigmapluscand::PzProton, sigmapluscand::PxGamma1, sigmapluscand::PyGamma1, sigmapluscand::PzGamma1, sigmapluscand::PxGamma2, sigmapluscand::PyGamma2, sigmapluscand::PzGamma2>);
266+
162267} // namespace o2::aod
163268
164269#endif // PWGLF_DATAMODEL_LFKINKDECAYTABLES_H_
0 commit comments