Skip to content
Merged
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
110 changes: 89 additions & 21 deletions ALICE3/TableProducer/alice3-multicharm.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
using labeledTracks = soa::Join<aod::Tracks, aod::McTrackLabels>;
using tofTracks = soa::Join<aod::Tracks, aod::UpgradeTofs>;
using richTracks = soa::Join<aod::Tracks, aod::RICHs>;
using alice3tracks = soa::Join<aod::Tracks, aod::TracksCov, aod::Alice3DecayMaps, aod::McTrackLabels, aod::TracksDCA, aod::TracksExtraA3>;
using alice3tracks = soa::Join<aod::Tracks, aod::TracksCov, aod::Alice3DecayMaps, aod::McTrackLabels, aod::TracksDCA, aod::TracksExtraA3, aod::UpgradeTofs, aod::UpgradeTofExpectedTimes>;

struct alice3multicharm {
SliceCache cache;
Expand All @@ -89,6 +89,8 @@
Configurable<float> piFromXiC_dcaZconstant{"piFromXiC_dcaZconstant", 0.001f, "[0] in |DCAxy| > [0]+[1]/pT"};
Configurable<float> piFromXiC_dcaXYpTdep{"piFromXiC_dcaXYpTdep", 0.0, "[1] in |DCAxy| > [0]+[1]/pT"};
Configurable<float> piFromXiC_dcaZpTdep{"piFromXiC_dcaZpTdep", 0.0, "[1] in |DCAxy| > [0]+[1]/pT"};
Configurable<float> piFromXiC_tofDiffInner{"piFromXiC_tofDiffInner", 50, "|signal - expected| (ps)"};
Configurable<float> piFromXiCC_tofDiffInner{"piFromXiCC_tofDiffInner", 50, "|signal - expected| (ps)"};
Configurable<float> piFromXiCC_dcaXYconstant{"piFromXiCC_dcaXYconstant", 0.001f, "[0] in |DCAxy| > [0]+[1]/pT"};
Configurable<float> piFromXiCC_dcaZconstant{"piFromXiCC_dcaZconstant", 0.001f, "[0] in |DCAxy| > [0]+[1]/pT"};
Configurable<float> piFromXiCC_dcaXYpTdep{"piFromXiCC_dcaXYpTdep", 0.0, "[1] in |DCAxy| > [0]+[1]/pT"};
Expand All @@ -107,21 +109,27 @@
Configurable<float> minPiCCPt{"minPiCCPt", 0.3, "Minimum pT for XiCC pions"};
Configurable<float> minNTracks{"minNTracks", -1, "Minimum number of tracks"};

Configurable<float> minXiRadius{"minXiRadius", 0.5, "Minimum R2D for XiC decay (cm)"};
Configurable<float> minXiCRadius{"minXiCRadius", 0.001, "Minimum R2D for XiC decay (cm)"};
Configurable<float> minXiCCRadius{"minXiCCRadius", 0.005, "Minimum R2D for XiCC decay (cm)"};
Configurable<float> xicMinDecayDistanceFromPV{"xicMinDecayDistanceFromPV", 0.002, "Minimum distance for XiC decay from PV (cm)"};
Configurable<float> xicMinProperLength{"xicMinProperLength", 0.002, "Minimum proper length for XiC decay (cm)"};
Configurable<float> xicMaxProperLength{"xicMaxProperLength", 0.06, "Minimum proper length for XiC decay (cm)"};
Configurable<float> xiccMinProperLength{"xiccMinProperLength", 0.004, "Minimum proper length for XiCC decay (cm)"};
Configurable<float> xiccMaxProperLength{"xiccMaxProperLength", 999, "Minimum proper length for XiCC decay (cm)"};
Configurable<float> massWindowXi{"massWindowXi", 0.015, "Mass window around Xi peak"};
Configurable<float> massWindowXiC{"massWindowXiC", 0.015, "Mass window around XiC peak"};
Configurable<float> xiccMaxEta{"xiccMaxEta", 1.5, "Max eta"};
Configurable<float> massWindowXi{"massWindowXi", 0.015, "Mass window around Xi peak (GeV/c)"};
Configurable<float> massWindowXiC{"massWindowXiC", 0.015, "Mass window around XiC peak (GeV/c)"};

ConfigurableAxis axisEta{"axisEta", {80, -4.0f, +4.0f}, "#eta"};
ConfigurableAxis axisPt{"axisPt", {VARIABLE_WIDTH, 0.0f, 0.1f, 0.2f, 0.3f, 0.4f, 0.5f, 0.6f, 0.7f, 0.8f, 0.9f, 1.0f, 1.1f, 1.2f, 1.3f, 1.4f, 1.5f, 1.6f, 1.7f, 1.8f, 1.9f, 2.0f, 2.2f, 2.4f, 2.6f, 2.8f, 3.0f, 3.2f, 3.4f, 3.6f, 3.8f, 4.0f, 4.4f, 4.8f, 5.2f, 5.6f, 6.0f, 6.5f, 7.0f, 7.5f, 8.0f, 9.0f, 10.0f, 11.0f, 12.0f, 13.0f, 14.0f, 15.0f, 17.0f, 19.0f, 21.0f, 23.0f, 25.0f, 30.0f, 35.0f, 40.0f, 50.0f}, "pt axis for QA histograms"};
ConfigurableAxis axisDCA2d{"axisDCA2d", {400, -200, 200}, "DCA2d (#mum)"};
ConfigurableAxis axisDCA{"axisDCA", {200, 0, 200}, "DCA (#mum)"};
ConfigurableAxis axisRadius{"axisRadius", {1000, 0, 1000}, "Decay radius (#mum)"};
ConfigurableAxis axisDCA2D{"axisDCA2D", {400, -200, 200}, "DCA2d (#mum)"};
ConfigurableAxis axisDCA{"axisDCA", {400, 0, 400}, "DCA (#mum)"};
ConfigurableAxis axisRadius{"axisRadius", {10000, 0, 10000}, "Decay radius (#mum)"};
ConfigurableAxis axisRadius2D{"axisRadius2D", {1000, 0, 100000}, "Decay radius (#mum)"};
ConfigurableAxis axisRadius2DXi{"axisRadius2DXi", {1000, 0, 20}, "Decay radius (cm)"};
ConfigurableAxis axisDecayLength{"axisDecayLength", {2000, 0, 2000}, "Decay lenght (#mum)"};
ConfigurableAxis axisTOFTrack{"axisTOFTrack", {1000, 0, 5000}, "TOF track time"};

ConfigurableAxis axisXiMass{"axisXiMass", {200, 1.221f, 1.421f}, "Xi Inv Mass (GeV/c^{2})"};
ConfigurableAxis axisXiCMass{"axisXiCMass", {200, 2.368f, 2.568f}, "XiC Inv Mass (GeV/c^{2})"};
Expand All @@ -137,9 +145,9 @@

HistogramRegistry histos{"histos", {}, OutputObjHandlingPolicy::AnalysisObject};

Partition<aod::McParticles> trueXi = aod::mcparticle::pdgCode == 3312;

Check failure on line 148 in ALICE3/TableProducer/alice3-multicharm.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.
Partition<aod::McParticles> trueXiC = aod::mcparticle::pdgCode == 4232;

Check failure on line 149 in ALICE3/TableProducer/alice3-multicharm.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.
Partition<aod::McParticles> trueXiCC = aod::mcparticle::pdgCode == 4422;

Check failure on line 150 in ALICE3/TableProducer/alice3-multicharm.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.

// filter expressions for D mesons
static constexpr uint32_t trackSelectionPiFromXiC = 1 << kInnerTOFPion | 1 << kOuterTOFPion | 1 << kRICHPion | 1 << kTruePiFromXiC;
Expand Down Expand Up @@ -233,14 +241,14 @@
thisXiCCcandidate.parentTrackCovMatrix[5] = covVtx(2, 2);

// set relevant values
thisXiCCcandidate.dca = TMath::Sqrt(fitter.getChi2AtPCACandidate());

Check failure on line 244 in ALICE3/TableProducer/alice3-multicharm.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[root/entity]

Replace ROOT entities with equivalents from standard C++ or from O2.
if (thisXiCCcandidate.dca > dcaXiCCDaughtersSelection) {
return false;
}

thisXiCCcandidate.mass = RecoDecay::m(array{array{thisXiCCcandidate.prong0mom[0], thisXiCCcandidate.prong0mom[1], thisXiCCcandidate.prong0mom[2]}, array{thisXiCCcandidate.prong1mom[0], thisXiCCcandidate.prong1mom[1], thisXiCCcandidate.prong1mom[2]}}, array{mass0, mass1});

Check failure on line 249 in ALICE3/TableProducer/alice3-multicharm.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
thisXiCCcandidate.pt = std::hypot(thisXiCCcandidate.prong0mom[0] + thisXiCCcandidate.prong1mom[0], thisXiCCcandidate.prong0mom[1] + thisXiCCcandidate.prong1mom[1]);
thisXiCCcandidate.eta = RecoDecay::eta(array{thisXiCCcandidate.prong0mom[0] + thisXiCCcandidate.prong1mom[0], thisXiCCcandidate.prong0mom[1] + thisXiCCcandidate.prong1mom[1], thisXiCCcandidate.prong0mom[2] + thisXiCCcandidate.prong1mom[2]});

Check failure on line 251 in ALICE3/TableProducer/alice3-multicharm.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
return true;
}

Expand Down Expand Up @@ -303,13 +311,13 @@
thisXiCcandidate.parentTrackCovMatrix[5] = covVtx(2, 2);

// set relevant values
thisXiCcandidate.dca = TMath::Sqrt(fitter3.getChi2AtPCACandidate());

Check failure on line 314 in ALICE3/TableProducer/alice3-multicharm.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[root/entity]

Replace ROOT entities with equivalents from standard C++ or from O2.
if (thisXiCcandidate.dca > dcaXiCDaughtersSelection) {
return false;
}
thisXiCcandidate.mass = RecoDecay::m(array{array{thisXiCcandidate.prong0mom[0], thisXiCcandidate.prong0mom[1], thisXiCcandidate.prong0mom[2]}, array{thisXiCcandidate.prong1mom[0], thisXiCcandidate.prong1mom[1], thisXiCcandidate.prong1mom[2]}, array{thisXiCcandidate.prong2mom[0], thisXiCcandidate.prong2mom[1], thisXiCcandidate.prong2mom[2]}}, array{p0mass, p1mass, p2mass});

Check failure on line 318 in ALICE3/TableProducer/alice3-multicharm.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
thisXiCcandidate.pt = std::hypot(thisXiCcandidate.prong0mom[0] + thisXiCcandidate.prong1mom[0] + thisXiCcandidate.prong2mom[0], thisXiCcandidate.prong0mom[1] + thisXiCcandidate.prong1mom[1] + thisXiCcandidate.prong2mom[1]);
thisXiCcandidate.eta = RecoDecay::eta(array{thisXiCcandidate.prong0mom[0] + thisXiCcandidate.prong1mom[0] + thisXiCcandidate.prong2mom[0], thisXiCcandidate.prong0mom[1] + thisXiCcandidate.prong1mom[1] + thisXiCcandidate.prong2mom[1], thisXiCcandidate.prong0mom[2] + thisXiCcandidate.prong1mom[2] + thisXiCcandidate.prong2mom[2]});

Check failure on line 320 in ALICE3/TableProducer/alice3-multicharm.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[std-prefix]

Use std:: prefix for names from the std namespace.
return true;
}

Expand All @@ -324,7 +332,7 @@
auto mcParticle1 = track1.template mcParticle_as<aod::McParticles>();
auto mcParticle2 = track2.template mcParticle_as<aod::McParticles>();
if (mcParticle1.has_mothers() && mcParticle2.has_mothers()) {
for (auto& mcParticleMother1 : mcParticle1.template mothers_as<aod::McParticles>()) {

Check failure on line 335 in ALICE3/TableProducer/alice3-multicharm.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
for (auto& mcParticleMother2 : mcParticle2.template mothers_as<aod::McParticles>()) {
if (mcParticleMother1.globalIndex() == mcParticleMother2.globalIndex()) {
returnValue = true;
Expand Down Expand Up @@ -421,12 +429,21 @@
histos.add("hPi2cPt", "hPi2cPt", kTH1D, {axisPt});
histos.add("hPiccPt", "hPiccPt", kTH1D, {axisPt});

histos.add("hMinXiDecayRadius", "hMinXiDecayRadius", kTH1D, {axisRadius2DXi});
histos.add("hMinXiCDecayRadius", "hMinXiCDecayRadius", kTH1D, {axisRadius});
histos.add("hMinXiCCDecayRadius", "hMinXiCCDecayRadius", kTH1D, {axisRadius});

histos.add("hMinxicDecayDistanceFromPV", "hMinxicDecayDistanceFromPV", kTH1D, {axisDecayLength});
histos.add("hProperLengthXiC", "hProperLengthXiC", kTH1D, {axisDecayLength});
histos.add("hProperLengthXiCC", "hProperLengthXiCC", kTH1D, {axisDecayLength});

histos.add("hInnerTOFTrackTimeRecoPi1c", "hInnerTOFTrackTimeRecoPi1c", kTH1D, {axisTOFTrack});
histos.add("hInnerTOFTrackTimeRecoPi2c", "hInnerTOFTrackTimeRecoPi2c", kTH1D, {axisTOFTrack});
histos.add("hInnerTOFTrackTimeRecoPicc", "hInnerTOFTrackTimeRecoPicc", kTH1D, {axisTOFTrack});

histos.add("hXiRadiusVsXicRadius", "hXiRadiusVsXicRadius", kTH2D, {axisRadius2D, axisRadius2D});
histos.add("hXicRadiusVsXiccRadius", "hXicRadiusVsXiccRadius", kTH2D, {axisRadius2D, axisRadius2D});

// These histograms bookkeep the exact number of combinations attempted
// CombinationsXiC: triplets Xi-pi-pi considered per Xi
// CombinationsXiCC: doublets XiC-pi considered per XiC
Expand All @@ -436,9 +453,9 @@
histos.add("hNTracks", "hNTracks", kTH1D, {{20000, 0, 20000}});

if (doDCAplots) {
histos.add("h2dDCAxyVsPtXiFromXiC", "h2dDCAxyVsPtXiFromXiC", kTH2D, {axisPt, axisDCA2d});
histos.add("h2dDCAxyVsPtPiFromXiC", "h2dDCAxyVsPtPiFromXiC", kTH2D, {axisPt, axisDCA2d});
histos.add("h2dDCAxyVsPtPiFromXiCC", "h2dDCAxyVsPtPiFromXiCC", kTH2D, {axisPt, axisDCA2d});
histos.add("h2dDCAxyVsPtXiFromXiC", "h2dDCAxyVsPtXiFromXiC", kTH2D, {axisPt, axisDCA2D});
histos.add("h2dDCAxyVsPtPiFromXiC", "h2dDCAxyVsPtPiFromXiC", kTH2D, {axisPt, axisDCA2D});
histos.add("h2dDCAxyVsPtPiFromXiCC", "h2dDCAxyVsPtPiFromXiCC", kTH2D, {axisPt, axisDCA2D});
}
}

Expand Down Expand Up @@ -503,6 +520,9 @@
continue;

if (std::fabs(xi.dcaXY()) < xiFromXiC_dcaXYconstant || std::fabs(xi.dcaZ()) < xiFromXiC_dcaZconstant)
continue; // likely a primary xi

if (xiCand.cascRadius() < minXiRadius)
continue;

for (auto const& pi1c : tracksPiFromXiCgrouped) {
Expand All @@ -511,19 +531,29 @@
if (xiCand.posTrackId() == pi1c.globalIndex() || xiCand.negTrackId() == pi1c.globalIndex() || xiCand.bachTrackId() == pi1c.globalIndex())
continue; // avoid using any track that was already used
if (pi1c.pt() < minPiCPt)
continue;
continue; // too low momentum

double pi1cTOFDiffInner = std::fabs(pi1c.innerTOFTrackTimeReco() - pi1c.innerTOFExpectedTimePi());
if (pi1cTOFDiffInner > piFromXiC_tofDiffInner)
continue; // did not arrive at expected time

// second pion from XiC decay for starts here
for (auto const& pi2c : tracksPiFromXiCgrouped) {

if (mcSameMotherCheck && !checkSameMother(xi, pi2c))
continue; // keep only if same mother

if (pi1c.globalIndex() >= pi2c.globalIndex())
continue; // avoid same-mother, avoid double-counting

if (xiCand.posTrackId() == pi2c.globalIndex() || xiCand.negTrackId() == pi2c.globalIndex() || xiCand.bachTrackId() == pi2c.globalIndex())
continue; // avoid using any track that was already used

if (pi2c.pt() < minPiCPt)
continue;
continue; // too low momentum

double pi2cTOFDiffInner = std::fabs(pi2c.innerTOFTrackTimeReco() - pi2c.innerTOFExpectedTimePi());
if (pi2cTOFDiffInner > piFromXiC_tofDiffInner)
continue; // did not arrive at expected time

// if I am here, it means this is a triplet to be considered for XiC vertexing.
// will now attempt to build a three-body decay candidate with these three track rows.
Expand All @@ -535,6 +565,7 @@

if (std::fabs(thisXiCcandidate.mass - o2::constants::physics::MassXiCPlus) > massWindowXiC)
continue; // out of mass region

histos.fill(HIST("hCharmBuilding"), 1.0f);

const std::array<float, 3> momentumC = {
Expand All @@ -547,9 +578,12 @@
if (xicDecayRadius2D < minXiCRadius)
continue; // do not take if radius too small, likely a primary combination

histos.fill(HIST("hXiRadiusVsXicRadius"), xiCand.cascRadius() * 1e+4, xicDecayRadius2D * 1e+4);
if (xicDecayRadius2D > xiCand.cascRadius())
continue;

o2::dataformats::DCA dcaInfo;
float xicdcaXY = 1e+10, xicdcaZ = 1e+10;
;
o2::track::TrackParCov xicTrackCopy(xicTrack); // paranoia
o2::vertexing::PVertex primaryVertex;
primaryVertex.setXYZ(collision.posX(), collision.posY(), collision.posZ());
Expand All @@ -560,7 +594,7 @@
}

if (std::fabs(xicdcaXY) < xiCFromXiCC_dcaXY || std::fabs(xicdcaZ) < xiCFromXiCC_dcaZ)
continue;
continue; // likely a primary xic

histos.fill(HIST("hMassXiC"), thisXiCcandidate.mass);

Expand All @@ -569,10 +603,16 @@
for (auto const& picc : tracksPiFromXiCCgrouped) {
if (mcSameMotherCheck && !checkSameMotherExtra(xi, picc))
continue;

if (xiCand.posTrackId() == picc.globalIndex() || xiCand.negTrackId() == picc.globalIndex() || xiCand.bachTrackId() == picc.globalIndex())
continue; // avoid using any track that was already used

if (picc.pt() < minPiCCPt)
continue;
continue; // too low momentum

double piccTOFDiffInner = std::fabs(picc.innerTOFTrackTimeReco() - picc.innerTOFExpectedTimePi());
if (piccTOFDiffInner > piFromXiCC_tofDiffInner)
continue; // did not arrive at expected time

o2::track::TrackParCov piccTrack = getTrackParCov(picc);
nCombinationsCC++;
Expand All @@ -591,14 +631,34 @@
continue; // do not take if radius too small, likely a primary combination

double totalMomentumC = std::hypot(momentumC[0], momentumC[1], momentumC[2]);
double xicProperLength = std::fabs(std::hypot(thisXiCcandidate.xyz[0], thisXiCcandidate.xyz[1], thisXiCcandidate.xyz[2]) - std::hypot(thisXiCCcandidate.xyz[0], thisXiCCcandidate.xyz[1], thisXiCCcandidate.xyz[2]) * totalMomentumC) / (std::fabs(totalMomentumC) * thisXiCcandidate.mass);
double decayLengthXiC = std::hypot(
thisXiCcandidate.xyz[0] - thisXiCCcandidate.xyz[0],
thisXiCcandidate.xyz[1] - thisXiCCcandidate.xyz[1],
thisXiCcandidate.xyz[2] - thisXiCCcandidate.xyz[2]);
double xicProperLength = decayLengthXiC * thisXiCcandidate.mass / totalMomentumC;
if (xicProperLength < xicMinProperLength || xicProperLength > xicMaxProperLength)
continue;
continue; // likely background

double xicDistanceFromPV = std::hypot(
thisXiCcandidate.xyz[0] - collision.posX(),
thisXiCcandidate.xyz[1] - collision.posY(),
thisXiCcandidate.xyz[2] - collision.posZ());
double xicDecayDistanceFromPV = xicDistanceFromPV * thisXiCcandidate.mass / totalMomentumC;
if (xicDecayDistanceFromPV < xicMinDecayDistanceFromPV)
continue; // too close to PV

double totalMomentumCC = std::hypot(momentumCC[0], momentumCC[1], momentumCC[2]);
double xiccProperLength = std::fabs(std::hypot(collision.posX(), collision.posY(), collision.posZ()) - std::hypot(thisXiCCcandidate.xyz[0], thisXiCCcandidate.xyz[1], thisXiCCcandidate.xyz[2]) * totalMomentumCC) / (std::fabs(totalMomentumCC) * thisXiCCcandidate.mass);
double decayLengthXiCC = std::hypot(
thisXiCCcandidate.xyz[0] - collision.posX(),
thisXiCCcandidate.xyz[1] - collision.posY(),
thisXiCCcandidate.xyz[2] - collision.posZ());
double xiccProperLength = decayLengthXiCC * thisXiCCcandidate.mass / totalMomentumCC;
if (xiccProperLength < xiccMinProperLength || xiccProperLength > xicMaxProperLength)
continue;
continue; // likely background

histos.fill(HIST("hXicRadiusVsXiccRadius"), xicDecayRadius2D * 1e+4, xiccDecayRadius2D * 1e+4);
if (xiccDecayRadius2D > xicDecayRadius2D)
continue; // XiCC should decay before XiC

float xiccdcaXY = 1e+10, xiccdcaZ = 1e+10;
if (xiccTrack.propagateToDCA(primaryVertex, magneticField, &dcaInfo)) {
Expand All @@ -607,16 +667,24 @@
}

if (std::fabs(xiccdcaXY) > xiCC_dcaXY || std::fabs(xiccdcaZ) > xiCC_dcaZ)
continue;
continue; // not pointing to PV

if (std::fabs(thisXiCcandidate.eta) > xiccMaxEta)
continue; // not in central barrel

histos.fill(HIST("hMinxicDecayDistanceFromPV"), xicDecayDistanceFromPV * 1e+4);
histos.fill(HIST("hInnerTOFTrackTimeRecoPi1c"), pi1cTOFDiffInner);
histos.fill(HIST("hInnerTOFTrackTimeRecoPi2c"), pi2cTOFDiffInner);
histos.fill(HIST("hInnerTOFTrackTimeRecoPicc"), piccTOFDiffInner);
histos.fill(HIST("hDCAXiCDaughters"), thisXiCcandidate.dca * 1e+4);
histos.fill(HIST("hDCAXiCCDaughters"), thisXiCCcandidate.dca * 1e+4);
histos.fill(HIST("hProperLengthXiCC"), xiccProperLength * 1e+4);
histos.fill(HIST("hProperLengthXiC"), xicProperLength * 1e+4);
histos.fill(HIST("hMinXiCCDecayRadius"), xiccDecayRadius2D * 1e+4);
histos.fill(HIST("hMinXiCDecayRadius"), xicDecayRadius2D * 1e+4);
histos.fill(HIST("hPi2cPt"), pi2c.pt());
histos.fill(HIST("hMinXiDecayRadius"), xiCand.cascRadius());
histos.fill(HIST("hPi1cPt"), pi1c.pt());
histos.fill(HIST("hPi2cPt"), pi2c.pt());
histos.fill(HIST("hPiccPt"), picc.pt());
histos.fill(HIST("hDCAxyXi"), std::fabs(xi.dcaXY() * 1e+4));
histos.fill(HIST("hDCAzXi"), std::fabs(xi.dcaZ() * 1e+4));
Expand Down
Loading