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
18 changes: 10 additions & 8 deletions PWGCF/Femto/Core/cascadeBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -379,26 +379,28 @@ class CascadeBuilder
LOG(info) << "Initialization done...";
}

template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
void fillCascades(T1& collisionProducts, T2& trackProducts, T3& cascadeProducts, T4 const& fullCascades, T5 const& fullTracks, T6 const& col, T7& trackBuilder, T8& indexMap)
template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
void fillCascades(T1 const& col, T2& collisionBuilder, T3& collisionProducts, T4& trackProducts, T5& cascadeProducts, T6 const& fullCascades, T7 const& fullTracks, T8& trackBuilder, T9& indexMap)
{
if (!mFillAnyTable) {
return;
}

int32_t bachelorIndex = 0;
int32_t posDaughterIndex = 0;
int32_t negDaughterIndex = 0;
int64_t bachelorIndex = 0;
int64_t posDaughterIndex = 0;
int64_t negDaughterIndex = 0;
for (const auto& cascade : fullCascades) {
if (!mCascadeSelection.checkCandidate(cascade)) {
continue;
}
mCascadeSelection.applySelections(cascade, fullTracks, col);
if (mCascadeSelection.passesAllRequiredSelections()) {

auto bachelor = cascade.template bachelor_as<T5>();
auto posDaughter = cascade.template posTrack_as<T5>();
auto negDaughter = cascade.template negTrack_as<T5>();
auto bachelor = cascade.template bachelor_as<T7>();
auto posDaughter = cascade.template posTrack_as<T7>();
auto negDaughter = cascade.template negTrack_as<T7>();

collisionBuilder.template fillCollision<system>(collisionProducts, col);

bachelorIndex = trackBuilder.template getDaughterIndex<modes::Track::kCascadeBachelor>(bachelor, trackProducts, collisionProducts, indexMap);
posDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kV0Daughter>(posDaughter, trackProducts, collisionProducts, indexMap);
Expand Down
13 changes: 13 additions & 0 deletions PWGCF/Femto/Core/collisionBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -445,6 +445,11 @@ class CollisionBuilder
if (!mFillAnyTable) {
return;
}

if (mCollisionAleadyFilled) {
return;
}

if (mProducedCollisions) {
collisionProducts.producedCollision(col.posZ(),
col.multNTracksPV(),
Expand Down Expand Up @@ -482,10 +487,18 @@ class CollisionBuilder
collisionProducts.producedQns(utils::qn(col));
}
}

mCollisionAleadyFilled = true;
}

void reset()
{
mCollisionAleadyFilled = false;
}

private:
CollisionSelection<HistName> mCollisionSelection;
bool mCollisionAleadyFilled = false;
Zorro mZorro;
bool mUseTrigger = false;
int mRunNumber = -1;
Expand Down
11 changes: 6 additions & 5 deletions PWGCF/Femto/Core/kinkBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -396,8 +396,8 @@ class KinkBuilder
LOG(info) << "Initialization done...";
}

template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
void fillKinks(T1& collisionProducts, T2& trackProducts, T3& kinkProducts, T4 const& kinks, T5 const& tracks, T6& trackBuilder, T7& indexMap)
template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
void fillKinks(T1 const& col, T2& collisionBuilder, T3& collisionProducts, T4& trackProducts, T5& kinkProducts, T6 const& kinks, T7 const& tracks, T8& trackBuilder, T9& indexMap)
{
if (!mFillAnyTable) {
return;
Expand All @@ -420,7 +420,8 @@ class KinkBuilder
continue;
}

auto daughter = kink.template trackDaug_as<T5>();
auto daughter = kink.template trackDaug_as<T7>();
collisionBuilder.template fillCollision<system>(collisionProducts, col);
daughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kKinkDaughter>(daughter, trackProducts, collisionProducts, indexMap);
if constexpr (modes::isEqual(kinkType, modes::Kink::kSigma)) {
fillSigma(collisionProducts, kinkProducts, kink, daughterIndex);
Expand All @@ -432,7 +433,7 @@ class KinkBuilder
}

template <typename T1, typename T2, typename T3>
void fillSigma(T1& collisionProducts, T2& kinkProducts, T3 const& kink, int daughterIndex)
void fillSigma(T1& collisionProducts, T2& kinkProducts, T3 const& kink, int64_t daughterIndex)
{
float mass = kink.mSigmaMinus();

Expand Down Expand Up @@ -489,7 +490,7 @@ class KinkBuilder
}

template <typename T1, typename T2, typename T3>
void fillSigmaPlus(T1& collisionProducts, T2& kinkProducts, T3 const& kink, int daughterIndex)
void fillSigmaPlus(T1& collisionProducts, T2& kinkProducts, T3 const& kink, int64_t daughterIndex)
{
float mass = kink.mSigmaPlus();

Expand Down
6 changes: 4 additions & 2 deletions PWGCF/Femto/Core/trackBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -586,8 +586,8 @@ class TrackBuilder
LOG(info) << "Initialization done...";
}

template <typename T1, typename T2, typename T3, typename T4>
void fillTracks(T1 const& tracks, T2& trackProducts, T3& collisionProducts, T4& indexMap)
template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
void fillTracks(T1 const& col, T2& collisionBuilder, T3& collisionProducts, T4 const& tracks, T5& trackProducts, T6& indexMap)
{
if (!mFillAnyTable) {
return;
Expand All @@ -600,6 +600,8 @@ class TrackBuilder
if (!mTrackSelection.passesAllRequiredSelections()) {
continue;
}

collisionBuilder.template fillCollision<system>(collisionProducts, col);
this->fillTrack<modes::Track::kPrimaryTrack>(track, trackProducts, collisionProducts, indexMap);
}
}
Expand Down
13 changes: 8 additions & 5 deletions PWGCF/Femto/Core/twoTrackResonanceBuilder.h
Original file line number Diff line number Diff line change
Expand Up @@ -510,19 +510,19 @@ class TwoTrackResonanceBuilder
LOG(info) << "Initialization done...";
}

template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
void fillResonances(T1& collisionProducts, T2& trackProducts, T3& resonanceProducts, T4& groupPositiveTracks, T5& groupNegativeTracks, T6& trackBuilder, T7& indexMap)
template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
void fillResonances(T1 const& col, T2& collisionBuilder, T3& collisionProducts, T4& trackProducts, T5& resonanceProducts, T6& groupPositiveTracks, T7& groupNegativeTracks, T8& trackBuilder, T9& indexMap)
{
if (!mFillAnyTable) {
return;
}
for (auto const& [positiveTrack, negativeTrack] : o2::soa::combinations(o2::soa::CombinationsFullIndexPolicy(groupPositiveTracks, groupNegativeTracks))) {
this->fillResonance(collisionProducts, trackProducts, resonanceProducts, positiveTrack, negativeTrack, trackBuilder, indexMap);
this->fillResonance<system>(col, collisionBuilder, collisionProducts, trackProducts, resonanceProducts, positiveTrack, negativeTrack, trackBuilder, indexMap);
}
}

template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
void fillResonance(T1& collisionProducts, T2& trackProducts, T3& resonanceProducts, T4 const& posDaughter, T4 const& negDaughter, T5& trackBuilder, T6& indexMap)
template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
void fillResonance(T1 const& col, T2& collisionBuilder, T3& collisionProducts, T4& trackProducts, T5& resonanceProducts, T6 const& posDaughter, T7 const& negDaughter, T8& trackBuilder, T9& indexMap)
{

mTwoTrackResonanceSelection.reconstructResonance(posDaughter, negDaughter);
Expand All @@ -532,6 +532,9 @@ class TwoTrackResonanceBuilder
mTwoTrackResonanceSelection.applySelections(posDaughter, negDaughter); // for resonances selection are only applied to daughter tracks
int64_t posDaughterIndex = 0;
int64_t negDaughterIndex = 0;

collisionBuilder.template fillCollision<system>(collisionProducts, col);

posDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kResonanceDaughter>(posDaughter, trackProducts, collisionProducts, indexMap);
negDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kResonanceDaughter>(negDaughter, trackProducts, collisionProducts, indexMap);

Expand Down
16 changes: 10 additions & 6 deletions PWGCF/Femto/Core/v0Builder.h
Original file line number Diff line number Diff line change
Expand Up @@ -371,8 +371,8 @@ class V0Builder
LOG(info) << "Initialization done...";
}

template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
void fillV0s(T1& collisionProducts, T2& trackProducts, T3& v0products, T4 const& v0s, T5 const& tracks, T6& trackBuilder, T7& indexMap)
template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
void fillV0s(T1 const& col, T2& collisionBuilder, T3& collisionProducts, T4& trackProducts, T5& v0products, T6 const& v0s, T7 const& tracks, T8& trackBuilder, T9& indexMap)
{
if (!mFillAnyTable) {
return;
Expand All @@ -385,10 +385,14 @@ class V0Builder
}
mV0Selection.applySelections(v0, tracks);
if (mV0Selection.passesAllRequiredSelections()) {
auto posDaughter = v0.template posTrack_as<T5>();
auto negDaughter = v0.template negTrack_as<T5>();
auto posDaughter = v0.template posTrack_as<T7>();
auto negDaughter = v0.template negTrack_as<T7>();

collisionBuilder.template fillCollision<system>(collisionProducts, col);

posDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kV0Daughter>(posDaughter, trackProducts, collisionProducts, indexMap);
negDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kV0Daughter>(negDaughter, trackProducts, collisionProducts, indexMap);

if constexpr (modes::isEqual(v0Type, modes::V0::kLambda)) {
fillLambda(collisionProducts, v0products, v0, 1.f, posDaughterIndex, negDaughterIndex);
}
Expand All @@ -403,7 +407,7 @@ class V0Builder
}

template <typename T1, typename T2, typename T3>
void fillLambda(T1& collisionProducts, T2& v0products, T3 const& v0, float sign, int32_t posDaughterIndex, int32_t negDaughterIndex)
void fillLambda(T1& collisionProducts, T2& v0products, T3 const& v0, float sign, int64_t posDaughterIndex, int64_t negDaughterIndex)
{
float mass, massAnti;
if (sign > 0.f) {
Expand Down Expand Up @@ -439,7 +443,7 @@ class V0Builder
}

template <typename T1, typename T2, typename T3>
void fillK0short(T1& collisionProducts, T2& v0products, T3 const& v0, int posDaughterIndex, int negDaughterIndex)
void fillK0short(T1& collisionProducts, T2& v0products, T3 const& v0, int64_t posDaughterIndex, int64_t negDaughterIndex)
{
if (mProduceK0shorts) {
v0products.producedK0shorts(collisionProducts.producedCollision.lastIndex(),
Expand Down
Loading
Loading