@@ -28,13 +28,14 @@ using namespace o2;
2828using namespace o2 ::framework;
2929using namespace o2 ::framework::expressions;
3030
31- using TracksFull = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCPi , aod::pidTPCPr , aod::pidTOFFullPi, aod::pidTOFFullPr>;
31+ using TracksFull = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCFullPi , aod::pidTPCFullPr , aod::pidTOFFullPi, aod::pidTOFFullPr>;
3232using CollisionsFull = soa::Join<aod::Collisions, aod::EvSel>;
3333using CollisionsFullMC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels>;
3434
3535struct lambda1405candidate {
3636 // Columns for Lambda(1405) candidate
3737 float mass = -1 ; // Invariant mass of the Lambda(1405) candidate
38+ float massXi1530 = -1 ; // Invariant mass of the Xi(1530) candidate
3839 float px = -1 ; // Px of the Lambda(1405) candidate
3940 float py = -1 ; // Py of the Lambda(1405) candidate
4041 float pz = -1 ; // Pz of the Lambda(1405) candidate
@@ -44,10 +45,12 @@ struct lambda1405candidate {
4445 bool isSigmaMinus = false ; // True if compatible with Sigma-
4546 float sigmaMinusMass = -1 ; // Invariant mass of the Sigma- candidate
4647 float sigmaPlusMass = -1 ; // Invariant mass of the Sigma+ candidate
48+ float xiMinusMass = -1 ; // Invariant mass of the Xi- candidate
4749 int sigmaSign = 0 ; // Sign of the Sigma candidate: 1 for matter, -1 for antimatter
4850 float sigmaPt = -1 ; // pT of the Sigma daughter
4951 float sigmaAlphaAP = -1 ; // Alpha of the Sigma
5052 float sigmaQtAP = -1 ; // qT of the Sigma
53+ float kinkPt = -1 ; // pT of the kink daughter
5154 float kinkTPCNSigmaPi = -1 ; // Number of sigmas for the pion candidate from Sigma kink in TPC
5255 float kinkTOFNSigmaPi = -1 ; // Number of sigmas for the pion candidate from Sigma kink in TOF
5356 float kinkTPCNSigmaPr = -1 ; // Number of sigmas for the proton candidate from Sigma kink in TPC
@@ -240,8 +243,8 @@ struct lambda1405analysis {
240243 auto kinkDauMom = std::array{sigmaCand.pxDaug (), sigmaCand.pyDaug (), sigmaCand.pzDaug ()};
241244 auto sigmaMom = std::array{sigmaCand.pxMoth (), sigmaCand.pyMoth (), sigmaCand.pzMoth ()};
242245 auto piMom = std::array{piTrack.px (), piTrack.py (), piTrack.pz ()};
243- double massSigma = lambda1405Cand. isSigmaMinus ? sigmaCand. mSigmaMinus () : sigmaCand. mSigmaPlus ( );
244- float invMass = RecoDecay::m (std::array{sigmaMom, piMom }, std::array{massSigma , o2::constants::physics::MassPiPlus});
246+ float invMass = RecoDecay::m (std::array{sigmaMom, piMom}, std::array{o2::constants::physics::MassSigmaMinus, o2::constants::physics::MassPiPlus} );
247+ float invMassXiPi = RecoDecay::m (std::array{sigmaMom, kinkDauMom }, std::array{o2::constants::physics::MassXiMinus , o2::constants::physics::MassPiPlus});
245248 if (invMass > cutUpperMass) {
246249 continue ;
247250 }
@@ -254,14 +257,17 @@ struct lambda1405analysis {
254257 lambda1405Cand.py = sigmaMom[1 ] + piMom[1 ];
255258 lambda1405Cand.pz = sigmaMom[2 ] + piMom[2 ];
256259 lambda1405Cand.mass = invMass;
260+ lambda1405Cand.massXi1530 = invMassXiPi;
257261
258262 lambda1405Cand.sigmaMinusMass = sigmaCand.mSigmaMinus ();
259263 lambda1405Cand.sigmaPlusMass = sigmaCand.mSigmaPlus ();
264+ lambda1405Cand.xiMinusMass = sigmaCand.mXiMinus ();
260265 lambda1405Cand.sigmaSign = sigmaCand.mothSign ();
261266 lambda1405Cand.sigmaAlphaAP = alphaAP (sigmaMom, kinkDauMom);
262267 lambda1405Cand.sigmaQtAP = qtAP (sigmaMom, kinkDauMom);
263268 lambda1405Cand.sigmaPt = sigmaCand.ptMoth ();
264269 lambda1405Cand.sigmaRadius = sigmaRad;
270+ lambda1405Cand.kinkPt = kinkDauTrack.pt ();
265271 lambda1405Cand.kinkTPCNSigmaPi = kinkDauTrack.tpcNSigmaPi ();
266272 lambda1405Cand.kinkTOFNSigmaPi = kinkDauTrack.tofNSigmaPi ();
267273 lambda1405Cand.kinkTPCNSigmaPr = kinkDauTrack.tpcNSigmaPr ();
@@ -322,8 +328,10 @@ struct lambda1405analysis {
322328 }
323329 if (fillOutputTree) {
324330 outputDataTable (lambda1405Cand.px , lambda1405Cand.py , lambda1405Cand.pz ,
325- lambda1405Cand.mass , lambda1405Cand.sigmaMinusMass , lambda1405Cand.sigmaPlusMass ,
331+ lambda1405Cand.mass , lambda1405Cand.massXi1530 ,
332+ lambda1405Cand.sigmaMinusMass , lambda1405Cand.sigmaPlusMass , lambda1405Cand.xiMinusMass ,
326333 lambda1405Cand.sigmaPt , lambda1405Cand.sigmaAlphaAP , lambda1405Cand.sigmaQtAP , lambda1405Cand.sigmaRadius ,
334+ lambda1405Cand.kinkPt ,
327335 lambda1405Cand.kinkTPCNSigmaPi , lambda1405Cand.kinkTOFNSigmaPi ,
328336 lambda1405Cand.kinkTPCNSigmaPr , lambda1405Cand.kinkTOFNSigmaPr ,
329337 lambda1405Cand.dcaKinkDauToPV ,
@@ -406,8 +414,10 @@ struct lambda1405analysis {
406414
407415 if (fillOutputTree) {
408416 outputDataTableMC (lambda1405Cand.px , lambda1405Cand.py , lambda1405Cand.pz ,
409- lambda1405Cand.mass , lambda1405Cand.sigmaMinusMass , lambda1405Cand.sigmaPlusMass ,
417+ lambda1405Cand.mass , lambda1405Cand.massXi1530 ,
418+ lambda1405Cand.sigmaMinusMass , lambda1405Cand.sigmaPlusMass , lambda1405Cand.xiMinusMass ,
410419 lambda1405Cand.sigmaPt , lambda1405Cand.sigmaAlphaAP , lambda1405Cand.sigmaQtAP , lambda1405Cand.sigmaRadius ,
420+ lambda1405Cand.kinkPt ,
411421 lambda1405Cand.kinkTPCNSigmaPi , lambda1405Cand.kinkTOFNSigmaPi ,
412422 lambda1405Cand.kinkTPCNSigmaPr , lambda1405Cand.kinkTOFNSigmaPr ,
413423 lambda1405Cand.dcaKinkDauToPV ,
@@ -417,6 +427,7 @@ struct lambda1405analysis {
417427 }
418428 }
419429 }
430+
420431 // Loop over generated particles to fill MC histograms
421432 for (const auto & mcPart : particlesMC) {
422433 if (std::abs (mcPart.pdgCode ()) != lambda1405PdgCode) {
@@ -426,6 +437,7 @@ struct lambda1405analysis {
426437 if (!mcPart.has_daughters ()) {
427438 continue ; // Skip if no daughters
428439 }
440+
429441 // Check if the Lambda(1405) has a Sigma daughter
430442 bool hasSigmaDaughter = false ;
431443 int dauPdgCode = 0 ;
0 commit comments