diff --git a/algo/base/Options.cxx b/algo/base/Options.cxx index 9e3a72dcf4c18cde4e11be85e798a2ecc07d8dbe..0bdeba45012d0176b7006b6932d72a1e2d07fc4d 100644 --- a/algo/base/Options.cxx +++ b/algo/base/Options.cxx @@ -69,9 +69,9 @@ Options::Options(int argc, char** argv) "write log messages to file") ("output,o", po::value(&fOutputTypes)->multitoken()->default_value({RecoData::Hit})->value_name("<types>"), "comma seperated list of reconstruction output types (hit, digi, ...)") - ("steps", po::value(&fRecoSteps)->multitoken()->default_value({Step::LocalReco})->value_name("<steps>"), + ("steps", po::value(&fRecoSteps)->multitoken()->default_value({Step::Unpack, Step::LocalReco})->value_name("<steps>"), "comma seperated list of reconstruction steps (upack, digitrigger, localreco, ...)") - ("systems,s", po::value(&fDetectors)->multitoken()->default_value({fles::Subsystem::STS})->value_name("<detectors>"), + ("systems,s", po::value(&fDetectors)->multitoken()->default_value({fles::Subsystem::STS, fles::Subsystem::TOF, fles::Subsystem::BMON})->value_name("<detectors>"), "comma seperated list of detectors to process (sts, mvd, ...)") ("num-ts,n", po::value(&fNumTimeslices)->default_value(-1)->value_name("<num>"), "Stop after <num> timeslices (-1 = all)") diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx index dfad5dc7a5650b61631853209d5b159c8cb515af..835e25b503358293e1f9b058526618017c397e79 100644 --- a/algo/global/Reco.cxx +++ b/algo/global/Reco.cxx @@ -27,6 +27,8 @@ void Reco::Validate(const Options& opts) for (auto detector : opts.Detectors()) { switch (detector) { case fles::Subsystem::STS: break; + case fles::Subsystem::TOF: break; + case fles::Subsystem::BMON: break; default: throw std::runtime_error(fmt::format("Unsupported system: {}", ToString(detector))); } } @@ -85,15 +87,19 @@ void Reco::Run(const fles::Timeslice& ts) xpu::set<cbm::algo::Params>(Params()); std::vector<CbmStsDigi> digis; - switch (Params().sts.unpackMode) { - case RecoParams::UnpackMode::XPU: - // digis = fUnpackXpu.Exec(ts); - throw std::runtime_error("XPU unpacker currently not implemented"); - break; - default: - case RecoParams::UnpackMode::CPU: digis = fUnpack.Run(ts).first.fData.fSts.fDigis; break; + + if (Opts().HasStep(Step::Unpack)) { + switch (Params().sts.unpackMode) { + case RecoParams::UnpackMode::XPU: + // digis = fUnpackXpu.Exec(ts); + throw std::runtime_error("XPU unpacker currently not implemented"); + break; + default: + case RecoParams::UnpackMode::CPU: digis = fUnpack.Run(ts).first.fData.fSts.fDigis; break; + } } - fStsHitFinder(digis); + + if (Opts().HasStep(Step::LocalReco) && Opts().HasDetector(fles::Subsystem::STS)) fStsHitFinder(digis); xpu::timings ts_times = xpu::pop_timer(); diff --git a/algo/unpack/UnpackChain.cxx b/algo/unpack/UnpackChain.cxx index 3132c5d775dd56feda9ca5313ef11ac7f2090d38..52efc0a03d3c1078c4399b978f3838a0cedf50b5 100644 --- a/algo/unpack/UnpackChain.cxx +++ b/algo/unpack/UnpackChain.cxx @@ -7,15 +7,8 @@ using namespace cbm::algo; void UnpackChain::Init() { - // Disable walk correction for now. 2022 data crashes unpacker with hardcoded 2021 params. fUnpack.SetApplyWalkCorrection(true); - fUnpack.Init(std::vector<fles::Subsystem> { - fles::Subsystem::STS, - // fles::Subsystem::MUCH, - fles::Subsystem::TOF, fles::Subsystem::BMON, - // fles::Subsystem::TRD, - // fles::Subsystem::TRD2D, - }); + fUnpack.Init(Opts().Detectors()); } Unpack::resultType UnpackChain::Run(const fles::Timeslice& timeslice)