Skip to content

Commit fbfa10a

Browse files
authored
[PWGLF] Replaced the loop over all MC particles with a loop over pre-filtered strange hadrons (#12862)
1 parent fadd22f commit fbfa10a

File tree

1 file changed

+39
-29
lines changed

1 file changed

+39
-29
lines changed

PWGLF/Tasks/Strangeness/strangenessInJets.cxx

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,6 +1002,10 @@ struct StrangenessInJets {
10021002
// MC particles per collision
10031003
auto mcParticlesPerColl = mcParticles.sliceBy(perMCCollision, collision.globalIndex());
10041004

1005+
// Store strange hadron pdg code and momentum
1006+
std::vector<int> pdg;
1007+
std::vector<TVector3> strHadronMomentum;
1008+
10051009
// Loop over all MC particles and select physical primaries within acceptance
10061010
std::vector<fastjet::PseudoJet> fjParticles;
10071011
for (const auto& particle : mcParticlesPerColl) {
@@ -1016,6 +1020,13 @@ struct StrangenessInJets {
10161020
fastjet::PseudoJet fourMomentum(particle.px(), particle.py(), particle.pz(), energy);
10171021
fourMomentum.set_user_index(particle.pdgCode());
10181022
fjParticles.emplace_back(fourMomentum);
1023+
1024+
// Store properties of strange hadrons
1025+
int pdgAbs = std::abs(particle.pdgCode());
1026+
if (pdgAbs == kK0Short || pdgAbs == kLambda0 || pdgAbs == kXiMinus || pdgAbs == kOmegaMinus) {
1027+
pdg.emplace_back(particle.pdgCode());
1028+
strHadronMomentum.emplace_back(particle.px(), particle.py(), particle.pz());
1029+
}
10191030
}
10201031

10211032
// Skip events with no particles
@@ -1055,48 +1066,47 @@ struct StrangenessInJets {
10551066
getPerpendicularAxis(jetAxis, ueAxis1, +1);
10561067
getPerpendicularAxis(jetAxis, ueAxis2, -1);
10571068

1058-
// Loop over MC particles
1059-
for (const auto& particle : mcParticlesPerColl) {
1060-
if (!particle.isPhysicalPrimary())
1061-
continue;
1062-
double minPtParticle = 0.1;
1063-
if (particle.eta() < etaMin || particle.eta() > etaMax || particle.pt() < minPtParticle)
1064-
continue;
1069+
// Loop over strange hadrons
1070+
int index = -1;
1071+
for (const auto& hadron : strHadronMomentum) {
1072+
1073+
// Particle index
1074+
index++;
10651075

10661076
// Compute distance of particles from jet and UE axes
1067-
double deltaEtaJet = particle.eta() - jetAxis.Eta();
1068-
double deltaPhiJet = getDeltaPhi(particle.phi(), jetAxis.Phi());
1077+
double deltaEtaJet = hadron.Eta() - jetAxis.Eta();
1078+
double deltaPhiJet = getDeltaPhi(hadron.Phi(), jetAxis.Phi());
10691079
double deltaRJet = std::sqrt(deltaEtaJet * deltaEtaJet + deltaPhiJet * deltaPhiJet);
1070-
double deltaEtaUe1 = particle.eta() - ueAxis1.Eta();
1071-
double deltaPhiUe1 = getDeltaPhi(particle.phi(), ueAxis1.Phi());
1080+
double deltaEtaUe1 = hadron.Eta() - ueAxis1.Eta();
1081+
double deltaPhiUe1 = getDeltaPhi(hadron.Phi(), ueAxis1.Phi());
10721082
double deltaRUe1 = std::sqrt(deltaEtaUe1 * deltaEtaUe1 + deltaPhiUe1 * deltaPhiUe1);
1073-
double deltaEtaUe2 = particle.eta() - ueAxis2.Eta();
1074-
double deltaPhiUe2 = getDeltaPhi(particle.phi(), ueAxis2.Phi());
1083+
double deltaEtaUe2 = hadron.Eta() - ueAxis2.Eta();
1084+
double deltaPhiUe2 = getDeltaPhi(hadron.Phi(), ueAxis2.Phi());
10751085
double deltaRUe2 = std::sqrt(deltaEtaUe2 * deltaEtaUe2 + deltaPhiUe2 * deltaPhiUe2);
10761086

10771087
// Select particles inside jet
10781088
if (deltaRJet < coneRadius) {
1079-
switch (particle.pdgCode()) {
1089+
switch (pdg[index]) {
10801090
case kK0Short:
1081-
registryMC.fill(HIST("K0s_generated_jet"), genMultiplicity, particle.pt());
1091+
registryMC.fill(HIST("K0s_generated_jet"), genMultiplicity, hadron.Pt());
10821092
break;
10831093
case kLambda0:
1084-
registryMC.fill(HIST("Lambda_generated_jet"), genMultiplicity, particle.pt());
1094+
registryMC.fill(HIST("Lambda_generated_jet"), genMultiplicity, hadron.Pt());
10851095
break;
10861096
case kLambda0Bar:
1087-
registryMC.fill(HIST("AntiLambda_generated_jet"), genMultiplicity, particle.pt());
1097+
registryMC.fill(HIST("AntiLambda_generated_jet"), genMultiplicity, hadron.Pt());
10881098
break;
10891099
case kXiMinus:
1090-
registryMC.fill(HIST("XiNeg_generated_jet"), genMultiplicity, particle.pt());
1100+
registryMC.fill(HIST("XiNeg_generated_jet"), genMultiplicity, hadron.Pt());
10911101
break;
10921102
case kXiPlusBar:
1093-
registryMC.fill(HIST("XiPos_generated_jet"), genMultiplicity, particle.pt());
1103+
registryMC.fill(HIST("XiPos_generated_jet"), genMultiplicity, hadron.Pt());
10941104
break;
10951105
case kOmegaMinus:
1096-
registryMC.fill(HIST("OmegaNeg_generated_jet"), genMultiplicity, particle.pt());
1106+
registryMC.fill(HIST("OmegaNeg_generated_jet"), genMultiplicity, hadron.Pt());
10971107
break;
10981108
case kOmegaPlusBar:
1099-
registryMC.fill(HIST("OmegaPos_generated_jet"), genMultiplicity, particle.pt());
1109+
registryMC.fill(HIST("OmegaPos_generated_jet"), genMultiplicity, hadron.Pt());
11001110
break;
11011111
default:
11021112
break;
@@ -1105,27 +1115,27 @@ struct StrangenessInJets {
11051115

11061116
// Select particles inside UE cones
11071117
if (deltaRUe1 < coneRadius || deltaRUe2 < coneRadius) {
1108-
switch (particle.pdgCode()) {
1118+
switch (pdg[index]) {
11091119
case kK0Short:
1110-
registryMC.fill(HIST("K0s_generated_ue"), genMultiplicity, particle.pt());
1120+
registryMC.fill(HIST("K0s_generated_ue"), genMultiplicity, hadron.Pt());
11111121
break;
11121122
case kLambda0:
1113-
registryMC.fill(HIST("Lambda_generated_ue"), genMultiplicity, particle.pt());
1123+
registryMC.fill(HIST("Lambda_generated_ue"), genMultiplicity, hadron.Pt());
11141124
break;
11151125
case kLambda0Bar:
1116-
registryMC.fill(HIST("AntiLambda_generated_ue"), genMultiplicity, particle.pt());
1126+
registryMC.fill(HIST("AntiLambda_generated_ue"), genMultiplicity, hadron.Pt());
11171127
break;
11181128
case kXiMinus:
1119-
registryMC.fill(HIST("XiNeg_generated_ue"), genMultiplicity, particle.pt());
1129+
registryMC.fill(HIST("XiNeg_generated_ue"), genMultiplicity, hadron.Pt());
11201130
break;
11211131
case kXiPlusBar:
1122-
registryMC.fill(HIST("XiPos_generated_ue"), genMultiplicity, particle.pt());
1132+
registryMC.fill(HIST("XiPos_generated_ue"), genMultiplicity, hadron.Pt());
11231133
break;
11241134
case kOmegaMinus:
1125-
registryMC.fill(HIST("OmegaNeg_generated_ue"), genMultiplicity, particle.pt());
1135+
registryMC.fill(HIST("OmegaNeg_generated_ue"), genMultiplicity, hadron.Pt());
11261136
break;
11271137
case kOmegaPlusBar:
1128-
registryMC.fill(HIST("OmegaPos_generated_ue"), genMultiplicity, particle.pt());
1138+
registryMC.fill(HIST("OmegaPos_generated_ue"), genMultiplicity, hadron.Pt());
11291139
break;
11301140
default:
11311141
break;

0 commit comments

Comments
 (0)