Skip to content
Snippets Groups Projects
Commit e63d445a authored by Pierre-Alain Loizeau's avatar Pierre-Alain Loizeau Committed by Volker Friese
Browse files

Add enabling of individual QA steps in algo code

parent 3471dbd8
No related branches found
No related tags found
1 merge request!1842Add in algo an example of time-in-run hist: processed TS per start time
......@@ -54,6 +54,31 @@ namespace cbm::algo
mCBM2024_05,
};
enum class QaStep
{
BeamBmon,
UnpackBmon,
UnpackSts,
UnpackMvd,
UnpackRich,
UnpackTrd1d,
UnpackTrd2d,
UnpackMuch,
UnpackTof,
UnpackFsd,
EventBuilding,
RecoBmon,
RecoSts,
RecoMvd,
RecoRich,
RecoTrd1d,
RecoTrd2d,
RecoMuch,
RecoTof,
RecoFsd,
Tracking,
};
} // namespace cbm::algo
CBM_ENUM_DICT(fles::Subsystem,
......@@ -100,4 +125,28 @@ CBM_ENUM_DICT(cbm::algo::Setup,
{"mCBM2024_05", cbm::algo::Setup::mCBM2024_05}
);
CBM_ENUM_DICT(cbm::algo::QaStep,
{"BeamBmon", cbm::algo::QaStep::BeamBmon},
{"UnpackBmon", cbm::algo::QaStep::UnpackBmon},
{"UnpackSts", cbm::algo::QaStep::UnpackSts},
{"UnpackMvd", cbm::algo::QaStep::UnpackMvd},
{"UnpackRich", cbm::algo::QaStep::UnpackRich},
{"UnpackTrd1d", cbm::algo::QaStep::UnpackTrd1d},
{"UnpackTrd2d", cbm::algo::QaStep::UnpackTrd2d},
{"UnpackMuch", cbm::algo::QaStep::UnpackMuch},
{"UnpackTof", cbm::algo::QaStep::UnpackTof},
{"UnpackFsd", cbm::algo::QaStep::UnpackFsd},
{"EventBuilding", cbm::algo::QaStep::EventBuilding},
{"RecoBmon", cbm::algo::QaStep::RecoBmon},
{"RecoSts", cbm::algo::QaStep::RecoSts},
{"RecoMvd", cbm::algo::QaStep::RecoMvd},
{"RecoRich", cbm::algo::QaStep::RecoRich},
{"RecoTrd1d", cbm::algo::QaStep::RecoTrd1d},
{"RecoTrd2d", cbm::algo::QaStep::RecoTrd2d},
{"RecoMuch", cbm::algo::QaStep::RecoMuch},
{"RecoTof", cbm::algo::QaStep::RecoTof},
{"RecoFsd", cbm::algo::QaStep::RecoFsd},
{"Tracking", cbm::algo::QaStep::Tracking}
);
#endif
......@@ -77,15 +77,17 @@ Options::Options(int argc, char** argv)
" 0 = no buffering, num = nb updates kept in buffer if not pulled by server \n"
" Tune to avoid too high memory usage but also adapt to server load!")
("aux-data", po::value(&fCollectAuxData)->implicit_value(true), "Enables collecting of auxiliary data from algorithms")
("qa", po::value(&fQaSteps)->multitoken()->default_value({QaStep::UnpackSts, QaStep::EventBuilding, QaStep::Tracking})->value_name("<qa steps>"),
"space separated list of QA Steps to enable (BeamBmon, UnpackSts, EventBuilding, Tracking, ...)")
("log-file,L", po::value(&fLogFile)->value_name("<file>"),
"write log messages to file")
("output-types,O", po::value(&fOutputTypes)->multitoken()->value_name("<types>"),
"space separated list of reconstruction output types (Hit, Tracks, DigiTimeslice, DigiEvent, ...)")
("compress-archive", po::bool_switch(&fCompressArchive)->default_value(false), "Enable compression for output archives")
("steps", po::value(&fRecoSteps)->multitoken()->default_value({Step::Unpack, Step::DigiTrigger, Step::LocalReco, Step::Tracking})->value_name("<steps>"),
"space seperated list of reconstruction steps (unpack, digitrigger, localreco, ...)")
"space separated list of reconstruction steps (unpack, digitrigger, localreco, ...)")
("systems,s", po::value(&fDetectors)->multitoken()->default_value({Subsystem::STS, Subsystem::TOF, Subsystem::BMON, Subsystem::MUCH, Subsystem::RICH, Subsystem::TRD, Subsystem::TRD2D})->value_name("<detectors>"),
"space seperated list of detectors to process (sts, mvd, ...)")
"space separated list of detectors to process (sts, mvd, ...)")
("child-id,c", po::value(&fChildId)->default_value("00")->value_name("<id>"), "online process id on node")
("run-id,r", po::value(&fRunId)->default_value(2391)->value_name("<RunId>"), "Run ID, for now flesctl run index, later run start time")
("num-ts,n", po::value(&fNumTimeslices)->default_value(-1)->value_name("<num>"),
......@@ -143,3 +145,5 @@ bool Options::HasOutput(RecoData recoData) const { return Contains(fOutputTypes,
bool Options::Has(fles::Subsystem detector) const { return Contains(fDetectors, detector); }
bool Options::Has(Step step) const { return Contains(fRecoSteps, step); }
bool Options::Has(QaStep qastep) const { return Contains(fQaSteps, qastep); }
......@@ -62,6 +62,8 @@ namespace cbm::algo
bool Has(Step step) const;
bool Has(QaStep qastep) const;
private: // members
std::string fParamsDir; // TODO: can we make this a std::path?
std::string fInputLocator;
......@@ -72,6 +74,7 @@ namespace cbm::algo
std::string fMonitorUri;
std::string fHistogramUri;
int32_t fHistogramHwm;
std::vector<QaStep> fQaSteps;
bool fDumpArchive = false;
bool fReleaseMode = false;
ProfilingLevel fProfilingLevel = ProfilingNone;
......
......@@ -128,7 +128,7 @@ void Reco::Init(const Options& opts)
sts::ReadoutConfig readout{readoutSetup, chanMask};
sts::Unpack::Config cfg{.readout = readout, .walkMap = walkMap, .bCollectAuxData = bCollectAux};
fStsUnpack = std::make_unique<sts::Unpack>(cfg);
if (fSender != nullptr) {
if (fSender != nullptr && Opts().Has(QaStep::UnpackSts)) {
fStsDigiQa = std::make_unique<sts::DigiQa>(fSender);
fStsDigiQa->SetUseAuxData(bCollectAux);
fStsDigiQa->RegisterReadoutSetup(readoutSetup);
......@@ -164,7 +164,8 @@ void Reco::Init(const Options& opts)
if (Opts().Has(Step::DigiTrigger)) {
fs::path configFile = opts.ParamsDir() / "EventbuildConfig.yaml";
evbuild::Config config(YAML::LoadFile(configFile.string()));
fEventBuild = std::make_unique<evbuild::EventbuildChain>(config, fSender);
fEventBuild =
std::make_unique<evbuild::EventbuildChain>(config, (Opts().Has(QaStep::EventBuilding) ? fSender : nullptr));
fEventBuild->RegisterTrackingSetup(pTrackingSetup);
}
......@@ -199,7 +200,7 @@ void Reco::Init(const Options& opts)
// Tracking
if (Opts().Has(Step::Tracking)) {
fTracking = std::make_unique<TrackingChain>(fSender);
fTracking = std::make_unique<TrackingChain>(Opts().Has(QaStep::Tracking) ? fSender : nullptr);
fTracking->RegisterSetup(pTrackingSetup);
fTracking->SetContext(&fContext);
fTracking->Init();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment