|
19 | 19 | /// \author Jinjoo Seo <[email protected]>, Inha University |
20 | 20 | /// \author Fabrizio Grosa <[email protected]>, CERN |
21 | 21 | /// \author Federica Zanone <[email protected]>, Heidelberg University |
| 22 | +/// \author Ruiqi Yin <[email protected]>, Fudan University |
22 | 23 |
|
23 | 24 | #include <algorithm> // std::find |
24 | 25 | #include <iterator> // std::distance |
@@ -277,10 +278,10 @@ struct HfTrackIndexSkimCreatorTagSelTracks { |
277 | 278 |
|
278 | 279 | Preslice<TrackAssoc> trackIndicesPerCollision = aod::track_association::collisionId; |
279 | 280 |
|
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)); |
284 | 285 |
|
285 | 286 | // QA of PV refit |
286 | 287 | ConfigurableAxis axisPvRefitDeltaX{"axisPvRefitDeltaX", {1000, -0.5f, 0.5f}, "DeltaX binning PV refit"}; |
@@ -2048,7 +2049,7 @@ struct HfTrackIndexSkimCreator { |
2048 | 2049 | } |
2049 | 2050 | if (config.debugPvRefit) { |
2050 | 2051 | 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())) { |
2052 | 2053 | LOG(info) << "!!! Some problem here !!! vecPvContributorTrackParCov.size()= " << vecPvContributorTrackParCov.size() << ", nContrib=" << nContrib << ", collision.numContrib()" << collision.numContrib(); |
2053 | 2054 | } |
2054 | 2055 | } |
@@ -3234,7 +3235,11 @@ struct HfTrackIndexSkimCreatorLfCascades { |
3234 | 3235 | // Selection criteria |
3235 | 3236 | // selections have been set to run2 lambda dedicated cuts |
3236 | 3237 | // 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"}; |
3238 | 3243 | Configurable<float> v0TransvRadius{"v0TransvRadius", 1.0, "V0 radius in xy plane"}; // 1.2 (xi) and 1.1 (omega) in run2 |
3239 | 3244 | Configurable<float> cascTransvRadius{"cascTransvRadius", 0.4, "Cascade radius in xy plane"}; // 0.5 cm (xi) and 0.6 (omega) in run2 |
3240 | 3245 | Configurable<float> dcaBachToPv{"dcaBachToPv", 0.03, "DCA Bach To PV"}; // 0.04 in run2 |
@@ -3358,6 +3363,16 @@ struct HfTrackIndexSkimCreatorLfCascades { |
3358 | 3363 | registry.add("hDCACascDau", "hDCACascDau", {HistType::kTH1D, {{500, 0.0f, 5.0f, "cm^{2}"}}}); |
3359 | 3364 | registry.add("hLambdaMass", "hLambdaMass", {HistType::kTH1D, {{400, 0.916f, 1.316f, "Inv. Mass (GeV/c^{2})"}}}); |
3360 | 3365 |
|
| 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 | + |
3361 | 3376 | // mass spectra |
3362 | 3377 | registry.add("hMassXicZeroOmegacZeroToXiPi", "2-prong candidates;inv. mass (#Xi #pi) (GeV/#it{c}^{2});entries", {HistType::kTH1D, {{500, 2., 3.}}}); |
3363 | 3378 | 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 { |
3555 | 3570 | std::array<float, 3> pVecPion1XiHyp = {0.}; |
3556 | 3571 | df2.getTrack(0).getPxPyPzGlo(pVecXi); |
3557 | 3572 | df2.getTrack(1).getPxPyPzGlo(pVecPion1XiHyp); |
| 3573 | + float ptXic = RecoDecay::pt(pVecXi, pVecPion1XiHyp); |
3558 | 3574 |
|
3559 | 3575 | std::array<std::array<float, 3>, 2> arrMomToXi = {pVecXi, pVecPion1XiHyp}; |
3560 | 3576 | auto mass2ProngXiHyp = RecoDecay::m(arrMomToXi, arrMass2Prong[hf_cand_casc_lf::DecayType2Prong::XiczeroOmegaczeroToXiPi]); |
3561 | 3577 |
|
3562 | 3578 | 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 | + } |
3564 | 3584 | } |
3565 | 3585 |
|
3566 | 3586 | // fill histograms |
3567 | 3587 | if (config.fillHistograms && (TESTBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::XiczeroOmegaczeroToXiPi))) { |
3568 | 3588 | registry.fill(HIST("hMassXicZeroOmegacZeroToXiPi"), mass2ProngXiHyp); |
| 3589 | + registry.fill(HIST("hPtCutsXicZeroOmegacZeroToXiPi"), ptXic); |
3569 | 3590 | } |
3570 | 3591 | } else if (df2.isPropagationFailure()) { |
3571 | 3592 | LOGF(info, "Exception caught: failed to propagate tracks (2prong - xi) to charm baryon decay vtx"); |
@@ -3596,27 +3617,38 @@ struct HfTrackIndexSkimCreatorLfCascades { |
3596 | 3617 | std::array<float, 3> pVecCharmBachelor1OmegaHyp = {0.}; |
3597 | 3618 | df2.getTrack(0).getPxPyPzGlo(pVecOmega); |
3598 | 3619 | df2.getTrack(1).getPxPyPzGlo(pVecCharmBachelor1OmegaHyp); |
| 3620 | + float ptOmegac = RecoDecay::pt(pVecOmega, pVecCharmBachelor1OmegaHyp); |
3599 | 3621 |
|
3600 | 3622 | std::array<std::array<float, 3>, 2> arrMomToOmega = {pVecOmega, pVecCharmBachelor1OmegaHyp}; |
3601 | 3623 | auto mass2ProngOmegaPiHyp = RecoDecay::m(arrMomToOmega, arrMass2Prong[hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaPi]); |
3602 | 3624 | auto mass2ProngOmegaKHyp = RecoDecay::m(arrMomToOmega, arrMass2Prong[hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaK]); |
3603 | 3625 |
|
3604 | 3626 | if (std::abs(casc.mOmega() - massOmega) < config.cascadeMassWindow) { |
3605 | 3627 | 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 | + } |
3607 | 3633 | } |
3608 | 3634 | 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 | + } |
3610 | 3640 | } |
3611 | 3641 | } |
3612 | 3642 |
|
3613 | 3643 | // fill histograms |
3614 | 3644 | if (config.fillHistograms) { |
3615 | 3645 | if (TESTBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaPi)) { |
3616 | 3646 | registry.fill(HIST("hMassOmegacZeroToOmegaPi"), mass2ProngOmegaPiHyp); |
| 3647 | + registry.fill(HIST("hPtCutsOmegacZeroToOmegaPi"), ptOmegac); |
3617 | 3648 | } |
3618 | 3649 | if (TESTBIT(hfFlag, aod::hf_cand_casc_lf::DecayType2Prong::OmegaczeroToOmegaK)) { |
3619 | 3650 | registry.fill(HIST("hMassOmegacZeroToOmegaK"), mass2ProngOmegaKHyp); |
| 3651 | + registry.fill(HIST("hPtCutsOmegacZeroToOmegaKa"), ptOmegac); |
3620 | 3652 | } |
3621 | 3653 | } |
3622 | 3654 | } else if (df2.isPropagationFailure()) { |
@@ -3689,17 +3721,23 @@ struct HfTrackIndexSkimCreatorLfCascades { |
3689 | 3721 | df3.getTrack(0).getPxPyPzGlo(pVec1); // take the momentum at the Xic vertex |
3690 | 3722 | df3.getTrack(1).getPxPyPzGlo(pVec2); |
3691 | 3723 | df3.getTrack(2).getPxPyPzGlo(pVec3); |
| 3724 | + float ptXic3Prong = RecoDecay::pt(pVec1, pVec2, pVec3); |
3692 | 3725 |
|
3693 | 3726 | std::array<std::array<float, 3>, 3> arr3Mom = {pVec1, pVec2, pVec3}; |
3694 | 3727 | auto mass3Prong = RecoDecay::m(arr3Mom, arrMass3Prong[hf_cand_casc_lf::DecayType3Prong::XicplusToXiPiPi]); |
3695 | 3728 |
|
3696 | 3729 | 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 | + } |
3698 | 3735 | } |
3699 | 3736 |
|
3700 | 3737 | // fill histograms |
3701 | 3738 | if (config.fillHistograms && (TESTBIT(hfFlag, aod::hf_cand_casc_lf::DecayType3Prong::XicplusToXiPiPi))) { |
3702 | 3739 | registry.fill(HIST("hMassXicPlusToXiPiPi"), mass3Prong); |
| 3740 | + registry.fill(HIST("hPtCutsXicPlusToXiPiPi"), ptXic3Prong); |
3703 | 3741 | } |
3704 | 3742 | } else if (df3.isPropagationFailure()) { |
3705 | 3743 | LOGF(info, "Exception caught: failed to propagate tracks (3prong) to charm baryon decay vtx"); |
|
0 commit comments