@@ -131,6 +131,7 @@ static constexpr TrackSelectionFlags::flagtype TrackSelectionDcaxyOnly =
131131AxisSpec axisEvent{10 , 0.5 , 10.5 , " #Event" , " EventAxis" };
132132AxisSpec axisVtxZ{40 , -20 , 20 , " Vertex Z" , " VzAxis" };
133133AxisSpec axisEta{40 , -2 , 2 , " #eta" , " EtaAxis" };
134+ AxisSpec axisEtaExtended{100 , -5 , 5 , " #eta" , " EtaAxisExtended" };
134135AxisSpec axisPhi{{0 , o2::constants::math::PIQuarter, o2::constants::math::PIHalf, o2::constants::math::PIQuarter * 3 ., o2::constants::math::PI, o2::constants::math::PIQuarter * 5 ., o2::constants::math::PIHalf * 3 ., o2::constants::math::PIQuarter * 7 ., o2::constants::math::TwoPI}, " #phi" , " PhiAxis" };
135136AxisSpec axisPhi2{629 , 0 , o2::constants::math::TwoPI, " #phi" };
136137AxisSpec axisCent{100 , 0 , 100 , " #Cent" };
@@ -178,6 +179,7 @@ struct HeavyionMultiplicity {
178179 ConfigurableAxis occupancyBin{" occupancyBin" , {VARIABLE_WIDTH, 0 , 500 , 1000 , 2000 , 5000 , 10000 }, " " };
179180 ConfigurableAxis centBinGen{" centBinGen" , {VARIABLE_WIDTH, 0 , 500 , 1000 , 2000 , 5000 , 10000 }, " " };
180181 ConfigurableAxis binsImpactPar{" binsImpactPar" , {VARIABLE_WIDTH, 0.0 , 3.00065 , 4.28798 , 6.14552 , 7.6196 , 8.90942 , 10.0897 , 11.2002 , 12.2709 , 13.3167 , 14.4173 , 23.2518 }, " Binning of the impact parameter axis" };
182+ ConfigurableAxis binsMult{" binsMult" , {500 , 0 .0f , +500 .0f }, " " };
181183
182184 Configurable<bool > isApplySameBunchPileup{" isApplySameBunchPileup" , true , " Enable SameBunchPileup cut" };
183185 Configurable<bool > isApplyGoodZvtxFT0vsPV{" isApplyGoodZvtxFT0vsPV" , true , " Enable GoodZvtxFT0vsPV cut" };
@@ -211,6 +213,7 @@ struct HeavyionMultiplicity {
211213 AxisSpec axisOccupancy = {occupancyBin, " occupancy" , " OccupancyAxis" };
212214 AxisSpec axisCentBinGen = {centBinGen, " GenCentrality" , " CentGenAxis" };
213215 AxisSpec impactParAxis = {binsImpactPar, " Impact Parameter" };
216+ AxisSpec multAxis = {binsMult, " Multiplicity #eta<0.5" };
214217
215218 histos.add (" EventHist" , " EventHist" , kTH1D , {axisEvent}, false );
216219 histos.add (" VtxZHist" , " VtxZHist" , kTH1D , {axisVtxZ}, false );
@@ -313,6 +316,22 @@ struct HeavyionMultiplicity {
313316 x->SetBinLabel (1 , " All MC events" );
314317 x->SetBinLabel (2 , " MC events with reco event after event selection" );
315318 x->SetBinLabel (3 , " MC events with no reco events" );
319+ histos.add (" hgendndetaVscentGenwithNOreco" , " dndeta vs impact parameter, gen events with no reco" , kTH2F , {axisEtaExtended, impactParAxis});
320+ histos.add (" hgendndetaVscentGenwithReco" , " dndeta vs impact parameter, gen events with at least one reco" , kTH2F , {axisEtaExtended, impactParAxis});
321+
322+ histos.add (" hMultEta05GenwithNoreco" , " multiplicity in eta<0.5 of generated MC events, with no recoevent" , kTH1F , {multAxis});
323+ histos.add (" hMultEta05Gen" , " multiplicity in eta<0.5 of generated MC events" , kTH1F , {multAxis});
324+ histos.add (" hMultEta05Rec" , " multiplicity in eta<0.5 of selected MC events" , kTH1F , {multAxis});
325+ histos.add (" hMultEta05vsCentrRec" , " multiplicity in eta<0.5 of selected MC events vs centrality" , kTH2F , {axisCent, multAxis});
326+ histos.add (" hgendndetaVsMultEta05BeforeEvtSel" , " hgendndetaBeforeEvtSel vs multiplicity in eta<0.5" , kTH2F , {axisEta, multAxis});
327+ histos.add (" hgendndetaVsMultEta05AfterEvtSel" , " hgendndetaAfterEvtSel vs multiplicity in eta<0.5" , kTH2F , {axisEta, multAxis});
328+
329+ histos.add (" hMultGen" , " multiplicity of generated MC events" , kTH1F , {axisFt0cMult});
330+ histos.add (" hMultRec" , " multiplicity of selected MC events" , kTH1F , {axisFt0cMult});
331+ histos.add (" hMultvsCentrRec" , " multiplicity of selected MC events vs centrality" , kTH2F , {axisCent, axisFt0cMult});
332+ histos.add (" hgendndetaVsMultBeforeEvtSel" , " hgendndetaBeforeEvtSel vs multiplicity" , kTH2F , {axisEta, axisFt0cMult});
333+ histos.add (" hgendndetaVsMultAfterEvtSel" , " hgendndetaAfterEvtSel vs multiplicity" , kTH2F , {axisEta, axisFt0cMult});
334+
316335 histos.add (" hImpactParameterGenwithNoreco" , " Impact parameter of generated MC events, with no recoevent" , kTH1F , {impactParAxis});
317336 histos.add (" hImpactParameterGen" , " Impact parameter of generated MC events" , kTH1F , {impactParAxis});
318337 histos.add (" hImpactParameterRec" , " Impact parameter of selected MC events" , kTH1F , {impactParAxis});
@@ -415,6 +434,19 @@ struct HeavyionMultiplicity {
415434 return cent;
416435 }
417436
437+ template <typename CheckColCent>
438+ float selColMultMC (CheckColCent const & col)
439+ {
440+ auto cent = -1 ;
441+ if (isApplyCentFT0C) {
442+ cent = col.multMCFT0C ();
443+ }
444+ if (isApplyCentFV0A) {
445+ cent = col.multMCFV0A ();
446+ }
447+ return cent;
448+ }
449+
418450 template <typename CheckColOccu>
419451 float selColOccu (CheckColOccu const & col)
420452 {
@@ -916,10 +948,13 @@ struct HeavyionMultiplicity {
916948 // All generated events
917949 histos.fill (HIST (" MCEventHist" ), 1 );
918950 histos.fill (HIST (" hImpactParameterGen" ), mcCollision.impactParameter ());
951+ histos.fill (HIST (" hMultEta05Gen" ), mcCollision.multMCNParticlesEta05 ());
952+ histos.fill (HIST (" hMultGen" ), selColMultMC (mcCollision));
919953
920954 if (RecCols.size () == 0 ) {
921955 histos.fill (HIST (" MCEventHist" ), 3 );
922956 histos.fill (HIST (" hImpactParameterGenwithNoreco" ), mcCollision.impactParameter ());
957+ histos.fill (HIST (" hMultEta05GenwithNoreco" ), mcCollision.multMCNParticlesEta05 ());
923958 }
924959
925960 bool atLeastOne = false ;
@@ -945,23 +980,37 @@ struct HeavyionMultiplicity {
945980 if (atLeastOne) {
946981 histos.fill (HIST (" MCEventHist" ), 2 );
947982 histos.fill (HIST (" hImpactParameterRec" ), mcCollision.impactParameter ());
983+ histos.fill (HIST (" hMultEta05Rec" ), mcCollision.multMCNParticlesEta05 ());
984+ histos.fill (HIST (" hMultRec" ), selColMultMC (mcCollision));
948985 histos.fill (HIST (" hImpactParvsCentrRec" ), centrality, mcCollision.impactParameter ());
986+ histos.fill (HIST (" hMultEta05vsCentrRec" ), centrality, mcCollision.multMCNParticlesEta05 ());
987+ histos.fill (HIST (" hMultvsCentrRec" ), centrality, selColMultMC (mcCollision));
949988 }
950989
951990 for (const auto & particle : GenParticles) {
952991
992+ if (RecCols.size () == 0 ) {
993+ histos.fill (HIST (" hgendndetaVscentGenwithNOreco" ), particle.eta (), mcCollision.impactParameter ());
994+ } else {
995+ histos.fill (HIST (" hgendndetaVscentGenwithReco" ), particle.eta (), mcCollision.impactParameter ());
996+ }
997+
953998 if (!isGenTrackSelected (particle)) {
954999 continue ;
9551000 }
9561001
9571002 // All generated particles
9581003 histos.fill (HIST (" hgendndetaBeforeEvtSel" ), particle.eta ());
9591004 histos.fill (HIST (" hgendndetaVscentBeforeEvtSel" ), particle.eta (), mcCollision.impactParameter ());
1005+ histos.fill (HIST (" hgendndetaVsMultEta05BeforeEvtSel" ), particle.eta (), mcCollision.multMCNParticlesEta05 ());
1006+ histos.fill (HIST (" hgendndetaVsMultBeforeEvtSel" ), particle.eta (), selColMultMC (mcCollision));
9601007
9611008 if (atLeastOne) {
9621009 // All generated particles with at least one reconstructed collision (signal loss estimation)
9631010 histos.fill (HIST (" hgendndetaAfterEvtSel" ), particle.eta ());
9641011 histos.fill (HIST (" hgendndetaVscentAfterEvtSel" ), particle.eta (), mcCollision.impactParameter ());
1012+ histos.fill (HIST (" hgendndetaVsMultEta05AfterEvtSel" ), particle.eta (), mcCollision.multMCNParticlesEta05 ());
1013+ histos.fill (HIST (" hgendndetaVsMultAfterEvtSel" ), particle.eta (), selColMultMC (mcCollision));
9651014 }
9661015 }
9671016 }
0 commit comments