Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions PWGLF/DataModel/LFLambda1405Table.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.

Check failure on line 1 in PWGLF/DataModel/LFLambda1405Table.h

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Provide mandatory file documentation.
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
// All rights not expressly granted are reserved.
//
Expand All @@ -13,7 +13,7 @@
/// \file LFLambda1405Tables.h
/// \brief Slim tables for Lambda(1405) candidates
/// \author Francesco Mazzaschi <francesco.mazzaschi@cern.ch>
///

Check failure on line 16 in PWGLF/DataModel/LFLambda1405Table.h

View workflow job for this annotation

GitHub Actions / O2 linter

[doc/file]

Documentation for \file is missing, incorrect or misplaced.

#include "Common/Core/RecoDecay.h"

Expand All @@ -33,17 +33,20 @@
DECLARE_SOA_COLUMN(Py, py, float); //! Py of the candidate
DECLARE_SOA_COLUMN(Pz, pz, float); //! Pz of the candidate
DECLARE_SOA_COLUMN(Mass, mass, float); //! Invariant mass of the candidate
DECLARE_SOA_COLUMN(MassXi1530, massXi1530, float); //! Invariant mass of the Xi(1530) candidate
DECLARE_SOA_COLUMN(SigmaMinusMass, sigmaMinusMass, float); //! Invariant mass of the Sigma- candidate
DECLARE_SOA_COLUMN(SigmaPlusMass, sigmaPlusMass, float); //! Invariant mass of the Sigma+ candidate
DECLARE_SOA_COLUMN(XiMinusMass, xiMinusMass, float); //! Invariant mass of the Xi- candidate
DECLARE_SOA_COLUMN(PtSigma, ptSigma, float); //! Signed pT of the Sigma daughter
DECLARE_SOA_COLUMN(AlphaAPSigma, alphaAPSigma, float); //! Alpha of the Sigma
DECLARE_SOA_COLUMN(QtAPSigma, qtAPSigma, float); //! qT of the Sigma
DECLARE_SOA_COLUMN(RadiusSigma, radiusSigma, float); //! Radius of the Sigma decay vertex
DECLARE_SOA_COLUMN(PtKink, ptKink, float); //! pT of the kink daughter
DECLARE_SOA_COLUMN(NSigmaTPCPiKink, nSigmaTPCPiKink, float); //! Number of sigmas for the pion candidate from Sigma kink in TPC
DECLARE_SOA_COLUMN(NSigmaTOFPiKink, nSigmaTOFPiKink, float); //! Number of sigmas for the pion candidate from Sigma kink in TOF
DECLARE_SOA_COLUMN(NSigmaTPCPrKink, nSigmaTPCPrKink, float); //! Number of sigmas for the proton candidate from Sigma kink in TPC
DECLARE_SOA_COLUMN(NSigmaTOFPrKink, nSigmaTOFPrKink, float); //! Number of sigmas for the proton candidate from Sigma kink in TOF
DECLARE_SOA_COLUMN(DCAKinkDauToPV, dcaKinkDauToPV, float); //! DCA of the kink daughter to the primary vertex

Check failure on line 49 in PWGLF/DataModel/LFLambda1405Table.h

View workflow job for this annotation

GitHub Actions / O2 linter

[name/o2-column]

Use UpperCamelCase for names of O2 columns and matching lowerCamelCase names for their getters.
DECLARE_SOA_COLUMN(NSigmaTPCPiDau, nSigmaTPCPiDau, float); //! Number of sigmas for the lambda1405 pion daughter in TPC
DECLARE_SOA_COLUMN(NSigmaTOFPiDau, nSigmaTOFPiDau, float); //! Number of sigmas for the lambda1405 pion daughter in TOF

Expand All @@ -58,8 +61,10 @@
DECLARE_SOA_TABLE(Lambda1405Cands, "AOD", "LAMBDA1405",
o2::soa::Index<>,
lambda1405::Px, lambda1405::Py, lambda1405::Pz,
lambda1405::Mass, lambda1405::SigmaMinusMass, lambda1405::SigmaPlusMass,
lambda1405::Mass, lambda1405::MassXi1530,
lambda1405::SigmaMinusMass, lambda1405::SigmaPlusMass, lambda1405::XiMinusMass,
lambda1405::PtSigma, lambda1405::AlphaAPSigma, lambda1405::QtAPSigma, lambda1405::RadiusSigma,
lambda1405::PtKink,
lambda1405::NSigmaTPCPiKink, lambda1405::NSigmaTOFPiKink,
lambda1405::NSigmaTPCPrKink, lambda1405::NSigmaTOFPrKink,
lambda1405::DCAKinkDauToPV,
Expand All @@ -68,8 +73,10 @@
DECLARE_SOA_TABLE(Lambda1405CandsMC, "AOD", "MCLAMBDA1405",
o2::soa::Index<>,
lambda1405::Px, lambda1405::Py, lambda1405::Pz,
lambda1405::Mass, lambda1405::SigmaMinusMass, lambda1405::SigmaPlusMass,
lambda1405::Mass, lambda1405::MassXi1530,
lambda1405::SigmaMinusMass, lambda1405::SigmaPlusMass, lambda1405::XiMinusMass,
lambda1405::PtSigma, lambda1405::AlphaAPSigma, lambda1405::QtAPSigma, lambda1405::RadiusSigma,
lambda1405::PtKink,
lambda1405::NSigmaTPCPiKink, lambda1405::NSigmaTOFPiKink,
lambda1405::NSigmaTPCPrKink, lambda1405::NSigmaTOFPrKink,
lambda1405::DCAKinkDauToPV,
Expand Down
22 changes: 17 additions & 5 deletions PWGLF/Tasks/Resonances/lambda1405analysis.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -28,13 +28,14 @@
using namespace o2::framework;
using namespace o2::framework::expressions;

using TracksFull = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCPi, aod::pidTPCPr, aod::pidTOFFullPi, aod::pidTOFFullPr>;
using TracksFull = soa::Join<aod::TracksIU, aod::TracksExtra, aod::TracksCovIU, aod::pidTPCFullPi, aod::pidTPCFullPr, aod::pidTOFFullPi, aod::pidTOFFullPr>;
using CollisionsFull = soa::Join<aod::Collisions, aod::EvSel>;
using CollisionsFullMC = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels>;

struct lambda1405candidate {

Check failure on line 35 in PWGLF/Tasks/Resonances/lambda1405analysis.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/struct]

Use UpperCamelCase for names of structs.
// Columns for Lambda(1405) candidate
float mass = -1; // Invariant mass of the Lambda(1405) candidate
float massXi1530 = -1; // Invariant mass of the Xi(1530) candidate
float px = -1; // Px of the Lambda(1405) candidate
float py = -1; // Py of the Lambda(1405) candidate
float pz = -1; // Pz of the Lambda(1405) candidate
Expand All @@ -44,10 +45,12 @@
bool isSigmaMinus = false; // True if compatible with Sigma-
float sigmaMinusMass = -1; // Invariant mass of the Sigma- candidate
float sigmaPlusMass = -1; // Invariant mass of the Sigma+ candidate
float xiMinusMass = -1; // Invariant mass of the Xi- candidate
int sigmaSign = 0; // Sign of the Sigma candidate: 1 for matter, -1 for antimatter
float sigmaPt = -1; // pT of the Sigma daughter
float sigmaAlphaAP = -1; // Alpha of the Sigma
float sigmaQtAP = -1; // qT of the Sigma
float kinkPt = -1; // pT of the kink daughter
float kinkTPCNSigmaPi = -1; // Number of sigmas for the pion candidate from Sigma kink in TPC
float kinkTOFNSigmaPi = -1; // Number of sigmas for the pion candidate from Sigma kink in TOF
float kinkTPCNSigmaPr = -1; // Number of sigmas for the proton candidate from Sigma kink in TPC
Expand All @@ -63,8 +66,8 @@
int piID = 0; // ID of the pion candidate in MC
};

struct lambda1405analysis {

Check failure on line 69 in PWGLF/Tasks/Resonances/lambda1405analysis.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[name/struct]

Use UpperCamelCase for names of structs.
int lambda1405PdgCode = 102132; // PDG code for Lambda(1405)

Check failure on line 70 in PWGLF/Tasks/Resonances/lambda1405analysis.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
lambda1405candidate lambda1405Cand; // Lambda(1405) candidate structure
Produces<aod::Lambda1405Cands> outputDataTable; // Output table for Lambda(1405) candidates
Produces<aod::Lambda1405CandsMC> outputDataTableMC; // Output table for Lambda(1405) candidates in MC
Expand Down Expand Up @@ -240,8 +243,8 @@
auto kinkDauMom = std::array{sigmaCand.pxDaug(), sigmaCand.pyDaug(), sigmaCand.pzDaug()};
auto sigmaMom = std::array{sigmaCand.pxMoth(), sigmaCand.pyMoth(), sigmaCand.pzMoth()};
auto piMom = std::array{piTrack.px(), piTrack.py(), piTrack.pz()};
double massSigma = lambda1405Cand.isSigmaMinus ? sigmaCand.mSigmaMinus() : sigmaCand.mSigmaPlus();
float invMass = RecoDecay::m(std::array{sigmaMom, piMom}, std::array{massSigma, o2::constants::physics::MassPiPlus});
float invMass = RecoDecay::m(std::array{sigmaMom, piMom}, std::array{o2::constants::physics::MassSigmaMinus, o2::constants::physics::MassPiPlus});
float invMassXiPi = RecoDecay::m(std::array{sigmaMom, kinkDauMom}, std::array{o2::constants::physics::MassXiMinus, o2::constants::physics::MassPiPlus});
if (invMass > cutUpperMass) {
continue;
}
Expand All @@ -254,14 +257,17 @@
lambda1405Cand.py = sigmaMom[1] + piMom[1];
lambda1405Cand.pz = sigmaMom[2] + piMom[2];
lambda1405Cand.mass = invMass;
lambda1405Cand.massXi1530 = invMassXiPi;

lambda1405Cand.sigmaMinusMass = sigmaCand.mSigmaMinus();
lambda1405Cand.sigmaPlusMass = sigmaCand.mSigmaPlus();
lambda1405Cand.xiMinusMass = sigmaCand.mXiMinus();
lambda1405Cand.sigmaSign = sigmaCand.mothSign();
lambda1405Cand.sigmaAlphaAP = alphaAP(sigmaMom, kinkDauMom);
lambda1405Cand.sigmaQtAP = qtAP(sigmaMom, kinkDauMom);
lambda1405Cand.sigmaPt = sigmaCand.ptMoth();
lambda1405Cand.sigmaRadius = sigmaRad;
lambda1405Cand.kinkPt = kinkDauTrack.pt();
lambda1405Cand.kinkTPCNSigmaPi = kinkDauTrack.tpcNSigmaPi();
lambda1405Cand.kinkTOFNSigmaPi = kinkDauTrack.tofNSigmaPi();
lambda1405Cand.kinkTPCNSigmaPr = kinkDauTrack.tpcNSigmaPr();
Expand Down Expand Up @@ -322,8 +328,10 @@
}
if (fillOutputTree) {
outputDataTable(lambda1405Cand.px, lambda1405Cand.py, lambda1405Cand.pz,
lambda1405Cand.mass, lambda1405Cand.sigmaMinusMass, lambda1405Cand.sigmaPlusMass,
lambda1405Cand.mass, lambda1405Cand.massXi1530,
lambda1405Cand.sigmaMinusMass, lambda1405Cand.sigmaPlusMass, lambda1405Cand.xiMinusMass,
lambda1405Cand.sigmaPt, lambda1405Cand.sigmaAlphaAP, lambda1405Cand.sigmaQtAP, lambda1405Cand.sigmaRadius,
lambda1405Cand.kinkPt,
lambda1405Cand.kinkTPCNSigmaPi, lambda1405Cand.kinkTOFNSigmaPi,
lambda1405Cand.kinkTPCNSigmaPr, lambda1405Cand.kinkTOFNSigmaPr,
lambda1405Cand.dcaKinkDauToPV,
Expand Down Expand Up @@ -364,7 +372,7 @@
continue; // Skip if not a valid Sigma kink decay
}

if (std::abs(mcTrackPi.pdgCode()) != 211) {

Check failure on line 375 in PWGLF/Tasks/Resonances/lambda1405analysis.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.

Check failure on line 375 in PWGLF/Tasks/Resonances/lambda1405analysis.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
continue; // Skip if not a valid pion candidate
}

Expand Down Expand Up @@ -406,8 +414,10 @@

if (fillOutputTree) {
outputDataTableMC(lambda1405Cand.px, lambda1405Cand.py, lambda1405Cand.pz,
lambda1405Cand.mass, lambda1405Cand.sigmaMinusMass, lambda1405Cand.sigmaPlusMass,
lambda1405Cand.mass, lambda1405Cand.massXi1530,
lambda1405Cand.sigmaMinusMass, lambda1405Cand.sigmaPlusMass, lambda1405Cand.xiMinusMass,
lambda1405Cand.sigmaPt, lambda1405Cand.sigmaAlphaAP, lambda1405Cand.sigmaQtAP, lambda1405Cand.sigmaRadius,
lambda1405Cand.kinkPt,
lambda1405Cand.kinkTPCNSigmaPi, lambda1405Cand.kinkTOFNSigmaPi,
lambda1405Cand.kinkTPCNSigmaPr, lambda1405Cand.kinkTOFNSigmaPr,
lambda1405Cand.dcaKinkDauToPV,
Expand All @@ -417,6 +427,7 @@
}
}
}

// Loop over generated particles to fill MC histograms
for (const auto& mcPart : particlesMC) {
if (std::abs(mcPart.pdgCode()) != lambda1405PdgCode) {
Expand All @@ -426,11 +437,12 @@
if (!mcPart.has_daughters()) {
continue; // Skip if no daughters
}

// Check if the Lambda(1405) has a Sigma daughter
bool hasSigmaDaughter = false;
int dauPdgCode = 0;
for (const auto& daughter : mcPart.daughters_as<aod::McParticles>()) {
if (std::abs(daughter.pdgCode()) == 3122 || std::abs(daughter.pdgCode()) == 3222) { // Sigma PDG code

Check failure on line 445 in PWGLF/Tasks/Resonances/lambda1405analysis.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.

Check failure on line 445 in PWGLF/Tasks/Resonances/lambda1405analysis.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[pdg/explicit-code]

Avoid hard-coded PDG codes. Use named values from PDG_t or o2::constants::physics::Pdg instead.
hasSigmaDaughter = true;
dauPdgCode = daughter.pdgCode();
break; // Found a Sigma daughter, exit loop
Expand Down
Loading