Skip to content

Commit 350368c

Browse files
phymanshuHimanshu Sharmaalibuild
authored
PWGHF: Add XicToPKPi to taskMcEfficiency.cxx (AliceO2Group#7524)
* PWGHF: Add XicToPKPi to efficiency task * Please consider the following formatting changes * Update taskMcEfficiency.cxx * Please consider the following formatting changes --------- Co-authored-by: Himanshu Sharma <[email protected]> Co-authored-by: ALICE Action Bot <[email protected]>
1 parent aab0239 commit 350368c

File tree

1 file changed

+72
-18
lines changed

1 file changed

+72
-18
lines changed

PWGHF/Tasks/taskMcEfficiency.cxx

+72-18
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ struct HfTaskMcEfficiency {
3939

4040
ConfigurableAxis axisPt{"axisPt", {10, 0, 10}, "pT axis"};
4141
ConfigurableAxis axisMass{"axisMass", {120, 1.5848, 2.1848}, "m_inv axis"};
42-
ConfigurableAxis axisPdg{"axisPdg", {VARIABLE_WIDTH, -4122.5, -431.5, -421.5, -411.5, 0, 411.5, 421.5, 431.5, 4122.5}, "PDG code axis"};
42+
ConfigurableAxis axisPdg{"axisPdg", {VARIABLE_WIDTH, -4232.5, -4122.5, -431.5, -421.5, -411.5, 0, 411.5, 421.5, 431.5, 4122.5, 4232.5}, "PDG code axis"};
4343
ConfigurableAxis axisCPA{"axisCPA", {102, -1.02, 1.02}, "Cosine of pointing angle axis"};
4444

4545
Configurable<float> mcAcceptancePt{"mcAcceptancePt", 0.1, "MC Acceptance: lower pt limit"};
@@ -101,7 +101,7 @@ struct HfTaskMcEfficiency {
101101
return track.isGlobalTrackWoDCA();
102102
}
103103

104-
template <bool mc, bool hasDplus, bool hasDs, bool hasLc, typename T1, typename T2, typename T3>
104+
template <bool mc, bool hasDplus, bool hasDs, bool hasLc, bool hasXicPlus, typename T1, typename T2, typename T3>
105105
void candidate3ProngLoop(T1& candidates, T2& tracks, T3& mcParticles, std::vector<int> pdgCodes)
106106
{
107107
using TracksType = std::decay_t<decltype(tracks)>;
@@ -130,6 +130,11 @@ struct HfTaskMcEfficiency {
130130
pdgDaughters[0] = +kProton;
131131
pdgDaughters[1] = -kKPlus;
132132
pdgDaughters[2] = +kPiPlus;
133+
} else if (pdgCode == Pdg::kXiCPlus) {
134+
decayType = 1 << aod::hf_cand_3prong::DecayType::XicToPKPi;
135+
pdgDaughters[0] = +kProton;
136+
pdgDaughters[1] = -kKPlus;
137+
pdgDaughters[2] = +kPiPlus;
133138
} else {
134139
LOGP(fatal, "Not implemented for PDG {}", pdgCode);
135140
}
@@ -164,6 +169,12 @@ struct HfTaskMcEfficiency {
164169
isHypoMass2SelStep = candidate.isSelLcToPiKP();
165170
}
166171
}
172+
if constexpr (hasXicPlus) {
173+
if (pdgCode == Pdg::kXiCPlus) {
174+
isHypoMass1SelStep = candidate.isSelXicToPKPi();
175+
isHypoMass2SelStep = candidate.isSelXicToPiKP();
176+
}
177+
}
167178

168179
bool collisionMatched = false;
169180
int origin = RecoDecay::OriginType::None;
@@ -194,6 +205,23 @@ struct HfTaskMcEfficiency {
194205
}
195206
}
196207

208+
if (pdgCode == Pdg::kXiCPlus) {
209+
auto daughter = trackPos.mcParticle();
210+
if (std::abs(daughter.pdgCode()) == kProton) {
211+
isHypoMass1TrackStep = true;
212+
isHypoMass1SelStep = true;
213+
isHypoMass2TrackStep = false;
214+
isHypoMass2SelStep = false;
215+
} else if (std::abs(daughter.pdgCode()) == kPiPlus) {
216+
isHypoMass1TrackStep = false;
217+
isHypoMass1SelStep = false;
218+
isHypoMass2TrackStep = true;
219+
isHypoMass2SelStep = true;
220+
} else {
221+
continue;
222+
}
223+
}
224+
197225
collisionMatched = candidate.template collision_as<aod::McCollisionLabels>().mcCollisionId() == mcParticles.iteratorAt(indexRec).mcCollisionId();
198226
} /// end info MC used
199227

@@ -207,6 +235,8 @@ struct HfTaskMcEfficiency {
207235
if (isHypoMass1TrackStep) {
208236
if (pdgCode == Pdg::kLambdaCPlus) {
209237
massHypo1 = hfHelper.invMassLcToPKPi(candidate);
238+
} else if (pdgCode == Pdg::kXiCPlus) {
239+
massHypo1 = hfHelper.invMassXicToPKPi(candidate);
210240
} else if (pdgCode == Pdg::kDPlus) {
211241
massHypo1 = hfHelper.invMassDplusToPiKPi(candidate);
212242
} else if (pdgCode == Pdg::kDS) {
@@ -217,6 +247,8 @@ struct HfTaskMcEfficiency {
217247
if (isHypoMass2TrackStep) {
218248
if (pdgCode == Pdg::kLambdaCPlus) {
219249
massHypo2 = hfHelper.invMassLcToPiKP(candidate);
250+
} else if (pdgCode == Pdg::kXiCPlus) {
251+
massHypo2 = hfHelper.invMassXicToPiKP(candidate);
220252
} else if (pdgCode == Pdg::kDS) {
221253
massHypo2 = hfHelper.invMassDsToPiKK(candidate);
222254
}
@@ -481,10 +513,10 @@ struct HfTaskMcEfficiency {
481513

482514
/// 3-prong analyses
483515

484-
template <bool hasDplus, bool hasDs, bool hasLc, typename C>
516+
template <bool hasDplus, bool hasDs, bool hasLc, bool hasXicPlus, typename C>
485517
void candidate3ProngMcLoop(C const& candidates, TracksWithSelectionMC const& tracks, aod::McParticles const& mcParticles, aod::McCollisionLabels const&, std::vector<int> pdgCodes)
486518
{
487-
candidate3ProngLoop<true, hasDplus, hasDs, hasLc>(candidates, tracks, mcParticles, pdgCodes);
519+
candidate3ProngLoop<true, hasDplus, hasDs, hasLc, hasXicPlus>(candidates, tracks, mcParticles, pdgCodes);
488520

489521
auto hCandidates = registry.get<StepTHn>(HIST("hCandidates"));
490522
auto hTrackablePtEta = registry.get<StepTHn>(HIST("hTrackablePtEta"));
@@ -535,6 +567,10 @@ struct HfTaskMcEfficiency {
535567
pdgDaughters[0] = +kProton;
536568
pdgDaughters[1] = -kKPlus;
537569
pdgDaughters[2] = +kPiPlus;
570+
} else if (pdgCode == Pdg::kXiCPlus) {
571+
pdgDaughters[0] = +kProton;
572+
pdgDaughters[1] = -kKPlus;
573+
pdgDaughters[2] = +kPiPlus;
538574
} else {
539575
LOGP(fatal, "Not implemented for PDG {}", pdgCode);
540576
}
@@ -661,55 +697,63 @@ struct HfTaskMcEfficiency {
661697
TracksWithSelection const& tracks)
662698
{
663699
std::vector<int> pdgCodes{Pdg::kDPlus};
664-
candidate3ProngLoop<false, true, false, false>(candidates, tracks, tracks, pdgCodes);
700+
candidate3ProngLoop<false, true, false, false, false>(candidates, tracks, tracks, pdgCodes);
665701
}
666702
PROCESS_SWITCH(HfTaskMcEfficiency, processDataDplus, "Process D+ data (no MC information needed)", false);
667703

668704
void processDataDs(soa::Join<aod::HfCand3Prong, aod::HfSelDsToKKPi> const& candidates,
669705
TracksWithSelection const& tracks)
670706
{
671707
std::vector<int> pdgCodes{Pdg::kDS};
672-
candidate3ProngLoop<false, false, true, false>(candidates, tracks, tracks, pdgCodes);
708+
candidate3ProngLoop<false, false, true, false, false>(candidates, tracks, tracks, pdgCodes);
673709
}
674710
PROCESS_SWITCH(HfTaskMcEfficiency, processDataDs, "Process Ds+ data (no MC information needed)", false);
675711

676712
void processDataLc(soa::Join<aod::HfCand3Prong, aod::HfSelLc> const& candidates,
677713
TracksWithSelection const& tracks)
678714
{
679715
std::vector<int> pdgCodes{Pdg::kLambdaCPlus};
680-
candidate3ProngLoop<false, false, false, true>(candidates, tracks, tracks, pdgCodes);
716+
candidate3ProngLoop<false, false, false, true, false>(candidates, tracks, tracks, pdgCodes);
681717
}
682718
PROCESS_SWITCH(HfTaskMcEfficiency, processDataLc, "Process Lc data (no MC information needed)", false);
683719

720+
void processDataXic(soa::Join<aod::HfCand3Prong, aod::HfSelXicToPKPi> const& candidates,
721+
TracksWithSelection const& tracks)
722+
{
723+
std::vector<int> pdgCodes{Pdg::kXiCPlus};
724+
candidate3ProngLoop<false, false, false, false, true>(candidates, tracks, tracks, pdgCodes);
725+
}
726+
PROCESS_SWITCH(HfTaskMcEfficiency, processDataXic, "Process Xic data (no MC information needed)", false);
727+
684728
void processDataDplusDs(soa::Join<aod::HfCand3Prong, aod::HfSelDplusToPiKPi, aod::HfSelDsToKKPi> const& candidates,
685729
TracksWithSelection const& tracks)
686730
{
687731
std::vector<int> pdgCodes{Pdg::kDPlus, Pdg::kDS};
688-
candidate3ProngLoop<false, true, true, false>(candidates, tracks, tracks, pdgCodes);
732+
candidate3ProngLoop<false, true, true, false, false>(candidates, tracks, tracks, pdgCodes);
689733
}
690734
PROCESS_SWITCH(HfTaskMcEfficiency, processDataDplusDs, "Process D+ and Ds+ data (no MC information needed)", false);
691735

692736
void processDataDplusDsLc(soa::Join<aod::HfCand3Prong, aod::HfSelDplusToPiKPi, aod::HfSelDsToKKPi, aod::HfSelLc> const& candidates,
693737
TracksWithSelection const& tracks)
694738
{
695739
std::vector<int> pdgCodes{Pdg::kDPlus, Pdg::kDS, Pdg::kLambdaCPlus};
696-
candidate3ProngLoop<false, true, true, true>(candidates, tracks, tracks, pdgCodes);
740+
candidate3ProngLoop<false, true, true, true, false>(candidates, tracks, tracks, pdgCodes);
697741
}
698742
PROCESS_SWITCH(HfTaskMcEfficiency, processDataDplusDsLc, "Process D+, Ds+, and Lc data (no MC information needed)", false);
699743

700744
void processDataDplusLc(soa::Join<aod::HfCand3Prong, aod::HfSelDplusToPiKPi, aod::HfSelLc> const& candidates,
701745
TracksWithSelection const& tracks)
702746
{
703747
std::vector<int> pdgCodes{Pdg::kDPlus, Pdg::kLambdaCPlus};
704-
candidate3ProngLoop<false, true, false, true>(candidates, tracks, tracks, pdgCodes);
748+
candidate3ProngLoop<false, true, false, true, false>(candidates, tracks, tracks, pdgCodes);
705749
}
706750
PROCESS_SWITCH(HfTaskMcEfficiency, processDataDplusLc, "Process D+ and Lc data (no MC information needed)", false);
707751

708752
void processDataDsLc(soa::Join<aod::HfCand3Prong, aod::HfSelDsToKKPi, aod::HfSelLc> const& candidates,
709753
TracksWithSelection const& tracks)
710754
{
711755
std::vector<int> pdgCodes{Pdg::kDPlus, Pdg::kDS, Pdg::kLambdaCPlus};
712-
candidate3ProngLoop<false, false, true, true>(candidates, tracks, tracks, pdgCodes);
756+
candidate3ProngLoop<false, false, true, true, false>(candidates, tracks, tracks, pdgCodes);
713757
}
714758
PROCESS_SWITCH(HfTaskMcEfficiency, processDataDsLc, "Process Ds+ and Lc data (no MC information needed)", false);
715759

@@ -730,7 +774,7 @@ struct HfTaskMcEfficiency {
730774
aod::McCollisionLabels const& colls)
731775
{
732776
std::vector<int> pdgCodes{Pdg::kDPlus};
733-
candidate3ProngMcLoop<true, false, false>(candidates, tracks, mcParticles, colls, pdgCodes);
777+
candidate3ProngMcLoop<true, false, false, false>(candidates, tracks, mcParticles, colls, pdgCodes);
734778
}
735779
PROCESS_SWITCH(HfTaskMcEfficiency, processMcDplus, "Process MC for D+ signal", false);
736780

@@ -740,7 +784,7 @@ struct HfTaskMcEfficiency {
740784
aod::McCollisionLabels const& colls)
741785
{
742786
std::vector<int> pdgCodes{Pdg::kDS};
743-
candidate3ProngMcLoop<false, true, false>(candidates, tracks, mcParticles, colls, pdgCodes);
787+
candidate3ProngMcLoop<false, true, false, false>(candidates, tracks, mcParticles, colls, pdgCodes);
744788
}
745789
PROCESS_SWITCH(HfTaskMcEfficiency, processMcDs, "Process MC for Ds+ signal", false);
746790

@@ -750,17 +794,27 @@ struct HfTaskMcEfficiency {
750794
aod::McCollisionLabels const& colls)
751795
{
752796
std::vector<int> pdgCodes{Pdg::kLambdaCPlus};
753-
candidate3ProngMcLoop<false, false, true>(candidates, tracks, mcParticles, colls, pdgCodes);
797+
candidate3ProngMcLoop<false, false, true, false>(candidates, tracks, mcParticles, colls, pdgCodes);
754798
}
755799
PROCESS_SWITCH(HfTaskMcEfficiency, processMcLc, "Process MC for Lc signal", false);
756800

801+
void processMcXic(soa::Join<aod::HfCand3Prong, aod::HfSelXicToPKPi> const& candidates,
802+
TracksWithSelectionMC const& tracks,
803+
aod::McParticles const& mcParticles,
804+
aod::McCollisionLabels const& colls)
805+
{
806+
std::vector<int> pdgCodes{Pdg::kXiCPlus};
807+
candidate3ProngMcLoop<false, false, false, true>(candidates, tracks, mcParticles, colls, pdgCodes);
808+
}
809+
PROCESS_SWITCH(HfTaskMcEfficiency, processMcXic, "Process MC for Xic signal", false);
810+
757811
void processMcDplusDs(soa::Join<aod::HfCand3Prong, aod::HfSelDplusToPiKPi, aod::HfSelDsToKKPi> const& candidates,
758812
TracksWithSelectionMC const& tracks,
759813
aod::McParticles const& mcParticles,
760814
aod::McCollisionLabels const& colls)
761815
{
762816
std::vector<int> pdgCodes{Pdg::kDPlus, Pdg::kDS};
763-
candidate3ProngMcLoop<true, true, false>(candidates, tracks, mcParticles, colls, pdgCodes);
817+
candidate3ProngMcLoop<true, true, false, false>(candidates, tracks, mcParticles, colls, pdgCodes);
764818
}
765819
PROCESS_SWITCH(HfTaskMcEfficiency, processMcDplusDs, "Process MC for D+ and Ds+ signals", false);
766820

@@ -770,7 +824,7 @@ struct HfTaskMcEfficiency {
770824
aod::McCollisionLabels const& colls)
771825
{
772826
std::vector<int> pdgCodes{Pdg::kDPlus, Pdg::kDS, Pdg::kLambdaCPlus};
773-
candidate3ProngMcLoop<true, true, true>(candidates, tracks, mcParticles, colls, pdgCodes);
827+
candidate3ProngMcLoop<true, true, true, false>(candidates, tracks, mcParticles, colls, pdgCodes);
774828
}
775829
PROCESS_SWITCH(HfTaskMcEfficiency, processMcDplusDsLc, "Process MC for D+, Ds+, and Lc signals", false);
776830

@@ -780,7 +834,7 @@ struct HfTaskMcEfficiency {
780834
aod::McCollisionLabels const& colls)
781835
{
782836
std::vector<int> pdgCodes{Pdg::kDPlus, Pdg::kLambdaCPlus};
783-
candidate3ProngMcLoop<true, false, true>(candidates, tracks, mcParticles, colls, pdgCodes);
837+
candidate3ProngMcLoop<true, false, true, false>(candidates, tracks, mcParticles, colls, pdgCodes);
784838
}
785839
PROCESS_SWITCH(HfTaskMcEfficiency, processMcDplusLc, "Process MC for D+ and Lc signals", false);
786840

@@ -790,7 +844,7 @@ struct HfTaskMcEfficiency {
790844
aod::McCollisionLabels const& colls)
791845
{
792846
std::vector<int> pdgCodes{Pdg::kDS, Pdg::kLambdaCPlus};
793-
candidate3ProngMcLoop<false, true, true>(candidates, tracks, mcParticles, colls, pdgCodes);
847+
candidate3ProngMcLoop<false, true, true, false>(candidates, tracks, mcParticles, colls, pdgCodes);
794848
}
795849
PROCESS_SWITCH(HfTaskMcEfficiency, processMcDsLc, "Process MC for Ds+ and Lc signals", false);
796850
};

0 commit comments

Comments
 (0)