Skip to content

Commit 3fd8b0b

Browse files
committed
Add configurable for passName and check validity of input flag
1 parent abd09b6 commit 3fd8b0b

2 files changed

Lines changed: 43 additions & 14 deletions

File tree

‎PWGDQ/Tasks/dqEfficiency_withAssoc.cxx‎

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -310,9 +310,11 @@ struct AnalysisEventSelection {
310310
Configurable<std::string> fConfigCcdbUrl{"ccdb-url", "http://alice-ccdb.cern.ch", "url of the ccdb repository"};
311311
Configurable<int64_t> fConfigNoLaterThan{"ccdb-no-later-than", std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count(), "latest acceptable timestamp of creation for the object"};
312312

313-
Configurable<bool> cfgUseRCT{"cfgUseRCT", false, "Apply RCT quality selection"};
314-
Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT", "RCT selection label"};
315-
Configurable<bool> cfgCheckZDC{"cfgCheckZDC", false, "Also check ZDC quality"};
313+
o2::framework::Configurable<bool> cfgUseRCT{"cfgUseRCT", false, "Apply RCT quality selection"};
314+
o2::framework::Configurable<std::string> cfgRCTPath{"cfgRCTPath", "RCT/Flags/RunFlags", "CCDB path to the RCT run flags"};
315+
o2::framework::Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT", "RCT selection label"};
316+
o2::framework::Configurable<bool> cfgCheckZDC{"cfgCheckZDC", false, "Also check ZDC quality"};
317+
o2::framework::Configurable<std::string> cfgRCTPassName{"cfgRCTPassName", "", "Reconstruction pass; leave empty for run-only lookup"};
316318

317319
HistogramManager* fHistMan = nullptr;
318320
MixingHandler* fMixHandler = nullptr;
@@ -389,10 +391,14 @@ struct AnalysisEventSelection {
389391
fCCDBApi.init(fConfigCcdbUrl.value);
390392

391393
if (cfgUseRCT.value) {
394+
if (cfgRCTLabel.value != "CBT" && cfgRCTLabel.value != "CBT_hadronPID" && cfgRCTLabel.value != "CBT_electronPID" && cfgRCTLabel.value != "CBT_calo" && cfgRCTLabel.value != "CBT_muon" && cfgRCTLabel.value != "CBT_muon_glo") {
395+
LOGF(fatal, "RCT Label \"%s\" is unknown.", cfgRCTLabel.value.c_str());
396+
}
397+
392398
rctChecker.init(cfgRCTLabel.value, cfgCheckZDC.value);
393399

394400
if (!rctChecker.any()) {
395-
LOGF(fatal, "Empty RCT mask: check cfgRCTLabel");
401+
LOGF(fatal, "Empty RCT mask: check cfgRCTLabel.");
396402
}
397403
}
398404
}
@@ -401,12 +407,21 @@ struct AnalysisEventSelection {
401407
{
402408
std::map<std::string, std::string> metadata{{"run", std::to_string(run)}};
403409

404-
auto* flags = fCCDB->getSpecific<std::map<uint64_t, uint32_t>>("RCT/Flags/RunFlags", timestamp, metadata);
405-
if (flags == nullptr || flags->empty()) {
406-
LOGF(fatal, "Missing or empty RCT flags for run " + std::to_string(run));
410+
LOG(info) << "Requesting " << cfgRCTPath.value << " run=" << run << " timestamp=" << timestamp;
411+
412+
if (!cfgRCTPassName.value.empty()) {
413+
metadata["passName"] = cfgRCTPassName.value;
407414
}
408415

409-
LOG(info) << "Requesting RCT/Flags/RunFlags" << " run=" << run << " timestamp=" << timestamp;
416+
auto* flags = fCCDB->getSpecific<std::map<uint64_t, uint32_t>>(cfgRCTPath.value, timestamp, metadata);
417+
if (flags == nullptr && !cfgRCTPassName.value.empty()) {
418+
metadata.erase("passName");
419+
flags = fCCDB->getSpecific<std::map<uint64_t, uint32_t>>(cfgRCTPath.value, timestamp, metadata);
420+
}
421+
422+
if (flags == nullptr || flags->empty()) {
423+
LOGF(fatal, "Missing or empty RCT flags for run %d.", run);
424+
}
410425

411426
rctFlags = *flags;
412427
rctRun = run;

‎PWGDQ/Tasks/tableReader_withAssoc.h‎

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -341,8 +341,10 @@ struct AnalysisEventSelection {
341341
o2::framework::Configurable<std::string> fConfigIRSource{"cfgIRSource", "ZNC hadronic", "Estimator of the interaction rate (Recommended: pp --> T0VTX, Pb-Pb --> ZNC hadronic)"};
342342

343343
o2::framework::Configurable<bool> cfgUseRCT{"cfgUseRCT", false, "Apply RCT quality selection"};
344+
o2::framework::Configurable<std::string> cfgRCTPath{"cfgRCTPath", "RCT/Flags/RunFlags", "CCDB path to the RCT run flags"};
344345
o2::framework::Configurable<std::string> cfgRCTLabel{"cfgRCTLabel", "CBT", "RCT selection label"};
345346
o2::framework::Configurable<bool> cfgCheckZDC{"cfgCheckZDC", false, "Also check ZDC quality"};
347+
o2::framework::Configurable<std::string> cfgRCTPassName{"cfgRCTPassName", "", "Reconstruction pass; leave empty for run-only lookup"};
346348

347349
HistogramManager* fHistMan = nullptr;
348350
MixingHandler* fMixHandler = nullptr;
@@ -362,7 +364,6 @@ struct AnalysisEventSelection {
362364

363365
void init(o2::framework::InitContext& context)
364366
{
365-
366367
bool isAnyProcessEnabled = context.mOptions.get<bool>("processSkimmed") || context.mOptions.get<bool>("processSkimmedBasic") || context.mOptions.get<bool>("processSkimmedWithZdc") || context.mOptions.get<bool>("processSkimmedWithMultExtra") || context.mOptions.get<bool>("processSkimmedWithMultExtraNoQvector") || context.mOptions.get<bool>("processSkimmedWithMultExtraZdc") || context.mOptions.get<bool>("processSkimmedWithMultExtraZdcFit") || context.mOptions.get<bool>("processSkimmedWithQvectorCentr") || context.mOptions.get<bool>("processSkimmedWithQvectorCentrMerge");
367368
bool isDummyEnabled = context.mOptions.get<bool>("processDummy");
368369

@@ -435,10 +436,14 @@ struct AnalysisEventSelection {
435436
fCCDBApi.init(fConfigCcdbUrl.value);
436437

437438
if (cfgUseRCT.value) {
439+
if (cfgRCTLabel.value != "CBT" && cfgRCTLabel.value != "CBT_hadronPID" && cfgRCTLabel.value != "CBT_electronPID" && cfgRCTLabel.value != "CBT_calo" && cfgRCTLabel.value != "CBT_muon" && cfgRCTLabel.value != "CBT_muon_glo") {
440+
LOGF(fatal, "RCT Label \"%s\" is unknown.", cfgRCTLabel.value.c_str());
441+
}
442+
438443
rctChecker.init(cfgRCTLabel.value, cfgCheckZDC.value);
439444

440445
if (!rctChecker.any()) {
441-
LOGF(fatal, "Empty RCT mask: check cfgRCTLabel");
446+
LOGF(fatal, "Empty RCT mask: check cfgRCTLabel.");
442447
}
443448
}
444449
}
@@ -447,12 +452,21 @@ struct AnalysisEventSelection {
447452
{
448453
std::map<std::string, std::string> metadata{{"run", std::to_string(run)}};
449454

450-
auto* flags = fCCDB->getSpecific<std::map<uint64_t, uint32_t>>("RCT/Flags/RunFlags", timestamp, metadata);
451-
if (flags == nullptr || flags->empty()) {
452-
LOGF(fatal, "Missing or empty RCT flags for run " + std::to_string(run));
455+
LOG(info) << "Requesting " << cfgRCTPath.value << " run=" << run << " timestamp=" << timestamp;
456+
457+
if (!cfgRCTPassName.value.empty()) {
458+
metadata["passName"] = cfgRCTPassName.value;
453459
}
454460

455-
LOG(info) << "Requesting RCT/Flags/RunFlags" << " run=" << run << " timestamp=" << timestamp;
461+
auto* flags = fCCDB->getSpecific<std::map<uint64_t, uint32_t>>(cfgRCTPath.value, timestamp, metadata);
462+
if (flags == nullptr && !cfgRCTPassName.value.empty()) {
463+
metadata.erase("passName");
464+
flags = fCCDB->getSpecific<std::map<uint64_t, uint32_t>>(cfgRCTPath.value, timestamp, metadata);
465+
}
466+
467+
if (flags == nullptr || flags->empty()) {
468+
LOGF(fatal, "Missing or empty RCT flags for run %d.", run);
469+
}
456470

457471
rctFlags = *flags;
458472
rctRun = run;

0 commit comments

Comments
 (0)