Skip to content

Commit b3c597e

Browse files
authored
Refactor selectionCollision function template parameters
1 parent 5e5c610 commit b3c597e

1 file changed

Lines changed: 28 additions & 11 deletions

File tree

PWGHF/HFC/TableProducer/correlatorXicHadrons.cxx

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -151,18 +151,20 @@ struct HfCorrelatorXicHadronsSelection {
151151
Filter xicPlusFilter = aod::hf_sel_candidate_xic::isSelXicToXiPiPi >= selectionFlagXic;
152152
Filter xic0Filter = aod::hf_sel_toxipi::resultSelections == true;
153153

154-
template <bool IsXicPlus, typename CollType, typename CandType>
154+
template <bool IsMc, bool IsXicPlus, typename CollType, typename CandType>
155155
void selectionCollision(CollType const& collision, CandType const& candidates)
156156
{
157157
bool isSelColl = true;
158158
bool isCandFound = false;
159159
bool isSel8 = true;
160160
bool isNosameBunchPileUp = true;
161-
double yCand = -999.;
162-
double massCand = -999.;
163-
double ptCand = -999;
161+
164162
if (doSelXicCollision) {
165163
for (const auto& candidate : candidates) {
164+
double massCand = -999.;
165+
double ptCand = -999.;
166+
double yCand = -999.;
167+
166168
// For both XicPlus and Xic0
167169
if constexpr (IsXicPlus) {
168170
massCand = o2::constants::physics::MassXiCPlus;
@@ -174,27 +176,42 @@ struct HfCorrelatorXicHadronsSelection {
174176
yCand = candidate.kfRapXic();
175177
}
176178

179+
// Kinematic cuts
177180
if (std::abs(yCand) > yCandMax || ptCand < ptCandMin) {
178181
isCandFound = false;
179182
continue;
180183
}
184+
185+
if constexpr (IsMc) {
186+
auto const mcFlag = std::abs(candidate.flagMcMatchRec());
187+
188+
bool isSignal = (mcFlag == static_cast<int>(o2::aod::hf_cand_xic_to_xi_pi_pi::DecayType::XicToXiPiPi))
189+
|| (mcFlag == static_cast<int>(BIT(aod::hf_cand_xic0_omegac0::DecayType::XiczeroToXiPi)));
190+
191+
if (!isSignal) {
192+
isCandFound = false;
193+
continue;
194+
}
195+
}
196+
// If it passed both Kinematic and MC checks
181197
isCandFound = true;
182198
break;
183199
}
184200
}
201+
202+
// Collision-level cuts
185203
if (useSel8) {
186204
isSel8 = collision.sel8();
187205
}
188206
if (selNoSameBunchPileUpColl) {
189207
isNosameBunchPileUp = static_cast<bool>(collision.selection_bit(o2::aod::evsel::kNoSameBunchPileup));
190208
}
191-
209+
192210
isSelColl = isCandFound && isSel8 && isNosameBunchPileUp;
193-
194211
candSel(isSelColl);
195212
}
196213

197-
template <typename CandType>
214+
template <typename CandType>
198215
void selectionCollisionMcGen(CandType const& mcParticles)
199216
{
200217
bool isCandFound = false;
@@ -264,28 +281,28 @@ struct HfCorrelatorXicHadronsSelection {
264281
void processXicPlusSelection(SelCollisions::iterator const& collision,
265282
CandsXicPlusDataFiltered const& candidates)
266283
{
267-
selectionCollision<true>(collision, candidates);
284+
selectionCollision<false, true>(collision, candidates);
268285
}
269286
PROCESS_SWITCH(HfCorrelatorXicHadronsSelection, processXicPlusSelection, "Process XicPlus Collision Selection for Data", true);
270287

271288
void processXic0Selection(SelCollisions::iterator const& collision,
272289
CandsXic0DataFiltered const& candidates)
273290
{
274-
selectionCollision<false>(collision, candidates);
291+
selectionCollision<false, false>(collision, candidates);
275292
}
276293
PROCESS_SWITCH(HfCorrelatorXicHadronsSelection, processXic0Selection, "Process Xic0 Collision Selection for Data", false);
277294

278295
void processXicPlusSelectionMcRec(SelCollisions::iterator const& collision,
279296
CandsXicPlusMcRecFiltered const& candidates)
280297
{
281-
selectionCollision<true>(collision, candidates);
298+
selectionCollision<true, true>(collision, candidates);
282299
}
283300
PROCESS_SWITCH(HfCorrelatorXicHadronsSelection, processXicPlusSelectionMcRec, "Process XicPlus Selection McRec", false);
284301

285302
void processXic0SelectionMcRec(SelCollisions::iterator const& collision,
286303
CandsXic0McRecFiltered const& candidates)
287304
{
288-
selectionCollision<false>(collision, candidates);
305+
selectionCollision<true, false>(collision, candidates);
289306
}
290307
PROCESS_SWITCH(HfCorrelatorXicHadronsSelection, processXic0SelectionMcRec, "Process Xic0 Selection McRec", false);
291308

0 commit comments

Comments
 (0)