Skip to content

Commit 7e641fc

Browse files
authored
[PWGCF] Fix MC processing in FemtoDream (AliceO2Group#9367)
1 parent 15b9161 commit 7e641fc

File tree

1 file changed

+37
-35
lines changed

1 file changed

+37
-35
lines changed

PWGCF/FemtoDream/TableProducer/femtoDreamProducerTask.cxx

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -356,11 +356,11 @@ struct femtoDreamProducerTask {
356356
}
357357
}
358358

359-
template <bool isTrackOrV0, bool isV0Daughter, typename ParticleType>
359+
template <bool isTrackOrV0, bool hasItsPid, typename ParticleType>
360360
void fillDebugParticle(ParticleType const& particle)
361361
{
362362
if constexpr (isTrackOrV0) {
363-
if constexpr (isV0Daughter) {
363+
if constexpr (hasItsPid) {
364364
outputDebugParts(particle.sign(),
365365
(uint8_t)particle.tpcNClsFound(),
366366
particle.tpcNClsFindable(),
@@ -386,8 +386,15 @@ struct femtoDreamProducerTask {
386386
particle.tofNSigmaDe(),
387387
particle.tofNSigmaTr(),
388388
particle.tofNSigmaHe(),
389-
-999., -999., -999., -999., -999., -999., -999.,
390-
-999., -999., -999., -999., -999., -999., -999.);
389+
o2::analysis::femtoDream::itsSignal(particle),
390+
particle.itsNSigmaEl(),
391+
particle.itsNSigmaPi(),
392+
particle.itsNSigmaKa(),
393+
particle.itsNSigmaPr(),
394+
particle.itsNSigmaDe(),
395+
particle.itsNSigmaTr(),
396+
particle.itsNSigmaHe(),
397+
-999., -999., -999., -999., -999., -999.);
391398
} else {
392399
outputDebugParts(particle.sign(),
393400
(uint8_t)particle.tpcNClsFound(),
@@ -414,15 +421,8 @@ struct femtoDreamProducerTask {
414421
particle.tofNSigmaDe(),
415422
particle.tofNSigmaTr(),
416423
particle.tofNSigmaHe(),
417-
o2::analysis::femtoDream::itsSignal(particle),
418-
particle.itsNSigmaEl(),
419-
particle.itsNSigmaPi(),
420-
particle.itsNSigmaKa(),
421-
particle.itsNSigmaPr(),
422-
particle.itsNSigmaDe(),
423-
particle.itsNSigmaTr(),
424-
particle.itsNSigmaHe(),
425-
-999., -999., -999., -999., -999., -999.);
424+
-999., -999., -999., -999., -999., -999., -999.,
425+
-999., -999., -999., -999., -999., -999., -999.);
426426
}
427427
} else {
428428
outputDebugParts(-999., -999., -999., -999., -999., -999., -999.,
@@ -512,7 +512,7 @@ struct femtoDreamProducerTask {
512512
outputCollsMCLabels(-1);
513513
}
514514
}
515-
template <bool isMC, bool useCentrality, bool analysePbPb, typename V0Type, typename TrackType, typename TrackTypeWithItsPid, typename CollisionType>
515+
template <bool isMC, bool hasItsPid, bool useCentrality, bool analysePbPb, typename CollisionType, typename TrackType, typename TrackTypeWithItsPid, typename V0Type>
516516
void fillCollisionsAndTracksAndV0(CollisionType const& col, TrackType const& tracks, TrackTypeWithItsPid const& tracksWithItsPid, V0Type const& fullV0s)
517517
{
518518
// If triggering is enabled, select only events which were triggered wit our triggers
@@ -578,11 +578,7 @@ struct femtoDreamProducerTask {
578578
trackCuts.fillQA<aod::femtodreamparticle::ParticleType::kTrack, aod::femtodreamparticle::TrackType::kNoChild>(track);
579579
// the bit-wise container of the systematic variations is obtained
580580
std::array<o2::aod::femtodreamparticle::cutContainerType, 2> cutContainer;
581-
if (ConfUseItsPid.value) {
582-
cutContainer = trackCuts.getCutContainer<true, aod::femtodreamparticle::cutContainerType>(track, track.pt(), track.eta(), sqrtf(powf(track.dcaXY(), 2.f) + powf(track.dcaZ(), 2.f)));
583-
} else {
584-
cutContainer = trackCuts.getCutContainer<false, aod::femtodreamparticle::cutContainerType>(track, track.pt(), track.eta(), sqrtf(powf(track.dcaXY(), 2.f) + powf(track.dcaZ(), 2.f)));
585-
}
581+
cutContainer = trackCuts.getCutContainer<hasItsPid, aod::femtodreamparticle::cutContainerType>(track, track.pt(), track.eta(), sqrtf(powf(track.dcaXY(), 2.f) + powf(track.dcaZ(), 2.f)));
586582

587583
// now the table is filled
588584
outputParts(outputCollision.lastIndex(),
@@ -595,7 +591,7 @@ struct femtoDreamProducerTask {
595591
track.dcaXY(), childIDs, 0, 0);
596592
tmpIDtrack.push_back(track.globalIndex());
597593
if (ConfIsDebug.value) {
598-
fillDebugParticle<true, false>(track);
594+
fillDebugParticle<true, hasItsPid>(track);
599595
}
600596

601597
if constexpr (isMC) {
@@ -707,9 +703,9 @@ struct femtoDreamProducerTask {
707703
v0.mLambda(),
708704
v0.mAntiLambda());
709705
if (ConfIsDebug.value) {
710-
fillDebugParticle<true, true>(postrack); // QA for positive daughter
711-
fillDebugParticle<true, true>(negtrack); // QA for negative daughter
712-
fillDebugParticle<false, false>(v0); // QA for v0
706+
fillDebugParticle<true, false>(postrack); // QA for positive daughter
707+
fillDebugParticle<true, false>(negtrack); // QA for negative daughter
708+
fillDebugParticle<false, false>(v0); // QA for v0
713709
}
714710
if constexpr (isMC) {
715711
fillMCParticle(col, v0, o2::aod::femtodreamparticle::ParticleType::kV0);
@@ -794,7 +790,11 @@ struct femtoDreamProducerTask {
794790
// fill the tables
795791
auto tracksWithItsPid = soa::Attach<aod::FemtoFullTracks, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa,
796792
aod::pidits::ITSNSigmaPr, aod::pidits::ITSNSigmaDe, aod::pidits::ITSNSigmaTr, aod::pidits::ITSNSigmaHe>(tracks);
797-
fillCollisionsAndTracksAndV0<false, true, false>(col, tracks, tracksWithItsPid, fullV0s);
793+
if (ConfUseItsPid.value) {
794+
fillCollisionsAndTracksAndV0<false, true, true, false>(col, tracks, tracksWithItsPid, fullV0s);
795+
} else {
796+
fillCollisionsAndTracksAndV0<false, false, true, false>(col, tracks, tracks, fullV0s);
797+
}
798798
}
799799
PROCESS_SWITCH(femtoDreamProducerTask, processData,
800800
"Provide experimental data", true);
@@ -810,7 +810,11 @@ struct femtoDreamProducerTask {
810810
// fill the tables
811811
auto tracksWithItsPid = soa::Attach<aod::FemtoFullTracks, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa,
812812
aod::pidits::ITSNSigmaPr, aod::pidits::ITSNSigmaDe, aod::pidits::ITSNSigmaTr, aod::pidits::ITSNSigmaHe>(tracks);
813-
fillCollisionsAndTracksAndV0<false, false, false>(col, tracks, tracksWithItsPid, fullV0s);
813+
if (ConfUseItsPid.value) {
814+
fillCollisionsAndTracksAndV0<false, true, false, false>(col, tracks, tracksWithItsPid, fullV0s);
815+
} else {
816+
fillCollisionsAndTracksAndV0<false, false, false, false>(col, tracks, tracks, fullV0s);
817+
}
814818
}
815819
PROCESS_SWITCH(femtoDreamProducerTask, processData_noCentrality,
816820
"Provide experimental data without centrality information", false);
@@ -826,7 +830,11 @@ struct femtoDreamProducerTask {
826830
// fill the tables
827831
auto tracksWithItsPid = soa::Attach<aod::FemtoFullTracks, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa,
828832
aod::pidits::ITSNSigmaPr, aod::pidits::ITSNSigmaDe, aod::pidits::ITSNSigmaTr, aod::pidits::ITSNSigmaHe>(tracks);
829-
fillCollisionsAndTracksAndV0<false, true, true>(col, tracks, tracksWithItsPid, fullV0s);
833+
if (ConfUseItsPid.value) {
834+
fillCollisionsAndTracksAndV0<false, true, true, true>(col, tracks, tracksWithItsPid, fullV0s);
835+
} else {
836+
fillCollisionsAndTracksAndV0<false, false, true, true>(col, tracks, tracks, fullV0s);
837+
}
830838
}
831839
PROCESS_SWITCH(femtoDreamProducerTask, processData_CentPbPb,
832840
"Provide experimental data with centrality information for PbPb collisions", false);
@@ -841,9 +849,7 @@ struct femtoDreamProducerTask {
841849
// get magnetic field for run
842850
initCCDB_Mag_Trig(col.bc_as<aod::BCsWithTimestamps>());
843851
// fill the tables
844-
auto tracksWithItsPid = soa::Attach<soa::Join<aod::FemtoFullTracks, aod::McTrackLabels>, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa,
845-
aod::pidits::ITSNSigmaPr, aod::pidits::ITSNSigmaDe, aod::pidits::ITSNSigmaTr, aod::pidits::ITSNSigmaHe>(tracks);
846-
fillCollisionsAndTracksAndV0<true, true, false>(col, tracks, tracksWithItsPid, fullV0s);
852+
fillCollisionsAndTracksAndV0<false, false, true, false>(col, tracks, tracks, fullV0s);
847853
}
848854
PROCESS_SWITCH(femtoDreamProducerTask, processMC, "Provide MC data", false);
849855

@@ -857,9 +863,7 @@ struct femtoDreamProducerTask {
857863
// get magnetic field for run
858864
initCCDB_Mag_Trig(col.bc_as<aod::BCsWithTimestamps>());
859865
// fill the tables
860-
auto tracksWithItsPid = soa::Attach<soa::Join<aod::FemtoFullTracks, aod::McTrackLabels>, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa,
861-
aod::pidits::ITSNSigmaPr, aod::pidits::ITSNSigmaDe, aod::pidits::ITSNSigmaTr, aod::pidits::ITSNSigmaHe>(tracks);
862-
fillCollisionsAndTracksAndV0<true, false, false>(col, tracks, tracksWithItsPid, fullV0s);
866+
fillCollisionsAndTracksAndV0<true, false, false, false>(col, tracks, tracks, fullV0s);
863867
}
864868
PROCESS_SWITCH(femtoDreamProducerTask, processMC_noCentrality, "Provide MC data without requiring a centrality calibration", false);
865869

@@ -873,9 +877,7 @@ struct femtoDreamProducerTask {
873877
// get magnetic field for run
874878
initCCDB_Mag_Trig(col.bc_as<aod::BCsWithTimestamps>());
875879
// fill the tables
876-
auto tracksWithItsPid = soa::Attach<soa::Join<aod::FemtoFullTracks, aod::McTrackLabels>, aod::pidits::ITSNSigmaEl, aod::pidits::ITSNSigmaPi, aod::pidits::ITSNSigmaKa,
877-
aod::pidits::ITSNSigmaPr, aod::pidits::ITSNSigmaDe, aod::pidits::ITSNSigmaTr, aod::pidits::ITSNSigmaHe>(tracks);
878-
fillCollisionsAndTracksAndV0<true, true, true>(col, tracks, tracksWithItsPid, fullV0s);
880+
fillCollisionsAndTracksAndV0<true, false, true, true>(col, tracks, tracks, fullV0s);
879881
}
880882
PROCESS_SWITCH(femtoDreamProducerTask, processMC_CentPbPb, "Provide MC data with centrality information for PbPb collisions", false);
881883
};

0 commit comments

Comments
 (0)