@@ -99,24 +99,23 @@ struct TwoParticleCorrelationsMpi {
9999 SliceCache cache;
100100
101101 // Configuration
102- Configurable<float > cfgCutVertex{" cfgCutVertex" , 7 .0f , " Accepted z-vertex range" };
103- Configurable<float > cfgCutPt{" cfgCutPt" , 0 .5f , " Minimal pT for tracks" };
104- Configurable<float > cfgCutEta{" cfgCutEta" , 0 .8f , " Eta range for tracks" };
105- Configurable<std::pair<float , float >> cfgFlowPtRef{" cfgFlowPtRef" , {0 .5f , 3 .0f }, " Minimum and maximum pT for reference flow particles" };
106- Configurable<std::pair<float , float >> cfgFlowPtPOI{" cfgFlowPtPOI" , {0 .5f , 10 .0f }, " Minimum and maximum pT for particles of interest in flow correlations" };
107-
108- Configurable<int > cfgPtOrder{" cfgPtOrder" , 1 , " Only consider pairs for which pT,1 < pT,2 (0 = OFF, 1 = ON)" };
109- Configurable<int > cfgTriggerCharge{" cfgTriggerCharge" , 0 , " Select on charge of trigger particle: 0 = all; 1 = positive; -1 = negative" };
110- Configurable<int > cfgAssociatedCharge{" cfgAssociatedCharge" , 0 , " Select on charge of associated particle: 0 = all charged; 1 = positive; -1 = negative" };
111- Configurable<int > cfgPairCharge{" cfgPairCharge" , 0 , " Select on charge of particle pair: 0 = all; 1 = like sign; -1 = unlike sign" };
112- Configurable<int > cfgCorrelationMethod{" cfgCorrelationMethod" , 0 , " Correlation method, 0 = all, 1 = dd, 2 = ddbar" };
113-
114- Configurable<float > cfgTwoTrackCut{" cfgTwoTrackCut" , -1 , " Two track cut: -1 = off; >0 otherwise distance value (suggested: 0.02)" };
115- Configurable<float > cfgTwoTrackCutMinRadius{" cfgTwoTrackCutMinRadius" , 0 .8f , " Two track cut: radius in m from which two track cuts are applied" };
116- ;
117- Configurable<int > cfgLocalEfficiency{" cfgLocalEfficiency" , 0 , " 0 = OFF and 1 = ON for local efficiency" };
118- Configurable<bool > cfgDropStepRECO{" cfgDropStepRECO" , false , " choice to drop step RECO if efficiency correction is used" };
119- Configurable<int > cfgCentBinsForMC{" cfgCentBinsForMC" , 0 , " 0 = generated multiplicity; 1 = reconstructed multiplicity and all associated collisions" };
102+ struct : ConfigurableGroup {
103+ Configurable<float > cfgCutVertex{" cfgCutVertex" , 7 .0f , " Accepted z-vertex range" };
104+ Configurable<float > cfgCutPt{" cfgCutPt" , 0 .5f , " Minimal pT for tracks" };
105+ Configurable<float > cfgCutEta{" cfgCutEta" , 0 .8f , " Eta range for tracks" };
106+ Configurable<std::pair<float , float >> cfgFlowPtRef{" cfgFlowPtRef" , {0 .5f , 3 .0f }, " Minimum and maximum pT for reference flow particles" };
107+ Configurable<std::pair<float , float >> cfgFlowPtPOI{" cfgFlowPtPOI" , {0 .5f , 10 .0f }, " Minimum and maximum pT for particles of interest in flow correlations" };
108+ Configurable<int > cfgPtOrder{" cfgPtOrder" , 1 , " Only consider pairs for which pT,1 < pT,2 (0 = OFF, 1 = ON)" };
109+ Configurable<int > cfgTriggerCharge{" cfgTriggerCharge" , 0 , " Select on charge of trigger particle: 0 = all; 1 = positive; -1 = negative" };
110+ Configurable<int > cfgAssociatedCharge{" cfgAssociatedCharge" , 0 , " Select on charge of associated particle: 0 = all charged; 1 = positive; -1 = negative" };
111+ Configurable<int > cfgPairCharge{" cfgPairCharge" , 0 , " Select on charge of particle pair: 0 = all; 1 = like sign; -1 = unlike sign" };
112+ Configurable<int > cfgCorrelationMethod{" cfgCorrelationMethod" , 0 , " Correlation method, 0 = all, 1 = dd, 2 = ddbar" };
113+ Configurable<float > cfgTwoTrackCut{" cfgTwoTrackCut" , -1 , " Two track cut: -1 = off; >0 otherwise distance value (suggested: 0.02)" };
114+ Configurable<float > cfgTwoTrackCutMinRadius{" cfgTwoTrackCutMinRadius" , 0 .8f , " Two track cut: radius in m from which two track cuts are applied" };
115+ Configurable<int > cfgLocalEfficiency{" cfgLocalEfficiency" , 0 , " 0 = OFF and 1 = ON for local efficiency" };
116+ Configurable<bool > cfgDropStepRECO{" cfgDropStepRECO" , false , " choice to drop step RECO if efficiency correction is used" };
117+ Configurable<int > cfgCentBinsForMC{" cfgCentBinsForMC" , 0 , " 0 = generated multiplicity; 1 = reconstructed multiplicity and all associated collisions" };
118+ } cfgGeneral;
120119 Configurable<uint16_t > cfgTrackBitMask{" cfgTrackBitMask" , 0 , " BitMask for track selection systematics; refer to the enum TrackSelectionCuts in filtering task" };
121120 Configurable<uint16_t > cfgMultCorrelationsMask{" cfgMultCorrelationsMask" , 0 , " Selection bitmask for the multiplicity correlations. This should match the filter selection cfgEstimatorBitMask." };
122121 Configurable<std::string> cfgMultCutFormula{" cfgMultCutFormula" , " " , " Multiplicity correlations cut formula. A result greater than zero results in accepted event. Parameters: [cFT0C] FT0C centrality, [mFV0A] V0A multiplicity, [mGlob] global track multiplicity, [mPV] PV track multiplicity, [cFT0M] FT0M centrality" };
@@ -178,18 +177,18 @@ struct TwoParticleCorrelationsMpi {
178177 } cfgEventWeight;
179178
180179 // This filter is applied to AOD and derived data (column names are identical)
181- Filter collisionZVtxFilter = nabs(aod::collision::posZ) < cfgCutVertex;
180+ Filter collisionZVtxFilter = nabs(aod::collision::posZ) < cfgGeneral. cfgCutVertex;
182181 // This filter is only applied to AOD
183182 Filter collisionVertexTypeFilter = (aod::collision::flags & static_cast <uint16_t >(aod::collision::CollisionFlagsRun2::Run2VertexerTracks)) == static_cast <uint16_t >(aod::collision::CollisionFlagsRun2::Run2VertexerTracks);
184183
185184 // Track filters
186- Filter trackFilter = (nabs(aod::track::eta) < cfgCutEta) && (aod::track::pt > cfgCutPt) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t )true ));
187- Filter cfTrackFilter = (nabs(aod::cftrack::eta) < cfgCutEta) && (aod::cftrack::pt > cfgCutPt) && ncheckbit(aod::track::trackType, as<uint8_t >(cfgTrackBitMask));
185+ Filter trackFilter = (nabs(aod::track::eta) < cfgGeneral. cfgCutEta) && (aod::track::pt > cfgGeneral. cfgCutPt) && ((requireGlobalTrackInFilter()) || (aod::track::isGlobalTrackSDD == (uint8_t )true ));
186+ Filter cfTrackFilter = (nabs(aod::cftrack::eta) < cfgGeneral. cfgCutEta) && (aod::cftrack::pt > cfgGeneral. cfgCutPt) && ncheckbit(aod::track::trackType, as<uint8_t >(cfgTrackBitMask));
188187
189188 // MC filters
190- Filter cfMCCollisionFilter = nabs(aod::mccollision::posZ) < cfgCutVertex;
191- Filter cfMCParticleFilter = (nabs(aod::cfmcparticle::eta) < cfgCutEta) && (aod::cfmcparticle::pt > cfgCutPt); // && (aod::cfmcparticle::sign != 0); //check the sign manually, some specials may be neutral
192- Filter mcParticleFilter = (nabs(aod::mcparticle::eta) < cfgCutEta) && (aod::mcparticle::pt > cfgCutPt);
189+ Filter cfMCCollisionFilter = nabs(aod::mccollision::posZ) < cfgGeneral. cfgCutVertex;
190+ Filter cfMCParticleFilter = (nabs(aod::cfmcparticle::eta) < cfgGeneral. cfgCutEta) && (aod::cfmcparticle::pt > cfgGeneral. cfgCutPt); // && (aod::cfmcparticle::sign != 0); //check the sign manually, some specials may be neutral
191+ Filter mcParticleFilter = (nabs(aod::mcparticle::eta) < cfgGeneral. cfgCutEta) && (aod::mcparticle::pt > cfgGeneral. cfgCutPt);
193192
194193 // Output definitions
195194 OutputObj<CorrelationContainer> same{" sameEvent" };
@@ -340,8 +339,8 @@ struct TwoParticleCorrelationsMpi {
340339 if (cfgUserAxis < NoUserAxis || cfgUserAxis > EventSeedAxis) {
341340 LOGF (fatal, " Unsupported cfgUserAxis=%d; use 0 (off), 1 (invariant mass), or 2 (event seed)" , cfgUserAxis.value );
342341 }
343- if (cfgCentBinsForMC < 0 || cfgCentBinsForMC > 1 ) {
344- LOGF (fatal, " Unsupported cfgCentBinsForMC=%d; use 0 (generated multiplicity), 1 (reconstructed multiplicity and all associated collisions)" , cfgCentBinsForMC.value );
342+ if (cfgGeneral. cfgCentBinsForMC < 0 || cfgGeneral. cfgCentBinsForMC > 1 ) {
343+ LOGF (fatal, " Unsupported cfgCentBinsForMC=%d; use 0 (generated multiplicity), 1 (reconstructed multiplicity and all associated collisions)" , cfgGeneral. cfgCentBinsForMC .value );
345344 }
346345 const int enabledDerivedSameProcesses = static_cast <int >(doprocessSameDerived) + static_cast <int >(doprocessSameDerivedCorrected) + static_cast <int >(doprocessSameDerivedMultSet) + static_cast <int >(doprocessSameDerivedMultSetCorrected);
347346 if (enabledDerivedSameProcesses > 1 ) {
@@ -526,7 +525,7 @@ struct TwoParticleCorrelationsMpi {
526525 registry.add (" trackcount_mixed" , " bin" , {HistType::kTH3F , {{maxMixBin + 2 , -2.5 , -0.5 + maxMixBin, " bin" }, {10 , -0.5 , 9.5 }, {10 , -0.5 , 9.5 }}});
527526 if (cfgFillAcceptanceWeights && !cfgAcceptanceRunByRun) {
528527 AxisSpec phiAxis{cfgAcceptancePhiBins, 0 ., o2::constants::math::TwoPI, " #varphi" };
529- AxisSpec etaAxis{cfgAcceptanceEtaBins, -cfgCutEta.value , cfgCutEta.value , " #eta" };
528+ AxisSpec etaAxis{cfgAcceptanceEtaBins, -cfgGeneral. cfgCutEta .value , cfgGeneral. cfgCutEta .value , " #eta" };
530529 mAcceptanceWeights = registry.add <TH3 >(" phi_eta_vtxz_ref" , " Reference-track acceptance;#varphi;#eta;z_{vtx} (cm)" , {HistType::kTH3D , {phiAxis, etaAxis, axisVertex}});
531530 }
532531
@@ -541,8 +540,8 @@ struct TwoParticleCorrelationsMpi {
541540 cfg.mPairCuts = true ;
542541 }
543542
544- if (cfgTwoTrackCut > 0 ) {
545- mPairCuts .SetTwoTrackCuts (cfgTwoTrackCut, cfgTwoTrackCutMinRadius);
543+ if (cfgGeneral. cfgTwoTrackCut > 0 ) {
544+ mPairCuts .SetTwoTrackCuts (cfgGeneral. cfgTwoTrackCut , cfgGeneral. cfgTwoTrackCutMinRadius );
546545 }
547546
548547 // --- OBJECT INIT ---
@@ -592,8 +591,8 @@ struct TwoParticleCorrelationsMpi {
592591 same.setObject (new CorrelationContainer (" sameEvent" , " sameEvent" , corrAxis, effAxis, userAxis));
593592 mixed.setObject (new CorrelationContainer (" mixedEvent" , " mixedEvent" , corrAxis, effAxis, userMixingAxis));
594593
595- same->setTrackEtaCut (cfgCutEta);
596- mixed->setTrackEtaCut (cfgCutEta);
594+ same->setTrackEtaCut (cfgGeneral. cfgCutEta );
595+ mixed->setTrackEtaCut (cfgGeneral. cfgCutEta );
597596
598597 if (!cfgEfficiencyAssociated.value .empty ()) {
599598 efficiencyAssociatedCache.reserve (512 );
@@ -619,8 +618,8 @@ struct TwoParticleCorrelationsMpi {
619618 name, range.first , range.second , ptAxisSpec.binEdges .front (), ptAxisSpec.binEdges .back ());
620619 }
621620 };
622- validateFlowPtRange (cfgFlowPtRef.value , " cfgFlowPtRef" );
623- validateFlowPtRange (cfgFlowPtPOI.value , " cfgFlowPtPOI" );
621+ validateFlowPtRange (cfgGeneral. cfgFlowPtRef .value , " cfgFlowPtRef" );
622+ validateFlowPtRange (cfgGeneral. cfgFlowPtPOI .value , " cfgFlowPtPOI" );
624623 const int nPtBins = static_cast <int >(ptAxisSpec.binEdges .size ()) - 1 ;
625624 fPtAxis = std::make_unique<TAxis>(nPtBins, ptAxisSpec.binEdges .data ());
626625 if (cfgRegions->GetSize () < 0 ) {
@@ -806,7 +805,7 @@ struct TwoParticleCorrelationsMpi {
806805 }
807806
808807 // Fill the nominal sums
809- if (std::abs (track.eta ()) < cfgCutEta) {
808+ if (std::abs (track.eta ()) < cfgGeneral. cfgCutEta ) {
810809 flowPtContainer->fill (weff, track.pt ());
811810 }
812811
@@ -842,7 +841,7 @@ struct TwoParticleCorrelationsMpi {
842841 }
843842
844843 AxisSpec phiAxis{cfgAcceptancePhiBins, 0 ., o2::constants::math::TwoPI, " #varphi" };
845- AxisSpec etaAxis{cfgAcceptanceEtaBins, -cfgCutEta.value , cfgCutEta.value , " #eta" };
844+ AxisSpec etaAxis{cfgAcceptanceEtaBins, -cfgGeneral. cfgCutEta .value , cfgGeneral. cfgCutEta .value , " #eta" };
846845 const std::string histogramName = Form (" %d/phi_eta_vtxz_ref" , runNumber);
847846 const auto histogram = registry.add <TH3 >(histogramName.c_str (), " Reference-track acceptance;#varphi;#eta;z_{vtx} (cm)" , {HistType::kTH3D , {phiAxis, etaAxis, axisVertex}});
848847 mAcceptanceWeightsByRun .emplace (runNumber, histogram);
@@ -862,8 +861,8 @@ struct TwoParticleCorrelationsMpi {
862861 template <DataType dt, typename TTrack>
863862 inline void fillGFW (const TTrack& track, const float & centMult, const double & posZ)
864863 {
865- const bool withinPtRef = track.pt () > cfgFlowPtRef->first && track.pt () < cfgFlowPtRef->second ;
866- const bool withinPtPOI = track.pt () > cfgFlowPtPOI->first && track.pt () < cfgFlowPtPOI->second ;
864+ const bool withinPtRef = track.pt () > cfgGeneral. cfgFlowPtRef ->first && track.pt () < cfgGeneral. cfgFlowPtRef ->second ;
865+ const bool withinPtPOI = track.pt () > cfgGeneral. cfgFlowPtPOI ->first && track.pt () < cfgGeneral. cfgFlowPtPOI ->second ;
867866 if (!withinPtRef && !withinPtPOI) {
868867 return ;
869868 }
@@ -1727,8 +1726,8 @@ struct TwoParticleCorrelationsMpi {
17271726 }
17281727 } else { // otherwise check the sign against the configuration
17291728 const int sign = getParticleSign (track1);
1730- if (cfgTriggerCharge != 0 ) {
1731- if (cfgTriggerCharge * sign < 0 ) {
1729+ if (cfgGeneral. cfgTriggerCharge != 0 ) {
1730+ if (cfgGeneral. cfgTriggerCharge * sign < 0 ) {
17321731 continue ;
17331732 }
17341733 } else if (sign == 0 ) {
@@ -1737,7 +1736,7 @@ struct TwoParticleCorrelationsMpi {
17371736 }
17381737 } else if constexpr (std::experimental::is_detected<HasSign, typename TTracks1::iterator>::value) {
17391738 // Check reco objects that have the sign attribute. There are no neutrals to deal with.
1740- if (cfgTriggerCharge != 0 && cfgTriggerCharge * track1.sign () < 0 ) {
1739+ if (cfgGeneral. cfgTriggerCharge != 0 && cfgGeneral. cfgTriggerCharge * track1.sign () < 0 ) {
17411740 continue ;
17421741 }
17431742 }
@@ -1837,22 +1836,22 @@ struct TwoParticleCorrelationsMpi {
18371836 }
18381837
18391838 if constexpr (std::experimental::is_detected<HasDecay, typename TTracks1::iterator>::value && std::experimental::is_detected<HasDecay, typename TTracks2::iterator>::value) {
1840- if (cfgCorrelationMethod == CorrelationMethod::Dd && track1.decay () != track2.decay ()) {
1839+ if (cfgGeneral. cfgCorrelationMethod == CorrelationMethod::Dd && track1.decay () != track2.decay ()) {
18411840 continue ;
18421841 }
1843- if (cfgCorrelationMethod == CorrelationMethod::Ddbar && track1.decay () == track2.decay ()) {
1842+ if (cfgGeneral. cfgCorrelationMethod == CorrelationMethod::Ddbar && track1.decay () == track2.decay ()) {
18441843 continue ;
18451844 }
18461845 }
18471846
1848- if (cfgPtOrder != 0 && track2.pt () >= track1.pt ()) {
1847+ if (cfgGeneral. cfgPtOrder != 0 && track2.pt () >= track1.pt ()) {
18491848 continue ;
18501849 }
18511850
18521851 if constexpr (std::experimental::is_detected<HasSign, typename TTracks2::iterator>::value || std::experimental::is_detected<HasPDGCode, typename TTracks2::iterator>::value) {
18531852 const int associatedSign = getParticleSign (track2);
1854- if (cfgAssociatedCharge != 0 ) {
1855- if (cfgAssociatedCharge * associatedSign < 0 ) {
1853+ if (cfgGeneral. cfgAssociatedCharge != 0 ) {
1854+ if (cfgGeneral. cfgAssociatedCharge * associatedSign < 0 ) {
18561855 continue ;
18571856 }
18581857 } else if (associatedSign == 0 ) { // mc particles come in neutrals, need to check explicitly
@@ -1862,7 +1861,7 @@ struct TwoParticleCorrelationsMpi {
18621861
18631862 if constexpr ((std::experimental::is_detected<HasSign, typename TTracks1::iterator>::value || std::experimental::is_detected<HasPDGCode, typename TTracks1::iterator>::value) &&
18641863 (std::experimental::is_detected<HasSign, typename TTracks2::iterator>::value || std::experimental::is_detected<HasPDGCode, typename TTracks2::iterator>::value)) {
1865- if (cfgPairCharge != 0 && cfgPairCharge * getParticleSign (track1) * getParticleSign (track2) < 0 ) {
1864+ if (cfgGeneral. cfgPairCharge != 0 && cfgGeneral. cfgPairCharge * getParticleSign (track1) * getParticleSign (track2) < 0 ) {
18661865 continue ;
18671866 }
18681867 }
@@ -1873,7 +1872,7 @@ struct TwoParticleCorrelationsMpi {
18731872 if (cfg.mPairCuts && mPairCuts .conversionCuts (track1, track2)) {
18741873 continue ;
18751874 }
1876- if (cfgTwoTrackCut > 0 && mPairCuts .twoTrackCut (track1, track2, magField)) {
1875+ if (cfgGeneral. cfgTwoTrackCut > 0 && mPairCuts .twoTrackCut (track1, track2, magField)) {
18771876 continue ;
18781877 }
18791878 }
@@ -1927,7 +1926,7 @@ struct TwoParticleCorrelationsMpi {
19271926 return ;
19281927 }
19291928 if (!cfgEfficiencyTrigger.value .empty ()) {
1930- if (cfgLocalEfficiency > 0 ) {
1929+ if (cfgGeneral. cfgLocalEfficiency > 0 ) {
19311930 TFile* fEfficiencyTrigger = TFile::Open (cfgEfficiencyTrigger.value .c_str (), " READ" );
19321931 cfg.mEfficiencyTrigger = dynamic_cast <THn*>(fEfficiencyTrigger ->Get (" ccdb_object" ));
19331932 } else {
@@ -1939,7 +1938,7 @@ struct TwoParticleCorrelationsMpi {
19391938 LOGF (info, " Loaded efficiency histogram for trigger particles from %s" , cfgEfficiencyTrigger.value .c_str ());
19401939 }
19411940 if (!cfgEfficiencyAssociated.value .empty ()) {
1942- if (cfgLocalEfficiency > 0 ) {
1941+ if (cfgGeneral. cfgLocalEfficiency > 0 ) {
19431942 TFile* fEfficiencyAssociated = TFile::Open (cfgEfficiencyAssociated.value .c_str (), " READ" );
19441943 cfg.mEfficiencyAssociated = dynamic_cast <THn*>(fEfficiencyAssociated ->Get (" ccdb_object" ));
19451944 } else {
@@ -2095,7 +2094,7 @@ struct TwoParticleCorrelationsMpi {
20952094 loadCcdbYieldTemplates (collision.timestamp ());
20962095
20972096 int field = 0 ;
2098- if (cfgTwoTrackCut > 0 ) {
2097+ if (cfgGeneral. cfgTwoTrackCut > 0 ) {
20992098 field = getMagneticField (collision.timestamp ());
21002099 }
21012100
@@ -2116,7 +2115,7 @@ struct TwoParticleCorrelationsMpi {
21162115 }
21172116
21182117 const bool hasEfficiency = (cfg.mEfficiencyAssociated != nullptr || cfg.mEfficiencyTrigger != nullptr );
2119- const bool fillReco = !(cfgDropStepRECO && hasEfficiency);
2118+ const bool fillReco = !(cfgGeneral. cfgDropStepRECO && hasEfficiency);
21202119 EventSeedEstimate seedEstimate;
21212120
21222121 if (cfgUserAxis == EventSeedAxis) {
@@ -2275,7 +2274,7 @@ struct TwoParticleCorrelationsMpi {
22752274 int bin = configurableBinningDerived.getBin (std::tuple (collision1.posZ (), multiplicity));
22762275 float eventWeight = 1 .0f / it.currentWindowNeighbours ();
22772276 int field = 0 ;
2278- if (cfgTwoTrackCut > 0 ) {
2277+ if (cfgGeneral. cfgTwoTrackCut > 0 ) {
22792278 field = getMagneticField (collision1.timestamp ());
22802279 }
22812280
@@ -2284,12 +2283,12 @@ struct TwoParticleCorrelationsMpi {
22842283 }
22852284
22862285 bool hasEfficiencyMixed = (cfg.mEfficiencyAssociated != nullptr || cfg.mEfficiencyTrigger != nullptr );
2287- bool fillRecoMixed = !(cfgDropStepRECO && hasEfficiencyMixed);
2286+ bool fillRecoMixed = !(cfgGeneral. cfgDropStepRECO && hasEfficiencyMixed);
22882287
22892288 if (it.isNewWindow ()) {
22902289 loadEfficiency (collision1.timestamp ());
22912290 hasEfficiencyMixed = (cfg.mEfficiencyAssociated != nullptr || cfg.mEfficiencyTrigger != nullptr );
2292- fillRecoMixed = !(cfgDropStepRECO && hasEfficiencyMixed);
2291+ fillRecoMixed = !(cfgGeneral. cfgDropStepRECO && hasEfficiencyMixed);
22932292
22942293 if (cfgUserAxis == EventSeedAxis) {
22952294 loadCcdbYieldTemplates (collision1.timestamp ());
@@ -2357,7 +2356,7 @@ struct TwoParticleCorrelationsMpi {
23572356 }
23582357
23592358 auto multiplicity = mcCollision.multiplicity ();
2360- if (cfgCentBinsForMC > 0 ) {
2359+ if (cfgGeneral. cfgCentBinsForMC > 0 ) {
23612360 if (collisions.size () == 0 ) {
23622361 return ;
23632362 }
@@ -2381,7 +2380,7 @@ struct TwoParticleCorrelationsMpi {
23812380 continue ;
23822381 }
23832382 const int sign = getParticleSign (mcParticle);
2384- if (sign == 0 || (cfgAssociatedCharge != 0 && cfgAssociatedCharge * sign < 0 )) {
2383+ if (sign == 0 || (cfgGeneral. cfgAssociatedCharge != 0 && cfgGeneral. cfgAssociatedCharge * sign < 0 )) {
23852384 continue ;
23862385 }
23872386 if (!cfgMcTriggerPDGs->empty () && std::find (cfgMcTriggerPDGs->begin (), cfgMcTriggerPDGs->end (), mcParticle.pdgCode ()) != cfgMcTriggerPDGs->end ()) {
@@ -2432,7 +2431,7 @@ struct TwoParticleCorrelationsMpi {
24322431 template <typename ... ParticleTypes>
24332432 void processMCMixedDerivedT (soa::Filtered<aod::CFMcCollisions> const & mcCollisions, soa::Filtered<aod::CFCollisionsWithLabel> const & collisions, ParticleTypes&&... particles)
24342433 {
2435- bool useMCMultiplicity = (cfgCentBinsForMC == 0 );
2434+ bool useMCMultiplicity = (cfgGeneral. cfgCentBinsForMC == 0 );
24362435 auto getMultiplicity =
24372436 [&collisions, &useMCMultiplicity, this ](auto & col) {
24382437 if (useMCMultiplicity) {
0 commit comments