@@ -1243,13 +1243,12 @@ struct ResonanceDaughterInitializer {
12431243 // data-model relation keeps its legacy v000 default target; v001 consumers
12441244 // must use resoCollision_as<T>() with the exact bound v001 table type for
12451245 // dereferencing (aod::ResoCollisions_001 when the parent is not joined).
1246- // Original-collision grouping is provided by the scalar-only version-1
1247- // ResoCollisionGroups_001 table, avoiding a hard source-AO2D relation.
1246+ // Daughter callbacks use the original collision ID from ResoCollisionColls
1247+ // to slice input candidates explicitly. The scalar ResoCollisionGroups_001
1248+ // output is retained for consumers that do not need source-AO2D dereferencing.
12481249 // Collision mappings are always written; cfgBypassCollIndexFill is retained
12491250 // only so existing configuration files remain accepted.
12501251 using ResoCollisionWithIndex = soa::Join<aod::ResoCollisions_001, aod::ResoCollisionColls>;
1251- using SelectedResoCollisions = soa::Join<aod::ResoCollisions_001, aod::ResoCollisionGroups_001>;
1252- PresliceUnsorted<SelectedResoCollisions> reducedCollisionsPerOriginalCollision = aod::resocollisiongroup001::originalCollisionId;
12531252
12541253 /* *
12551254 * @brief Initializes the task
@@ -1263,7 +1262,7 @@ struct ResonanceDaughterInitializer {
12631262 LOGF (fatal, " cfgPairGateMode must be 0 (configured gates) or 1 (V0 or cascade)" );
12641263 }
12651264 const bool useEitherPairGate = FilterForDerivedTables.cfgPairGateMode .value == PairGateModeEither;
1266- const bool processTrackDataEnabled = doprocessData || doprocessDataHybrid || doprocessDataWithPairGate ||
1265+ const bool processTrackDataEnabled = doprocessData || doprocessDataWithPairGate ||
12671266 doprocessDataWithV0PairGate || doprocessDataWithCascPairGate;
12681267 const bool processTrackMCEnabled = doprocessMC || doprocessMCWithPairGate ||
12691268 doprocessMCWithV0PairGate || doprocessMCWithCascPairGate;
@@ -1275,7 +1274,6 @@ struct ResonanceDaughterInitializer {
12751274 const bool anyDataProcessEnabled = processTrackDataEnabled || processV0DataEnabled || processCascDataEnabled;
12761275 const bool anyMCProcessEnabled = processTrackMCEnabled || doprocessV0MC || doprocessCascMC;
12771276 const int enabledTrackProcesses = static_cast <int >(doprocessData) +
1278- static_cast <int >(doprocessDataHybrid) +
12791277 static_cast <int >(doprocessDataWithPairGate) +
12801278 static_cast <int >(doprocessDataWithV0PairGate) +
12811279 static_cast <int >(doprocessDataWithCascPairGate) +
@@ -1311,10 +1309,10 @@ struct ResonanceDaughterInitializer {
13111309 if (static_cast <int >(doprocessCascData) + static_cast <int >(doprocessCascMC) > 1 ) {
13121310 LOGF (fatal, " Only one cascade process can be enabled in ResonanceDaughterInitializer" );
13131311 }
1314- if ((doprocessData || doprocessDataHybrid || doprocessMC) &&
1312+ if ((doprocessData || doprocessMC) &&
13151313 (useEitherPairGate || FilterForDerivedTables.cfgBypassNoPairV0s || FilterForDerivedTables.cfgBypassNoPairCascades ||
13161314 FilterForDerivedTables.cfgGlobalDaughterVeto )) {
1317- LOGF (warn, " Pair-gate options are ignored by processData/processDataHybrid/ processMC; enable the matching *WithPairGate process to apply them" );
1315+ LOGF (warn, " Pair-gate options are ignored by processData/processMC; enable the matching *WithPairGate process to apply them" );
13181316 }
13191317 const auto validatePairGateOutputs = [&](bool pairProcessEnabled,
13201318 bool v0OutputEnabled,
@@ -2204,7 +2202,9 @@ struct ResonanceDaughterInitializer {
22042202 static_cast <uint8_t >(o2::aod::resomicrodaughter001::PidNSigma (track.tpcNSigmaKa (), track.tofNSigmaKa (), track.hasTOF ())),
22052203 static_cast <uint8_t >(o2::aod::resomicrodaughter001::PidNSigma (track.tpcNSigmaPr (), track.tofNSigmaPr (), track.hasTOF ())),
22062204 static_cast <uint8_t >(trackSelFlag),
2207- trackFlags);
2205+ trackFlags,
2206+ static_cast <uint8_t >(track.tpcNClsCrossedRows ()),
2207+ track.itsClusterMap ());
22082208 if (!FilterForDerivedTables.cfgBypassTrackIndexFill ) {
22092209 resoMicroTrackTracks (track.globalIndex ());
22102210 }
@@ -2783,31 +2783,6 @@ struct ResonanceDaughterInitializer {
27832783 }
27842784 PROCESS_SWITCH (ResonanceDaughterInitializer, processData, " Process tracks for data" , false );
27852785
2786- /* *
2787- * @brief Processes data tracks using the two-stage hybrid grouping
2788- *
2789- * GroupSlicer associates tracks automatically to the original
2790- * aod::Collision. Reduced collisions retain a scalar original-collision row
2791- * number and are explicitly sliced from the much smaller mapping table. The
2792- * tracks argument is already the selected slice and must not be sliced again.
2793- */
2794- void processDataHybrid (aod::Collision const & originalCollision,
2795- SelectedResoCollisions const & reducedCollisions,
2796- soa::Filtered<aod::ResoTrackCandidates> const & tracks)
2797- {
2798- auto reducedCollisionsThisCollision = reducedCollisions.sliceBy (reducedCollisionsPerOriginalCollision, originalCollision.globalIndex ());
2799- if (reducedCollisionsThisCollision.size () == 0 ) {
2800- return ;
2801- }
2802- if (reducedCollisionsThisCollision.size () > 1 ) {
2803- LOGF (error, " Found %zu reduced collisions for one original collision; skipping the ambiguous association" , reducedCollisionsThisCollision.size ());
2804- return ;
2805- }
2806- auto reducedCollision = reducedCollisionsThisCollision.begin ();
2807- fillTrackTables<false >(reducedCollision, tracks);
2808- }
2809- PROCESS_SWITCH (ResonanceDaughterInitializer, processDataHybrid, " Process data tracks with the two-stage hybrid grouping" , false );
2810-
28112786 /* *
28122787 * @brief Processes data tracks with configurable selected V0 and cascade gates
28132788 */
0 commit comments