@@ -53,6 +53,8 @@ struct FemtoProducerDerivedToDerived {
5353 using FemtoSigmaPlus = o2::soa::Join<o2::aod::FSigmaPlus, o2::aod::FSigmaPlusMasks>;
5454
5555 using FemtoMcTracks = o2::soa::Join<FemtoTracks, o2::aod::FTrackLabels>;
56+ using FemtoMcSigma = o2::soa::Join<FemtoSigma, o2::aod::FSigmaLabels>;
57+ using FemtoMcSigmaPlus = o2::soa::Join<FemtoSigmaPlus, o2::aod::FSigmaPlusLabels>;
5658 using FemtoMcParticles = o2::soa::Join<o2::aod::FMcParticles, o2::aod::FMcMotherLabels>;
5759
5860 o2::framework::SliceCache cache;
@@ -126,6 +128,12 @@ struct FemtoProducerDerivedToDerived {
126128 o2::framework::Partition<FemtoMcTracks> mcTrackPartition2 = MAKE_TRACK_PARTITION (trackSelections2);
127129 o2::framework::Preslice<FemtoMcTracks> perColMcTracks = o2::aod::femtobase::stored::fColId ;
128130
131+ o2::framework::Partition<FemtoMcSigma> mcSigmaPartition = MAKE_SIGMA_PARTITION (sigmaSelection1);
132+ o2::framework::Preslice<FemtoMcSigma> perColMcSigma = o2::aod::femtobase::stored::fColId ;
133+
134+ o2::framework::Partition<FemtoMcSigmaPlus> mcSigmaPlusPartition = MAKE_SIGMAPLUS_PARTITION (sigmaPlusSelection1);
135+ o2::framework::Preslice<FemtoMcSigmaPlus> perColMcSigmaPlus = o2::aod::femtobase::stored::fColId ;
136+
129137 void init (o2::framework::InitContext& /* context*/ )
130138 {
131139 const int activeProcesses =
@@ -135,7 +143,8 @@ struct FemtoProducerDerivedToDerived {
135143 static_cast <int >(doprocessTracksXis) + static_cast <int >(doprocessTracksOmegas) +
136144 static_cast <int >(doprocessTracksK0shorts) + static_cast <int >(doprocessTracksSigma) +
137145 static_cast <int >(doprocessTracksSigmaPlus) +
138- static_cast <int >(doprocessTracksMc);
146+ static_cast <int >(doprocessTracksMc) + static_cast <int >(doprocessTracksSigmaMc) +
147+ static_cast <int >(doprocessTracksSigmaPlusMc);
139148 if (activeProcesses != 1 ) {
140149 LOG (fatal) << " Exactly one process function must be activated (got " << activeProcesses << " )." ;
141150 }
@@ -293,6 +302,58 @@ struct FemtoProducerDerivedToDerived {
293302 }
294303 }
295304 PROCESS_SWITCH (FemtoProducerDerivedToDerived, processTracksMc, " Process tracks with MC information" , false );
305+
306+ void processTracksSigmaMc (FilteredFemtoMcCollisions const & cols,
307+ FemtoMcTracks const & tracks,
308+ FemtoMcSigma const & sigma,
309+ o2::aod::FMcCols const & mcCols,
310+ FemtoMcParticles const & mcParticles,
311+ o2::aod::FMcMothers const & mcMothers,
312+ o2::aod::FMcPartMoths const & mcPartonicMothers)
313+ {
314+ mcBuilder.reset (mcCols, mcParticles);
315+
316+ for (auto const & col : cols) {
317+ if (trackBuilder.collisionHasTooFewTracks (col, tracks, mcTrackPartition1, mcTrackPartition2, cache) || kinkBuilder.collisionHasTooFewSigma (col, sigma, mcSigmaPartition, cache)) {
318+ continue ;
319+ }
320+ trackBuilder.reset (tracks);
321+ collisionBuilder.processCollision (col, collisionBuilderProducts);
322+ mcBuilder.fillCollisionWithLabel (col, mcCols, mcBuilderProducts);
323+ trackBuilder.processTracksWithMc (col, tracks, mcTrackPartition1, mcTrackPartition2, cache,
324+ trackBuilderProducts, collisionBuilderProducts,
325+ mcBuilder, mcCols, mcParticles, mcMothers, mcPartonicMothers, mcBuilderProducts);
326+ kinkBuilder.processSigmaWithMc (col, sigma, tracks, mcSigmaPartition, trackBuilder, cache, kinkBuilderProducts, trackBuilderProducts, collisionBuilderProducts,
327+ mcBuilder, mcCols, mcParticles, mcMothers, mcPartonicMothers, mcBuilderProducts);
328+ }
329+ }
330+ PROCESS_SWITCH (FemtoProducerDerivedToDerived, processTracksSigmaMc, " Process sigma and tracks with MC information" , false );
331+
332+ void processTracksSigmaPlusMc (FilteredFemtoMcCollisions const & cols,
333+ FemtoMcTracks const & tracks,
334+ FemtoMcSigmaPlus const & sigmaplus,
335+ o2::aod::FMcCols const & mcCols,
336+ FemtoMcParticles const & mcParticles,
337+ o2::aod::FMcMothers const & mcMothers,
338+ o2::aod::FMcPartMoths const & mcPartonicMothers)
339+ {
340+ mcBuilder.reset (mcCols, mcParticles);
341+
342+ for (auto const & col : cols) {
343+ if (trackBuilder.collisionHasTooFewTracks (col, tracks, mcTrackPartition1, mcTrackPartition2, cache) || kinkBuilder.collisionHasTooFewSigmaPlus (col, sigmaplus, mcSigmaPlusPartition, cache)) {
344+ continue ;
345+ }
346+ trackBuilder.reset (tracks);
347+ collisionBuilder.processCollision (col, collisionBuilderProducts);
348+ mcBuilder.fillCollisionWithLabel (col, mcCols, mcBuilderProducts);
349+ trackBuilder.processTracksWithMc (col, tracks, mcTrackPartition1, mcTrackPartition2, cache,
350+ trackBuilderProducts, collisionBuilderProducts,
351+ mcBuilder, mcCols, mcParticles, mcMothers, mcPartonicMothers, mcBuilderProducts);
352+ kinkBuilder.processSigmaPlusWithMc (col, sigmaplus, tracks, mcSigmaPlusPartition, trackBuilder, cache, kinkBuilderProducts, trackBuilderProducts, collisionBuilderProducts,
353+ mcBuilder, mcCols, mcParticles, mcMothers, mcPartonicMothers, mcBuilderProducts);
354+ }
355+ }
356+ PROCESS_SWITCH (FemtoProducerDerivedToDerived, processTracksSigmaPlusMc, " Process sigmaPlus and tracks with MC information" , false );
296357};
297358
298359o2::framework::WorkflowSpec defineDataProcessing (o2::framework::ConfigContext const & context)
0 commit comments