diff --git a/PWGCF/Femto/Core/trackBuilder.h b/PWGCF/Femto/Core/trackBuilder.h index afdbe46521a..ab25867c8c9 100644 --- a/PWGCF/Femto/Core/trackBuilder.h +++ b/PWGCF/Femto/Core/trackBuilder.h @@ -16,6 +16,8 @@ #ifndef PWGCF_FEMTO_CORE_TRACKBUILDER_H_ #define PWGCF_FEMTO_CORE_TRACKBUILDER_H_ +#include "femtoUtils.h" + #include "PWGCF/Femto/Core/baseSelection.h" #include "PWGCF/Femto/Core/dataTypes.h" #include "PWGCF/Femto/Core/femtoUtils.h" @@ -799,6 +801,7 @@ class TrackBuilder struct TrackBuilderDerivedToDerivedProducts : o2::framework::ProducesGroup { o2::framework::Produces producedTracks; o2::framework::Produces producedTrackMasks; + o2::framework::Produces producedTrackMass; }; struct ConfTrackTablesDerivedToDerived : o2::framework::ConfigurableGroup { @@ -861,6 +864,9 @@ class TrackBuilderDerivedToDerived track.eta(), track.phi()); trackProducts.producedTrackMasks(track.mask()); + if constexpr (utils::HasMass) { + trackProducts.producedTrackMass(track.mass()); + } indexMap.emplace(track.globalIndex(), trackProducts.producedTracks.lastIndex()); } } diff --git a/PWGCF/Femto/DataModel/FemtoTables.h b/PWGCF/Femto/DataModel/FemtoTables.h index 04efa0a1712..5d795fccd6f 100644 --- a/PWGCF/Femto/DataModel/FemtoTables.h +++ b/PWGCF/Femto/DataModel/FemtoTables.h @@ -250,6 +250,7 @@ using StoredFTrackMasks = StoredFTrackMasks_001; DECLARE_SOA_TABLE_STAGED_VERSIONED(FTrackMass_001, "FTRACKMASS", 1, //! track mass femtobase::stored::Mass); using FTrackMass = FTrackMass_001; +using StoredFTrackMass = StoredFTrackMass_001; // table for track DCA DECLARE_SOA_TABLE_STAGED_VERSIONED(FTrackDcas_001, "FTRACKDCAS", 1, //! track dcas diff --git a/PWGCF/Femto/TableProducer/femtoProducerDerivedToDerived.cxx b/PWGCF/Femto/TableProducer/femtoProducerDerivedToDerived.cxx index 735454b5504..128f4e4db02 100644 --- a/PWGCF/Femto/TableProducer/femtoProducerDerivedToDerived.cxx +++ b/PWGCF/Femto/TableProducer/femtoProducerDerivedToDerived.cxx @@ -41,6 +41,7 @@ struct FemtoProducerDerivedToDerived { using FilteredFemtoCollision = FilteredFemtoCollisions::iterator; using FemtoTracks = o2::soa::Join; + using FemtoTracksWithMass = o2::soa::Join; using FemtoLambdas = o2::soa::Join; using FemtoK0shorts = o2::soa::Join; using FemtoXis = o2::soa::Join; @@ -113,7 +114,7 @@ struct FemtoProducerDerivedToDerived { cascadeBuilder.init(confCascadeBuilder); kinkBuilder.init(confKinkBuilder); - if ((static_cast(doprocessTracks) + static_cast(doprocessTracksLambdas) + static_cast(doprocessLambdas) + static_cast(doprocessTracksXis) + static_cast(doprocessTracksOmegas) + static_cast(doprocessTracksK0shorts) + static_cast(doprocessTracksSigma) + static_cast(doprocessTracksSigmaPlus)) > 1) { + if ((static_cast(doprocessTracks) + static_cast(doprocessTracksWithMass) + static_cast(doprocessTracksLambdas) + static_cast(doprocessLambdas) + static_cast(doprocessTracksXis) + static_cast(doprocessTracksOmegas) + static_cast(doprocessTracksK0shorts) + static_cast(doprocessTracksSigma) + static_cast(doprocessTracksSigmaPlus)) > 1) { LOG(fatal) << "Only one proccess function can be activated"; } } @@ -129,6 +130,16 @@ struct FemtoProducerDerivedToDerived { } PROCESS_SWITCH(FemtoProducerDerivedToDerived, processTracks, "Process tracks", true); + void processTracksWithMass(FilteredFemtoCollision const& col, FemtoTracksWithMass const& tracks) + { + if (trackBuilder.collisionHasTooFewTracks(col, tracks, trackPartition1, trackPartition2, cache)) { + return; + } + collisionBuilder.processCollision(col, collisionBuilderProducts); + trackBuilder.processTracks(col, tracks, trackPartition1, trackPartition2, cache, trackBuilderProducts, collisionBuilderProducts); + } + PROCESS_SWITCH(FemtoProducerDerivedToDerived, processTracksWithMass, "Process tracks with mass", false); + void processTracksLambdas(FilteredFemtoCollision const& col, FemtoTracks const& tracks, FemtoLambdas const& lambdas) { if (trackBuilder.collisionHasTooFewTracks(col, tracks, trackPartition1, trackPartition2, cache) || v0Builder.collisionHasTooFewLambdas(col, lambdas, lambdaPartition, cache)) {