From b600b05b9c648b7b046e498d403219e226a5e2a2 Mon Sep 17 00:00:00 2001 From: YanzhaoW Date: Fri, 17 Nov 2023 15:03:10 +0100 Subject: [PATCH] add a new inheritance interface FinishTask for fairsource --- CHANGELOG.md | 1 + fairroot/base/source/FairSource.h | 4 ++++ fairroot/base/steer/FairRunAna.cxx | 1 + fairroot/online/steer/FairRunOnline.cxx | 1 + 4 files changed, 7 insertions(+) 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();