diff --git a/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx b/reco/eventbuilder/digis/CbmSeedFinderSlidingWindow.cxx index bca3bcc80b59218f9354854a9c8f346cc70743f3..b93da4712830685518d3a9dc583011d00f5ca960 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 5c2b49b5bf740dbffcae5c7a67edfdf97803d435..7c891fcf88d6770995ae565ef11ae74416613127 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 658e741aeecf57d816f2c6210a4e30f327d27929..fbbced420d682de1d2bfaab622fa19bf02783d02 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);