Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 2 additions & 6 deletions PWGLF/DataModel/LFStrangenessTables.h
Original file line number Diff line number Diff line change
Expand Up @@ -659,12 +659,8 @@ DECLARE_SOA_TABLE(TraCascCollRefs, "AOD", "TRACASCCOLLREF", //! optional table t
DECLARE_SOA_TABLE(CascExtras, "AOD", "CASCEXTRA", //! optional table to refer to custom track extras
o2::soa::Index<>, cascdata::PosTrackExtraId, cascdata::NegTrackExtraId,
cascdata::BachTrackExtraId, o2::soa::Marker<1>);
DECLARE_SOA_TABLE(KFCascExtras, "AOD", "KFCASCEXTRA", //! optional table to refer to custom track extras
o2::soa::Index<>, cascdata::PosTrackExtraId, cascdata::NegTrackExtraId,
cascdata::BachTrackExtraId, o2::soa::Marker<2>);
DECLARE_SOA_TABLE(TraCascExtras, "AOD", "TRACASCEXTRA", //! optional table to refer to custom track extras
o2::soa::Index<>, cascdata::PosTrackExtraId, cascdata::NegTrackExtraId,
cascdata::BachTrackExtraId, cascdata::StrangeTrackExtraId);
DECLARE_SOA_TABLE(StraTrackExtras, "AOD", "STRATRACKEXTRAS", //! optional table to refer to custom track extras
o2::soa::Index<>, cascdata::StrangeTrackExtraId);

DECLARE_SOA_TABLE(StoredCascCores, "AOD", "CASCCORE", //! core information about decay, viable with AO2Ds or derived
cascdata::Sign, cascdata::MXi, cascdata::MOmega,
Expand Down
47 changes: 20 additions & 27 deletions PWGLF/TableProducer/strangederivedbuilder.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ struct strangederivedbuilder {
Produces<aod::DauTrackTPCPIDs> dauTrackTPCPIDs; // daughter track TPC PID
Produces<aod::V0Extras> v0Extras; // references DauTracks from V0s
Produces<aod::CascExtras> cascExtras; // references DauTracks from cascades
Produces<aod::KFCascExtras> kfcascExtras; // references DauTracks from KF cascades
Produces<aod::TraCascExtras> tracascExtras; // references DauTracks from tracked cascades
Produces<aod::StraTrackExtras> straTrackExtras; // references DauTracks from tracked cascades

//__________________________________________________
// cascade interlinks
Expand Down Expand Up @@ -302,27 +301,9 @@ struct strangederivedbuilder {
}
//__________________________________________________
// populate track references
for (auto const& casc : KFCascades) {
auto bachTrack = casc.bachelor_as<TracksWithExtra>();
auto v0 = casc.v0();
auto posTrack = v0.posTrack_as<TracksWithExtra>();
auto negTrack = v0.negTrack_as<TracksWithExtra>();
kfcascExtras(trackMap[posTrack.globalIndex()],
trackMap[negTrack.globalIndex()],
trackMap[bachTrack.globalIndex()]); // joinable with KFCascDatas
}
//__________________________________________________
// populate track references
for (auto const& casc : TraCascades) {
auto bachTrack = casc.bachelor_as<TracksWithExtra>();
auto v0 = casc.v0();
auto posTrack = v0.posTrack_as<TracksWithExtra>();
auto negTrack = v0.negTrack_as<TracksWithExtra>();
auto strangeTrack = casc.strangeTrack_as<TracksWithExtra>();
tracascExtras(trackMap[posTrack.globalIndex()],
trackMap[negTrack.globalIndex()],
trackMap[bachTrack.globalIndex()],
trackMap[strangeTrack.globalIndex()]); // joinable with TraCascDatas
straTrackExtras(trackMap[strangeTrack.globalIndex()]); // joinable with TraCascDatas
}
//__________________________________________________
// circle back and populate actual DauTrackExtra table
Expand All @@ -340,18 +321,16 @@ struct strangederivedbuilder {

using interlinkedCascades = soa::Join<aod::Cascades, aod::CascDataLink, aod::KFCascDataLink, aod::TraCascDataLink>;

void processCascadeInterlink(interlinkedCascades const& masterCascades, aod::CascIndices const& Cascades, aod::KFCascIndices const& KFCascades, aod::TraCascIndices const& TraCascades)
void processCascadeInterlinkTracked(interlinkedCascades const& masterCascades, aod::CascIndices const& Cascades, aod::TraCascIndices const& TraCascades)
{
// Standard to tracked
for (auto const& c : Cascades) {
int indexTracked = -1, indexKF = -1;
int indexTracked = -1;
if (c.has_cascade()) {
auto cascade = c.cascade_as<interlinkedCascades>();
indexTracked = cascade.traCascDataId();
indexKF = cascade.kfCascDataId();
}
cascToTraRefs(indexTracked);
cascToKFRefs(indexKF);
}
// Tracked to standard
for (auto const& c : TraCascades) {
Expand All @@ -362,7 +341,20 @@ struct strangederivedbuilder {
}
traToCascRefs(index);
}
// Tracked to KF
}

void processCascadeInterlinkKF(interlinkedCascades const& masterCascades, aod::CascIndices const& Cascades, aod::KFCascIndices const& KFCascades)
{
// Standard to KF
for (auto const& c : Cascades) {
int indexKF = -1;
if (c.has_cascade()) {
auto cascade = c.cascade_as<interlinkedCascades>();
indexKF = cascade.kfCascDataId();
}
cascToKFRefs(indexKF);
}
// KF to standard
for (auto const& c : KFCascades) {
int index = -1;
if (c.has_cascade()) {
Expand Down Expand Up @@ -392,7 +384,8 @@ struct strangederivedbuilder {
PROCESS_SWITCH(strangederivedbuilder, processCollisions, "Produce collisions (V0s + casc)", true);
PROCESS_SWITCH(strangederivedbuilder, processTrackExtrasV0sOnly, "Produce track extra information (V0s only)", true);
PROCESS_SWITCH(strangederivedbuilder, processTrackExtras, "Produce track extra information (V0s + casc)", true);
PROCESS_SWITCH(strangederivedbuilder, processCascadeInterlink, "Produce tables interconnecting cascades", true);
PROCESS_SWITCH(strangederivedbuilder, processCascadeInterlinkTracked, "Produce tables interconnecting cascades", false);
PROCESS_SWITCH(strangederivedbuilder, processCascadeInterlinkKF, "Produce tables interconnecting cascades", false);
PROCESS_SWITCH(strangederivedbuilder, processSimulation, "Produce simulated information", true);
};

Expand Down