diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b59052690..0ba517db06 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -94,6 +94,7 @@ file an issue, so that we can see how to handle this. * Consider calling `fairroot_check_root_cxxstd_compatibility()` in your `CMakeLists.txt`. * `fairsoft-config` isn't searched for and not needed any more. +* `FairSource` now supports additional private virtual function `FinishTask()`, which is called in the end of the run. ### Example Changes in Experiment Repos * https://github.com/R3BRootGroup/R3BRoot/pull/413 diff --git a/fairroot/base/source/FairSource.h b/fairroot/base/source/FairSource.h index e76a477e0b..045fe3d34a 100644 --- a/fairroot/base/source/FairSource.h +++ b/fairroot/base/source/FairSource.h @@ -51,10 +51,14 @@ class FairSource : public TObject virtual void FillEventHeader(FairEventHeader* feh); void SetRunId(Int_t runId) { fRunId = runId; } Int_t GetRunId() const { return fRunId; } + void Finish() { FinishTask(); } protected: Int_t fRunId; + private: + virtual void FinishTask() {} + public: ClassDefOverride(FairSource, 2); }; diff --git a/fairroot/base/steer/FairRunAna.cxx b/fairroot/base/steer/FairRunAna.cxx index dbe73cf0a3..c22d02673f 100644 --- a/fairroot/base/steer/FairRunAna.cxx +++ b/fairroot/base/steer/FairRunAna.cxx @@ -551,6 +551,7 @@ void FairRunAna::TerminateRun() { fRootManager->StoreAllWriteoutBufferData(); fTask->FinishTask(); + GetSource()->Finish(); // gDirectory->SetName(fRootManager->GetOutFile()->GetName()); // fRunInfo.WriteInfo(); // CRASHES due to file ownership i guess... // cout << ">>> SlaveTerminate fRootManager->GetInChain()->Print()" << endl; diff --git a/fairroot/online/steer/FairRunOnline.cxx b/fairroot/online/steer/FairRunOnline.cxx index 2c51a39da7..ca76f4bcfe 100644 --- a/fairroot/online/steer/FairRunOnline.cxx +++ b/fairroot/online/steer/FairRunOnline.cxx @@ -307,6 +307,7 @@ void FairRunOnline::Run(Int_t Ev_start, Int_t Ev_end) void FairRunOnline::Finish() { fTask->FinishTask(); + GetSource()->Finish(); fRootManager->LastFill(); fRootManager->Write(); GetSource()->Close();