@@ -936,6 +936,20 @@ struct Phik0shortanalysis {
936936 return true ;
937937 }
938938
939+ template <typename T>
940+ bool selectionPhi (const T& posTrack, const T& negTrack)
941+ {
942+ // To be possibly completed
943+ return !posTrack.empty () && !negTrack.empty ();
944+ }
945+
946+ template <typename T1, typename T2>
947+ bool selectionPhiWPDG (const T1& posTrack, const T1& negTrack, const T2& mcParticles)
948+ {
949+ // To be possibly completed
950+ return !posTrack.empty () && !negTrack.empty ();
951+ }
952+
939953 template <typename T1, typename T2>
940954 bool eventHasRecoPhi (const T1& posTracks, const T2& negTracks)
941955 {
@@ -1108,7 +1122,7 @@ struct Phik0shortanalysis {
11081122 }
11091123
11101124 template <typename T>
1111- bool isGenParticleCharged (const T& mcParticle)
1125+ bool selectionChargedGenParticle (const T& mcParticle)
11121126 {
11131127 if (!mcParticle.isPhysicalPrimary () || std::abs (mcParticle.eta ()) > trackConfigs.etaMax )
11141128 return false ;
@@ -2709,7 +2723,7 @@ struct Phik0shortanalysis {
27092723
27102724 if (fillMcPartsForAllReco) {
27112725 for (const auto & mcParticle : mcParticlesThisMcColl) {
2712- if (!isGenParticleCharged (mcParticle))
2726+ if (!selectionChargedGenParticle (mcParticle))
27132727 continue ;
27142728
27152729 mcEventHist.fill (HIST (" h6GenMCAllAssocRecoEtaDistribution" ), collision.posZ (), mcCollision.centFT0M (), mcParticle.eta (), mcParticle.phi (), kSpAll , kNoGenpTVar );
@@ -2745,7 +2759,7 @@ struct Phik0shortanalysis {
27452759 }
27462760
27472761 for (const auto & mcParticle : mcParticlesThisMcColl) {
2748- if (!isGenParticleCharged (mcParticle))
2762+ if (!selectionChargedGenParticle (mcParticle))
27492763 continue ;
27502764
27512765 int pid = fromPDGToEnum (mcParticle.pdgCode ());
@@ -3019,6 +3033,105 @@ struct Phik0shortanalysis {
30193033
30203034 PROCESS_SWITCH (Phik0shortanalysis, processPhiK0SPionMCClosure2D, " Process function for Phi-K0S and Phi-Pion Correlations in MCClosure2D" , false );
30213035
3036+ void processPhiK0SMixingEvent2D (SelCollisions const & collisions, FullTracks const & fullTracks, FullV0s const & V0s, V0DauTracks const &)
3037+ {
3038+ auto tracksV0sTuple = std::make_tuple (fullTracks, V0s);
3039+ Pair<SelCollisions, FullTracks, FullV0s, BinningTypeVertexCent> pairPhiK0S{binningOnVertexAndCent, cfgNoMixedEvents, -1 , collisions, tracksV0sTuple, &cache};
3040+
3041+ for (auto const & [collision1, tracks1, collision2, v0s2] : pairPhiK0S) {
3042+ float multiplicity = collision1.centFT0M ();
3043+
3044+ Partition<FullTracks> posMixTracks = aod::track::signed1Pt > trackConfigs.cfgCutCharge ;
3045+ posMixTracks.bindTable (tracks1);
3046+ Partition<FullTracks> negMixTracks = aod::track::signed1Pt < trackConfigs.cfgCutCharge ;
3047+ negMixTracks.bindTable (tracks1);
3048+
3049+ for (const auto & [posTrack1, negTrack1, v0] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posMixTracks, negMixTracks, v0s2))) {
3050+ if (!selectionTrackResonance<false >(posTrack1, true ) || !selectionPIDKaonpTdependent (posTrack1))
3051+ continue ;
3052+ if (!selectionTrackResonance<false >(negTrack1, true ) || !selectionPIDKaonpTdependent (negTrack1))
3053+ continue ;
3054+ if (posTrack1.globalIndex () == negTrack1.globalIndex ())
3055+ continue ;
3056+
3057+ ROOT::Math::PxPyPzMVector recPhi = recMother (posTrack1, negTrack1, massKa, massKa);
3058+ if (recPhi.Pt () < phiConfigs.minPhiPt )
3059+ continue ;
3060+ if (std::abs (recPhi.Rapidity ()) > deltaYConfigs.cfgYAcceptance )
3061+ continue ;
3062+
3063+ const auto & posDaughterTrack = v0.posTrack_as <V0DauTracks>();
3064+ const auto & negDaughterTrack = v0.negTrack_as <V0DauTracks>();
3065+
3066+ if (!selectionV0 (v0, posDaughterTrack, negDaughterTrack))
3067+ continue ;
3068+ if (v0Configs.cfgFurtherV0Selection && !furtherSelectionV0 (v0, collision2))
3069+ continue ;
3070+ if (std::abs (v0.yK0Short ()) > deltaYConfigs.cfgYAcceptance )
3071+ continue ;
3072+
3073+ float efficiencyPhiK0S = 1 .0f ;
3074+ if (applyEfficiency) {
3075+ efficiencyPhiK0S = effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ()) * effMapK0S->Interpolate (multiplicity, v0.pt (), v0.yK0Short ());
3076+ if (efficiencyPhiK0S == 0 )
3077+ efficiencyPhiK0S = 1 .0f ;
3078+ }
3079+ float weightPhiK0S = applyEfficiency ? 1 .0f / efficiencyPhiK0S : 1 .0f ;
3080+ mePhiK0SHist.fill (HIST (" h5PhiK0SMENewProc" ), v0.yK0Short () - recPhi.Rapidity (), multiplicity, v0.pt (), v0.mK0Short (), recPhi.M (), weightPhiK0S);
3081+ }
3082+ }
3083+ }
3084+
3085+ PROCESS_SWITCH (Phik0shortanalysis, processPhiK0SMixingEvent2D, " Process Mixed Event for Phi-K0S Analysis 2D" , false );
3086+
3087+ void processPhiPionMixingEvent2D (SelCollisions const & collisions, FullTracks const & fullTracks)
3088+ {
3089+ auto tracksTuple = std::make_tuple (fullTracks);
3090+ SameKindPair<SelCollisions, FullTracks, BinningTypeVertexCent> pairPhiPion{binningOnVertexAndCent, cfgNoMixedEvents, -1 , collisions, tracksTuple, &cache};
3091+
3092+ for (auto const & [collision1, tracks1, collision2, tracks2] : pairPhiPion) {
3093+ float multiplicity = collision1.centFT0M ();
3094+
3095+ Partition<FullTracks> posMixTracks = aod::track::signed1Pt > trackConfigs.cfgCutCharge ;
3096+ posMixTracks.bindTable (tracks1);
3097+ Partition<FullTracks> negMixTracks = aod::track::signed1Pt < trackConfigs.cfgCutCharge ;
3098+ negMixTracks.bindTable (tracks1);
3099+
3100+ for (const auto & [posTrack1, negTrack1, track] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posMixTracks, negMixTracks, tracks2))) {
3101+ if (!selectionTrackResonance<false >(posTrack1, true ) || !selectionPIDKaonpTdependent (posTrack1))
3102+ continue ;
3103+ if (!selectionTrackResonance<false >(negTrack1, true ) || !selectionPIDKaonpTdependent (negTrack1))
3104+ continue ;
3105+ if (posTrack1.globalIndex () == negTrack1.globalIndex ())
3106+ continue ;
3107+
3108+ ROOT::Math::PxPyPzMVector recPhi = recMother (posTrack1, negTrack1, massKa, massKa);
3109+ if (recPhi.Pt () < phiConfigs.minPhiPt )
3110+ continue ;
3111+ if (std::abs (recPhi.Rapidity ()) > deltaYConfigs.cfgYAcceptance )
3112+ continue ;
3113+
3114+ if (!selectionPion<true , false >(track, false ))
3115+ continue ;
3116+ if (std::abs (track.rapidity (massPi)) > deltaYConfigs.cfgYAcceptance )
3117+ continue ;
3118+
3119+ float efficiencyPhiPion = 1 .0f ;
3120+ if (applyEfficiency) {
3121+ efficiencyPhiPion = track.pt () < trackConfigs.pTToUseTOF ? effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ()) * effMapPionTPC->Interpolate (multiplicity, track.pt (), track.rapidity (massPi)) : effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ()) * effMapPionTPCTOF->Interpolate (multiplicity, track.pt (), track.rapidity (massPi));
3122+ if (efficiencyPhiPion == 0 )
3123+ efficiencyPhiPion = 1 .0f ;
3124+ }
3125+ float weightPhiPion = applyEfficiency ? 1 .0f / efficiencyPhiPion : 1 .0f ;
3126+ mePhiPionHist.fill (HIST (" h5PhiPiTPCMENewProc" ), track.rapidity (massPi) - recPhi.Rapidity (), multiplicity, track.pt (), track.tpcNSigmaPi (), recPhi.M (), weightPhiPion);
3127+ if (track.hasTOF ())
3128+ mePhiPionHist.fill (HIST (" h5PhiPiTOFMENewProc" ), track.rapidity (massPi) - recPhi.Rapidity (), multiplicity, track.pt (), track.tofNSigmaPi (), recPhi.M (), weightPhiPion);
3129+ }
3130+ }
3131+ }
3132+
3133+ PROCESS_SWITCH (Phik0shortanalysis, processPhiPionMixingEvent2D, " Process Mixed Event for Phi-Pion Analysis 2D" , false );
3134+
30223135 void processAllPartMC (MCCollisions const & mcCollisions, SimCollisions const & collisions, FullMCTracks const & fullMCTracks, FullMCV0s const & V0s, V0DauMCTracks const &, aod::McParticles const & mcParticles)
30233136 {
30243137
@@ -3253,104 +3366,125 @@ struct Phik0shortanalysis {
32533366
32543367 PROCESS_SWITCH (Phik0shortanalysis, processAllPartMC, " Process function for all particles (not for phi if triggered on it) in MC" , false );
32553368
3256- void processPhiK0SMixingEvent (SelCollisions const & collisions, FullTracks const & fullTracks, FullV0s const & V0s, V0DauTracks const &)
3369+ // New 2D analysis procedure
3370+ void processPhiK0SPionDeltayDeltaphiData2D (SelCollisions::iterator const & collision, FullTracks const & fullTracks, FullV0s const & V0s, V0DauTracks const &)
32573371 {
3258- auto tracksV0sTuple = std::make_tuple (fullTracks, V0s);
3259- Pair<SelCollisions, FullTracks, FullV0s, BinningTypeVertexCent> pairPhiK0S{binningOnVertexAndCent, cfgNoMixedEvents, -1 , collisions, tracksV0sTuple, &cache};
3372+ // Check if the event selection is passed
3373+ if (!acceptEventQA<false >(collision, true ))
3374+ return ;
32603375
3261- for ( auto const & [collision1, tracks1, collision2, v0s2] : pairPhiK0S) {
3262- float multiplicity = collision1. centFT0M ( );
3376+ float multiplicity = collision. centFT0M ();
3377+ dataEventHist. fill ( HIST ( " hMultiplicityPercent " ), multiplicity );
32633378
3264- Partition<FullTracks> posMixTracks = aod::track::signed1Pt > trackConfigs.cfgCutCharge ;
3265- posMixTracks.bindTable (tracks1);
3266- Partition<FullTracks> negMixTracks = aod::track::signed1Pt < trackConfigs.cfgCutCharge ;
3267- negMixTracks.bindTable (tracks1);
3379+ // Defining positive and negative tracks for phi reconstruction
3380+ auto posThisColl = posTracks->sliceByCached (aod::track::collisionId, collision.globalIndex (), cache);
3381+ auto negThisColl = negTracks->sliceByCached (aod::track::collisionId, collision.globalIndex (), cache);
32683382
3269- for (const auto & [posTrack1, negTrack1, v0] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posMixTracks, negMixTracks, v0s2))) {
3270- if (!selectionTrackResonance<false >(posTrack1, true ) || !selectionPIDKaonpTdependent (posTrack1))
3271- continue ;
3272- if (!selectionTrackResonance<false >(negTrack1, true ) || !selectionPIDKaonpTdependent (negTrack1))
3273- continue ;
3274- if (posTrack1.globalIndex () == negTrack1.globalIndex ())
3275- continue ;
3383+ if (!eventHasRecoPhi (posThisColl, negThisColl))
3384+ return ;
32763385
3277- ROOT::Math::PxPyPzMVector recPhi = recMother (posTrack1, negTrack1, massKa, massKa);
3278- if (recPhi.Pt () < phiConfigs.minPhiPt )
3279- continue ;
3280- if (std::abs (recPhi.Rapidity ()) > deltaYConfigs.cfgYAcceptance )
3281- continue ;
3386+ dataEventHist.fill (HIST (" hEventSelection" ), 4 ); // at least a Phi candidate in the event
32823387
3283- const auto & posDaughterTrack = v0. posTrack_as <V0DauTracks>() ;
3284- const auto & negDaughterTrack = v0. negTrack_as <V0DauTracks>() ;
3388+ bool isCountedPhi = false ;
3389+ bool isFilledhV0 = false ;
32853390
3286- if (!selectionV0 (v0, posDaughterTrack, negDaughterTrack))
3287- continue ;
3288- if (v0Configs.cfgFurtherV0Selection && !furtherSelectionV0 (v0, collision2))
3391+ // Loop over all positive tracks
3392+ for (const auto & track1 : posThisColl) {
3393+ if (!selectionTrackResonance<false >(track1, true ) || !selectionPIDKaonpTdependent (track1))
3394+ continue ; // topological and PID selection
3395+
3396+ dataPhiHist.fill (HIST (" hEta" ), track1.eta ());
3397+ dataPhiHist.fill (HIST (" hNsigmaKaonTPC" ), track1.tpcInnerParam (), track1.tpcNSigmaKa ());
3398+ dataPhiHist.fill (HIST (" hNsigmaKaonTOF" ), track1.tpcInnerParam (), track1.tofNSigmaKa ());
3399+
3400+ auto track1ID = track1.globalIndex ();
3401+
3402+ // Loop over all negative tracks
3403+ for (const auto & track2 : negThisColl) {
3404+ if (!selectionTrackResonance<false >(track2, true ) || !selectionPIDKaonpTdependent (track2))
3405+ continue ; // topological and PID selection
3406+
3407+ auto track2ID = track2.globalIndex ();
3408+ if (track2ID == track1ID)
3409+ continue ; // condition to avoid double counting of pair
3410+
3411+ ROOT::Math::PxPyPzMVector recPhi = recMother (track1, track2, massKa, massKa);
3412+ if (recPhi.Pt () < phiConfigs.minPhiPt || recPhi.Pt () > phiConfigs.maxPhiPt )
32893413 continue ;
3290- if (std::abs (v0. yK0Short ()) > deltaYConfigs.cfgYAcceptance )
3414+ if (std::abs (recPhi. Rapidity ()) > deltaYConfigs.cfgYAcceptance )
32913415 continue ;
32923416
3293- float efficiencyPhiK0S = 1 .0f ;
3417+ if (!isCountedPhi)
3418+ isCountedPhi = true ;
3419+
3420+ float efficiencyPhi = 1 .0f ;
32943421 if (applyEfficiency) {
3295- efficiencyPhiK0S = effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ()) * effMapK0S-> Interpolate (multiplicity, v0. pt (), v0. yK0Short ());
3296- if (efficiencyPhiK0S == 0 )
3297- efficiencyPhiK0S = 1 .0f ;
3422+ efficiencyPhi = effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ());
3423+ if (efficiencyPhi == 0 )
3424+ efficiencyPhi = 1 .0f ;
32983425 }
3299- float weightPhiK0S = applyEfficiency ? 1 .0f / efficiencyPhiK0S : 1 .0f ;
3300- mePhiK0SHist.fill (HIST (" h5PhiK0SMENewProc" ), v0.yK0Short () - recPhi.Rapidity (), multiplicity, v0.pt (), v0.mK0Short (), recPhi.M (), weightPhiK0S);
3301- }
3302- }
3303- }
3426+ float weightPhi = applyEfficiency ? 1 .0f / efficiencyPhi : 1 .0f ;
3427+ dataPhiHist.fill (HIST (" h3PhiDataNewProc" ), multiplicity, recPhi.Pt (), recPhi.M (), weightPhi);
33043428
3305- PROCESS_SWITCH (Phik0shortanalysis, processPhiK0SMixingEvent, " Process Mixed Event for Phi-K0S Analysis" , false );
3429+ // V0 already reconstructed by the builder
3430+ for (const auto & v0 : V0s) {
3431+ const auto & posDaughterTrack = v0.posTrack_as <V0DauTracks>();
3432+ const auto & negDaughterTrack = v0.negTrack_as <V0DauTracks>();
33063433
3307- void processPhiPionMixingEvent (SelCollisions const & collisions, FullTracks const & fullTracks)
3308- {
3309- auto tracksTuple = std::make_tuple (fullTracks);
3310- SameKindPair<SelCollisions, FullTracks, BinningTypeVertexCent> pairPhiPion{binningOnVertexAndCent, cfgNoMixedEvents, -1 , collisions, tracksTuple, &cache};
3434+ // Cut on V0 dynamic columns
3435+ if (!selectionV0 (v0, posDaughterTrack, negDaughterTrack))
3436+ continue ;
3437+ if (v0Configs.cfgFurtherV0Selection && !furtherSelectionV0 (v0, collision))
3438+ continue ;
33113439
3312- for (auto const & [collision1, tracks1, collision2, tracks2] : pairPhiPion) {
3313- float multiplicity = collision1.centFT0M ();
3440+ if (!isFilledhV0) {
3441+ dataK0SHist.fill (HIST (" hDCAV0Daughters" ), v0.dcaV0daughters ());
3442+ dataK0SHist.fill (HIST (" hV0CosPA" ), v0.v0cosPA ());
33143443
3315- Partition<FullTracks> posMixTracks = aod::track::signed1Pt > trackConfigs.cfgCutCharge ;
3316- posMixTracks.bindTable (tracks1);
3317- Partition<FullTracks> negMixTracks = aod::track::signed1Pt < trackConfigs.cfgCutCharge ;
3318- negMixTracks.bindTable (tracks1);
3444+ // Filling the PID of the V0 daughters in the region of the K0 peak
3445+ if (v0Configs.lowMK0S < v0.mK0Short () && v0.mK0Short () < v0Configs.upMK0S ) {
3446+ dataK0SHist.fill (HIST (" hNSigmaPosPionFromK0S" ), posDaughterTrack.tpcInnerParam (), posDaughterTrack.tpcNSigmaPi ());
3447+ dataK0SHist.fill (HIST (" hNSigmaNegPionFromK0S" ), negDaughterTrack.tpcInnerParam (), negDaughterTrack.tpcNSigmaPi ());
3448+ }
3449+ }
33193450
3320- for (const auto & [posTrack1, negTrack1, track] : o2::soa::combinations (o2::soa::CombinationsFullIndexPolicy (posMixTracks, negMixTracks, tracks2))) {
3321- if (!selectionTrackResonance<false >(posTrack1, true ) || !selectionPIDKaonpTdependent (posTrack1))
3322- continue ;
3323- if (!selectionTrackResonance<false >(negTrack1, true ) || !selectionPIDKaonpTdependent (negTrack1))
3324- continue ;
3325- if (posTrack1.globalIndex () == negTrack1.globalIndex ())
3326- continue ;
3451+ if (std::abs (v0.yK0Short ()) > deltaYConfigs.cfgYAcceptance )
3452+ continue ;
33273453
3328- ROOT::Math::PxPyPzMVector recPhi = recMother (posTrack1, negTrack1, massKa, massKa);
3329- if (recPhi.Pt () < phiConfigs.minPhiPt )
3330- continue ;
3331- if (std::abs (recPhi.Rapidity ()) > deltaYConfigs.cfgYAcceptance )
3332- continue ;
3454+ float efficiencyPhiK0S = 1 .0f ;
3455+ if (applyEfficiency) {
3456+ efficiencyPhiK0S = effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ()) * effMapK0S->Interpolate (multiplicity, v0.pt (), v0.yK0Short ());
3457+ if (efficiencyPhiK0S == 0 )
3458+ efficiencyPhiK0S = 1 .0f ;
3459+ }
3460+ float weightPhiK0S = applyEfficiency ? 1 .0f / efficiencyPhiK0S : 1 .0f ;
3461+ dataPhiK0SHist.fill (HIST (" h5PhiK0SData2PartCorr" ), multiplicity, recPhi.Pt (), v0.pt (), recPhi.Rapidity () - v0.yK0Short (), recPhi.Phi () - v0.phi (), weightPhiK0S);
3462+ }
33333463
3334- if (!selectionPion<true , false >(track, false ))
3335- continue ;
3336- if (std::abs (track.rapidity (massPi)) > deltaYConfigs.cfgYAcceptance )
3337- continue ;
3464+ isFilledhV0 = true ;
33383465
3339- float efficiencyPhiPion = 1 .0f ;
3340- if (applyEfficiency) {
3341- efficiencyPhiPion = track.pt () < trackConfigs.pTToUseTOF ? effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ()) * effMapPionTPC->Interpolate (multiplicity, track.pt (), track.rapidity (massPi)) : effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ()) * effMapPionTPCTOF->Interpolate (multiplicity, track.pt (), track.rapidity (massPi));
3342- if (efficiencyPhiPion == 0 )
3343- efficiencyPhiPion = 1 .0f ;
3466+ // Loop over all primary pion candidates
3467+ for (const auto & track : fullTracks) {
3468+ if (!selectionPion<true , false >(track, false ))
3469+ continue ;
3470+
3471+ if (std::abs (track.rapidity (massPi)) > deltaYConfigs.cfgYAcceptance )
3472+ continue ;
3473+
3474+ float efficiencyPhiPion = 1 .0f ;
3475+ if (applyEfficiency) {
3476+ efficiencyPhiPion = track.pt () < trackConfigs.pTToUseTOF ? effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ()) * effMapPionTPC->Interpolate (multiplicity, track.pt (), track.rapidity (massPi)) : effMapPhi->Interpolate (multiplicity, recPhi.Pt (), recPhi.Rapidity ()) * effMapPionTPCTOF->Interpolate (multiplicity, track.pt (), track.rapidity (massPi));
3477+ if (efficiencyPhiPion == 0 )
3478+ efficiencyPhiPion = 1 .0f ;
3479+ }
3480+ float weightPhiPion = applyEfficiency ? 1 .0f / efficiencyPhiPion : 1 .0f ;
3481+ dataPhiPionHist.fill (HIST (" h5PhiPiData2PartCorr" ), multiplicity, recPhi.Pt (), track.pt (), recPhi.Rapidity () - track.rapidity (massPi), recPhi.Phi () - track.phi (), weightPhiPion);
33443482 }
3345- float weightPhiPion = applyEfficiency ? 1 .0f / efficiencyPhiPion : 1 .0f ;
3346- mePhiPionHist.fill (HIST (" h5PhiPiTPCMENewProc" ), track.rapidity (massPi) - recPhi.Rapidity (), multiplicity, track.pt (), track.tpcNSigmaPi (), recPhi.M (), weightPhiPion);
3347- if (track.hasTOF ())
3348- mePhiPionHist.fill (HIST (" h5PhiPiTOFMENewProc" ), track.rapidity (massPi) - recPhi.Rapidity (), multiplicity, track.pt (), track.tofNSigmaPi (), recPhi.M (), weightPhiPion);
33493483 }
33503484 }
33513485 }
33523486
3353- PROCESS_SWITCH (Phik0shortanalysis, processPhiPionMixingEvent , " Process Mixed Event for Phi-Pion Analysis " , false );
3487+ PROCESS_SWITCH (Phik0shortanalysis, processPhiK0SPionDeltayDeltaphiData2D , " Process function for Phi-K0S and Phi- Pion Deltay and Deltaphi 2D Correlations in Data " , false );
33543488};
33553489
33563490WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments