@@ -66,6 +66,8 @@ namespace o2::aod
6666
6767using FemtoFullCollision =
6868 soa::Join<aod::Collisions, aod::EvSels, aod::Mults>::iterator;
69+ using FemtoFullCollisionCentPP =
70+ soa::Join<aod::Collisions, aod::EvSels, aod::CentFT0Ms, aod::Mults>::iterator;
6971using FemtoFullCollisionCentRun2 =
7072 soa::Join<aod::Collisions, aod::EvSels, aod::CentRun2V0Ms, aod::Mults>::iterator;
7173using FemtoFullCollisionCentRun3 =
@@ -456,10 +458,10 @@ struct FemtoUniverseProducerTask {
456458
457459 void init (InitContext&)
458460 {
459- if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == false ) {
461+ if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP ) == false && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == false ) {
460462 LOGF (fatal, " Neither processFullData nor processFullMC enabled. Please choose one." );
461463 }
462- if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == true ) {
464+ if ((doprocessFullData || doprocessTrackPhiData || doprocessTrackData || doprocessTrackV0 || doprocessTrackCascadeData || doprocessTrackD0mesonData || doprocessTrackCentRun2Data || doprocessTrackCentRun3Data || doprocessV0CentRun3Data || doprocessCascadeCentRun3Data || doprocessTrackDataCentPP ) == true && (doprocessFullMC || doprocessTrackMC || doprocessTrackMCTruth || doprocessTrackMCGen || doprocessTruthAndFullMC || doprocessFullMCCent) == true ) {
463465 LOGF (fatal,
464466 " Cannot enable process Data and process MC at the same time. "
465467 " Please choose one." );
@@ -809,6 +811,51 @@ struct FemtoUniverseProducerTask {
809811 return true ;
810812 }
811813
814+ template <bool isMC, typename CollisionType, typename TrackType>
815+ bool fillCollisionsCentPP (CollisionType const & col, TrackType const & tracks)
816+ {
817+ const auto vtxZ = col.posZ ();
818+ float mult = 0 ;
819+ int multNtr = 0 ;
820+ if (confIsRun3) {
821+ mult = col.centFT0M ();
822+ multNtr = col.multNTracksPV ();
823+ } else {
824+ mult = 0.5 * (col.multFV0M ()); // / For benchmarking on Run 2, V0M in
825+ // / FemtoUniverseRun2 is defined V0M/2
826+ multNtr = col.multTracklets ();
827+ }
828+ if (confEvtUseTPCmult) {
829+ multNtr = col.multTPC ();
830+ }
831+
832+ // check whether the basic event selection criteria are fulfilled
833+ // if the basic selection is NOT fulfilled:
834+ // in case of skimming run - don't store such collisions
835+ // in case of trigger run - store such collisions but don't store any
836+ // particle candidates for such collisions
837+ if (!colCuts.isSelected (col)) {
838+ return false ;
839+ } else {
840+ if (!confIsUsePileUp) {
841+ if (confDoSpher) {
842+ outputCollision (vtxZ, mult, multNtr, colCuts.computeSphericity (col, tracks), mMagField );
843+ } else {
844+ outputCollision (vtxZ, mult, multNtr, 2 , mMagField );
845+ }
846+ } else {
847+ if (confDoSpher && (!confEvNoSameBunchPileup || col.selection_bit (aod::evsel::kNoSameBunchPileup )) && (!confEvIsGoodZvtxFT0vsPV || col.selection_bit (aod::evsel::kIsGoodZvtxFT0vsPV )) && (!confEvIsVertexITSTPC || col.selection_bit (aod::evsel::kIsVertexITSTPC ))) {
848+ outputCollision (vtxZ, mult, multNtr, colCuts.computeSphericity (col, tracks), mMagField );
849+ } else {
850+ outputCollision (vtxZ, mult, multNtr, 2 , mMagField );
851+ }
852+ }
853+ colCuts.fillQA (col);
854+ return true ;
855+ }
856+ return true ;
857+ }
858+
812859 template <typename CollisionType, typename TrackType>
813860 void fillMCTruthCollisions (CollisionType const & col, TrackType const & tracks)
814861 {
@@ -1678,7 +1725,7 @@ struct FemtoUniverseProducerTask {
16781725 {
16791726 // get magnetic field for run
16801727 getMagneticFieldTesla (col.bc_as <aod::BCsWithTimestamps>());
1681- const double ir = 0 .0 ; // fetch IR
1728+ const double ir = 1 .0 ; // fetch IR
16821729 // fill the tables
16831730 const auto colcheck = fillCollisions<false >(col, tracks);
16841731 if (colcheck) {
@@ -1691,6 +1738,25 @@ struct FemtoUniverseProducerTask {
16911738 PROCESS_SWITCH (FemtoUniverseProducerTask, processTrackData,
16921739 " Provide experimental data for track track" , true );
16931740
1741+ void processTrackDataCentPP (aod::FemtoFullCollisionCentPP const & col,
1742+ aod::BCsWithTimestamps const &,
1743+ aod::FemtoFullTracks const & tracks)
1744+ {
1745+ // get magnetic field for run
1746+ getMagneticFieldTesla (col.bc_as <aod::BCsWithTimestamps>());
1747+ const double ir = 1.0 ; // fetch IR
1748+ // fill the tables
1749+ const auto colcheck = fillCollisionsCentPP<false >(col, tracks);
1750+ if (colcheck) {
1751+ if (confFillCollExt) {
1752+ fillCollisionsCentRun3ColExtra<false >(col, ir);
1753+ }
1754+ fillTracks<false >(tracks);
1755+ }
1756+ }
1757+ PROCESS_SWITCH (FemtoUniverseProducerTask, processTrackDataCentPP,
1758+ " Provide experimental data for track track" , true );
1759+
16941760 // using FilteredFemtoFullTracks = soa::Filtered<FemtoFullTracks>;
16951761 void processTrackPhiData (aod::FemtoFullCollision const & col,
16961762 aod::BCsWithTimestamps const &,
0 commit comments