3939#include " PWGCF/Femto3D/Core/femto3dPairTask.h"
4040#include " Common/DataModel/Centrality.h"
4141#include " PWGLF/DataModel/mcCentrality.h"
42+ #include " Framework/O2DatabasePDGPlugin.h"
43+ #include " PWGLF/Utils/inelGt.h"
4244
4345using namespace o2 ;
4446using namespace o2 ::soa;
@@ -128,7 +130,6 @@ struct K0MixedEvents {
128130 Configurable<float > _dphi{" dphi" , 1 , " minimum allowed defference in phi_star between two tracks in a pair" };
129131 Configurable<float > _radiusTPC{" radiusTPC" , 1.2 , " TPC radius to calculate phi_star for" };
130132
131- Configurable<bool > useCentralityInvMass{" useCentralityInvMass" , true , " Use the centrality vs inv. mass plots" };
132133 Configurable<bool > doMixedEvent{" doMixedEvent" , false , " Do the mixed event" };
133134 Configurable<int > _multbinwidth{" multbinwidth" , 50 , " width of multiplicity bins within which the mixing is done" };
134135 Configurable<int > _vertexbinwidth{" vertexbinwidth" , 2 , " width of vertexZ bins within which the mixing is done" };
@@ -203,20 +204,13 @@ struct K0MixedEvents {
203204 registry.add (" VTXc" , " VTXc" , kTH1D , {{100 , -20 ., 20 ., " vtx" }});
204205 registry.add (" VTX" , " VTX" , kTH1D , {{100 , -20 ., 20 ., " vtx" }});
205206 registry.add (" multPerc" , " multPerc" , kTH1D , {multPercentileAxis});
207+
206208 registry.add (" SEcand" , " SEcand" , kTH1D , {{2 , 0.5 , 2.5 }});
207209 registry.add (" SE" , " SE" , kTH1D , {invMassAxis});
208210 registry.add (" ME" , " ME" , kTH1D , {invMassAxis});
209- if (useCentralityInvMass) {
210- registry.add (" SEvsPt" , " SEvsPt" , kTH3F , {invMassAxis, ptAxis, multPercentileAxis});
211- } else {
212- registry.add (" SEvsPt" , " SEvsPt" , kTH2D , {invMassAxis, ptAxis});
213- }
211+ registry.add (" SEvsPt" , " SEvsPt" , kTH3F , {invMassAxis, ptAxis, multPercentileAxis});
214212 if (doMixedEvent) {
215- if (useCentralityInvMass) {
216- registry.add (" MEvsPt" , " MEvsPt" , kTH3F , {invMassAxis, ptAxis, multPercentileAxis});
217- } else {
218- registry.add (" MEvsPt" , " MEvsPt" , kTH2D , {invMassAxis, ptAxis});
219- }
213+ registry.add (" MEvsPt" , " MEvsPt" , kTH3F , {invMassAxis, ptAxis, multPercentileAxis});
220214 }
221215 registry.add (" eta" , Form (" eta_%i" , _particlePDG_1.value ), kTH2F , {ptAxis, {100 , -10 ., 10 ., " #eta" }});
222216 registry.add (" p_first" , Form (" p_%i" , _particlePDG_1.value ), kTH1D , {ptAxis});
@@ -233,14 +227,14 @@ struct K0MixedEvents {
233227 registry.add (" rapidity_second" , Form (" rapidity_%i" , _particlePDG_2.value ), kTH2F , {ptAxis, {100 , -10 ., 10 ., Form (" y(%s)" , pdgToSymbol (_particlePDG_2))}});
234228 }
235229
236- if (!doprocessMCReco ) {
230+ if (!doprocessMC ) {
237231 return ;
238232 }
239- if (useCentralityInvMass) {
240- registry.add (" MC/generatedInRecoEvs " , " generatedInRecoEvs " , kTH2D , {ptAxis, multPercentileAxis});
241- } else {
242- registry.add (" MC/generatedInRecoEvs " , " generatedInRecoEvs " , kTH2D , {ptAxis});
243- }
233+ registry. add ( " MC/multPerc " , " multPerc " , kTH1D , {multPercentileAxis});
234+ registry.add (" MC/multPercMC " , " multPercMC " , kTH1D , {multPercentileAxis});
235+ registry. add ( " MC/generatedInRecoEvs " , " generatedInRecoEvs " , kTH2D , {ptAxis, multPercentileAxis});
236+ registry.add (" MC/generatedInGenEvs " , " generatedInGenEvs " , kTH2D , {ptAxis, multPercentileAxis });
237+ registry. add ( " MC/SEvsPt " , " SEvsPt " , kTH3F , {invMassAxis, ptAxis, multPercentileAxis});
244238 }
245239
246240 template <typename Type>
@@ -261,12 +255,8 @@ struct K0MixedEvents {
261255 continue ;
262256 }
263257 registry.fill (HIST (" SEcand" ), 2 .f );
264- registry.fill (HIST (" SE" ), Pair->getInvMass ()); // close pair rejection and fillig the SE histo
265- if (useCentralityInvMass) {
266- registry.fill (HIST (" SEvsPt" ), Pair->getInvMass (), Pair->getPt (), centrality); // close pair rejection and fillig the SE histo
267- } else {
268- registry.fill (HIST (" SEvsPt" ), Pair->getInvMass (), Pair->getPt ()); // close pair rejection and fillig the SE histo
269- }
258+ registry.fill (HIST (" SE" ), Pair->getInvMass ()); // close pair rejection and fillig the SE histo
259+ registry.fill (HIST (" SEvsPt" ), Pair->getInvMass (), Pair->getPt (), centrality); // close pair rejection and fillig the SE histo
270260 }
271261 }
272262 }
@@ -292,18 +282,10 @@ struct K0MixedEvents {
292282 if constexpr (isSameEvent) {
293283 registry.fill (HIST (" SEcand" ), 2 .f );
294284 registry.fill (HIST (" SE" ), Pair->getInvMass ());
295- if (useCentralityInvMass) {
296- registry.fill (HIST (" SEvsPt" ), Pair->getInvMass (), Pair->getPt (), centrality);
297- } else {
298- registry.fill (HIST (" SEvsPt" ), Pair->getInvMass (), Pair->getPt ());
299- }
285+ registry.fill (HIST (" SEvsPt" ), Pair->getInvMass (), Pair->getPt (), centrality);
300286 } else {
301287 registry.fill (HIST (" ME" ), Pair->getInvMass ());
302- if (useCentralityInvMass) {
303- registry.fill (HIST (" MEvsPt" ), Pair->getInvMass (), Pair->getPt (), centrality);
304- } else {
305- registry.fill (HIST (" MEvsPt" ), Pair->getInvMass (), Pair->getPt ());
306- }
288+ registry.fill (HIST (" MEvsPt" ), Pair->getInvMass (), Pair->getPt (), centrality);
307289 }
308290 }
309291 }
@@ -513,17 +495,35 @@ struct K0MixedEvents {
513495 using RecoMCCollisions = soa::Join<aod::Collisions, aod::McCollisionLabels, aod::EvSels, aod::CentFT0Ms>;
514496 using GenMCCollisions = soa::Join<aod::McCollisions, aod::McCentFT0Ms>;
515497
516- // Service<o2::framework::O2DatabasePDG> pdgDB;
498+ Service<o2::framework::O2DatabasePDG> pdgDB;
517499 Preslice<aod::McParticles> perMCCol = aod::mcparticle::mcCollisionId;
518500 SliceCache cache;
519- void processMCReco (soa::Filtered<RecoMCCollisions> const & collisions,
520- GenMCCollisions const &,
521- aod::McParticles const & mcParticles)
501+ void processMC (soa::Filtered<RecoMCCollisions> const & collisions,
502+ // soa::Join<aod::Tracks, aod::TracksExtra,
503+ // aod::TracksDCA, aod::McTrackLabels,
504+ // aod::pidTPCFullPi, aod::pidTPCFullKa, aod::pidTPCFullPr,
505+ // aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr,
506+ // aod::TrackSelection> const& tracks,
507+ GenMCCollisions const & mcCollisions,
508+ aod::McParticles const & mcParticles)
522509 {
510+
511+ // Loop on reconstructed collisions
523512 for (const auto & col : collisions) {
513+ if (!col.sel8 ()) {
514+ continue ;
515+ }
516+ if (std::abs (col.posZ ()) > _vertexZ) {
517+ continue ;
518+ }
524519 if (!col.has_mcCollision ()) {
525520 continue ;
526521 }
522+ registry.fill (HIST (" MC/multPerc" ), col.centFT0M ());
523+ // Loop on tracks
524+ // MC / SEvsPt
525+
526+ // Loop on particles
527527 const auto & mcCollision = col.mcCollision_as <GenMCCollisions>();
528528 const auto & particlesInCollision = mcParticles.sliceByCached (aod::mcparticle::mcCollisionId, mcCollision.globalIndex (), cache);
529529 for (const auto & mcParticle : particlesInCollision) {
@@ -539,16 +539,39 @@ struct K0MixedEvents {
539539 if (std::abs (mcParticle.y ()) > 0.5 ) {
540540 continue ;
541541 }
542- if (useCentralityInvMass) {
543- registry.fill (HIST (" MC/generatedInRecoEvs" ), mcParticle.pt (), col.centFT0M ());
544- } else {
545- registry.fill (HIST (" MC/generatedInRecoEvs" ), mcParticle.pt ());
542+ registry.fill (HIST (" MC/generatedInRecoEvs" ), mcParticle.pt (), col.centFT0M ());
543+ }
544+ }
545+
546+ // Loop on generated collisions
547+ for (const auto & mcCollision : mcCollisions) {
548+ if (std::abs (mcCollision.posZ ()) > _vertexZ) {
549+ continue ;
550+ }
551+ const auto & particlesInCollision = mcParticles.sliceByCached (aod::mcparticle::mcCollisionId, mcCollision.globalIndex (), cache);
552+ if (!o2::pwglf::isINELgt0mc (particlesInCollision, pdgDB)) {
553+ continue ;
554+ }
555+ registry.fill (HIST (" MC/multPercMC" ), mcCollision.centFT0M ());
556+ for (const auto & mcParticle : particlesInCollision) {
557+ switch (mcParticle.pdgCode ()) {
558+ case 310 :
559+ break ;
560+ default :
561+ continue ;
562+ }
563+ if (mcParticle.pdgCode () != 310 ) {
564+ LOG (fatal) << " Fatal in PDG" ;
565+ }
566+ if (std::abs (mcParticle.y ()) > 0.5 ) {
567+ continue ;
546568 }
569+ registry.fill (HIST (" MC/generatedInGenEvs" ), mcParticle.pt (), mcCollision.centFT0M ());
547570 }
548571 }
549572 }
550573
551- PROCESS_SWITCH (K0MixedEvents, processMCReco , " process mc" , false );
574+ PROCESS_SWITCH (K0MixedEvents, processMC , " process mc" , false );
552575};
553576
554577WorkflowSpec defineDataProcessing (ConfigContext const & cfgc)
0 commit comments