From 2e7dcbb37bf34dcb4bebea69c523b701058389f0 Mon Sep 17 00:00:00 2001 From: Volker Friese <v.friese@gsi.de> Date: Tue, 15 Mar 2022 08:56:15 +0100 Subject: [PATCH] Moved new class CbmReco to reco/tasks to prevent building on systems without C++17. --- reco/steer/CMakeLists.txt | 1 - reco/steer/CbmRecoSteerLinkDef.h | 2 -- reco/tasks/CMakeLists.txt | 5 +++-- reco/{steer => tasks}/CbmReco.cxx | 28 +++++++++++++--------------- reco/{steer => tasks}/CbmReco.h | 0 reco/tasks/CbmRecoTasksLinkDef.h | 5 ++++- 6 files changed, 20 insertions(+), 21 deletions(-) rename reco/{steer => tasks}/CbmReco.cxx (86%) rename reco/{steer => tasks}/CbmReco.h (100%) diff --git a/reco/steer/CMakeLists.txt b/reco/steer/CMakeLists.txt index 70e7cca988..2c0809ac3c 100644 --- a/reco/steer/CMakeLists.txt +++ b/reco/steer/CMakeLists.txt @@ -9,7 +9,6 @@ Set(LIBRARY_NAME CbmRecoSteer) # ----- Compilation sources ---------------------------- set(SRCS -CbmReco.cxx CbmRecoUnpack.cxx CbmSourceTsArchive.cxx ) diff --git a/reco/steer/CbmRecoSteerLinkDef.h b/reco/steer/CbmRecoSteerLinkDef.h index a6ab98f27e..f584bd911e 100644 --- a/reco/steer/CbmRecoSteerLinkDef.h +++ b/reco/steer/CbmRecoSteerLinkDef.h @@ -9,8 +9,6 @@ #pragma link off all functions; // --- Classes -#pragma link C++ class CbmReco + ; -#pragma link C++ class CbmRecoConfig + ; #pragma link C++ class CbmRecoUnpack + ; #pragma link C++ class CbmSourceTsArchive + ; diff --git a/reco/tasks/CMakeLists.txt b/reco/tasks/CMakeLists.txt index 4113b15c9d..dd87b3a51d 100644 --- a/reco/tasks/CMakeLists.txt +++ b/reco/tasks/CMakeLists.txt @@ -7,18 +7,19 @@ Set(LIBRARY_NAME CbmRecoTasks) # --------------------------------------------------------- + # ----- Compilation sources ---------------------------- set(SRCS +CbmReco.cxx +CbmSourceTs.cxx CbmTaskBuildEvents.cxx CbmTaskMakeRecoEvents.cxx CbmTaskTriggerDigi.cxx CbmTaskUnpack.cxx -CbmSourceTs.cxx ) # --------------------------------------------------------- - # ---- Include directories ------------------------------- set(INCLUDE_DIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} diff --git a/reco/steer/CbmReco.cxx b/reco/tasks/CbmReco.cxx similarity index 86% rename from reco/steer/CbmReco.cxx rename to reco/tasks/CbmReco.cxx index f8af5f90a9..b9f34ace60 100644 --- a/reco/steer/CbmReco.cxx +++ b/reco/tasks/CbmReco.cxx @@ -20,6 +20,7 @@ using std::cout; using std::endl; +using std::make_unique; using std::string; @@ -66,11 +67,8 @@ int32_t CbmReco::Run() TStopwatch timer; timer.Start(); - // TODO: I cannot yet use unique pointers for the objects to be passed to FairRunline. - // Ownership, however, is passed to FairRunOnline, which takes care of deleting the objects. - // --- Input source - auto source = new CbmSourceTs(fSourceNames); + auto source = make_unique<CbmSourceTs>(fSourceNames); if (source) LOG(info) << "Reco: Using sources " << ListSources(); else { LOG(error) << "Reco: Could not open sources " << ListSources() << "; aborting."; @@ -78,7 +76,7 @@ int32_t CbmReco::Run() } // --- Output file - auto sink = new FairRootFileSink(fOutputFileName.Data()); + auto sink = make_unique<FairRootFileSink>(fOutputFileName.Data()); if (sink) LOG(info) << "Reco: Using output file " << fOutputFileName.Data(); else { LOG(error) << "Reco: Could not open output " << fOutputFileName.Data() << "; aborting."; @@ -86,31 +84,31 @@ int32_t CbmReco::Run() } // --- Event header - auto header = new CbmTsEventHeader(); + auto header = make_unique<CbmTsEventHeader>(); // --- Unpacking - auto unpack = new CbmTaskUnpack(); + auto unpack = make_unique<CbmTaskUnpack>(); unpack->SetOutputBranchPersistent("DigiTimeslice.", fConfig.fStoreTimeslice); // --- Digi trigger - auto trigger = new CbmTaskTriggerDigi(); + auto trigger = make_unique<CbmTaskTriggerDigi>(); trigger->AddSystem(fConfig.fTriggerDet); trigger->SetAlgoParams(fConfig.fTriggerWin, fConfig.fTriggerThreshold, fConfig.fTriggerDeadTime); trigger->SetOutputBranchPersistent("Trigger", fConfig.fStoreTrigger); // --- Event building - auto evtBuild = new CbmTaskBuildEvents(); + auto evtBuild = make_unique<CbmTaskBuildEvents>(); for (auto& entry : fConfig.fEvtbuildWindows) evtBuild->SetEventWindow(entry.first, entry.second.first, entry.second.second); evtBuild->SetOutputBranchPersistent("DigiEvent", fConfig.fStoreEvents); // --- Run configuration - FairRunOnline run(source); - run.SetSink(sink); - run.SetEventHeader(header); - run.AddTask(unpack); - run.AddTask(trigger); - run.AddTask(evtBuild); + FairRunOnline run(source.release()); + run.SetSink(sink.release()); + run.SetEventHeader(header.release()); + run.AddTask(unpack.release()); + run.AddTask(trigger.release()); + run.AddTask(evtBuild.release()); // --- Initialise and start run timer.Stop(); diff --git a/reco/steer/CbmReco.h b/reco/tasks/CbmReco.h similarity index 100% rename from reco/steer/CbmReco.h rename to reco/tasks/CbmReco.h diff --git a/reco/tasks/CbmRecoTasksLinkDef.h b/reco/tasks/CbmRecoTasksLinkDef.h index 5525af94d5..9d2dbacc5b 100644 --- a/reco/tasks/CbmRecoTasksLinkDef.h +++ b/reco/tasks/CbmRecoTasksLinkDef.h @@ -11,10 +11,13 @@ #pragma link off all functions; // --- Classes +#pragma link C++ class CbmReco + ; +#pragma link C++ class CbmRecoConfig + ; +#pragma link C++ class CbmSourceTs + ; #pragma link C++ class CbmTaskBuildEvents + ; #pragma link C++ class CbmTaskMakeRecoEvents + ; #pragma link C++ class CbmTaskTriggerDigi + ; #pragma link C++ class CbmTaskUnpack + ; -#pragma link C++ class CbmSourceTs + ; + #endif /* __CINT__ */ -- GitLab