@@ -398,20 +398,66 @@ class CascadeBuilder
398398 continue ;
399399 }
400400
401+ collisionBuilder.template fillCollision <system>(collisionProducts, col);
402+
401403 // cleaner, but without ITS pid: auto bachelor = cascade.template bachelor_as<T7>();
402404 auto bachelor = tracksWithItsPid.iteratorAt (cascade.bachelorId () - tracksWithItsPid.offset ());
405+ bachelorIndex = trackBuilder.template getDaughterIndex <modes::Track::kCascadeBachelor >(bachelor, trackProducts, collisionProducts);
406+
403407 // cleaner, but without ITS pid: auto posDaughter = cascade.template posTrack_as<T7>();
404408 auto posDaughter = tracksWithItsPid.iteratorAt (cascade.posTrackId () - tracksWithItsPid.offset ());
409+ posDaughterIndex = trackBuilder.template getDaughterIndex <modes::Track::kV0Daughter >(posDaughter, trackProducts, collisionProducts);
410+
405411 // cleaner, but without ITS pid: auto negDaughter = cascade.template negTrack_as<T7>();
406412 auto negDaughter = tracksWithItsPid.iteratorAt (cascade.negTrackId () - tracksWithItsPid.offset ());
413+ negDaughterIndex = trackBuilder.template getDaughterIndex <modes::Track::kV0Daughter >(negDaughter, trackProducts, collisionProducts);
407414
408- collisionBuilder.template fillCollision <system>(collisionProducts, col);
415+ fillCascade (collisionProducts, cascadeProducts, cascade, col, bachelorIndex, posDaughterIndex, negDaughterIndex);
416+ }
417+ }
409418
410- bachelorIndex = trackBuilder.template getDaughterIndex <modes::Track::kCascadeBachelor >(bachelor, trackProducts, collisionProducts);
411- posDaughterIndex = trackBuilder.template getDaughterIndex <modes::Track::kV0Daughter >(posDaughter, trackProducts, collisionProducts);
412- negDaughterIndex = trackBuilder.template getDaughterIndex <modes::Track::kV0Daughter >(negDaughter, trackProducts, collisionProducts);
419+ template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10, typename T11, typename T12, typename T13>
420+ void fillMcCascades (T1 const & col, T2& collisionBuilder, T3& collisionProducts, T4 const & mcCols, T5& trackProducts, T6& cascadeProducts, T7 const & cascades, T8 const & tracks, T9 const & tracksWithItsPid, T10& trackBuilder, T11 const & mcParticles, T12& mcBuilder, T13& mcProducts)
421+ {
422+ if (!mFillAnyTable ) {
423+ return ;
424+ }
425+
426+ int64_t bachelorIndex = 0 ;
427+ int64_t posDaughterIndex = 0 ;
428+ int64_t negDaughterIndex = 0 ;
429+ for (const auto & cascade : cascades) {
430+ if (!mCascadeSelection .checkFilters (cascade)) {
431+ continue ;
432+ }
433+ mCascadeSelection .applySelections (cascade, tracks, col);
434+ if (!mCascadeSelection .passesAllRequiredSelections ()) {
435+ continue ;
436+ }
437+
438+ collisionBuilder.template fillMcCollision <system>(collisionProducts, col, mcCols, mcProducts, mcBuilder);
439+
440+ auto bachelor = tracks.iteratorAt (cascade.bachelorId () - tracks.offset ());
441+ auto bachelorWithItsPid = tracksWithItsPid.iteratorAt (cascade.bachelorId () - tracksWithItsPid.offset ());
442+ bachelorIndex = trackBuilder.template getDaughterIndex <system, modes::Track::kCascadeBachelor >(col, collisionProducts, mcCols, bachelor, bachelorWithItsPid, trackProducts, mcParticles, mcBuilder, mcProducts);
443+
444+ auto posDaughter = tracks.iteratorAt (cascade.posTrackId () - tracks.offset ());
445+ auto posDaughterWithItsPid = tracksWithItsPid.iteratorAt (cascade.posTrackId () - tracksWithItsPid.offset ());
446+ posDaughterIndex = trackBuilder.template getDaughterIndex <system, modes::Track::kCascadeBachelor >(col, collisionProducts, mcCols, posDaughter, posDaughterWithItsPid, trackProducts, mcParticles, mcBuilder, mcProducts);
447+
448+ auto negDaughter = tracks.iteratorAt (cascade.negTrackId () - tracks.offset ());
449+ auto negDaughterWithItsPid = tracksWithItsPid.iteratorAt (cascade.negTrackId () - tracksWithItsPid.offset ());
450+ negDaughterIndex = trackBuilder.template getDaughterIndex <system, modes::Track::kCascadeBachelor >(col, collisionProducts, mcCols, negDaughter, negDaughterWithItsPid, trackProducts, mcParticles, mcBuilder, mcProducts);
413451
414452 fillCascade (collisionProducts, cascadeProducts, cascade, col, bachelorIndex, posDaughterIndex, negDaughterIndex);
453+ if constexpr (modes::isEqual (cascadeType, modes::Cascade::kXi )) {
454+ mcBuilder.template fillMcXiWithLabel <system>(col, mcCols, cascade, mcParticles, mcProducts);
455+ ;
456+ }
457+ if constexpr (modes::isEqual (cascadeType, modes::Cascade::kOmega )) {
458+ mcBuilder.template fillMcOmegaWithLabel <system>(col, mcCols, cascade, mcParticles, mcProducts);
459+ ;
460+ }
415461 }
416462 }
417463
0 commit comments