Skip to content

Commit 6c25c33

Browse files
FDUEnrichalibuild
andauthored
[PWGHF] Omegac0/Xi pT cut (AliceO2Group#8962)
Co-authored-by: ALICE Action Bot <[email protected]>
1 parent 29241f8 commit 6c25c33

File tree

1 file changed

+48
-10
lines changed

1 file changed

+48
-10
lines changed

PWGHF/TableProducer/trackIndexSkimCreator.cxx

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
/// \author Jinjoo Seo <[email protected]>, Inha University
2020
/// \author Fabrizio Grosa <[email protected]>, CERN
2121
/// \author Federica Zanone <[email protected]>, Heidelberg University
22+
/// \author Ruiqi Yin <[email protected]>, Fudan University
2223

2324
#include <algorithm> // std::find
2425
#include <iterator> // std::distance
@@ -277,10 +278,10 @@ struct HfTrackIndexSkimCreatorTagSelTracks {
277278

278279
Preslice<TrackAssoc> trackIndicesPerCollision = aod::track_association::collisionId;
279280

280-
Partition<TracksWithSelAndDca> pvContributors = ((aod::track::flags & (uint32_t)aod::track::PVContributor) == (uint32_t)aod::track::PVContributor);
281-
Partition<TracksWithSelAndDcaAndPidTpc> pvContributorsWithPidTpc = ((aod::track::flags & (uint32_t)aod::track::PVContributor) == (uint32_t)aod::track::PVContributor);
282-
Partition<TracksWithSelAndDcaAndPidTof> pvContributorsWithPidTof = ((aod::track::flags & (uint32_t)aod::track::PVContributor) == (uint32_t)aod::track::PVContributor);
283-
Partition<TracksWithSelAndDcaAndPidTpcTof> pvContributorsWithPidTpcTof = ((aod::track::flags & (uint32_t)aod::track::PVContributor) == (uint32_t)aod::track::PVContributor);
281+
Partition<TracksWithSelAndDca> pvContributors = ((aod::track::flags & static_cast<uint32_t>(aod::track::PVContributor)) == static_cast<uint32_t>(aod::track::PVContributor));
282+
Partition<TracksWithSelAndDcaAndPidTpc> pvContributorsWithPidTpc = ((aod::track::flags & static_cast<uint32_t>(aod::track::PVContributor)) == static_cast<uint32_t>(aod::track::PVContributor));
283+
Partition<TracksWithSelAndDcaAndPidTof> pvContributorsWithPidTof = ((aod::track::flags & static_cast<uint32_t>(aod::track::PVContributor)) == static_cast<uint32_t>(aod::track::PVContributor));
284+
Partition<TracksWithSelAndDcaAndPidTpcTof> pvContributorsWithPidTpcTof = ((aod::track::flags & static_cast<uint32_t>(aod::track::PVContributor)) == static_cast<uint32_t>(aod::track::PVContributor));
284285

285286
// QA of PV refit
286287
ConfigurableAxis axisPvRefitDeltaX{"axisPvRefitDeltaX", {1000, -0.5f, 0.5f}, "DeltaX binning PV refit"};
@@ -2048,7 +2049,7 @@ struct HfTrackIndexSkimCreator {
20482049
}
20492050
if (config.debugPvRefit) {
20502051
LOG(info) << "===> nTrk: " << nTrk << ", nContrib: " << nContrib << ", nNonContrib: " << nNonContrib;
2051-
if ((uint16_t)vecPvContributorTrackParCov.size() != collision.numContrib() || (uint16_t)nContrib != collision.numContrib()) {
2052+
if (static_cast<uint16_t>(vecPvContributorTrackParCov.size()) != collision.numContrib() || static_cast<uint16_t>(nContrib != collision.numContrib())) {
20522053
LOG(info) << "!!! Some problem here !!! vecPvContributorTrackParCov.size()= " << vecPvContributorTrackParCov.size() << ", nContrib=" << nContrib << ", collision.numContrib()" << collision.numContrib();
20532054
}
20542055
}
@@ -3234,7 +3235,11 @@ struct HfTrackIndexSkimCreatorLfCascades {
32343235
// Selection criteria
32353236
// selections have been set to run2 lambda dedicated cuts
32363237
// selections for cascade have been set to the loosest value between xi and omega
3237-
// a tolerance has been added to be more conservative
3238+
// a tolerance has been added to be more conservative ptMinOmegaczeroToOmegaKaLfCasc ptMinXicZeroOmegacZeroToXiPiLfCasc
3239+
Configurable<float> ptMinOmegacZeroToOmegaPiLfCasc{"ptMinOmegacZeroToOmegaPiLfCasc", 0.f, "min. pT for Omegaczero in Omega + Pi decays"};
3240+
Configurable<float> ptMinOmegaczeroToOmegaKaLfCasc{"ptMinOmegaczeroToOmegaKaLfCasc", 0.f, "min. pT for Omegaczero in Omega + Ka decays"};
3241+
Configurable<float> ptMinXicZeroOmegacZeroToXiPiLfCasc{"ptMinXicZeroOmegacZeroToXiPiLfCasc", 0.f, "min. pT for XicZeroOmegacZero in Xi + Pi decays"};
3242+
Configurable<float> ptMinXicplusLfCasc{"ptMinXicplusLfCasc", 0.f, "min. pT for Xicplus in Xi + Pi + Pi decays"};
32383243
Configurable<float> v0TransvRadius{"v0TransvRadius", 1.0, "V0 radius in xy plane"}; // 1.2 (xi) and 1.1 (omega) in run2
32393244
Configurable<float> cascTransvRadius{"cascTransvRadius", 0.4, "Cascade radius in xy plane"}; // 0.5 cm (xi) and 0.6 (omega) in run2
32403245
Configurable<float> dcaBachToPv{"dcaBachToPv", 0.03, "DCA Bach To PV"}; // 0.04 in run2
@@ -3358,6 +3363,16 @@ struct HfTrackIndexSkimCreatorLfCascades {
33583363
registry.add("hDCACascDau", "hDCACascDau", {HistType::kTH1D, {{500, 0.0f, 5.0f, "cm^{2}"}}});
33593364
registry.add("hLambdaMass", "hLambdaMass", {HistType::kTH1D, {{400, 0.916f, 1.316f, "Inv. Mass (GeV/c^{2})"}}});
33603365

3366+
// pT rej
3367+
registry.add("hPtCutsXicZeroOmegacZeroToXiPi", "Omegac/Xic to Xi Pi tracks selected by pT;#it{p}_{T} (GeV/#it{c});entries", {HistType::kTH1D, {{500, 0., 50.}}});
3368+
registry.add("hPtCutsOmegacZeroToOmegaPi", "Omegac to Omega Pi tracks selected by pT;#it{p}_{T} (GeV/#it{c});entries", {HistType::kTH1D, {{500, 0., 50.}}});
3369+
registry.add("hPtCutsOmegacZeroToOmegaKa", "Omegac to Omega Ka tracks selected by pT;#it{p}_{T} (GeV/#it{c});entries", {HistType::kTH1D, {{500, 0., 50.}}});
3370+
registry.add("hPtCutsXicPlusToXiPiPi", "Xicplus to Xi Pi Pi tracks selected by pT;#it{p}_{T} (GeV/#it{c});entries", {HistType::kTH1D, {{500, 0., 50.}}});
3371+
registry.add("hRejpTStatusXicZeroOmegacZeroToXiPi", "XicZeroOmegacZeroToXiPi rejected by pT status;status;entries", {HistType::kTH1D, {{2, -0.5, 1.5}}}); // pass dcafitter --> 0, pT>pTmin --> 1
3372+
registry.add("hRejpTStatusOmegacZeroToOmegaPi", "OmegacZeroToOmegaPi rejected by pT status;status;entries", {HistType::kTH1D, {{2, -0.5, 1.5}}});
3373+
registry.add("hRejpTStatusOmegacZeroToOmegaKa", "OmegacZeroToOmegaKa rejected by pT status;status;entries", {HistType::kTH1D, {{2, -0.5, 1.5}}});
3374+
registry.add("hRejpTStatusXicPlusToXiPiPi", "XicPlusToXiPiPi rejected by pT status;status;entries", {HistType::kTH1D, {{2, -0.5, 1.5}}});
3375+
33613376
// mass spectra
33623377
registry.add("hMassXicZeroOmegacZeroToXiPi", "2-prong candidates;inv. mass (#Xi #pi) (GeV/#it{c}^{2});entries", {HistType::kTH1D, {{500, 2., 3.}}});
33633378
registry.add("hMassOmegacZeroToOmegaPi", "2-prong candidates;inv. mass (#Omega #pi) (GeV/#it{c}^{2});entries", {HistType::kTH1D, {{500, 2., 3.}}});
@@ -3555,17 +3570,23 @@ struct HfTrackIndexSkimCreatorLfCascades {
35553570
std::array<float, 3> pVecPion1XiHyp = {0.};
35563571
df2.getTrack(0).getPxPyPzGlo(pVecXi);
35573572
df2.getTrack(1).getPxPyPzGlo(pVecPion1XiHyp);
3573+
float ptXic = RecoDecay::pt(pVecXi, pVecPion1XiHyp);
35583574

35593575
std::array<std::array<float, 3>, 2> arrMomToXi = {pVecXi, pVecPion1XiHyp};
35603576
auto mass2ProngXiHyp = RecoDecay::m(arrMomToXi, arrMass2Prong[hf_cand_casc_lf::DecayType2Prong::XiczeroOmegaczeroToXiPi]);
35613577

35623578
if ((std::abs(casc.mXi() - massXi) < config.cascadeMassWindow) && (mass2ProngXiHyp >= config.massXiPiMin) && (mass2ProngXiHyp <= config.massXiPiMax)) {
3563-
SETBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::XiczeroOmegaczeroToXiPi);
3579+
registry.fill(HIST("hRejpTStatusXicZeroOmegacZeroToXiPi"), 0);
3580+
if (ptXic >= config.ptMinXicZeroOmegacZeroToXiPiLfCasc) {
3581+
SETBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::XiczeroOmegaczeroToXiPi);
3582+
registry.fill(HIST("hRejpTStatusXicZeroOmegacZeroToXiPi"), 1);
3583+
}
35643584
}
35653585

35663586
// fill histograms
35673587
if (config.fillHistograms && (TESTBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::XiczeroOmegaczeroToXiPi))) {
35683588
registry.fill(HIST("hMassXicZeroOmegacZeroToXiPi"), mass2ProngXiHyp);
3589+
registry.fill(HIST("hPtCutsXicZeroOmegacZeroToXiPi"), ptXic);
35693590
}
35703591
} else if (df2.isPropagationFailure()) {
35713592
LOGF(info, "Exception caught: failed to propagate tracks (2prong - xi) to charm baryon decay vtx");
@@ -3596,27 +3617,38 @@ struct HfTrackIndexSkimCreatorLfCascades {
35963617
std::array<float, 3> pVecCharmBachelor1OmegaHyp = {0.};
35973618
df2.getTrack(0).getPxPyPzGlo(pVecOmega);
35983619
df2.getTrack(1).getPxPyPzGlo(pVecCharmBachelor1OmegaHyp);
3620+
float ptOmegac = RecoDecay::pt(pVecOmega, pVecCharmBachelor1OmegaHyp);
35993621

36003622
std::array<std::array<float, 3>, 2> arrMomToOmega = {pVecOmega, pVecCharmBachelor1OmegaHyp};
36013623
auto mass2ProngOmegaPiHyp = RecoDecay::m(arrMomToOmega, arrMass2Prong[hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaPi]);
36023624
auto mass2ProngOmegaKHyp = RecoDecay::m(arrMomToOmega, arrMass2Prong[hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaK]);
36033625

36043626
if (std::abs(casc.mOmega() - massOmega) < config.cascadeMassWindow) {
36053627
if ((mass2ProngOmegaPiHyp >= config.massOmegaCharmBachelorMin) && (mass2ProngOmegaPiHyp <= config.massOmegaCharmBachelorMax)) {
3606-
SETBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaPi);
3628+
registry.fill(HIST("hRejpTStatusOmegacZeroToOmegaPi"), 0);
3629+
if (ptOmegac >= config.ptMinOmegacZeroToOmegaPiLfCasc) {
3630+
SETBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaPi);
3631+
registry.fill(HIST("hRejpTStatusOmegacZeroToOmegaPi"), 1);
3632+
}
36073633
}
36083634
if ((mass2ProngOmegaKHyp >= config.massOmegaCharmBachelorMin) && (mass2ProngOmegaKHyp <= config.massOmegaCharmBachelorMax)) {
3609-
SETBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaK);
3635+
registry.fill(HIST("hRejpTStatusOmegacZeroToOmegaKa"), 0);
3636+
if (ptOmegac >= config.ptMinOmegaczeroToOmegaKaLfCasc) {
3637+
SETBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaK);
3638+
registry.fill(HIST("hRejpTStatusOmegacZeroToOmegaKa"), 1);
3639+
}
36103640
}
36113641
}
36123642

36133643
// fill histograms
36143644
if (config.fillHistograms) {
36153645
if (TESTBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaPi)) {
36163646
registry.fill(HIST("hMassOmegacZeroToOmegaPi"), mass2ProngOmegaPiHyp);
3647+
registry.fill(HIST("hPtCutsOmegacZeroToOmegaPi"), ptOmegac);
36173648
}
36183649
if (TESTBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaK)) {
36193650
registry.fill(HIST("hMassOmegacZeroToOmegaK"), mass2ProngOmegaKHyp);
3651+
registry.fill(HIST("hPtCutsOmegacZeroToOmegaKa"), ptOmegac);
36203652
}
36213653
}
36223654
} else if (df2.isPropagationFailure()) {
@@ -3689,17 +3721,23 @@ struct HfTrackIndexSkimCreatorLfCascades {
36893721
df3.getTrack(0).getPxPyPzGlo(pVec1); // take the momentum at the Xic vertex
36903722
df3.getTrack(1).getPxPyPzGlo(pVec2);
36913723
df3.getTrack(2).getPxPyPzGlo(pVec3);
3724+
float ptXic3Prong = RecoDecay::pt(pVec1, pVec2, pVec3);
36923725

36933726
std::array<std::array<float, 3>, 3> arr3Mom = {pVec1, pVec2, pVec3};
36943727
auto mass3Prong = RecoDecay::m(arr3Mom, arrMass3Prong[hf_cand_casc_lf::DecayType3Prong::XicplusToXiPiPi]);
36953728

36963729
if ((std::abs(casc.mXi() - massXi) < config.cascadeMassWindow) && (mass3Prong >= config.massXiPiPiMin) && (mass3Prong <= config.massXiPiPiMax)) {
3697-
SETBIT(hfFlag, aod::hf_cand_casc_lf::DecayType3Prong::XicplusToXiPiPi);
3730+
registry.fill(HIST("hRejpTStatusXicPlusToXiPiPi"), 0);
3731+
if (ptXic3Prong >= config.ptMinXicplusLfCasc) {
3732+
SETBIT(hfFlag, aod::hf_cand_casc_lf::DecayType3Prong::XicplusToXiPiPi);
3733+
registry.fill(HIST("hRejpTStatusXicPlusToXiPiPi"), 1);
3734+
}
36983735
}
36993736

37003737
// fill histograms
37013738
if (config.fillHistograms && (TESTBIT(hfFlag, aod::hf_cand_casc_lf::DecayType3Prong::XicplusToXiPiPi))) {
37023739
registry.fill(HIST("hMassXicPlusToXiPiPi"), mass3Prong);
3740+
registry.fill(HIST("hPtCutsXicPlusToXiPiPi"), ptXic3Prong);
37033741
}
37043742
} else if (df3.isPropagationFailure()) {
37053743
LOGF(info, "Exception caught: failed to propagate tracks (3prong) to charm baryon decay vtx");

0 commit comments

Comments
 (0)