Skip to content

Commit 4f11e57

Browse files
authored
[PWGCF] Update producer in femto framework (#13894)
1 parent 71cc3b8 commit 4f11e57

File tree

7 files changed

+91
-66
lines changed

7 files changed

+91
-66
lines changed

PWGCF/Femto/Core/cascadeBuilder.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -379,26 +379,28 @@ class CascadeBuilder
379379
LOG(info) << "Initialization done...";
380380
}
381381

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

389-
int32_t bachelorIndex = 0;
390-
int32_t posDaughterIndex = 0;
391-
int32_t negDaughterIndex = 0;
389+
int64_t bachelorIndex = 0;
390+
int64_t posDaughterIndex = 0;
391+
int64_t negDaughterIndex = 0;
392392
for (const auto& cascade : fullCascades) {
393393
if (!mCascadeSelection.checkCandidate(cascade)) {
394394
continue;
395395
}
396396
mCascadeSelection.applySelections(cascade, fullTracks, col);
397397
if (mCascadeSelection.passesAllRequiredSelections()) {
398398

399-
auto bachelor = cascade.template bachelor_as<T5>();
400-
auto posDaughter = cascade.template posTrack_as<T5>();
401-
auto negDaughter = cascade.template negTrack_as<T5>();
399+
auto bachelor = cascade.template bachelor_as<T7>();
400+
auto posDaughter = cascade.template posTrack_as<T7>();
401+
auto negDaughter = cascade.template negTrack_as<T7>();
402+
403+
collisionBuilder.template fillCollision<system>(collisionProducts, col);
402404

403405
bachelorIndex = trackBuilder.template getDaughterIndex<modes::Track::kCascadeBachelor>(bachelor, trackProducts, collisionProducts, indexMap);
404406
posDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kV0Daughter>(posDaughter, trackProducts, collisionProducts, indexMap);

PWGCF/Femto/Core/collisionBuilder.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,11 @@ class CollisionBuilder
445445
if (!mFillAnyTable) {
446446
return;
447447
}
448+
449+
if (mCollisionAleadyFilled) {
450+
return;
451+
}
452+
448453
if (mProducedCollisions) {
449454
collisionProducts.producedCollision(col.posZ(),
450455
col.multNTracksPV(),
@@ -482,10 +487,18 @@ class CollisionBuilder
482487
collisionProducts.producedQns(utils::qn(col));
483488
}
484489
}
490+
491+
mCollisionAleadyFilled = true;
492+
}
493+
494+
void reset()
495+
{
496+
mCollisionAleadyFilled = false;
485497
}
486498

487499
private:
488500
CollisionSelection<HistName> mCollisionSelection;
501+
bool mCollisionAleadyFilled = false;
489502
Zorro mZorro;
490503
bool mUseTrigger = false;
491504
int mRunNumber = -1;

PWGCF/Femto/Core/kinkBuilder.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -396,8 +396,8 @@ class KinkBuilder
396396
LOG(info) << "Initialization done...";
397397
}
398398

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

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

434435
template <typename T1, typename T2, typename T3>
435-
void fillSigma(T1& collisionProducts, T2& kinkProducts, T3 const& kink, int daughterIndex)
436+
void fillSigma(T1& collisionProducts, T2& kinkProducts, T3 const& kink, int64_t daughterIndex)
436437
{
437438
float mass = kink.mSigmaMinus();
438439

@@ -489,7 +490,7 @@ class KinkBuilder
489490
}
490491

491492
template <typename T1, typename T2, typename T3>
492-
void fillSigmaPlus(T1& collisionProducts, T2& kinkProducts, T3 const& kink, int daughterIndex)
493+
void fillSigmaPlus(T1& collisionProducts, T2& kinkProducts, T3 const& kink, int64_t daughterIndex)
493494
{
494495
float mass = kink.mSigmaPlus();
495496

PWGCF/Femto/Core/trackBuilder.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -586,8 +586,8 @@ class TrackBuilder
586586
LOG(info) << "Initialization done...";
587587
}
588588

589-
template <typename T1, typename T2, typename T3, typename T4>
590-
void fillTracks(T1 const& tracks, T2& trackProducts, T3& collisionProducts, T4& indexMap)
589+
template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
590+
void fillTracks(T1 const& col, T2& collisionBuilder, T3& collisionProducts, T4 const& tracks, T5& trackProducts, T6& indexMap)
591591
{
592592
if (!mFillAnyTable) {
593593
return;
@@ -600,6 +600,8 @@ class TrackBuilder
600600
if (!mTrackSelection.passesAllRequiredSelections()) {
601601
continue;
602602
}
603+
604+
collisionBuilder.template fillCollision<system>(collisionProducts, col);
603605
this->fillTrack<modes::Track::kPrimaryTrack>(track, trackProducts, collisionProducts, indexMap);
604606
}
605607
}

PWGCF/Femto/Core/twoTrackResonanceBuilder.h

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -510,19 +510,19 @@ class TwoTrackResonanceBuilder
510510
LOG(info) << "Initialization done...";
511511
}
512512

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

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

528528
mTwoTrackResonanceSelection.reconstructResonance(posDaughter, negDaughter);
@@ -532,6 +532,9 @@ class TwoTrackResonanceBuilder
532532
mTwoTrackResonanceSelection.applySelections(posDaughter, negDaughter); // for resonances selection are only applied to daughter tracks
533533
int64_t posDaughterIndex = 0;
534534
int64_t negDaughterIndex = 0;
535+
536+
collisionBuilder.template fillCollision<system>(collisionProducts, col);
537+
535538
posDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kResonanceDaughter>(posDaughter, trackProducts, collisionProducts, indexMap);
536539
negDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kResonanceDaughter>(negDaughter, trackProducts, collisionProducts, indexMap);
537540

PWGCF/Femto/Core/v0Builder.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -371,8 +371,8 @@ class V0Builder
371371
LOG(info) << "Initialization done...";
372372
}
373373

374-
template <typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
375-
void fillV0s(T1& collisionProducts, T2& trackProducts, T3& v0products, T4 const& v0s, T5 const& tracks, T6& trackBuilder, T7& indexMap)
374+
template <modes::System system, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
375+
void fillV0s(T1 const& col, T2& collisionBuilder, T3& collisionProducts, T4& trackProducts, T5& v0products, T6 const& v0s, T7 const& tracks, T8& trackBuilder, T9& indexMap)
376376
{
377377
if (!mFillAnyTable) {
378378
return;
@@ -385,10 +385,14 @@ class V0Builder
385385
}
386386
mV0Selection.applySelections(v0, tracks);
387387
if (mV0Selection.passesAllRequiredSelections()) {
388-
auto posDaughter = v0.template posTrack_as<T5>();
389-
auto negDaughter = v0.template negTrack_as<T5>();
388+
auto posDaughter = v0.template posTrack_as<T7>();
389+
auto negDaughter = v0.template negTrack_as<T7>();
390+
391+
collisionBuilder.template fillCollision<system>(collisionProducts, col);
392+
390393
posDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kV0Daughter>(posDaughter, trackProducts, collisionProducts, indexMap);
391394
negDaughterIndex = trackBuilder.template getDaughterIndex<modes::Track::kV0Daughter>(negDaughter, trackProducts, collisionProducts, indexMap);
395+
392396
if constexpr (modes::isEqual(v0Type, modes::V0::kLambda)) {
393397
fillLambda(collisionProducts, v0products, v0, 1.f, posDaughterIndex, negDaughterIndex);
394398
}
@@ -403,7 +407,7 @@ class V0Builder
403407
}
404408

405409
template <typename T1, typename T2, typename T3>
406-
void fillLambda(T1& collisionProducts, T2& v0products, T3 const& v0, float sign, int32_t posDaughterIndex, int32_t negDaughterIndex)
410+
void fillLambda(T1& collisionProducts, T2& v0products, T3 const& v0, float sign, int64_t posDaughterIndex, int64_t negDaughterIndex)
407411
{
408412
float mass, massAnti;
409413
if (sign > 0.f) {
@@ -439,7 +443,7 @@ class V0Builder
439443
}
440444

441445
template <typename T1, typename T2, typename T3>
442-
void fillK0short(T1& collisionProducts, T2& v0products, T3 const& v0, int posDaughterIndex, int negDaughterIndex)
446+
void fillK0short(T1& collisionProducts, T2& v0products, T3 const& v0, int64_t posDaughterIndex, int64_t negDaughterIndex)
443447
{
444448
if (mProduceK0shorts) {
445449
v0products.producedK0shorts(collisionProducts.producedCollision.lastIndex(),

0 commit comments

Comments
 (0)