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