Skip to content

Commit ce050cb

Browse files
authored
[PWGLF] Update K0ME MC (#9774)
1 parent 850bfcc commit ce050cb

File tree

1 file changed

+65
-42
lines changed

1 file changed

+65
-42
lines changed

PWGLF/Tasks/Strangeness/k0_mixed_events.cxx

Lines changed: 65 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@
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

4345
using namespace o2;
4446
using 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

554577
WorkflowSpec defineDataProcessing(ConfigContext const& cfgc)

0 commit comments

Comments
 (0)