1919#include " PWGCF/Femto/Core/trackBuilder.h"
2020#include " PWGCF/Femto/Core/twoTrackResonanceBuilder.h"
2121#include " PWGCF/Femto/Core/v0Builder.h"
22+ #include " PWGCF/Femto/Core/kinkBuilder.h"
2223#include " PWGLF/DataModel/LFStrangenessTables.h"
24+ #include " PWGLF/DataModel/LFKinkDecayTables.h"
2325
2426#include " Common/DataModel/Centrality.h"
2527#include " Common/DataModel/EventSelection.h"
@@ -70,6 +72,8 @@ using Run3PpVzeros = V0Datas;
7072
7173using Run3PpCascades = CascDatas;
7274
75+ using Run3PpKinks = KinkCands;
76+
7377} // namespace consumeddata
7478} // namespace o2::analysis::femto
7579
@@ -116,6 +120,13 @@ struct FemtoProducer {
116120 cascadebuilder::ConfOmegaBits confOmegaBits;
117121 cascadebuilder::CascadeBuilder<modes::Cascade::kOmega > omegaBuilder;
118122
123+ // kink builder
124+ kinkbuilder::KinkBuilderProducts kinkBuilderProducts;
125+ kinkbuilder::ConfKinkTables confKinkTables;
126+ kinkbuilder::ConfKinkFilters confKinkFilters;
127+ kinkbuilder::ConfSigmaBits confSigmaBits;
128+ kinkbuilder::KinkBuilder<modes::Kink::kSigma > sigmaBuilder;
129+
119130 // resonance daughter filters and partitions
120131 twotrackresonancebuilder::ConfTwoTrackResonanceDaughterFilters confResonanceDaughterFilters;
121132 // caching and preslicing
@@ -191,6 +202,9 @@ struct FemtoProducer {
191202 lambdaBuilder.init (confLambdaBits, confV0Filters, confV0Tables, context);
192203 antilambdaBuilder.init (confLambdaBits, confV0Filters, confV0Tables, context);
193204
205+ // configure kink builder
206+ sigmaBuilder.init (confSigmaBits, confKinkFilters, confKinkTables, context);
207+
194208 // cascade selections
195209 xiBuilder.init (confXiBits, confCascadeFilters, confCascadeTables, context);
196210 omegaBuilder.init (confOmegaBits, confCascadeFilters, confCascadeTables, context);
@@ -201,11 +215,14 @@ struct FemtoProducer {
201215 kstar0Builder.init (confKstar0Bits, confKstarFilters, confResonanceDaughterFilters, confTwoTrackResonanceTables, context);
202216 kstar0barBuilder.init (confKstar0Bits, confKstarFilters, confResonanceDaughterFilters, confTwoTrackResonanceTables, context);
203217
204- if ((xiBuilder.fillAnyTable () || omegaBuilder.fillAnyTable ()) && !doprocessTracksV0sCascadesRun3pp) {
205- LOG (fatal) << " At least one cascade tabel is enabled, but wrong process function is enabled. Breaking..." ;
218+ if ((xiBuilder.fillAnyTable () || omegaBuilder.fillAnyTable ()) && (!doprocessTracksV0sCascadesRun3pp && !doprocessTracksV0sCascadesKinksRun3pp)) {
219+ LOG (fatal) << " At least one cascade table is enabled, but wrong process function is enabled. Breaking..." ;
220+ }
221+ if ((lambdaBuilder.fillAnyTable () || antilambdaBuilder.fillAnyTable () || k0shortBuilder.fillAnyTable ()) && (!doprocessTracksV0sCascadesRun3pp && !doprocessTracksV0sRun3pp && !doprocessTracksV0sCascadesKinksRun3pp)) {
222+ LOG (info) << " At least one v0 table is enabled, but wrong process function is enabled. Breaking..." ;
206223 }
207- if ((lambdaBuilder .fillAnyTable () || antilambdaBuilder. fillAnyTable () || k0shortBuilder. fillAnyTable ()) && (!doprocessTracksV0sCascadesRun3pp && !doprocessTracksV0sRun3pp) ) {
208- LOG (info ) << " At least one v0 tabel is enbaled , but wrong process function is enabled. Breaking..." ;
224+ if (sigmaBuilder .fillAnyTable () && !doprocessTracksKinksRun3pp && !doprocessTracksV0sCascadesKinksRun3pp ) {
225+ LOG (fatal ) << " At least one kink table is enabled , but wrong process function is enabled. Breaking..." ;
209226 }
210227 }
211228
@@ -244,6 +261,14 @@ struct FemtoProducer {
244261 k0shortBuilder.fillV0s (collisionBuilderProducts, trackBuilderProducts, v0builderProducts, v0s, tracks, trackBuilder, indexMapTracks);
245262 }
246263
264+ // add kinks
265+ template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5>
266+ void processTracksKinks (T1 const & col, T2 const & bcs, T3 const & tracks, T4 const & tracksWithItsPid, T5 const & kinks)
267+ {
268+ processTracks<system>(col, bcs, tracks, tracksWithItsPid);
269+ sigmaBuilder.fillKinks (collisionBuilderProducts, trackBuilderProducts, kinkBuilderProducts, kinks, tracks, trackBuilder, indexMapTracks);
270+ }
271+
247272 // add cascades
248273 template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
249274 void processTracksV0sCascades (T1 const & col, T2 const & bcs, T3 const & tracks, T4 const & tracksWithItsPid, T5 const & v0s, T6 const & cascades)
@@ -255,6 +280,18 @@ struct FemtoProducer {
255280 cascades, tracks, col, trackBuilder, indexMapTracks);
256281 }
257282
283+ // add kinks
284+ template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
285+ void processTracksV0sCascadesKinks (T1 const & col, T2 const & bcs, T3 const & tracks, T4 const & tracksWithItsPid, T5 const & v0s, T6 const & cascades, T7 const & kinks)
286+ {
287+ processTracksV0s<system>(col, bcs, tracks, tracksWithItsPid, v0s);
288+ sigmaBuilder.fillKinks (collisionBuilderProducts, trackBuilderProducts, kinkBuilderProducts, kinks, tracks, trackBuilder, indexMapTracks);
289+ xiBuilder.fillCascades (collisionBuilderProducts, trackBuilderProducts, cascadeBuilderProducts,
290+ cascades, tracks, col, trackBuilder, indexMapTracks);
291+ omegaBuilder.fillCascades (collisionBuilderProducts, trackBuilderProducts, cascadeBuilderProducts,
292+ cascades, tracks, col, trackBuilder, indexMapTracks);
293+ }
294+
258295 // proccess functions
259296 void processTracksRun3pp (consumeddata::Run3PpCollisions::iterator const & col,
260297 BCsWithTimestamps const & bcs,
@@ -280,7 +317,20 @@ struct FemtoProducer {
280317 };
281318 PROCESS_SWITCH (FemtoProducer, processTracksV0sRun3pp, " Process tracks and v0s" , false );
282319
283- // process tracks, v0s and casacades
320+ // process tracks and kinks
321+ void processTracksKinksRun3pp (consumeddata::Run3PpCollisions::iterator const & col,
322+ BCsWithTimestamps const & bcs,
323+ consumeddata::Run3FullPidTracks const & tracks,
324+ consumeddata::Run3PpKinks const & kinks)
325+ {
326+ // its pid information is generated dynamically, so we need to add it here
327+ auto tracksWithItsPid = o2::soa::Attach<consumeddata::Run3FullPidTracks, pidits::ITSNSigmaEl, pidits::ITSNSigmaPi,
328+ pidits::ITSNSigmaKa, pidits::ITSNSigmaPr, pidits::ITSNSigmaDe, pidits::ITSNSigmaTr, pidits::ITSNSigmaHe>(tracks);
329+ processTracksKinks<modes::System::kPP_Run3 >(col, bcs, tracks, tracksWithItsPid, kinks);
330+ }
331+ PROCESS_SWITCH (FemtoProducer, processTracksKinksRun3pp, " Process tracks and kinks" , false );
332+
333+ // process tracks, v0s and cascades
284334 void processTracksV0sCascadesRun3pp (consumeddata::Run3PpCollisions::iterator const & col,
285335 BCsWithTimestamps const & bcs,
286336 consumeddata::Run3FullPidTracks const & tracks,
@@ -293,6 +343,21 @@ struct FemtoProducer {
293343 processTracksV0sCascades<modes::System::kPP_Run3 >(col, bcs, tracks, tracksWithItsPid, v0s, cascades);
294344 }
295345 PROCESS_SWITCH (FemtoProducer, processTracksV0sCascadesRun3pp, " Provide Tracks, V0s and Cascades for Run3" , false );
346+
347+ // process tracks, v0s, cascades and kinks
348+ void processTracksV0sCascadesKinksRun3pp (consumeddata::Run3PpCollisions::iterator const & col,
349+ BCsWithTimestamps const & bcs,
350+ consumeddata::Run3FullPidTracks const & tracks,
351+ consumeddata::Run3PpVzeros const & v0s,
352+ consumeddata::Run3PpCascades const & cascades,
353+ consumeddata::Run3PpKinks const & kinks)
354+ {
355+ // its pid information is generated dynamically, so we need to add it here
356+ auto tracksWithItsPid = o2::soa::Attach<consumeddata::Run3FullPidTracks, pidits::ITSNSigmaEl, pidits::ITSNSigmaPi,
357+ pidits::ITSNSigmaKa, pidits::ITSNSigmaPr, pidits::ITSNSigmaDe, pidits::ITSNSigmaTr, pidits::ITSNSigmaHe>(tracks);
358+ processTracksV0sCascadesKinks<modes::System::kPP_Run3 >(col, bcs, tracks, tracksWithItsPid, v0s, cascades, kinks);
359+ }
360+ PROCESS_SWITCH (FemtoProducer, processTracksV0sCascadesKinksRun3pp, " Provide Tracks, V0s and Cascades for Run3" , false );
296361};
297362
298363WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments