1212// / \brief This task is for Normalized Factorial Moments Analysis: PRC 85, 044914 (2012), nucl-ex:1411.6083
1313// / \author Salman Malik
1414// / \author Balwan Singh
15+
1516#include " TRandom.h"
1617#include < TH1F.h>
1718
@@ -42,15 +43,15 @@ TH1D* tmpFqErr[6][5][52];
4243struct FactorialMomentsTask {
4344 Configurable<bool > applyCheckPtForRec{" applyCheckPtForRec" , false , " Apply checkpT for reconstructed tracks" };
4445 Configurable<bool > applyCheckPtForMC{" applyCheckPtForMC" , true , " Apply checkpT for MC-generated tracks" };
45- Configurable<Float_t > centralEta{" centralEta" , 0.9 , " eta limit for tracks" };
46- Configurable<Int_t > numPt{" numPt" , 5 , " number of pT bins" };
47- Configurable<Float_t > ptMin{" ptMin" , 0 .2f , " lower pT cut" };
48- Configurable<Float_t > dcaXY{" dcaXY" , 2 .4f , " DCA xy cut" };
49- Configurable<Float_t > dcaZ{" dcaZ" , 2 .0f , " DCA z cut" };
50- Configurable<Float_t> minTPCCls{ " minTPCCls " , 70 .0f , " minimum number of TPC clusters" };
51- Configurable<std::vector<Int_t >> centLimits{" centLimits" , {0 , 5 }, " centrality min and max" };
52- Configurable<std::vector<Float_t >> vertexXYZ{" vertexXYZ" , {0 .3f , 0 .4f , 10 .0f }, " vertex cuts" };
53- Configurable<std::vector<Float_t >> ptCuts{" ptCuts" , {0 .2f , 2 .0f }, " pT cuts" };
46+ Configurable<float > centralEta{" centralEta" , 0.9 , " eta limit for tracks" };
47+ Configurable<int > numPt{" numPt" , 5 , " number of pT bins" };
48+ Configurable<float > ptMin{" ptMin" , 0 .2f , " lower pT cut" };
49+ Configurable<float > dcaXY{" dcaXY" , 2 .4f , " DCA xy cut" };
50+ Configurable<float > dcaZ{" dcaZ" , 2 .0f , " DCA z cut" };
51+ Configurable<float > mintPCCls{ " mintPCCls " , 70 .0f , " minimum number of TPC clusters" };
52+ Configurable<std::vector<int >> centLimits{" centLimits" , {0 , 5 }, " centrality min and max" };
53+ Configurable<std::vector<float >> vertexXYZ{" vertexXYZ" , {0 .3f , 0 .4f , 10 .0f }, " vertex cuts" };
54+ Configurable<std::vector<float >> ptCuts{" ptCuts" , {0 .2f , 2 .0f }, " pT cuts" };
5455 Configurable<bool > isApplySameBunchPileup{" isApplySameBunchPileup" , true , " Enable SameBunchPileup cut" };
5556 Configurable<bool > isApplyGoodZvtxFT0vsPV{" isApplyGoodZvtxFT0vsPV" , true , " Enable GoodZvtxFT0vsPV cut" };
5657 Configurable<bool > isApplyVertexITSTPC{" isApplyVertexITSTPC" , true , " Enable VertexITSTPC cut" };
@@ -112,7 +113,7 @@ struct FactorialMomentsTask {
112113 {" mVertexZ" , " vertexZ" , {HistType::kTH1F , {{100 , -20 , 20 }}}},
113114 {" mEta" , " #eta" , {HistType::kTH1F , {{1000 , -2 , 2 }}}},
114115 {" mPt" , " #pt" , {HistType::kTH1F , {{1000 , -0.01 , 50 }}}},
115- {" mPhi" , " #phi" , {HistType::kTH1F , {{100 , 0 , TMath::TwoPi () }}}},
116+ {" mPhi" , " #phi" , {HistType::kTH1F , {{100 , 0 , o2::constants::math::TwoPI }}}},
116117 {" mEvents" , " events" , {HistType::kTH1D , {{5 , -0.5 , 4.5 }}}},
117118 {" mNFindableClsTPC" , " findable TPC clusters;findable clusters" , {HistType::kTH1F , {{100 , 0 , 200 }}}},
118119 {" mNClsTPC" , " number of clusters TPC; nClusters TPC" , {HistType::kTH1F , {{100 , 0 , 200 }}}},
@@ -135,18 +136,18 @@ struct FactorialMomentsTask {
135136 },
136137 OutputObjHandlingPolicy::AnalysisObject,
137138 true };
138- static const Int_t nBins = 52 ;
139+ static const int nBins = 52 ;
139140 double kMinCharge = 1e-6 ;
140- static const Int_t nfqOrder = 6 ;
141- Int_t countSamples = 0 ;
142- Int_t testc1 = 0 , testc2 = 0 , testc3 = 0 ;
143- std::array<Int_t , nBins> binningM;
144- std::array<Int_t , 5 > countTracks{0 , 0 , 0 , 0 , 0 };
145- std::array<std::array<std::array<Double_t , nBins>, 5 >, 6 > fqEvent;
146- std::array<std::array<std::array<Double_t , nBins>, 5 >, 6 > fqEventSampled;
147- std::array<std::array<Double_t , nBins>, 5 > binConEvent;
148- std::array<std::array<std::array<Double_t , nBins>, 5 >, 6 > binConEventSampled;
149- std::array<std::array<std::array<Double_t , nBins>, 5 >, 6 > errorFq = {{{{{0 , 0 , 0 , 0 , 0 }}}}};
141+ static const int nfqOrder = 6 ;
142+ int countSamples = 0 ;
143+ int testc1 = 0 , testc2 = 0 , testc3 = 0 ;
144+ std::array<int , nBins> binningM;
145+ std::array<int , 5 > countTracks{0 , 0 , 0 , 0 , 0 };
146+ std::array<std::array<std::array<double , nBins>, 5 >, 6 > fqEvent;
147+ std::array<std::array<std::array<double , nBins>, 5 >, 6 > fqEventSampled;
148+ std::array<std::array<double , nBins>, 5 > binConEvent;
149+ std::array<std::array<std::array<double , nBins>, 5 >, 6 > binConEventSampled;
150+ std::array<std::array<std::array<double , nBins>, 5 >, 6 > errorFq = {{{{{0 , 0 , 0 , 0 , 0 }}}}};
150151 std::vector<std::shared_ptr<TH2>> mHistArrReset ;
151152 std::vector<std::shared_ptr<TH1>> mHistArrQA ;
152153 std::vector<std::shared_ptr<TH1>> mFqBinFinal ;
@@ -185,22 +186,22 @@ struct FactorialMomentsTask {
185186 if (useMC) {
186187 auto mMcTrackSelected = std::get<std::shared_ptr<TH1>>(histos.add (" mMcTrackSelected" , " mcTrackSelection" , HistType::kTH1D , {{5 , 0.5 , 5.5 }}));
187188 }
188- for (Int_t iM = 0 ; iM < nBins; ++iM) {
189+ for (int iM = 0 ; iM < nBins; ++iM) {
189190 binningM[iM] = 2 * (iM + 2 );
190191 }
191- for (Int_t iPt = 0 ; iPt < numPt; ++iPt) {
192+ for (int iPt = 0 ; iPt < numPt; ++iPt) {
192193 mHistArrQA .push_back (std::get<std::shared_ptr<TH1>>(histos.add (Form (" bin%i/mEta" , iPt + 1 ), Form (" #eta for bin %.2f-%.2f;#eta" , ptCuts.value [2 * iPt], ptCuts.value [2 * iPt + 1 ]), HistType::kTH1F , {{1000 , -2 , 2 }})));
193194 mHistArrQA .push_back (std::get<std::shared_ptr<TH1>>(histos.add (Form (" bin%i/mPt" , iPt + 1 ), Form (" pT for bin %.2f-%.2f;pT" , ptCuts.value [2 * iPt], ptCuts.value [2 * iPt + 1 ]), HistType::kTH1F , {axisPt[iPt]})));
194- mHistArrQA .push_back (std::get<std::shared_ptr<TH1>>(histos.add (Form (" bin%i/mPhi" , iPt + 1 ), Form (" #phi for bin %.2f-%.2f;#phi" , ptCuts.value [2 * iPt], ptCuts.value [2 * iPt + 1 ]), HistType::kTH1F , {{1000 , 0 , 2 * TMath::Pi () }})));
195+ mHistArrQA .push_back (std::get<std::shared_ptr<TH1>>(histos.add (Form (" bin%i/mPhi" , iPt + 1 ), Form (" #phi for bin %.2f-%.2f;#phi" , ptCuts.value [2 * iPt], ptCuts.value [2 * iPt + 1 ]), HistType::kTH1F , {{1000 , 0 , o2::constants::math::TwoPI }})));
195196 mHistArrQA .push_back (std::get<std::shared_ptr<TH1>>(histos.add (Form (" bin%i/mMultiplicity" , iPt + 1 ), Form (" Multiplicity for bin %.2f-%.2f;Multiplicity" , ptCuts.value [2 * iPt], ptCuts.value [2 * iPt + 1 ]), HistType::kTH1F , {{1000 , 0 , 15000 }})));
196- for (Int_t iM = 0 ; iM < nBins; ++iM) {
197- auto mHistsR = std::get<std::shared_ptr<TH2>>(histos.add (Form (" bin%i/Reset/mEtaPhi%i" , iPt + 1 , iM), Form (" #eta#phi_%i for bin %.2f-%.2f;#eta;#phi" , iM, ptCuts.value [2 * iPt], ptCuts.value [2 * iPt + 1 ]), HistType::kTH2F , {{binningM[iM], -0.8 , 0.8 }, {binningM[iM], 0 , 2 * TMath::Pi () }}));
197+ for (int iM = 0 ; iM < nBins; ++iM) {
198+ auto mHistsR = std::get<std::shared_ptr<TH2>>(histos.add (Form (" bin%i/Reset/mEtaPhi%i" , iPt + 1 , iM), Form (" #eta#phi_%i for bin %.2f-%.2f;#eta;#phi" , iM, ptCuts.value [2 * iPt], ptCuts.value [2 * iPt + 1 ]), HistType::kTH2F , {{binningM[iM], -0.8 , 0.8 }, {binningM[iM], 0 , o2::constants::math::TwoPI }}));
198199 mHistArrReset .push_back (mHistsR );
199- for (Int_t iq = 0 ; iq < nfqOrder; ++iq) {
200+ for (int iq = 0 ; iq < nfqOrder; ++iq) {
200201 tmpFqErr[iq][iPt][iM] = new TH1D (Form (" tmpFqErr%i%i%i" , iq, iPt, iM), Form (" tmpFqErr%i%i%i" , iq, iPt, iM), 100 , 0 , 10 );
201202 }
202203 }
203- for (Int_t i = 0 ; i < nfqOrder; ++i) {
204+ for (int i = 0 ; i < nfqOrder; ++i) {
204205 auto mHistFq = std::get<std::shared_ptr<TH1>>(histos.add (Form (" mFinalFq%i_bin%i" , i + 2 , iPt + 1 ), Form (" Final F_%i for bin %.2f-%.2f;M" , i + 2 , ptCuts.value [2 * iPt], ptCuts.value [2 * iPt + 1 ]), HistType::kTH1F , {{nBins, -0.5 , nBins - 0.5 }}));
205206 mFqBinFinal .push_back (mHistFq );
206207 auto mHistAv = std::get<std::shared_ptr<TH1>>(histos.add (Form (" mFinalAvBin%i_bin%i" , i + 2 , iPt + 1 ), Form (" Final AvBin_%i for bin %.2f-%.2f;M" , i + 2 , ptCuts.value [2 * iPt], ptCuts.value [2 * iPt + 1 ]), HistType::kTH1F , {{nBins, -0.5 , nBins - 0.5 }}));
@@ -218,18 +219,18 @@ struct FactorialMomentsTask {
218219 template <typename T>
219220 void checkpT (const T& track)
220221 {
221- for (Int_t iPt = 0 ; iPt < numPt; ++iPt) {
222+ for (int iPt = 0 ; iPt < numPt; ++iPt) {
222223 if (track.pt () > ptCuts.value [2 * iPt] && track.pt () < ptCuts.value [2 * iPt + 1 ]) {
223224 float iphi = track.phi ();
224- iphi = gRandom ->Gaus (iphi, TMath::TwoPi () );
225+ iphi = gRandom ->Gaus (iphi, o2::constants::math::TwoPI );
225226 iphi = RecoDecay::constrainAngle (iphi);
226227
227228 mHistArrQA [iPt * 4 ]->Fill (track.eta ());
228229 mHistArrQA [iPt * 4 + 1 ]->Fill (track.pt ());
229230 mHistArrQA [iPt * 4 + 2 ]->Fill (track.phi ());
230231 countTracks[iPt]++;
231232
232- for (Int_t iM = 0 ; iM < nBins; ++iM) {
233+ for (int iM = 0 ; iM < nBins; ++iM) {
233234 mHistArrReset [iPt * nBins + iM]->Fill (track.eta (), track.phi ());
234235 }
235236 }
@@ -238,26 +239,26 @@ struct FactorialMomentsTask {
238239
239240 void calculateMoments (std::vector<std::shared_ptr<TH2>> hist)
240241 {
241- Double_t binContent = 0 ;
242+ double binContent = 0 ;
242243 countSamples++;
243- Bool_t compSample = kFALSE ;
244+ bool compSample = kFALSE ;
244245 if (countSamples == samplesize) {
245246 compSample = kTRUE ;
246247 countSamples = 0 ;
247248 }
248249 // Calculate the normalized factorial moments
249- for (Int_t iPt = 0 ; iPt < numPt; ++iPt) {
250- for (Int_t iM = 0 ; iM < nBins; ++iM) {
250+ for (int iPt = 0 ; iPt < numPt; ++iPt) {
251+ for (int iM = 0 ; iM < nBins; ++iM) {
251252 binContent = 0 ;
252- Double_t sumfqBin[6 ] = {0 };
253+ double sumfqBin[6 ] = {0 };
253254
254- for (Int_t iEta = 1 ; iEta <= hist[iPt * nBins + iM]->GetNbinsX (); ++iEta) {
255- for (Int_t iPhi = 1 ; iPhi <= hist[iPt * nBins + iM]->GetNbinsY (); ++iPhi) {
255+ for (int iEta = 1 ; iEta <= hist[iPt * nBins + iM]->GetNbinsX (); ++iEta) {
256+ for (int iPhi = 1 ; iPhi <= hist[iPt * nBins + iM]->GetNbinsY (); ++iPhi) {
256257 double binconVal = 0 ;
257258 binconVal = hist[iPt * nBins + iM]->GetBinContent (iEta, iPhi);
258259 binContent += binconVal;
259- for (Int_t iq = 0 ; iq < nfqOrder; ++iq) {
260- Double_t fqBin = 0 ;
260+ for (int iq = 0 ; iq < nfqOrder; ++iq) {
261+ double fqBin = 0 ;
261262 if (binconVal >= iq + 2 ) {
262263 fqBin = TMath::Factorial (binconVal) / (TMath::Factorial (binconVal - (iq + 2 )));
263264 }
@@ -268,10 +269,10 @@ struct FactorialMomentsTask {
268269 }
269270 }
270271 }
271- binConEvent[iPt][iM] = binContent / (TMath::Power (binningM[iM], 2 ));
272- for (Int_t iq = 0 ; iq < nfqOrder; ++iq) {
272+ binConEvent[iPt][iM] = binContent / (std::pow (binningM[iM], 2 ));
273+ for (int iq = 0 ; iq < nfqOrder; ++iq) {
273274 if (sumfqBin[iq] > 0 ) {
274- fqEvent[iq][iPt][iM] = sumfqBin[iq] / (TMath::Power (binningM[iM], 2 ));
275+ fqEvent[iq][iPt][iM] = sumfqBin[iq] / (std::pow (binningM[iM], 2 ));
275276 fqEventSampled[iq][iPt][iM] += fqEvent[iq][iPt][iM];
276277 }
277278 binConEventSampled[iq][iPt][iM] += binConEvent[iPt][iM];
@@ -280,10 +281,10 @@ struct FactorialMomentsTask {
280281 if (compSample) {
281282 mBinConFinalSampled [iPt * 6 + iq]->Fill (iM, binConEventSampled[iq][iPt][iM] / samplesize);
282283
283- double tmp = (fqEventSampled[iq][iPt][iM] / (samplesize)) / (TMath::Power (binConEventSampled[iq][iPt][iM] / (samplesize), (iq + 2 )));
284+ double tmp = (fqEventSampled[iq][iPt][iM] / (samplesize)) / (std::pow (binConEventSampled[iq][iPt][iM] / (samplesize), (iq + 2 )));
284285 mFqBinFinalSampled [iPt * 6 + iq]->Fill (iM, tmp);
285286 tmpFqErr[iq][iPt][iM]->Fill (tmp);
286- errorFq[iq][iPt][iM] += TMath::Power (fqEventSampled[iq][iPt][iM] / (samplesize), 2 );
287+ errorFq[iq][iPt][iM] += std::pow (fqEventSampled[iq][iPt][iM] / (samplesize), 2 );
287288 mFqError [iPt * 6 + iq]->SetBinContent (iM + 1 , 0 );
288289 mFqError [iPt * 6 + iq]->Fill (iM, tmpFqErr[iq][iPt][iM]->GetStdDev ());
289290
@@ -297,6 +298,7 @@ struct FactorialMomentsTask {
297298
298299 // write a template that takes coll and tracks from processRun3 and processMCRec
299300 using TracksFMs = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TrackSelection, aod::TracksDCA>>;
301+ Preslice<aod::McParticles> perMcCollision = aod::mcparticle::mcCollisionId;
300302 void processRun3 (soa::Filtered<soa::Join<aod::Collisions, aod::EvSels, aod::Mults, aod::CentFV0As, aod::CentFT0Ms, aod::CentFT0As, aod::CentFT0Cs>>::iterator const & coll, TracksFMs const & tracks)
301303 {
302304 // selection of events
@@ -353,22 +355,120 @@ struct FactorialMomentsTask {
353355 checkpT (track);
354356 }
355357 }
356- for (Int_t iPt = 0 ; iPt < numPt; ++iPt) {
358+ for (int iPt = 0 ; iPt < numPt; ++iPt) {
357359 if (countTracks[iPt] > 0 ) {
358360 mHistArrQA [iPt * 4 + 3 ]->Fill (countTracks[iPt]);
359361 }
360362 }
361363 calculateMoments (mHistArrReset );
362364 }
363365 PROCESS_SWITCH (FactorialMomentsTask, processRun3, " main process function" , false );
364- using EventSelection_Run2 = soa::Join<aod::EvSels, aod::Mults, aod::CentRun2V0Ms, aod::CentRun2SPDTrks>;
366+ using CollisionCandidateMCRec = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::CentFT0Cs>;
367+ using TracksMc = soa::Filtered<soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::McTrackLabels, aod::TrackSelection>>;
368+ void processMCRec (soa::Filtered<CollisionCandidateMCRec>::iterator const & coll, TracksMc const & colltracks, aod::McParticles const & mcParticles, aod::McCollisions const &)
369+ {
370+ if (!coll.has_mcCollision ()) {
371+ return ;
372+ }
373+ histos.fill (HIST (" mEventSelected" ), 0 );
374+ if (!coll.sel8 ()) {
375+ return ;
376+ }
377+ histos.fill (HIST (" mEventSelected" ), 1 );
378+ if (isApplySameBunchPileup && !coll.selection_bit (o2::aod::evsel::kNoSameBunchPileup )) {
379+ return ;
380+ }
381+ histos.fill (HIST (" mEventSelected" ), 2 );
382+ if (isApplyGoodZvtxFT0vsPV && !coll.selection_bit (o2::aod::evsel::kIsGoodZvtxFT0vsPV )) {
383+ return ;
384+ }
385+ histos.fill (HIST (" mEventSelected" ), 3 );
386+ if (isApplyVertexITSTPC && !coll.selection_bit (o2::aod::evsel::kIsVertexITSTPC )) {
387+ return ;
388+ }
389+ histos.fill (HIST (" mEventSelected" ), 4 );
390+ if (coll.centFT0C () < centLimits.value [0 ] || coll.centFT0C () > centLimits.value [1 ]) {
391+ return ;
392+ }
393+ histos.fill (HIST (" mEventSelected" ), 5 );
394+ histos.fill (HIST (" mVertexX" ), coll.posX ());
395+ histos.fill (HIST (" mVertexY" ), coll.posY ());
396+ histos.fill (HIST (" mVertexZ" ), coll.posZ ());
397+ histos.fill (HIST (" mCentFT0C" ), coll.centFT0C ());
398+ for (auto const & h : mHistArrReset ) {
399+ h->Reset ();
400+ }
401+ countTracks = {0 , 0 , 0 , 0 , 0 };
402+ fqEvent = {{{{{0 , 0 , 0 , 0 , 0 , 0 }}}}};
403+ binConEvent = {{{0 , 0 , 0 , 0 , 0 }}};
404+ for (auto const & track : colltracks) {
405+ // if (track.hasITS())
406+ // if (track.hasTPC())
407+ // if (track.isGlobalTrack()) {
408+ histos.fill (HIST (" mCollID" ), track.collisionId ());
409+ histos.fill (HIST (" mEta" ), track.eta ());
410+ histos.fill (HIST (" mPt" ), track.pt ());
411+ histos.fill (HIST (" mPhi" ), track.phi ());
412+ histos.fill (HIST (" mNFindableClsTPC" ), track.tpcNClsFindable ());
413+ histos.fill (HIST (" mNClsTPC" ), track.tpcNClsFound ());
414+ histos.fill (HIST (" mNClsITS" ), track.itsNCls ());
415+ histos.fill (HIST (" mChi2TPC" ), track.tpcChi2NCl ());
416+ histos.fill (HIST (" mChi2ITS" ), track.itsChi2NCl ());
417+ histos.fill (HIST (" mChi2TRD" ), track.trdChi2 ());
418+ histos.fill (HIST (" mDCAxy" ), track.dcaXY ());
419+ histos.fill (HIST (" mDCAx" ), track.dcaZ ());
420+ histos.fill (HIST (" mDCAxyPt" ), track.pt (), track.dcaXY ());
421+ histos.fill (HIST (" mDCAzPt" ), track.pt (), track.dcaZ ());
422+ histos.fill (HIST (" mNSharedClsTPC" ), track.tpcNClsShared ());
423+ histos.fill (HIST (" mCrossedRowsTPC" ), track.tpcNClsCrossedRows ());
424+ histos.fill (HIST (" mNFinClsminusCRows" ), track.tpcNClsFindableMinusCrossedRows ());
425+ histos.fill (HIST (" mNFractionShClsTPC" ), track.tpcFractionSharedCls ());
426+ histos.fill (HIST (" mSharedClsvsPt" ), track.pt (), track.tpcNClsShared ());
427+ histos.fill (HIST (" mSharedClsProbvsPt" ), track.pt (), track.tpcFractionSharedCls () / track.tpcNClsCrossedRows ());
428+ checkpT (track);
429+ // }
430+ }
431+ auto mcParts = mcParticles.sliceBy (perMcCollision, coll.mcCollision ().globalIndex ());
432+ for (auto const & mc : mcParts) {
433+ int pdgCode = mc.pdgCode ();
434+ auto pdgInfo = pdg->GetParticle (pdgCode);
435+ if (!pdgInfo) {
436+ continue ;
437+ }
438+ double charge = pdgInfo->Charge ();
439+ double physCharge = charge / 3.0 ;
440+ histos.fill (HIST (" mChargeBefore" ), physCharge);
441+ if (mc.isPhysicalPrimary () && std::abs (mc.eta ()) < centralEta && std::abs (physCharge) >= kMinCharge ) {
442+ histos.fill (HIST (" mChargeAfter" ), physCharge);
443+ histos.fill (HIST (" mEta" ), mc.eta ());
444+ histos.fill (HIST (" mPt" ), mc.pt ());
445+ histos.fill (HIST (" mPhi" ), mc.phi ());
446+ if (applyCheckPtForMC && !applyCheckPtForRec) {
447+ checkpT (mc);
448+ }
449+ }
450+ }
451+ for (auto iPt = 0 ; iPt < numPt; ++iPt) {
452+ // if (countTracks[iPt] > 0)countTracks = {0, 0, 0, 0, 0};
453+ if (countTracks[iPt] > 0 ) {
454+ mHistArrQA [iPt * 4 + 3 ]->Fill (countTracks[iPt]);
455+ }
456+ }
457+ histos.fill (HIST (" mEventSelected" ), 6 );
458+ // Calculate the normalized factorial moments
459+ calculateMoments (mHistArrReset );
460+ }
461+ PROCESS_SWITCH (FactorialMomentsTask, processMCRec, " main process function" , false );
462+ using EventSelectionrun2 = soa::Join<aod::EvSels, aod::Mults, aod::CentRun2V0Ms, aod::CentRun2SPDTrks>;
365463 using TracksRecSim = soa::Join<aod::Tracks, aod::TracksExtra, aod::TracksDCA, aod::TrackSelection, aod::McTrackLabels>;
366- using CollisionRecSim_Run2 = soa::Filtered<soa::Join<aod::Collisions, aod::McCollisionLabels, EventSelection_Run2 >>::iterator;
464+ using CollisionRecSimRun2 = soa::Filtered<soa::Join<aod::Collisions, aod::McCollisionLabels, EventSelectionrun2 >>::iterator;
367465 using BCsWithRun2Info = soa::Join<aod::BCs, aod::Run2BCInfos, aod::Timestamps>;
368- Preslice<aod::McParticles> perMcCollision = aod::mcparticle::mcCollisionId;
369- void processMcRun2 (CollisionRecSim_Run2 const & coll ,
466+ void processMcRun2 (CollisionRecSimRun2 const & coll,
467+ aod::BCs const &,
370468 TracksRecSim const & tracks,
371- aod::McParticles const & mcParticles)
469+ aod::McParticles const & mcParticles,
470+ aod::McCollisions const &,
471+ BCsWithRun2Info const &)
372472 {
373473 auto bc = coll.bc_as <BCsWithRun2Info>();
374474 if (!(bc.eventCuts () & BIT (aod::Run2EventCuts::kAliEventCutsAccepted ))) {
@@ -429,7 +529,7 @@ struct FactorialMomentsTask {
429529 }
430530 }
431531
432- for (Int_t iPt = 0 ; iPt < numPt; ++iPt) {
532+ for (int iPt = 0 ; iPt < numPt; ++iPt) {
433533 if (countTracks[iPt] > 0 ) {
434534 mHistArrQA [iPt * 4 + 3 ]->Fill (countTracks[iPt]);
435535 } else {
@@ -461,7 +561,7 @@ struct FactorialMomentsTask {
461561 fqEvent = {{{{{0 , 0 , 0 , 0 , 0 , 0 }}}}};
462562 binConEvent = {{{0 , 0 , 0 , 0 , 0 }}};
463563 for (auto const & track : tracks) {
464- if ((track.pt () < ptMin) || (!track.isGlobalTrack ()) || (track.tpcNClsFindable () < minTPCCls )) {
564+ if ((track.pt () < ptMin) || (!track.isGlobalTrack ()) || (track.tpcNClsFindable () < mintPCCls )) {
465565 continue ;
466566 }
467567 histos.fill (HIST (" mCollID" ), track.collisionId ());
@@ -486,7 +586,7 @@ struct FactorialMomentsTask {
486586 histos.fill (HIST (" mSharedClsProbvsPt" ), track.pt (), track.tpcFractionSharedCls () / track.tpcNClsCrossedRows ());
487587 checkpT (track);
488588 }
489- for (Int_t iPt = 0 ; iPt < numPt; ++iPt) {
589+ for (int iPt = 0 ; iPt < numPt; ++iPt) {
490590 if (countTracks[iPt] > 0 ) {
491591 mHistArrQA [iPt * 4 + 3 ]->Fill (countTracks[iPt]);
492592 } else {
0 commit comments