From 4e058891e9608b74d6cce1dd0e3970070b7627b3 Mon Sep 17 00:00:00 2001 From: Dominik Smith <d.smith@gsi.de> Date: Thu, 3 Mar 2022 15:48:29 +0100 Subject: [PATCH] CbmSeedFinderSlidingWindow: Fixed issue whereby seed finder still required digi input to be present in ideal mode. --- .../digis/CbmSeedFinderSlidingWindow.cxx | 10 ++++++++++ .../digis/CbmSeedFinderSlidingWindow.h | 4 ++++ .../digis/CbmTaskBuildRawEvents.cxx | 17 +++++++++++------ 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx index bca3bcc80b..b93da47128 100644 --- a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx +++ b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx @@ -136,6 +136,16 @@ template void CbmSeedFinderSlidingWindow::FillSeedTimes(const std::vector<CbmTof template void CbmSeedFinderSlidingWindow::FillSeedTimes(const std::vector<CbmTrdDigi>*, const std::vector<CbmMatch>*); template void CbmSeedFinderSlidingWindow::FillSeedTimes(const std::vector<double>*, const std::vector<CbmMatch>*); +void CbmSeedFinderSlidingWindow::FillSeedTimes() +{ + if (!fbIdealMode) { + std::cout << "CbmSeedFinderSlidingWindow: Error, called algo without digi input, but ideal mode is not set." + << std::endl; + exit(1); + } + FillSeedTimes<double>(nullptr); +} + template<class inType> double CbmSeedFinderSlidingWindow::GetTime(const std::vector<inType>* vIn, int32_t i) { diff --git a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.h b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.h index 5c2b49b5bf..7c891fcf88 100644 --- a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.h +++ b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.h @@ -63,6 +63,10 @@ public: template<class inType> void FillSeedTimes(const std::vector<inType>* vIn, const std::vector<CbmMatch>* vDigiMatch = nullptr); + /** @brief Function which builds event seeds without digi input. Can only be used in ideal mode. + **/ + void FillSeedTimes(); + /** @brief Sets a global constant offset which is applied to each trigger time * @params Value of offset **/ diff --git a/reco/eventbuilder/digis/CbmTaskBuildRawEvents.cxx b/reco/eventbuilder/digis/CbmTaskBuildRawEvents.cxx index 658e741aee..fbbced420d 100644 --- a/reco/eventbuilder/digis/CbmTaskBuildRawEvents.cxx +++ b/reco/eventbuilder/digis/CbmTaskBuildRawEvents.cxx @@ -59,11 +59,11 @@ void CbmTaskBuildRawEvents::SetSlidingWindowSeedFinder(int32_t minDigis, double delete fSeedFinderSlidingWindow; fSeedFinderSlidingWindow = nullptr; } - fSeedFinderSlidingWindow = new CbmSeedFinderSlidingWindow(fSeedTimes, minDigis, dWindDur, dDeadT); - fSeedFinderSlidingWindow->SetOffset(dOffset); - if (fSeedTimes == nullptr) { fSeedTimes = new std::vector<Double_t>; } fpAlgo->SetSeedTimes(fSeedTimes); + + fSeedFinderSlidingWindow = new CbmSeedFinderSlidingWindow(fSeedTimes, minDigis, dWindDur, dDeadT); + fSeedFinderSlidingWindow->SetOffset(dOffset); } void CbmTaskBuildRawEvents::SetSeedFinderQa(Bool_t bFlagIn) @@ -186,7 +186,6 @@ InitStatus CbmTaskBuildRawEvents::Init() return kFATAL; } - InitStatus CbmTaskBuildRawEvents::ReInit() { return kSUCCESS; } void CbmTaskBuildRawEvents::Exec(Option_t* /*option*/) @@ -371,8 +370,14 @@ void CbmTaskBuildRawEvents::FillSeedTimesFromDetList(std::vector<Double_t>* vdSe void CbmTaskBuildRawEvents::FillSeedTimesFromSlidingWindow() { if (fSeedTimeDetList.size() == 0) { - std::cout << "FillSeedTimesFromSlidingWindow(): Error, seed detector list empty." << std::endl; - exit(1); + if (fSeedFinderSlidingWindow->IsIdealMode()) { + fSeedFinderSlidingWindow->FillSeedTimes(); + return; + } + else { + std::cout << "FillSeedTimesFromSlidingWindow(): Error, seed detector list empty." << std::endl; + exit(1); + } } if (fSeedTimeDetList.size() == 1) { const RawEventBuilderDetector seedDet = fSeedTimeDetList.at(0); -- GitLab