Skip to content

Commit 17b63c0

Browse files
committed
Optimize CPU usage in UPC Lc task
1 parent 30d4749 commit 17b63c0

1 file changed

Lines changed: 17 additions & 10 deletions

File tree

PWGHF/D2H/Tasks/taskUpcLc.cxx

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ struct HfTaskUpcLc {
116116
Configurable<std::vector<double>> binsPt{"binsPt", std::vector<double>{hf_cuts_lc_to_p_k_pi::vecBinsPt}, "pT bin limits"};
117117
Configurable<bool> fillTreeOnlySingleGap{"fillTreeOnlySingleGap", false, "Only fill the tree for candidates that pass the single-gap UPC events"};
118118
Configurable<bool> fillTreeUpcQa{"fillTreeUpcQa", false, "Fill Tree for UPC QA"};
119+
Configurable<bool> fillHistQa{"fillHistQa", false, "Fill histograms for UPC detector QA"};
119120
Configurable<bool> verticesWithUpc{"verticesWithUpc", false, "Consider vertices with UPC settings"};
120121
Configurable<float> zdcTimeThreshold{"zdcTimeThreshold", 2., "Threshold for ZNA/ZNC time"};
121122
// CCDB configuration
@@ -154,7 +155,7 @@ struct HfTaskUpcLc {
154155
}
155156

156157
auto vbins = (std::vector<double>)binsPt;
157-
registry.add("Data/fitInfo/ampFT0A_vs_ampFT0C", "FT0-A vs FT0-C amplitude;FT0-A amplitude (a.u.);FT0-C amplitude (a.u.)", {HistType::kTH2F, {{500, 0., 500}, {500, 0., 500}}});
158+
registry.add("Data/fitInfo/ampFT0A_vs_ampFT0C", "FT0-A vs FT0-C amplitude;FT0-A amplitude (a.u.);FT0-C amplitude (a.u.)", {HistType::kTH2F, {{200, 0., 200}, {200, 0., 200}}});
158159
registry.add("Data/zdc/energyZNA_vs_energyZNC", "ZNA vs ZNC common energy;E_{ZNA}^{common} (a.u.);E_{ZNC}^{common} (a.u.)", {HistType::kTH2F, {{100, 0., 10}, {100, 0., 10}}});
159160
registry.add("Data/zdc/timeZNA_vs_timeZNC", "ZNA vs ZNC time;ZNA Time;ZNC time", {HistType::kTH2F, {{200, -10., 10}, {200, -10., 10}}});
160161
registry.add("Data/hUpcGapAfterSelection", "UPC gap type after selection;Gap side;Counts", {HistType::kTH1F, {{7, -1.5, 5.5}}});
@@ -195,6 +196,9 @@ struct HfTaskUpcLc {
195196
}
196197
const auto thisCollId = collision.globalIndex();
197198
const auto& groupedLcCandidates = candidates.sliceBy(candLcPerCollision, thisCollId);
199+
if (!fillTreeUpcQa && !fillHistQa && groupedLcCandidates.size() == 0) {
200+
continue;
201+
}
198202
const auto numPvContributors = collision.numContrib();
199203
const auto& bc = collision.template bc_as<BCsType>();
200204

@@ -232,27 +236,30 @@ struct HfTaskUpcLc {
232236
zdcEnergyZNC = zdc.energyCommonZNC();
233237
zdcTimeZNA = zdc.timeZNA();
234238
zdcTimeZNC = zdc.timeZNC();
235-
registry.fill(HIST("Data/fitInfo/ampFT0A_vs_ampFT0C"), fitInfo.ampFT0A, fitInfo.ampFT0C);
236-
registry.fill(HIST("Data/zdc/energyZNA_vs_energyZNC"), zdcEnergyZNA, zdcEnergyZNC);
237-
registry.fill(HIST("Data/zdc/timeZNA_vs_timeZNC"), zdcTimeZNA, zdcTimeZNC);
239+
if (fillHistQa) {
240+
registry.fill(HIST("Data/fitInfo/ampFT0A_vs_ampFT0C"), fitInfo.ampFT0A, fitInfo.ampFT0C);
241+
registry.fill(HIST("Data/zdc/energyZNA_vs_energyZNC"), zdcEnergyZNA, zdcEnergyZNC);
242+
registry.fill(HIST("Data/zdc/timeZNA_vs_timeZNC"), zdcTimeZNA, zdcTimeZNC);
243+
}
238244
registry.fill(HIST("Data/hUpcGapAfterSelection"), static_cast<int>(gap));
239245
}
240246
const bool ignoreZdcTime = (zdcTimeThreshold < 0.f);
241-
247+
const auto multNTracksPV = collision.multNTracksPV();
248+
const auto posZ = collision.posZ();
242249
if (gap == o2::aod::sgselector::TrueGap::SingleGapA && (ignoreZdcTime || (std::abs(zdcTimeZNA) > zdcTimeThreshold && std::abs(zdcTimeZNC) < zdcTimeThreshold))) {
243250
gapA0nXn = true;
244251
}
245252
if (gap == o2::aod::sgselector::TrueGap::SingleGapC && (ignoreZdcTime || (std::abs(zdcTimeZNA) < zdcTimeThreshold && std::abs(zdcTimeZNC) > zdcTimeThreshold))) {
246253
gapCXn0n = true;
247254
}
248-
if (fillTreeOnlySingleGap & !gapA0nXn & !gapCXn0n) {
255+
if (fillTreeOnlySingleGap && !gapA0nXn && !gapCXn0n) {
249256
continue;
250257
}
251-
registry.fill(HIST("Data/hUpcMulti"), collision.multNTracksPV());
252-
registry.fill(HIST("Data/hUpcVtz"), collision.posZ());
258+
registry.fill(HIST("Data/hUpcMulti"), multNTracksPV);
259+
registry.fill(HIST("Data/hUpcVtz"), posZ);
253260

254261
if (fillTreeUpcQa) {
255-
rowUpcQa(numPvContributors, collision.multNTracksPV(), collision.posZ(), fitInfo.ampFT0A, fitInfo.ampFT0C, zdcTimeZNA, zdcTimeZNC);
262+
rowUpcQa(numPvContributors, multNTracksPV, posZ, fitInfo.ampFT0A, fitInfo.ampFT0C, zdcTimeZNA, zdcTimeZNC);
256263
}
257264

258265
for (const auto& candidate : groupedLcCandidates) {
@@ -272,10 +279,10 @@ struct HfTaskUpcLc {
272279
const auto eta = candidate.eta();
273280

274281
double outputBkg(-1);
282+
registry.fill(HIST("Data/eta_vs_Multi"), eta, multNTracksPV);
275283

276284
auto fillTHnData = [&](bool isPKPi) {
277285
const auto massLc = isPKPi ? HfHelper::invMassLcToPKPi(candidate) : HfHelper::invMassLcToPiKP(candidate);
278-
registry.fill(HIST("Data/eta_vs_Multi"), eta, collision.multNTracksPV());
279286
if constexpr (FillMl) {
280287
const auto& mlProb = isPKPi ? candidate.mlProbLcToPKPi() : candidate.mlProbLcToPiKP();
281288
if (mlProb.size() == NumberOfMlClasses) {

0 commit comments

Comments
 (0)