@@ -121,9 +121,11 @@ struct HfCandidateSelectorXicToXiPiPi {
121121
122122 void init (InitContext&)
123123 {
124- if ((doprocessData + doprocessMc ) != 1 ) {
124+ if ((doprocessDataWithDCAFitter + doprocessDataWithKFParticle + doprocessMcWithDCAFitter + doprocessMcWithKFParticle ) != 1 ) {
125125 LOGP (fatal, " Enable exactly one process function at a time." );
126126 }
127+ const bool doprocessData = doprocessDataWithDCAFitter || doprocessDataWithKFParticle;
128+ const bool doprocessMc = doprocessMcWithDCAFitter || doprocessMcWithKFParticle;
127129
128130 if (usePid) {
129131 // pion
@@ -699,8 +701,8 @@ struct HfCandidateSelectorXicToXiPiPi {
699701 }
700702 }
701703
702- void processData ( aod::HfCandXic const & hfCandsXic,
703- TracksExtraWPid const & tracks)
704+ template < aod::hf_cand::VertexerType ReconstructionType, typename CandType>
705+ void runData (CandType const & hfCandsXic, TracksExtraWPid const & tracks)
704706 {
705707 for (const auto & hfCandXic : hfCandsXic) {
706708 int statusXicToXiPiPi = 0 ;
@@ -727,10 +729,9 @@ struct HfCandidateSelectorXicToXiPiPi {
727729 hfSelXicToXiPiPiCandidate (statusXicToXiPiPi);
728730 }
729731 }
730- PROCESS_SWITCH (HfCandidateSelectorXicToXiPiPi, processData, " Select candidates without MC matching information" , true );
731732
732- void processMc (soa::Join <aod::HfCandXic, aod::HfCandXicMcRec> const & hfCandsXic,
733- TracksExtraWPid const & tracks)
733+ template <aod::hf_cand::VertexerType ReconstructionType, typename CandType>
734+ void runMc (CandType const & hfCandsXic, TracksExtraWPid const & tracks)
734735 {
735736 for (const auto & hfCandXic : hfCandsXic) {
736737 int statusXicToXiPiPi = 0 ;
@@ -764,7 +765,34 @@ struct HfCandidateSelectorXicToXiPiPi {
764765 hfSelXicToXiPiPiCandidate (statusXicToXiPiPi);
765766 }
766767 }
767- PROCESS_SWITCH (HfCandidateSelectorXicToXiPiPi, processMc, " Select candidates with MC matching information" , false );
768+
769+ void processDataWithDCAFitter (aod::HfCandXic const & hfCandsXic,
770+ TracksExtraWPid const & tracks)
771+ {
772+ runData<aod::hf_cand::VertexerType::DCAFitter>(hfCandsXic, tracks);
773+ }
774+ PROCESS_SWITCH (HfCandidateSelectorXicToXiPiPi, processDataWithDCAFitter, " Select candidates without MC matching information using DCAFitter" , true );
775+
776+ void processDataWithKFParticle (soa::Join<aod::HfCandXic, aod::HfCandXicKF> const & hfCandsXic,
777+ TracksExtraWPid const & tracks)
778+ {
779+ runData<aod::hf_cand::VertexerType::KfParticle>(hfCandsXic, tracks);
780+ }
781+ PROCESS_SWITCH (HfCandidateSelectorXicToXiPiPi, processDataWithKFParticle, " Select candidates without MC matching information using KFParticle" , false );
782+
783+ void processMcWithDCAFitter (soa::Join<aod::HfCandXic, aod::HfCandXicMcRec> const & hfCandsXic,
784+ TracksExtraWPid const & tracks)
785+ {
786+ runMc<aod::hf_cand::VertexerType::DCAFitter>(hfCandsXic, tracks);
787+ }
788+ PROCESS_SWITCH (HfCandidateSelectorXicToXiPiPi, processMcWithDCAFitter, " Select candidates with MC matching information using DCAFitter" , false );
789+
790+ void processMcWithKFParticle (soa::Join<aod::HfCandXic, aod::HfCandXicMcRec, aod::HfCandXicKF> const & hfCandsXic,
791+ TracksExtraWPid const & tracks)
792+ {
793+ runMc<aod::hf_cand::VertexerType::KfParticle>(hfCandsXic, tracks);
794+ }
795+ PROCESS_SWITCH (HfCandidateSelectorXicToXiPiPi, processMcWithKFParticle, " Select candidates with MC matching information using KFParticle" , false );
768796};
769797
770798WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments