From 6f04bfdcc1a4fa72751073befcc5dbe8d0210ff0 Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Tue, 21 Mar 2023 15:16:07 +0100 Subject: [PATCH] Fix warnings about deprecated code With FairRoot v18.8 the functions GetOutputFile() and SetOutputFile() are deprecated instead of using a file sink. Correct user code to create the file sink correctly or to extract the file name from the file sink. Comparisons of results before and after the change showed that the results are absolutely identical. --- analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx | 38 +++++++------- core/field/CbmFieldCreator.cxx | 2 +- sim/response/base/CbmDigitization.cxx | 27 +++++----- sim/transport/steer/CbmTransport.cxx | 53 +++++++++++--------- 4 files changed, 67 insertions(+), 53 deletions(-) diff --git a/analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx b/analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx index b8a467a297..16dc585bbf 100644 --- a/analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx +++ b/analysis/PWGHAD/hadron/CbmHadronAnalysis.cxx @@ -37,23 +37,24 @@ using namespace std; #include "CbmTrdPoint.h" #include "CbmVertex.h" -#include "FairMCEventHeader.h" -#include "FairMCPoint.h" -#include "FairRootManager.h" -#include "FairRunAna.h" +#include <FairMCEventHeader.h> +#include <FairMCPoint.h> +#include <FairRootFileSink.h> +#include <FairRootManager.h> +#include <FairRunAna.h> #include <Logger.h> -#include "TClonesArray.h" -#include "TFile.h" -#include "TH1.h" -#include "TH1F.h" -#include "TH2F.h" -#include "TH3.h" -#include "TH3F.h" -#include "TMath.h" -#include "TROOT.h" -#include "TRandom.h" -#include "TString.h" +#include <TClonesArray.h> +#include <TFile.h> +#include <TH1.h> +#include <TH1F.h> +#include <TH2F.h> +#include <TH3.h> +#include <TH3F.h> +#include <TMath.h> +#include <TROOT.h> +#include <TRandom.h> +#include <TString.h> CbmDigiManager* fDigiMan; // TOF Input Digis TClonesArray* fEventsColl; // CBMEvents (time based) @@ -491,8 +492,11 @@ void CbmHadronAnalysis::CreateHistogramms() { // Create histogramms // gROOT->cd(); - FairRunAna* fRun = FairRunAna::Instance(); - fHist = fRun->GetOutputFile(); + auto sink = FairRunAna::Instance()->GetSink(); + assert(sink->GetSinkType() == kFILESINK); + auto rootFileSink = static_cast<FairRootFileSink*>(sink); + fHist = rootFileSink->GetRootFile(); + TString hname = fHist->GetName(); hname.Insert(hname.Length() - 5, ".HadAna"); fHist = new TFile(hname, "recreate"); diff --git a/core/field/CbmFieldCreator.cxx b/core/field/CbmFieldCreator.cxx index 97c4f3f159..9543e2c088 100644 --- a/core/field/CbmFieldCreator.cxx +++ b/core/field/CbmFieldCreator.cxx @@ -28,7 +28,7 @@ using std::endl; static CbmFieldCreator gCbmFieldCreator; -CbmFieldCreator::CbmFieldCreator() : FairFieldFactory(), fFieldPar(nullptr) { fCreator = this; } +CbmFieldCreator::CbmFieldCreator() : FairFieldFactory(), fFieldPar(nullptr) {} CbmFieldCreator::~CbmFieldCreator() {} diff --git a/sim/response/base/CbmDigitization.cxx b/sim/response/base/CbmDigitization.cxx index 5c64e630a9..3acf0c1c6e 100644 --- a/sim/response/base/CbmDigitization.cxx +++ b/sim/response/base/CbmDigitization.cxx @@ -21,18 +21,19 @@ #include "CbmTofDigitize.h" #include "CbmTrdDigitizer.h" -#include "FairFileSource.h" -#include "FairMCEventHeader.h" -#include "FairMonitor.h" -#include "FairParAsciiFileIo.h" -#include "FairParRootFileIo.h" -#include "FairRuntimeDb.h" +#include <FairFileSource.h> +#include <FairMCEventHeader.h> +#include <FairMonitor.h> +#include <FairParAsciiFileIo.h> +#include <FairParRootFileIo.h> +#include <FairRootFileSink.h> +#include <FairRuntimeDb.h> #include <Logger.h> -#include "TClonesArray.h" -#include "TGeoManager.h" -#include "TObjString.h" -#include "TROOT.h" +#include <TClonesArray.h> +#include <TGeoManager.h> +#include <TObjString.h> +#include <TROOT.h> #include <cassert> @@ -371,8 +372,10 @@ void CbmDigitization::Run(Int_t event1, Int_t event2) run->SetSource(fSource); - // --- Set output file - run->SetOutputFile(fOutFile); + // --- Create file sink using output file name + // TODO: remove release after switching to FairRoot v18.8 + //run->SetSink(std::make_unique<FairRootFileSink>(fOutFile)); + run->SetSink(std::make_unique<FairRootFileSink>(fOutFile).release()); LOG(info) << fName << ": Output file is " << fOutFile; diff --git a/sim/transport/steer/CbmTransport.cxx b/sim/transport/steer/CbmTransport.cxx index 72edb8858d..babc2725b7 100644 --- a/sim/transport/steer/CbmTransport.cxx +++ b/sim/transport/steer/CbmTransport.cxx @@ -22,28 +22,29 @@ #include "CbmTarget.h" #include "CbmUnigenGenerator.h" -#include "FairMonitor.h" -#include "FairParRootFileIo.h" -#include "FairRunSim.h" -#include "FairRuntimeDb.h" -#include "FairSystemInfo.h" -#include "FairUrqmdGenerator.h" +#include <FairMonitor.h> +#include <FairParRootFileIo.h> +#include <FairRootFileSink.h> +#include <FairRunSim.h> +#include <FairRuntimeDb.h> +#include <FairSystemInfo.h> +#include <FairUrqmdGenerator.h> #include <Logger.h> -#include "TDatabasePDG.h" -#include "TG4RunConfiguration.h" -#include "TGeant3.h" -#include "TGeant3TGeo.h" -#include "TGeant4.h" -#include "TGeoManager.h" -#include "TPythia6Decayer.h" -#include "TROOT.h" -#include "TRandom.h" -#include "TStopwatch.h" -#include "TString.h" -#include "TSystem.h" -#include "TVector3.h" -#include "TVirtualMC.h" +#include <TDatabasePDG.h> +#include <TG4RunConfiguration.h> +#include <TGeant3.h> +#include <TGeant3TGeo.h> +#include <TGeant4.h> +#include <TGeoManager.h> +#include <TPythia6Decayer.h> +#include <TROOT.h> +#include <TRandom.h> +#include <TStopwatch.h> +#include <TString.h> +#include <TSystem.h> +#include <TVector3.h> +#include <TVirtualMC.h> #include <boost/filesystem.hpp> @@ -530,8 +531,10 @@ void CbmTransport::Run(Int_t nEvents) fRun->SetName(engineName); - // --- Set output file name - fRun->SetOutputFile(fOutFileName); + // --- Create file sink using output file name + // TODO: remove release after switching to FairRoot v18.8 + // fRun->SetSink(std::make_unique<FairRootFileSink>(fOutFileName)); + fRun->SetSink(std::make_unique<FairRootFileSink>(fOutFileName).release()); // --- Create and register the setup modules, field and media with FairRoot RegisterSetup(); @@ -607,7 +610,11 @@ void CbmTransport::Run(Int_t nEvents) TDirectory* oldDir = gDirectory; // Write Transport Settings to the output file - TFile* outfile = fRun->GetOutputFile(); + auto sink = fRun->GetSink(); + assert(sink->GetSinkType() == kFILESINK); + auto rootFileSink = static_cast<FairRootFileSink*>(sink); + TFile* outfile = rootFileSink->GetRootFile(); + ; outfile->cd(); LOG(info) << "Here I am"; -- GitLab