@@ -107,6 +107,22 @@ DECLARE_SOA_DYNAMIC_COLUMN(OPAngle, opAngle,
107107 return v1.Angle (v2);
108108 });
109109
110+ // Armenteros-Podolanski variables (photon = positive daughter, lambda = negative daughter)
111+ DECLARE_SOA_DYNAMIC_COLUMN (LStarAlpha, lStarAlpha, // ! Armenteros Alpha
112+ [](float photonPx, float photonPy, float photonPz, float lambdaPx, float lambdaPy, float lambdaPz) -> float {
113+ float momTot = RecoDecay::p (photonPx + lambdaPx, photonPy + lambdaPy, photonPz + lambdaPz);
114+ float lQlNeg = RecoDecay::dotProd (std::array{lambdaPx, lambdaPy, lambdaPz}, std::array{photonPx + lambdaPx, photonPy + lambdaPy, photonPz + lambdaPz}) / momTot;
115+ float lQlPos = RecoDecay::dotProd (std::array{photonPx, photonPy, photonPz}, std::array{photonPx + lambdaPx, photonPy + lambdaPy, photonPz + lambdaPz}) / momTot;
116+ return (lQlPos - lQlNeg) / (lQlPos + lQlNeg);
117+ });
118+
119+ DECLARE_SOA_DYNAMIC_COLUMN (LStarQtArm, lStarQtarm, // ! Armenteros Qt
120+ [](float photonPx, float photonPy, float photonPz, float lambdaPx, float lambdaPy, float lambdaPz) -> float {
121+ float momTot = RecoDecay::p2 (photonPx + lambdaPx, photonPy + lambdaPy, photonPz + lambdaPz);
122+ float dp = RecoDecay::dotProd (std::array{lambdaPx, lambdaPy, lambdaPz}, std::array{photonPx + lambdaPx, photonPy + lambdaPy, photonPz + lambdaPz});
123+ return std::sqrt (RecoDecay::p2 (lambdaPx, lambdaPy, lambdaPz) - dp * dp / momTot); // qtarm
124+ });
125+
110126// Photon
111127DECLARE_SOA_DYNAMIC_COLUMN (PhotonPt, photonPt, // ! Transverse momentum in GeV/c
112128 [](float photonPx, float photonPy) -> float {
@@ -179,6 +195,8 @@ DECLARE_SOA_TABLE(Sigma0Cores, "AOD", "SIGMA0CORES",
179195 sigma0Core::Eta<sigma0Core::PhotonPx, sigma0Core::PhotonPy, sigma0Core::PhotonPz, sigma0Core::LambdaPx, sigma0Core::LambdaPy, sigma0Core::LambdaPz>,
180196 sigma0Core::Radius<sigma0Core::X, sigma0Core::Y>,
181197 sigma0Core::OPAngle<sigma0Core::PhotonPx, sigma0Core::PhotonPy, sigma0Core::PhotonPz, sigma0Core::LambdaPx, sigma0Core::LambdaPy, sigma0Core::LambdaPz>,
198+ sigma0Core::LStarAlpha<sigma0Core::PhotonPx, sigma0Core::PhotonPy, sigma0Core::PhotonPz, sigma0Core::LambdaPx, sigma0Core::LambdaPy, sigma0Core::LambdaPz>,
199+ sigma0Core::LStarQtArm<sigma0Core::PhotonPx, sigma0Core::PhotonPy, sigma0Core::PhotonPz, sigma0Core::LambdaPx, sigma0Core::LambdaPy, sigma0Core::LambdaPz>,
182200
183201 sigma0Core::PhotonPt<sigma0Core::PhotonPx, sigma0Core::PhotonPy>,
184202 sigma0Core::PhotonP<sigma0Core::PhotonPx, sigma0Core::PhotonPy, sigma0Core::PhotonPz>,
@@ -656,6 +674,12 @@ DECLARE_SOA_DYNAMIC_COLUMN(IsSigma0, isSigma0,
656674DECLARE_SOA_DYNAMIC_COLUMN (IsAntiSigma0, isAntiSigma0, // ! IsASigma0
657675 [](int pdgCode) -> bool { return pdgCode == PDG_t::kSigma0Bar ; }); // -3212
658676
677+ DECLARE_SOA_DYNAMIC_COLUMN (IsLambdaStar, isLambdaStar, // ! IsLambdaStar
678+ [](int pdgCode) -> bool { return pdgCode == 3124 ; }); // PYTHIA8 code for Lambda(1520)
679+
680+ DECLARE_SOA_DYNAMIC_COLUMN (IsAntiLambdaStar, isAntiLambdaStar, // ! IsAntiLambdaStar
681+ [](int pdgCode) -> bool { return pdgCode == -3124 ; }); // PYTHIA8 code for AntiLambda(1520)
682+
659683DECLARE_SOA_DYNAMIC_COLUMN (MCPx, mcpx, // ! Sigma0 px
660684 [](float photonMCPx, float lambdaMCPx) -> float { return photonMCPx + lambdaMCPx; });
661685DECLARE_SOA_DYNAMIC_COLUMN (MCPy, mcpy, // ! Sigma0 py
@@ -686,6 +710,11 @@ DECLARE_SOA_DYNAMIC_COLUMN(Sigma0MCY, sigma0MCY,
686710 return RecoDecay::y (std::array{photonMCPx + lambdaMCPx, photonMCPy + lambdaMCPy, photonMCPz + lambdaMCPz}, o2::constants::physics::MassSigma0);
687711 });
688712
713+ DECLARE_SOA_DYNAMIC_COLUMN (LambdaStarMCY, lambdaStarMCY,
714+ [](float photonMCPx, float photonMCPy, float photonMCPz, float lambdaMCPx, float lambdaMCPy, float lambdaMCPz) -> float {
715+ return RecoDecay::y (std::array{photonMCPx + lambdaMCPx, photonMCPy + lambdaMCPy, photonMCPz + lambdaMCPz}, o2::constants::physics::MassLambda1520);
716+ });
717+
689718DECLARE_SOA_DYNAMIC_COLUMN (MCPhi, mcphi, // ! Phi in the range [0, 2pi)
690719 [](float photonMCPx, float photonMCPy, float lambdaMCPx, float lambdaMCPy) -> float { return RecoDecay::phi (photonMCPx + lambdaMCPx, photonMCPy + lambdaMCPy); });
691720
@@ -767,6 +796,8 @@ DECLARE_SOA_TABLE(Sigma0MCCores, "AOD", "SIGMA0MCCORES",
767796 // Dynamic columns
768797 sigma0MCCore::IsSigma0<sigma0MCCore::PDGCode>,
769798 sigma0MCCore::IsAntiSigma0<sigma0MCCore::PDGCode>,
799+ sigma0MCCore::IsLambdaStar<sigma0MCCore::PDGCode>,
800+ sigma0MCCore::IsAntiLambdaStar<sigma0MCCore::PDGCode>,
770801
771802 sigma0MCCore::MCPx<sigma0MCCore::PhotonMCPx, sigma0MCCore::LambdaMCPx>,
772803 sigma0MCCore::MCPy<sigma0MCCore::PhotonMCPy, sigma0MCCore::LambdaMCPy>,
@@ -775,6 +806,7 @@ DECLARE_SOA_TABLE(Sigma0MCCores, "AOD", "SIGMA0MCCORES",
775806 sigma0MCCore::MCP <sigma0MCCore::PhotonMCPx, sigma0MCCore::PhotonMCPy, sigma0MCCore::PhotonMCPz, sigma0MCCore::LambdaMCPx, sigma0MCCore::LambdaMCPy, sigma0MCCore::LambdaMCPz>,
776807 sigma0MCCore::Sigma0MCMass<sigma0MCCore::PhotonMCPx, sigma0MCCore::PhotonMCPy, sigma0MCCore::PhotonMCPz, sigma0MCCore::LambdaMCPx, sigma0MCCore::LambdaMCPy, sigma0MCCore::LambdaMCPz>,
777808 sigma0MCCore::Sigma0MCY<sigma0MCCore::PhotonMCPx, sigma0MCCore::PhotonMCPy, sigma0MCCore::PhotonMCPz, sigma0MCCore::LambdaMCPx, sigma0MCCore::LambdaMCPy, sigma0MCCore::LambdaMCPz>,
809+ sigma0MCCore::LambdaStarMCY<sigma0MCCore::PhotonMCPx, sigma0MCCore::PhotonMCPy, sigma0MCCore::PhotonMCPz, sigma0MCCore::LambdaMCPx, sigma0MCCore::LambdaMCPy, sigma0MCCore::LambdaMCPz>,
778810 sigma0MCCore::MCPhi<sigma0MCCore::PhotonMCPx, sigma0MCCore::PhotonMCPy, sigma0MCCore::LambdaMCPx, sigma0MCCore::LambdaMCPy>,
779811 sigma0MCCore::MCEta<sigma0MCCore::PhotonMCPx, sigma0MCCore::PhotonMCPy, sigma0MCCore::PhotonMCPz, sigma0MCCore::LambdaMCPx, sigma0MCCore::LambdaMCPy, sigma0MCCore::LambdaMCPz>,
780812 sigma0MCCore::MCOPAngle<sigma0MCCore::PhotonMCPx, sigma0MCCore::PhotonMCPy, sigma0MCCore::PhotonMCPz, sigma0MCCore::LambdaMCPx, sigma0MCCore::LambdaMCPy, sigma0MCCore::LambdaMCPz>,
0 commit comments