@@ -855,6 +855,7 @@ struct StrangeCascTrack {
855855 histos.add (" MC/EvRec/EvCounter" , " Event Counter" , kTH1D , {{1 , 0 , 1 }});
856856 histos.add (" MC/EvRec/Mult" , " Event charged multiplicty (gen events with reco>=1)" , kTH1D , {{1600 , 0 , 3200 }});
857857 histos.add (" MC/EvRec/MultCent" , " Gen multiplicity vs reco centrality" , kTH2D , {{100 , 0 , 100 }, {1600 , 0 , 3200 }});
858+ histos.add (" MC/EvRec/Cent" , " FT0 Centality" , kTH1D , {axesConfig.axisMult });
858859 histos.add (" MC/EvRec/Xi" , " Xi" , kTH2D , {axesConfig.axisPt , axesConfig.axisMult }); // generated Xis in reco>=1
859860 histos.add (" MC/EvRec/PrimaryXi" , " Xi primaries" , kTH2D , {axesConfig.axisPt , axesConfig.axisMult }); // generated primary Xis in reco>=1
860861 histos.add (" MC/EvRec/PrimaryXiRapidity" , " Xi primaries in |y|" , kTH2D , {axesConfig.axisPt , axesConfig.axisMult }); // generated primary Xis in selected rapidity range in reco>=1
@@ -1048,6 +1049,8 @@ struct StrangeCascTrack {
10481049 // look at reco>= 1 for corrections
10491050 auto slicedRecColls = recColls.sliceBy (perMcCollision, genColl.globalIndex ());
10501051 bool recoCounter = false ;
1052+ int biggestNContribs = -1 ;
1053+ float bestCentrality = 100.5 ;
10511054 for (auto const & recColl : slicedRecColls) {
10521055 if (!isValidEvent (recColl, false ))
10531056 continue ; // from this point on - only gen events (and cascades from such events) that were reconstructed
@@ -1059,42 +1062,48 @@ struct StrangeCascTrack {
10591062 histos.fill (HIST (" MC/EvRec/Mult" ), genMult);
10601063 recoCounter = true ;
10611064 }
1062- // fill multiplicity-centrality distribution
1063- double recoMult = (doProcessIons) ? recColl.centFT0C () : recColl.centFT0M ();
1064- histos.fill (HIST (" MC/EvRec/MultCent" ), recoMult, genMult);
1065+ if (biggestNContribs < recColl.multPVTotalContributors ()) {
1066+ biggestNContribs = recColl.multPVTotalContributors ();
1067+ bestCentrality = (doProcessIons) ? recColl.centFT0C () : recColl.centFT0M ();
1068+ }
10651069 // look at generated cascades within reconstructed events
10661070 for (auto const & casc : slicedGenCascs) {
10671071 if (casc.straMCCollisionId () != genCollId)
10681072 continue ; // check for cascades belonging to the correct reco collision
10691073 double cascPt = casc.ptMC ();
10701074 if (isValidPDG (casc, " Xi" ))
1071- histos.fill (HIST (" MC/EvRec/Xi" ), cascPt, recoMult );
1075+ histos.fill (HIST (" MC/EvRec/Xi" ), cascPt, bestCentrality );
10721076 if (isValidPDG (casc, " Omega" ))
1073- histos.fill (HIST (" MC/EvRec/Omega" ), cascPt, recoMult );
1077+ histos.fill (HIST (" MC/EvRec/Omega" ), cascPt, bestCentrality );
10741078 if (casc.isPhysicalPrimary ()) {
10751079 if (isValidPDG (casc, " Xi" )) {
1076- histos.fill (HIST (" MC/EvRec/PrimaryXi" ), cascPt, recoMult );
1080+ histos.fill (HIST (" MC/EvRec/PrimaryXi" ), cascPt, bestCentrality );
10771081 if (std::abs (casc.rapidityMC (0 )) < selCuts.cutRapidity ) {
1078- histos.fill (HIST (" MC/EvRec/PrimaryXiRapidity" ), cascPt, recoMult );
1082+ histos.fill (HIST (" MC/EvRec/PrimaryXiRapidity" ), cascPt, bestCentrality );
10791083 if (casc.pdgCode () == PDG_t::kXiMinus )
1080- histos.fill (HIST (" MC/EvRec/PrimaryXiMinusRapidity" ), cascPt, recoMult );
1084+ histos.fill (HIST (" MC/EvRec/PrimaryXiMinusRapidity" ), cascPt, bestCentrality );
10811085 if (casc.pdgCode () == PDG_t::kXiPlusBar )
1082- histos.fill (HIST (" MC/EvRec/PrimaryXiPlusRapidity" ), cascPt, recoMult );
1086+ histos.fill (HIST (" MC/EvRec/PrimaryXiPlusRapidity" ), cascPt, bestCentrality );
10831087 }
10841088 }
10851089 if (isValidPDG (casc, " Omega" )) {
1086- histos.fill (HIST (" MC/EvRec/PrimaryOmega" ), cascPt, recoMult );
1090+ histos.fill (HIST (" MC/EvRec/PrimaryOmega" ), cascPt, bestCentrality );
10871091 if (std::abs (casc.rapidityMC (2 )) < selCuts.cutRapidity ) {
1088- histos.fill (HIST (" MC/EvRec/PrimaryOmegaRapidity" ), cascPt, recoMult );
1092+ histos.fill (HIST (" MC/EvRec/PrimaryOmegaRapidity" ), cascPt, bestCentrality );
10891093 if (casc.pdgCode () == PDG_t::kOmegaMinus )
1090- histos.fill (HIST (" MC/EvRec/PrimaryOmegaMinusRapidity" ), cascPt, recoMult );
1094+ histos.fill (HIST (" MC/EvRec/PrimaryOmegaMinusRapidity" ), cascPt, bestCentrality );
10911095 if (casc.pdgCode () == PDG_t::kOmegaPlusBar )
1092- histos.fill (HIST (" MC/EvRec/PrimaryOmegaPlusRapidity" ), cascPt, recoMult );
1096+ histos.fill (HIST (" MC/EvRec/PrimaryOmegaPlusRapidity" ), cascPt, bestCentrality );
10931097 }
10941098 }
10951099 }
10961100 }
10971101 }
1102+ // fill centrality exactly once for each rec gen event
1103+ if (biggestNContribs >= 0 ) {
1104+ histos.fill (HIST (" MC/EvRec/MultCent" ), bestCentrality, genMult);
1105+ histos.fill (HIST (" MC/EvRec/Cent" ), bestCentrality);
1106+ }
10981107 }
10991108 }
11001109
0 commit comments