Skip to content

Commit 9e6c4e4

Browse files
authored
[PWGLF] Corrections related with memory comsumption (#9496)
1 parent 0979f29 commit 9e6c4e4

File tree

1 file changed

+124
-170
lines changed

1 file changed

+124
-170
lines changed

PWGMM/UE/Tasks/dedxAnalysis.cxx

Lines changed: 124 additions & 170 deletions
Original file line numberDiff line numberDiff line change
@@ -85,54 +85,37 @@ struct DedxAnalysis {
8585
Configurable<float> maxDCAxy{"maxDCAxy", 0.1f, "maxDCAxy"};
8686
Configurable<float> maxDCAz{"maxDCAz", 0.1f, "maxDCAz"};
8787
Configurable<bool> eventSelection{"eventSelection", true, "event selection"};
88+
Configurable<bool> calibrationMode{"calibrationMode", false, "calibration mode"};
8889
// Histograms names
89-
static constexpr std::string_view kArmenteros[5] = {"Armenteros", "Armenteros_K0S", "Armenteros_Lambda", "Armenteros_AntiLambda", "Armenteros_Gamma"};
90-
static constexpr std::string_view kQtvsAlpha[5] = {"Qt_vs_alpha", "Qt_vs_alpha_K0S", "Qt_vs_alpha_Lambda", "Qt_vs_alpha_AntiLambda", "Qt_vs_alpha_Gamma"};
91-
static constexpr std::string_view kDedxvsMomentum[2] = {"dEdx_vs_Momentum_all_beforeCalibration", "dEdx_vs_Momentum_AfterCalibration"};
92-
static constexpr std::string_view kDedxvsMomentumV0[3] = {"dEdx_vs_Momentum_Pi_v0", "dEdx_vs_Momentum_Pr_v0", "dEdx_vs_Momentum_El_v0"};
93-
static constexpr std::string_view kInvMass[4] = {"InvMass_K0S", "InvMass_Lambda", "InvMass_AntiLambda", "InvMass_Gamma"};
90+
static constexpr std::string_view kDedxvsMomentum[4] = {"dEdx_vs_Momentum_all", "dEdx_vs_Momentum_Pi_v0", "dEdx_vs_Momentum_Pr_v0", "dEdx_vs_Momentum_El_v0"};
9491
static constexpr double EtaCut[9] = {-0.8, -0.6, -0.4, -0.2, 0.0, 0.2, 0.4, 0.6, 0.8};
95-
static constexpr double Correction[8] = {54.3344, 55.1277, 56.0811, 56.7974, 56.9533, 56.4622, 55.8873, 55.1449};
92+
static constexpr double Correction[8] = {56.0452, 56.632, 57.2627, 57.8265, 57.8403, 57.5441, 57.2386, 56.7532};
9693

9794
void init(InitContext const&)
9895
{
99-
100-
// MIP for pions
101-
registryDeDx.add(
102-
"hdEdxMIP_vs_eta", "dE/dx", HistType::kTH2F,
103-
{{100, -0.8, 0.8, "#eta"}, {100, 0.0, 600.0, "dE/dx MIP (a. u.)"}});
104-
registryDeDx.add(
105-
"hdEdxMIP_vs_phi", "dE/dx", HistType::kTH2F,
106-
{{100, 0.0, 6.4, "#phi"}, {100, 0.0, 600.0, "dE/dx MIP (a. u.)"}});
107-
registryDeDx.add(
108-
"hdEdxMIP_vs_eta_AfterCorr", "dE/dx", HistType::kTH2F,
109-
{{100, -0.8, 0.8, "#eta"}, {100, 0.0, 600.0, "dE/dx MIP (a. u.)"}});
110-
////////////////////////////////
111-
registryDeDx.add(kInvMass[0].data(), "mass", HistType::kTH1F,
112-
{{100, 400, 600, "m (MeV/c)"}});
113-
registryDeDx.add(kInvMass[1].data(), "mass", HistType::kTH1F,
114-
{{100, 1.08, 1.25, "m (GeV/c)"}});
115-
registryDeDx.add(kInvMass[2].data(), "mass", HistType::kTH1F,
116-
{{100, 1.08, 1.25, "m (GeV/c)"}});
117-
registryDeDx.add(kInvMass[3].data(), "mass", HistType::kTH1F,
118-
{{100, 0.9, 2.0, "m (MeV/c)"}});
119-
// Armenteros plot and De/Dx for eta cut inclusive
120-
for (int i = 0; i < 5; ++i) {
121-
registryDeDx.add(kArmenteros[i].data(), kQtvsAlpha[i].data(), HistType::kTH2F,
122-
{{100, -1., 1., "#alpha (a. u.)"}, {100, 0.0, 0.3, "q_T (GeV/c)"}});
123-
}
124-
for (int i = 0; i < 2; ++i) {
125-
registryDeDx.add(kDedxvsMomentum[i].data(), "dE/dx", HistType::kTH3F,
126-
{{100, -20.0, 20.0, "#it{p}/Z (GeV/c)"}, {100, 0.0, 600.0, "dE/dx (a. u.)"}, {100, -0.8, 0.8, "#eta"}});
127-
}
128-
129-
// De/Dx for v0 particles
130-
for (int i = 0; i < 3; ++i) {
131-
132-
registryDeDx.add(kDedxvsMomentumV0[i].data(), "dE/dx", HistType::kTH3F,
133-
{{100, -20.0, 20.0, "#it{p}/Z (GeV/c)"}, {100, 0.0, 600.0, "dE/dx (a. u.)"}, {100, -0.8, 0.8, "#eta"}});
96+
if (calibrationMode) {
97+
// MIP for pions
98+
registryDeDx.add(
99+
"hdEdxMIP_vs_eta", "dE/dx", HistType::kTH2F,
100+
{{8, -0.8, 0.8, "#eta"}, {100, 0.0, 600.0, "dE/dx MIP (a. u.)"}});
101+
registryDeDx.add(
102+
"hdEdxMIP_vs_phi", "dE/dx", HistType::kTH2F,
103+
{{100, 0.0, 6.4, "#phi"}, {100, 0.0, 600.0, "dE/dx MIP (a. u.)"}});
104+
105+
} else {
106+
registryDeDx.add(
107+
"hdEdxMIP_vs_eta_calibrated", "dE/dx", HistType::kTH2F,
108+
{{8, -0.8, 0.8, "#eta"}, {10, 30.0, 70.0, "dE/dx MIP (a. u.)"}});
109+
registryDeDx.add(
110+
"hdEdxMIP_vs_phi", "dE/dx", HistType::kTH2F,
111+
{{100, 0.0, 6.4, "#phi"}, {10, 30.0, 70.0, "dE/dx MIP (a. u.)"}});
112+
113+
// De/Dx for ch and v0 particles
114+
for (int i = 0; i < 4; ++i) {
115+
registryDeDx.add(kDedxvsMomentum[i].data(), "dE/dx", HistType::kTH3F,
116+
{{100, -20, 20, "#it{p}/Z (GeV/c)"}, {100, 0.0, 600.0, "dE/dx (a. u.)"}, {8, -0.8, 0.8, "#eta"}});
117+
}
134118
}
135-
136119
// Event Counter
137120
registryDeDx.add("histRecVtxZData", "collision z position", HistType::kTH1F, {{100, -20.0, +20.0, "z_{vtx} (cm)"}});
138121
}
@@ -322,186 +305,157 @@ struct DedxAnalysis {
322305
continue;
323306
float signedP = trk.sign() * trk.tpcInnerParam();
324307

325-
// DeDx all particles before calibration
326-
registryDeDx.fill(HIST(kDedxvsMomentum[0]), signedP, trk.tpcSignal(), trk.eta());
327-
328-
////////////////////////////////
329-
330308
// MIP for pions
331309
if (trk.tpcInnerParam() >= 0.25 && trk.tpcInnerParam() <= 0.35) {
332-
registryDeDx.fill(HIST("hdEdxMIP_vs_eta"), trk.eta(), trk.tpcSignal());
333-
registryDeDx.fill(HIST("hdEdxMIP_vs_phi"), trk.phi(), trk.tpcSignal());
334-
// After calibration
335-
336-
for (int i = 0; i < 8; ++i) {
337-
if (trk.eta() > EtaCut[i] && trk.eta() < EtaCut[i + 1]) {
338-
registryDeDx.fill(HIST("hdEdxMIP_vs_eta_AfterCorr"), trk.eta(), trk.tpcSignal() * 50 / Correction[i]);
310+
if (calibrationMode) {
311+
registryDeDx.fill(HIST("hdEdxMIP_vs_eta"), trk.eta(), trk.tpcSignal());
312+
registryDeDx.fill(HIST("hdEdxMIP_vs_phi"), trk.phi(), trk.tpcSignal());
313+
} else {
314+
registryDeDx.fill(HIST("hdEdxMIP_vs_phi"), trk.phi(), trk.tpcSignal());
315+
for (int i = 0; i < 8; ++i) {
316+
if (trk.eta() > EtaCut[i] && trk.eta() < EtaCut[i + 1]) {
317+
registryDeDx.fill(HIST("hdEdxMIP_vs_eta_calibrated"), trk.eta(), trk.tpcSignal() * 50 / Correction[i]);
318+
}
339319
}
340320
}
341321
}
342322

343-
// After calibration
344-
for (int i = 0; i < 8; ++i) {
345-
if (trk.eta() > EtaCut[i] && trk.eta() < EtaCut[i + 1]) {
346-
registryDeDx.fill(HIST(kDedxvsMomentum[1]), signedP, trk.tpcSignal() * 50 / Correction[i], trk.eta());
323+
if (!calibrationMode) {
324+
for (int i = 0; i < 8; ++i) {
325+
if (trk.eta() > EtaCut[i] && trk.eta() < EtaCut[i + 1]) {
326+
registryDeDx.fill(HIST(kDedxvsMomentum[0]), signedP, trk.tpcSignal() * 50 / Correction[i], trk.eta());
327+
}
347328
}
348329
}
349330
}
350331

351332
// Loop over Reconstructed V0s
352-
for (const auto& v0 : fullV0s) {
353-
354-
// Standard V0 Selections
355-
if (!passedV0Selection(v0, collision)) {
356-
continue;
357-
}
358-
359-
if (v0.dcaV0daughters() > dcaV0DaughtersMax) {
360-
continue;
361-
}
362-
363-
// Positive and Negative Tracks
364-
const auto& posTrack = v0.posTrack_as<PIDTracks>();
365-
const auto& negTrack = v0.negTrack_as<PIDTracks>();
333+
if (!calibrationMode) {
334+
for (const auto& v0 : fullV0s) {
366335

367-
if (!posTrack.passedTPCRefit())
368-
continue;
369-
if (!negTrack.passedTPCRefit())
370-
continue;
371-
372-
float signedPpos = posTrack.sign() * posTrack.tpcInnerParam();
373-
float signedPneg = negTrack.sign() * negTrack.tpcInnerParam();
374-
375-
float pxV0 = v0.px();
376-
float pyV0 = v0.py();
377-
float pzV0 = v0.pz();
378-
float pV0 = std::sqrt(pxV0 * pxV0 + pyV0 * pyV0 + pzV0 * pzV0);
379-
380-
float pxPos = posTrack.px();
381-
float pyPos = posTrack.py();
382-
float pzPos = posTrack.pz();
383-
384-
float pxNeg = negTrack.px();
385-
float pyNeg = negTrack.py();
386-
float pzNeg = negTrack.pz();
336+
// Standard V0 Selections
337+
if (!passedV0Selection(v0, collision)) {
338+
continue;
339+
}
387340

388-
const float gammaMass = 2 * MassElectron; // GeV/c^2
341+
if (v0.dcaV0daughters() > dcaV0DaughtersMax) {
342+
continue;
343+
}
389344

390-
//-------------------Armenteros plots--------
345+
// Positive and Negative Tracks
346+
const auto& posTrack = v0.posTrack_as<PIDTracks>();
347+
const auto& negTrack = v0.negTrack_as<PIDTracks>();
391348

392-
float plPos = (pxPos * pxV0 + pyPos * pyV0 + pzPos * pzV0) / pV0;
393-
float plNeg = (pxNeg * pxV0 + pyNeg * pyV0 + pzNeg * pzV0) / pV0;
349+
if (!posTrack.passedTPCRefit())
350+
continue;
351+
if (!negTrack.passedTPCRefit())
352+
continue;
394353

395-
float alpha = (plPos - plNeg) / (plPos + plNeg);
396-
float pPos = std::sqrt(pxPos * pxPos + pyPos * pyPos + pzPos * pzPos);
397-
float qt = std::sqrt(pPos * pPos - plPos * plPos);
354+
float signedPpos = posTrack.sign() * posTrack.tpcInnerParam();
355+
float signedPneg = negTrack.sign() * negTrack.tpcInnerParam();
398356

399-
registryDeDx.fill(HIST(kArmenteros[0]), alpha, qt);
357+
float pxPos = posTrack.px();
358+
float pyPos = posTrack.py();
359+
float pzPos = posTrack.pz();
400360

401-
//-------------------------------------------
361+
float pxNeg = negTrack.px();
362+
float pyNeg = negTrack.py();
363+
float pzNeg = negTrack.pz();
402364

403-
// K0s Selection
404-
if (passedK0Selection(v0, negTrack, posTrack, collision)) {
405-
float ePosPi = posTrack.energy(MassPionCharged);
406-
float eNegPi = negTrack.energy(MassPionCharged);
365+
const float gammaMass = 2 * MassElectron; // GeV/c^2
407366

408-
float invMass = std::sqrt((eNegPi + ePosPi) * (eNegPi + ePosPi) - ((pxNeg + pxPos) * (pxNeg + pxPos) + (pyNeg + pyPos) * (pyNeg + pyPos) + (pzNeg + pzPos) * (pzNeg + pzPos)));
367+
// K0s Selection
368+
if (passedK0Selection(v0, negTrack, posTrack, collision)) {
369+
float ePosPi = posTrack.energy(MassPionCharged);
370+
float eNegPi = negTrack.energy(MassPionCharged);
409371

410-
if (std::abs(invMass - MassK0Short) > 0.01) {
411-
continue;
412-
}
372+
float invMass = std::sqrt((eNegPi + ePosPi) * (eNegPi + ePosPi) - ((pxNeg + pxPos) * (pxNeg + pxPos) + (pyNeg + pyPos) * (pyNeg + pyPos) + (pzNeg + pzPos) * (pzNeg + pzPos)));
413373

414-
registryDeDx.fill(HIST(kInvMass[0]), invMass * 1000);
415-
registryDeDx.fill(HIST(kArmenteros[1]), alpha, qt);
374+
if (std::abs(invMass - MassK0Short) > 0.01) {
375+
continue;
376+
}
416377

417-
for (int i = 0; i < 8; ++i) {
418-
if (negTrack.eta() > EtaCut[i] && negTrack.eta() < EtaCut[i + 1]) {
378+
for (int i = 0; i < 8; ++i) {
379+
if (negTrack.eta() > EtaCut[i] && negTrack.eta() < EtaCut[i + 1]) {
419380

420-
registryDeDx.fill(HIST(kDedxvsMomentumV0[0]), signedPneg, negTrack.tpcSignal() * 50 / Correction[i], negTrack.eta());
421-
}
422-
if (posTrack.eta() > EtaCut[i] && posTrack.eta() < EtaCut[i + 1]) {
381+
registryDeDx.fill(HIST(kDedxvsMomentum[1]), signedPneg, negTrack.tpcSignal() * 50 / Correction[i], negTrack.eta());
382+
}
383+
if (posTrack.eta() > EtaCut[i] && posTrack.eta() < EtaCut[i + 1]) {
423384

424-
registryDeDx.fill(HIST(kDedxvsMomentumV0[0]), signedPpos, posTrack.tpcSignal() * 50 / Correction[i], posTrack.eta());
385+
registryDeDx.fill(HIST(kDedxvsMomentum[1]), signedPpos, posTrack.tpcSignal() * 50 / Correction[i], posTrack.eta());
386+
}
425387
}
426388
}
427-
}
428389

429-
// Lambda Selection
430-
if (passedLambdaSelection(v0, negTrack, posTrack, collision)) {
431-
float ePosPr = posTrack.energy(MassProton);
432-
float eNegPi = negTrack.energy(MassPionCharged);
390+
// Lambda Selection
391+
if (passedLambdaSelection(v0, negTrack, posTrack, collision)) {
433392

434-
float invMass = std::sqrt((eNegPi + ePosPr) * (eNegPi + ePosPr) - ((pxNeg + pxPos) * (pxNeg + pxPos) + (pyNeg + pyPos) * (pyNeg + pyPos) + (pzNeg + pzPos) * (pzNeg + pzPos)));
393+
float ePosPr = posTrack.energy(MassProton);
394+
float eNegPi = negTrack.energy(MassPionCharged);
435395

436-
if (std::abs(invMass - MassLambda) > 0.01) {
437-
continue;
438-
}
396+
float invMass = std::sqrt((eNegPi + ePosPr) * (eNegPi + ePosPr) - ((pxNeg + pxPos) * (pxNeg + pxPos) + (pyNeg + pyPos) * (pyNeg + pyPos) + (pzNeg + pzPos) * (pzNeg + pzPos)));
439397

440-
registryDeDx.fill(HIST(kInvMass[1]), invMass);
441-
registryDeDx.fill(HIST(kArmenteros[2]), alpha, qt);
398+
if (std::abs(invMass - MassLambda) > 0.01) {
399+
continue;
400+
}
442401

443-
for (int i = 0; i < 8; ++i) {
444-
if (negTrack.eta() > EtaCut[i] && negTrack.eta() < EtaCut[i + 1]) {
402+
for (int i = 0; i < 8; ++i) {
403+
if (negTrack.eta() > EtaCut[i] && negTrack.eta() < EtaCut[i + 1]) {
445404

446-
registryDeDx.fill(HIST(kDedxvsMomentumV0[0]), signedPneg, negTrack.tpcSignal() * 50 / Correction[i], negTrack.eta());
447-
}
448-
if (posTrack.eta() > EtaCut[i] && posTrack.eta() < EtaCut[i + 1]) {
405+
registryDeDx.fill(HIST(kDedxvsMomentum[1]), signedPneg, negTrack.tpcSignal() * 50 / Correction[i], negTrack.eta());
406+
}
407+
if (posTrack.eta() > EtaCut[i] && posTrack.eta() < EtaCut[i + 1]) {
449408

450-
registryDeDx.fill(HIST(kDedxvsMomentumV0[1]), signedPpos, posTrack.tpcSignal() * 50 / Correction[i], posTrack.eta());
409+
registryDeDx.fill(HIST(kDedxvsMomentum[2]), signedPpos, posTrack.tpcSignal() * 50 / Correction[i], posTrack.eta());
410+
}
451411
}
452412
}
453-
}
454413

455-
// AntiLambda Selection
456-
if (passedAntiLambdaSelection(v0, negTrack, posTrack, collision)) {
414+
// AntiLambda Selection
415+
if (passedAntiLambdaSelection(v0, negTrack, posTrack, collision)) {
457416

458-
float ePosPi = posTrack.energy(MassPionCharged);
459-
float eNegPr = negTrack.energy(MassProton);
417+
float ePosPi = posTrack.energy(MassPionCharged);
418+
float eNegPr = negTrack.energy(MassProton);
460419

461-
float invMass = std::sqrt((eNegPr + ePosPi) * (eNegPr + ePosPi) - ((pxNeg + pxPos) * (pxNeg + pxPos) + (pyNeg + pyPos) * (pyNeg + pyPos) + (pzNeg + pzPos) * (pzNeg + pzPos)));
462-
463-
if (std::abs(invMass - MassLambda) > 0.01) {
464-
continue;
465-
}
420+
float invMass = std::sqrt((eNegPr + ePosPi) * (eNegPr + ePosPi) - ((pxNeg + pxPos) * (pxNeg + pxPos) + (pyNeg + pyPos) * (pyNeg + pyPos) + (pzNeg + pzPos) * (pzNeg + pzPos)));
466421

467-
registryDeDx.fill(HIST(kInvMass[2]), invMass);
468-
registryDeDx.fill(HIST(kArmenteros[3]), alpha, qt);
422+
if (std::abs(invMass - MassLambda) > 0.01) {
423+
continue;
424+
}
469425

470-
for (int i = 0; i < 8; ++i) {
471-
if (negTrack.eta() > EtaCut[i] && negTrack.eta() < EtaCut[i + 1]) {
426+
for (int i = 0; i < 8; ++i) {
427+
if (negTrack.eta() > EtaCut[i] && negTrack.eta() < EtaCut[i + 1]) {
472428

473-
registryDeDx.fill(HIST(kDedxvsMomentumV0[1]), signedPneg, negTrack.tpcSignal() * 50 / Correction[i], negTrack.eta());
474-
}
475-
if (posTrack.eta() > EtaCut[i] && posTrack.eta() < EtaCut[i + 1]) {
429+
registryDeDx.fill(HIST(kDedxvsMomentum[2]), signedPneg, negTrack.tpcSignal() * 50 / Correction[i], negTrack.eta());
430+
}
431+
if (posTrack.eta() > EtaCut[i] && posTrack.eta() < EtaCut[i + 1]) {
476432

477-
registryDeDx.fill(HIST(kDedxvsMomentumV0[0]), signedPpos, posTrack.tpcSignal() * 50 / Correction[i], posTrack.eta());
433+
registryDeDx.fill(HIST(kDedxvsMomentum[1]), signedPpos, posTrack.tpcSignal() * 50 / Correction[i], posTrack.eta());
434+
}
478435
}
479436
}
480-
}
481-
482-
// Gamma Selection
483-
if (passedGammaSelection(v0, negTrack, posTrack, collision)) {
484437

485-
float ePosEl = posTrack.energy(MassElectron);
486-
float eNegEl = negTrack.energy(MassElectron);
438+
// Gamma Selection
439+
if (passedGammaSelection(v0, negTrack, posTrack, collision)) {
487440

488-
float invMass = std::sqrt((eNegEl + ePosEl) * (eNegEl + ePosEl) - ((pxNeg + pxPos) * (pxNeg + pxPos) + (pyNeg + pyPos) * (pyNeg + pyPos) + (pzNeg + pzPos) * (pzNeg + pzPos)));
441+
float ePosEl = posTrack.energy(MassElectron);
442+
float eNegEl = negTrack.energy(MassElectron);
489443

490-
if (std::abs(invMass - gammaMass) > 0.0015) {
491-
continue;
492-
}
444+
float invMass = std::sqrt((eNegEl + ePosEl) * (eNegEl + ePosEl) - ((pxNeg + pxPos) * (pxNeg + pxPos) + (pyNeg + pyPos) * (pyNeg + pyPos) + (pzNeg + pzPos) * (pzNeg + pzPos)));
493445

494-
registryDeDx.fill(HIST(kInvMass[3]), invMass * 1000);
495-
registryDeDx.fill(HIST(kArmenteros[4]), alpha, qt);
446+
if (std::abs(invMass - gammaMass) > 0.0015) {
447+
continue;
448+
}
496449

497-
for (int i = 0; i < 8; ++i) {
498-
if (negTrack.eta() > EtaCut[i] && negTrack.eta() < EtaCut[i + 1]) {
450+
for (int i = 0; i < 8; ++i) {
451+
if (negTrack.eta() > EtaCut[i] && negTrack.eta() < EtaCut[i + 1]) {
499452

500-
registryDeDx.fill(HIST(kDedxvsMomentumV0[2]), signedPneg, negTrack.tpcSignal() * 50 / Correction[i], negTrack.eta());
501-
}
502-
if (posTrack.eta() > EtaCut[i] && posTrack.eta() < EtaCut[i + 1]) {
453+
registryDeDx.fill(HIST(kDedxvsMomentum[3]), signedPneg, negTrack.tpcSignal() * 50 / Correction[i], negTrack.eta());
454+
}
455+
if (posTrack.eta() > EtaCut[i] && posTrack.eta() < EtaCut[i + 1]) {
503456

504-
registryDeDx.fill(HIST(kDedxvsMomentumV0[2]), signedPpos, posTrack.tpcSignal() * 50 / Correction[i], posTrack.eta());
457+
registryDeDx.fill(HIST(kDedxvsMomentum[3]), signedPpos, posTrack.tpcSignal() * 50 / Correction[i], posTrack.eta());
458+
}
505459
}
506460
}
507461
}

0 commit comments

Comments
 (0)