Skip to content

Commit 2f592c1

Browse files
authored
LF: spectra add info for non recoed events (#2755)
1 parent b202f65 commit 2f592c1

2 files changed

Lines changed: 220 additions & 5 deletions

File tree

PWGLF/Tasks/spectraTOF.cxx

Lines changed: 190 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -425,6 +425,11 @@ struct tofSpectra {
425425
histos.add(hpt_den_prm[i].data(), pTCharge[i], kTH1D, {ptAxis});
426426
histos.add(hpt_den_str[i].data(), pTCharge[i], kTH1D, {ptAxis});
427427
histos.add(hpt_den_mat[i].data(), pTCharge[i], kTH1D, {ptAxis});
428+
histos.add(hpt_den_prm_recoev[i].data(), pTCharge[i], kTH1D, {ptAxis});
429+
histos.add(hpt_den_prm_evsel[i].data(), pTCharge[i], kTH1D, {ptAxis});
430+
histos.add(hpt_den_prm_goodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
431+
histos.add(hpt_den_prm_mcgoodev[i].data(), pTCharge[i], kTH1D, {ptAxis});
432+
histos.add(hpt_den_prm_mcbadev[i].data(), pTCharge[i], kTH1D, {ptAxis});
428433

429434
histos.add(hdcaxyprm[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaXyAxis});
430435
histos.add(hdcazprm[i].data(), pTCharge[i], kTH2D, {ptAxis, dcaZAxis});
@@ -1135,6 +1140,160 @@ struct tofSpectra {
11351140
}
11361141
}
11371142

1143+
template <std::size_t i, typename ParticleType>
1144+
void fillParticleHistograms_MCRecoEvs(ParticleType const& mcParticle, CollisionCandidateMC::iterator const& collision)
1145+
{
1146+
1147+
switch (i) {
1148+
case 0:
1149+
case Np:
1150+
if (doprocessFullEl == false && doprocessLfFullEl == false) {
1151+
return;
1152+
}
1153+
break;
1154+
case 1:
1155+
case Np + 1:
1156+
if (doprocessFullMu == false && doprocessLfFullMu == false) {
1157+
return;
1158+
}
1159+
break;
1160+
case 2:
1161+
case Np + 2:
1162+
if (doprocessFullPi == false && doprocessLfFullPi == false) {
1163+
return;
1164+
}
1165+
break;
1166+
case 3:
1167+
case Np + 3:
1168+
if (doprocessFullKa == false && doprocessLfFullKa == false) {
1169+
return;
1170+
}
1171+
break;
1172+
case 4:
1173+
case Np + 4:
1174+
if (doprocessFullPr == false && doprocessLfFullPr == false) {
1175+
return;
1176+
}
1177+
break;
1178+
case 5:
1179+
case Np + 5:
1180+
if (doprocessFullDe == false && doprocessLfFullDe == false) {
1181+
return;
1182+
}
1183+
break;
1184+
case 6:
1185+
case Np + 6:
1186+
if (doprocessFullTr == false && doprocessLfFullTr == false) {
1187+
return;
1188+
}
1189+
break;
1190+
case 7:
1191+
case Np + 7:
1192+
if (doprocessFullHe == false && doprocessLfFullHe == false) {
1193+
return;
1194+
}
1195+
break;
1196+
case 8:
1197+
case Np + 8:
1198+
if (doprocessFullAl == false && doprocessLfFullAl == false) {
1199+
return;
1200+
}
1201+
break;
1202+
}
1203+
1204+
if (mcParticle.pdgCode() != PDGs[i]) {
1205+
return;
1206+
}
1207+
1208+
if (mcParticle.isPhysicalPrimary()) {
1209+
if (collision.sel8()) {
1210+
if (abs(collision.posZ()) < cfgCutVertex) {
1211+
histos.fill(HIST(hpt_den_prm_goodev[i]), mcParticle.pt());
1212+
} else {
1213+
histos.fill(HIST(hpt_den_prm_evsel[i]), mcParticle.pt());
1214+
}
1215+
} else {
1216+
histos.fill(HIST(hpt_den_prm_recoev[i]), mcParticle.pt());
1217+
}
1218+
}
1219+
}
1220+
1221+
template <std::size_t i, typename ParticleType>
1222+
void fillParticleHistograms_MCGenEvs(ParticleType const& mcParticle, aod::McCollision const& mcCollision)
1223+
{
1224+
1225+
switch (i) {
1226+
case 0:
1227+
case Np:
1228+
if (doprocessFullEl == false && doprocessLfFullEl == false) {
1229+
return;
1230+
}
1231+
break;
1232+
case 1:
1233+
case Np + 1:
1234+
if (doprocessFullMu == false && doprocessLfFullMu == false) {
1235+
return;
1236+
}
1237+
break;
1238+
case 2:
1239+
case Np + 2:
1240+
if (doprocessFullPi == false && doprocessLfFullPi == false) {
1241+
return;
1242+
}
1243+
break;
1244+
case 3:
1245+
case Np + 3:
1246+
if (doprocessFullKa == false && doprocessLfFullKa == false) {
1247+
return;
1248+
}
1249+
break;
1250+
case 4:
1251+
case Np + 4:
1252+
if (doprocessFullPr == false && doprocessLfFullPr == false) {
1253+
return;
1254+
}
1255+
break;
1256+
case 5:
1257+
case Np + 5:
1258+
if (doprocessFullDe == false && doprocessLfFullDe == false) {
1259+
return;
1260+
}
1261+
break;
1262+
case 6:
1263+
case Np + 6:
1264+
if (doprocessFullTr == false && doprocessLfFullTr == false) {
1265+
return;
1266+
}
1267+
break;
1268+
case 7:
1269+
case Np + 7:
1270+
if (doprocessFullHe == false && doprocessLfFullHe == false) {
1271+
return;
1272+
}
1273+
break;
1274+
case 8:
1275+
case Np + 8:
1276+
if (doprocessFullAl == false && doprocessLfFullAl == false) {
1277+
return;
1278+
}
1279+
break;
1280+
}
1281+
1282+
if (mcParticle.pdgCode() != PDGs[i]) {
1283+
return;
1284+
}
1285+
1286+
if (mcParticle.isPhysicalPrimary()) {
1287+
if (abs(mcCollision.posZ()) < cfgCutVertex) {
1288+
histos.fill(HIST(hpt_den_prm_mcgoodev[i]), mcParticle.pt());
1289+
} else {
1290+
histos.fill(HIST(hpt_den_prm_mcbadev[i]), mcParticle.pt());
1291+
}
1292+
}
1293+
}
1294+
1295+
Preslice<aod::McParticles> perMCCol = aod::mcparticle::mcCollisionId;
1296+
SliceCache cache;
11381297
void processMC(soa::Join<aod::Tracks, aod::TracksExtra,
11391298
aod::TracksDCA, aod::McTrackLabels,
11401299
aod::pidTOFFullPi, aod::pidTOFFullKa, aod::pidTOFFullPr,
@@ -1147,7 +1306,7 @@ struct tofSpectra {
11471306
histos.fill(HIST("MC/GenRecoCollisions"), 0.5, mcCollisions.size());
11481307
histos.fill(HIST("MC/GenRecoCollisions"), 1.5, collisions.size());
11491308
// LOGF(info, "Enter processMC!");
1150-
for (auto& track : tracks) {
1309+
for (const auto& track : tracks) {
11511310
if (!track.has_collision()) {
11521311
if (track.sign() > 0) {
11531312
histos.fill(HIST("MC/no_collision/pos"), track.pt());
@@ -1174,20 +1333,46 @@ struct tofSpectra {
11741333
});
11751334
}
11761335

1177-
for (auto& mcParticle : mcParticles) {
1336+
for (const auto& mcParticle : mcParticles) {
11781337
// if (std::abs(mcParticle.eta()) > cfgCutEta) {
11791338
// continue;
11801339
// }
11811340
if (std::abs(mcParticle.y()) > cfgCutY) {
11821341
continue;
11831342
}
1184-
if (!mcParticle.isPhysicalPrimary()) {
1185-
continue;
1186-
}
11871343
static_for<0, 17>([&](auto i) {
11881344
fillParticleHistograms_MC<i>(mcParticle);
11891345
});
11901346
}
1347+
1348+
// Loop on reconstructed collisions
1349+
for (const auto& collision : collisions) {
1350+
if (!collision.has_mcCollision()) {
1351+
continue;
1352+
}
1353+
const auto& particlesInCollision = mcParticles.sliceByCached(aod::mcparticle::mcCollisionId, collision.mcCollision().globalIndex(), cache);
1354+
for (const auto& mcParticle : particlesInCollision) {
1355+
if (std::abs(mcParticle.y()) > cfgCutY) {
1356+
continue;
1357+
}
1358+
static_for<0, 17>([&](auto i) {
1359+
fillParticleHistograms_MCRecoEvs<i>(mcParticle, collision);
1360+
});
1361+
}
1362+
}
1363+
1364+
// Loop on generated collisions
1365+
for (const auto& mcCollision : mcCollisions) {
1366+
const auto& particlesInCollision = mcParticles.sliceByCached(aod::mcparticle::mcCollisionId, mcCollision.globalIndex(), cache);
1367+
for (const auto& mcParticle : particlesInCollision) {
1368+
if (std::abs(mcParticle.y()) > cfgCutY) {
1369+
continue;
1370+
}
1371+
static_for<0, 17>([&](auto i) {
1372+
fillParticleHistograms_MCGenEvs<i>(mcParticle, mcCollision);
1373+
});
1374+
}
1375+
}
11911376
}
11921377
PROCESS_SWITCH(tofSpectra, processMC, "Process MC", false);
11931378

PWGLF/Tasks/spectraTOF.h

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,36 @@ static constexpr std::string_view hpt_den_prm[NpCharge] = {"MC/el/pos/prm/pt/den
116116
"MC/el/neg/prm/pt/den", "MC/mu/neg/prm/pt/den", "MC/pi/neg/prm/pt/den",
117117
"MC/ka/neg/prm/pt/den", "MC/pr/neg/prm/pt/den", "MC/de/neg/prm/pt/den",
118118
"MC/tr/neg/prm/pt/den", "MC/he/neg/prm/pt/den", "MC/al/neg/prm/pt/den"};
119+
static constexpr std::string_view hpt_den_prm_recoev[NpCharge] = {"MC/el/pos/prm/pt/denrecoev", "MC/mu/pos/prm/pt/denrecoev", "MC/pi/pos/prm/pt/denrecoev",
120+
"MC/ka/pos/prm/pt/denrecoev", "MC/pr/pos/prm/pt/denrecoev", "MC/de/pos/prm/pt/denrecoev",
121+
"MC/tr/pos/prm/pt/denrecoev", "MC/he/pos/prm/pt/denrecoev", "MC/al/pos/prm/pt/denrecoev",
122+
"MC/el/neg/prm/pt/denrecoev", "MC/mu/neg/prm/pt/denrecoev", "MC/pi/neg/prm/pt/denrecoev",
123+
"MC/ka/neg/prm/pt/denrecoev", "MC/pr/neg/prm/pt/denrecoev", "MC/de/neg/prm/pt/denrecoev",
124+
"MC/tr/neg/prm/pt/denrecoev", "MC/he/neg/prm/pt/denrecoev", "MC/al/neg/prm/pt/denrecoev"};
125+
static constexpr std::string_view hpt_den_prm_evsel[NpCharge] = {"MC/el/pos/prm/pt/denevsel", "MC/mu/pos/prm/pt/denevsel", "MC/pi/pos/prm/pt/denevsel",
126+
"MC/ka/pos/prm/pt/denevsel", "MC/pr/pos/prm/pt/denevsel", "MC/de/pos/prm/pt/denevsel",
127+
"MC/tr/pos/prm/pt/denevsel", "MC/he/pos/prm/pt/denevsel", "MC/al/pos/prm/pt/denevsel",
128+
"MC/el/neg/prm/pt/denevsel", "MC/mu/neg/prm/pt/denevsel", "MC/pi/neg/prm/pt/denevsel",
129+
"MC/ka/neg/prm/pt/denevsel", "MC/pr/neg/prm/pt/denevsel", "MC/de/neg/prm/pt/denevsel",
130+
"MC/tr/neg/prm/pt/denevsel", "MC/he/neg/prm/pt/denevsel", "MC/al/neg/prm/pt/denevsel"};
131+
static constexpr std::string_view hpt_den_prm_goodev[NpCharge] = {"MC/el/pos/prm/pt/dengoodev", "MC/mu/pos/prm/pt/dengoodev", "MC/pi/pos/prm/pt/dengoodev",
132+
"MC/ka/pos/prm/pt/dengoodev", "MC/pr/pos/prm/pt/dengoodev", "MC/de/pos/prm/pt/dengoodev",
133+
"MC/tr/pos/prm/pt/dengoodev", "MC/he/pos/prm/pt/dengoodev", "MC/al/pos/prm/pt/dengoodev",
134+
"MC/el/neg/prm/pt/dengoodev", "MC/mu/neg/prm/pt/dengoodev", "MC/pi/neg/prm/pt/dengoodev",
135+
"MC/ka/neg/prm/pt/dengoodev", "MC/pr/neg/prm/pt/dengoodev", "MC/de/neg/prm/pt/dengoodev",
136+
"MC/tr/neg/prm/pt/dengoodev", "MC/he/neg/prm/pt/dengoodev", "MC/al/neg/prm/pt/dengoodev"};
137+
static constexpr std::string_view hpt_den_prm_mcgoodev[NpCharge] = {"MC/el/pos/prm/pt/denmcgoodev", "MC/mu/pos/prm/pt/denmcgoodev", "MC/pi/pos/prm/pt/denmcgoodev",
138+
"MC/ka/pos/prm/pt/denmcgoodev", "MC/pr/pos/prm/pt/denmcgoodev", "MC/de/pos/prm/pt/denmcgoodev",
139+
"MC/tr/pos/prm/pt/denmcgoodev", "MC/he/pos/prm/pt/denmcgoodev", "MC/al/pos/prm/pt/denmcgoodev",
140+
"MC/el/neg/prm/pt/denmcgoodev", "MC/mu/neg/prm/pt/denmcgoodev", "MC/pi/neg/prm/pt/denmcgoodev",
141+
"MC/ka/neg/prm/pt/denmcgoodev", "MC/pr/neg/prm/pt/denmcgoodev", "MC/de/neg/prm/pt/denmcgoodev",
142+
"MC/tr/neg/prm/pt/denmcgoodev", "MC/he/neg/prm/pt/denmcgoodev", "MC/al/neg/prm/pt/denmcgoodev"};
143+
static constexpr std::string_view hpt_den_prm_mcbadev[NpCharge] = {"MC/el/pos/prm/pt/denmcbadev", "MC/mu/pos/prm/pt/denmcbadev", "MC/pi/pos/prm/pt/denmcbadev",
144+
"MC/ka/pos/prm/pt/denmcbadev", "MC/pr/pos/prm/pt/denmcbadev", "MC/de/pos/prm/pt/denmcbadev",
145+
"MC/tr/pos/prm/pt/denmcbadev", "MC/he/pos/prm/pt/denmcbadev", "MC/al/pos/prm/pt/denmcbadev",
146+
"MC/el/neg/prm/pt/denmcbadev", "MC/mu/neg/prm/pt/denmcbadev", "MC/pi/neg/prm/pt/denmcbadev",
147+
"MC/ka/neg/prm/pt/denmcbadev", "MC/pr/neg/prm/pt/denmcbadev", "MC/de/neg/prm/pt/denmcbadev",
148+
"MC/tr/neg/prm/pt/denmcbadev", "MC/he/neg/prm/pt/denmcbadev", "MC/al/neg/prm/pt/denmcbadev"};
119149
static constexpr std::string_view hpt_num_str[NpCharge] = {"MC/el/pos/str/pt/num", "MC/mu/pos/str/pt/num", "MC/pi/pos/str/pt/num",
120150
"MC/ka/pos/str/pt/num", "MC/pr/pos/str/pt/num", "MC/de/pos/str/pt/num",
121151
"MC/tr/pos/str/pt/num", "MC/he/pos/str/pt/num", "MC/al/pos/str/pt/num",

0 commit comments

Comments
 (0)