Skip to content
Closed
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
6 changes: 6 additions & 0 deletions Analysis/Core/include/AnalysisCore/HFConfigurables.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ class HFTrackIndexSkimsCreatorConfigs
double mInvMassDsToPiKKMax = 2.15; //original value 2.2
double mCPADsToPiKKMin = 0.5;
double mDecLenDsToPiKKMin = 0.;
// 3-prong cuts - XicToPKPi
double mPtXicToPKPiMin = 1.; //
double mInvMassXicToPKPiMin = 2.25; //
double mInvMassXicToPKPiMax = 2.70; //
double mCPAXicToPKPiMin = 0.5;
double mDecLenXicToPKPiMin = 0.;

private:
ClassDef(HFTrackIndexSkimsCreatorConfigs, 1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,4 +39,15 @@ DECLARE_SOA_COLUMN(IsSelJpsiToEE, isSelJpsiToEE, int);
} // namespace hf_selcandidate_jpsi
DECLARE_SOA_TABLE(HFSelJpsiToEECandidate, "AOD", "HFSELJPSICAND", hf_selcandidate_jpsi::IsSelJpsiToEE);
} // namespace o2::aod

namespace o2::aod
{
namespace hf_selcandidate_xic
{
DECLARE_SOA_COLUMN(IsSelXicpKpi, isSelXicpKpi, int);
DECLARE_SOA_COLUMN(IsSelXicpiKp, isSelXicpiKp, int);
} // namespace hf_selcandidate_xic
DECLARE_SOA_TABLE(HFSelXicpKpiCandidate, "AOD", "HFSELXICCAND", hf_selcandidate_xic::IsSelXicpKpi, hf_selcandidate_xic::IsSelXicpiKp);
} // namespace o2::aod

#endif // O2_ANALYSIS_HFCANDIDATESELECTIONTABLES_H_
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ DECLARE_SOA_COLUMN(JpsiToEEFlag, jpsiToEEFlag, uint8_t);
DECLARE_SOA_COLUMN(DPlusPiKPiFlag, dPlusPiKPiFlag, uint8_t);
DECLARE_SOA_COLUMN(LcPKPiFlag, lcPKPiFlag, uint8_t);
DECLARE_SOA_COLUMN(DsKKPiFlag, dsKKPiFlag, uint8_t);
DECLARE_SOA_COLUMN(XicPKPiFlag, xicPKPiFlag, uint8_t);
} // namespace hf_track_index

DECLARE_SOA_TABLE(HfTrackIndexProng2, "AOD", "HFTRACKIDXP2",
Expand All @@ -75,7 +76,8 @@ DECLARE_SOA_TABLE(HfTrackIndexProng3, "AOD", "HFTRACKIDXP3",
DECLARE_SOA_TABLE(HfCutStatusProng3, "AOD", "HFCUTSTATUSP3",
hf_track_index::DPlusPiKPiFlag,
hf_track_index::LcPKPiFlag,
hf_track_index::DsKKPiFlag);
hf_track_index::DsKKPiFlag,
hf_track_index::XicPKPiFlag);

// general decay properties
namespace hf_cand
Expand Down Expand Up @@ -312,13 +314,15 @@ DECLARE_SOA_DYNAMIC_COLUMN(MaxNormalisedDeltaIP, maxNormalisedDeltaIP, [](float
// MC matching result:
// - ±DPlusToPiKPi: D± → π± K∓ π±
// - ±LcToPKPi: Λc± → p± K∓ π±
// - ±XicToPKPi: Ξc± → p± K∓ π±
DECLARE_SOA_COLUMN(FlagMCMatchRec, flagMCMatchRec, int8_t); // reconstruction level
DECLARE_SOA_COLUMN(FlagMCMatchGen, flagMCMatchGen, int8_t); // generator level

// mapping of decay types
enum DecayType { DPlusToPiKPi = 0,
LcToPKPi,
DsToPiKK,
XicToPKPi,
N3ProngDecays }; //always keep N3ProngDecays at the end

// functions for specific particles
Expand Down Expand Up @@ -380,6 +384,38 @@ auto InvMassLcpiKp(const T& candidate)
{
return candidate.m(array{RecoDecay::getMassPDG(kPiPlus), RecoDecay::getMassPDG(kKPlus), RecoDecay::getMassPDG(kProton)});
}

// Ξc± → p± K∓ π±
template <typename T>
auto CtXic(const T& candidate)
{
return candidate.ct(RecoDecay::getMassPDG(4232));
}

template <typename T>
auto YXic(const T& candidate)
{
return candidate.y(RecoDecay::getMassPDG(4232));
}

template <typename T>
auto EXic(const T& candidate)
{
return candidate.e(RecoDecay::getMassPDG(4232));
}

template <typename T>
auto InvMassXicpKpi(const T& candidate)
{
return candidate.m(array{RecoDecay::getMassPDG(kProton), RecoDecay::getMassPDG(kKPlus), RecoDecay::getMassPDG(kPiPlus)});
}

template <typename T>
auto InvMassXicpiKp(const T& candidate)
{
return candidate.m(array{RecoDecay::getMassPDG(kPiPlus), RecoDecay::getMassPDG(kKPlus), RecoDecay::getMassPDG(kProton)});
}

} // namespace hf_cand_prong3

// 3-prong decay candidate table
Expand Down
16 changes: 16 additions & 0 deletions Analysis/Tasks/PWGHF/HFCandidateCreator3Prong.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,14 @@ struct HFCandidateCreator3ProngMC {
}
}

// Ξc± → p± K∓ π±
if (result == N3ProngDecays) {
//Printf("Checking Ξc± → p± K∓ π±");
if (RecoDecay::getMatchedMCRec(particlesMC, std::move(arrayDaughters), 4232, array{+kProton, -kKPlus, +kPiPlus}, true, &sign) > -1) {
result = sign * XicToPKPi;
}
}

rowMCMatchRec(result);
}

Expand All @@ -195,6 +203,14 @@ struct HFCandidateCreator3ProngMC {
}
}

// Ξc± → p± K∓ π±
if (result == N3ProngDecays) {
//Printf("Checking Λc± → p± K∓ π±");
if (RecoDecay::isMatchedMCGen(particlesMC, particle, 4122, array{+kProton, -kKPlus, +kPiPlus}, true, &sign)) {
result = sign * LcToPKPi;
}
}

rowMCMatchGen(result);
}
}
Expand Down
23 changes: 22 additions & 1 deletion Analysis/Tasks/PWGHF/HFTrackIndexSkimsCreator.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,8 @@ struct HFTrackIndexSkimsCreator {
{"hNCand3ProngVsNTracks", "3-prong candidates preselected;# of selected tracks;# of candidates;entries", {HistType::kTH2F, {{2500, 0., 25000.}, {5000, 0., 500000.}}}},
{"hmassDPlusToPiKPi", "D+ candidates;inv. mass (#pi K #pi) (GeV/#it{c}^{2});entries", {HistType::kTH1F, {{500, 0., 5.}}}},
{"hmassLcToPKPi", "Lc candidates;inv. mass (p K #pi) (GeV/#it{c}^{2});entries", {HistType::kTH1F, {{500, 0., 5.}}}},
{"hmassDsToPiKK", "Ds candidates;inv. mass (K K #pi) (GeV/#it{c}^{2});entries", {HistType::kTH1F, {{500, 0., 5.}}}}}};
{"hmassDsToPiKK", "Ds candidates;inv. mass (K K #pi) (GeV/#it{c}^{2});entries", {HistType::kTH1F, {{500, 0., 5.}}}},
{"hmassXicToPKPi", "Xic candidates;inv. mass (p K #pi) (GeV/#it{c}^{2});entries", {HistType::kTH1F, {{500, 2., 3.}}}}}};

Filter filterSelectTracks = (aod::hf_seltrack::isSelProng > 0);
using SelectedTracks = soa::Filtered<soa::Join<aod::Tracks, aod::TracksCov, aod::TracksExtra, aod::HFSelTrack>>;
Expand Down Expand Up @@ -278,6 +279,12 @@ struct HFTrackIndexSkimsCreator {
cut3ProngCPACandMin[DsToPiKK] = configs->mCPADsToPiKKMin;
cut3ProngDecLenCandMin[DsToPiKK] = configs->mDecLenDsToPiKKMin;

cut3ProngPtCandMin[XicToPKPi] = configs->mPtXicToPKPiMin;
cut3ProngInvMassCandMin[XicToPKPi] = configs->mInvMassXicToPKPiMin;
cut3ProngInvMassCandMax[XicToPKPi] = configs->mInvMassXicToPKPiMax;
cut3ProngCPACandMin[XicToPKPi] = configs->mCPAXicToPKPiMin;
cut3ProngDecLenCandMin[XicToPKPi] = configs->mDecLenXicToPKPiMin;

bool cutStatus2Prong[n2ProngDecays][nCuts2Prong];
bool cutStatus3Prong[n3ProngDecays][nCuts3Prong];
int nCutStatus2ProngBit = TMath::Power(2, nCuts2Prong) - 1; //bit value for selection status for each 2 prongs candidate where each selection is one bit and they are all set it 1
Expand All @@ -295,11 +302,13 @@ struct HFTrackIndexSkimsCreator {
arr3Mass1[DPlusToPiKPi] = array{massPi, massK, massPi};
arr3Mass1[LcToPKPi] = array{massProton, massK, massPi};
arr3Mass1[DsToPiKK] = array{massK, massK, massPi};
arr3Mass1[XicToPKPi] = array{massProton, massK, massPi};

array<array<double, 3>, n3ProngDecays> arr3Mass2;
arr3Mass2[DPlusToPiKPi] = array{massPi, massK, massPi};
arr3Mass2[LcToPKPi] = array{massPi, massK, massProton};
arr3Mass2[DsToPiKK] = array{massPi, massK, massK};
arr3Mass2[XicToPKPi] = array{massPi, massK, massProton};

double mass2ProngHypo1[n2ProngDecays];
double mass2ProngHypo2[n2ProngDecays];
Expand Down Expand Up @@ -654,6 +663,9 @@ struct HFTrackIndexSkimsCreator {
if (n3 == DsToPiKK) {
registry.get<TH1>(HIST("hmassDsToPiKK"))->Fill(mass3ProngHypo1[n3]);
}
if (n3 == XicToPKPi) {
registry.get<TH1>(HIST("hmassXicToPKPi"))->Fill(mass3ProngHypo1[n3]);
}
}
if ((cut3ProngInvMassCandMin[n3] < 0. && cut3ProngInvMassCandMax[n3] <= 0.) || (mass3ProngHypo2[n3] >= cut3ProngInvMassCandMin[n3] && mass3ProngHypo2[n3] < cut3ProngInvMassCandMax[n3])) {
mass3ProngHypo2[n3] = RecoDecay::M(arr3Mom, arr3Mass2[n3]);
Expand All @@ -663,6 +675,9 @@ struct HFTrackIndexSkimsCreator {
if (n3 == DsToPiKK) {
registry.get<TH1>(HIST("hmassDsToPiKK"))->Fill(mass3ProngHypo2[n3]);
}
if (n3 == XicToPKPi) {
registry.get<TH1>(HIST("hmassXicToPKPi"))->Fill(mass3ProngHypo2[n3]);
}
}
}
}
Expand Down Expand Up @@ -821,6 +836,9 @@ struct HFTrackIndexSkimsCreator {
if (n3 == DsToPiKK) {
registry.get<TH1>(HIST("hmassDsToPiKK"))->Fill(mass3ProngHypo1[n3]);
}
if (n3 == XicToPKPi) {
registry.get<TH1>(HIST("hmassXicToPKPi"))->Fill(mass3ProngHypo1[n3]);
}
}
if ((cut3ProngInvMassCandMin[n3] < 0. && cut3ProngInvMassCandMax[n3] <= 0.) || (mass3ProngHypo2[n3] >= cut3ProngInvMassCandMin[n3] && mass3ProngHypo2[n3] < cut3ProngInvMassCandMax[n3])) {
mass3ProngHypo2[n3] = RecoDecay::M(arr3Mom, arr3Mass2[n3]);
Expand All @@ -830,6 +848,9 @@ struct HFTrackIndexSkimsCreator {
if (n3 == DsToPiKK) {
registry.get<TH1>(HIST("hmassDsToPiKK"))->Fill(mass3ProngHypo2[n3]);
}
if (n3 == XicToPKPi) {
registry.get<TH1>(HIST("hmassXicToPKPi"))->Fill(mass3ProngHypo2[n3]);
}
}
}
}
Expand Down
Loading