From 7643d3d1dff7834ff2d9d34e4311c08196fea6bc Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Thu, 11 Feb 2021 17:56:14 +0100 Subject: [PATCH] fles: Add gFile + gDirectory protection --- .../monitor/CbmCheckDataFormatGdpb2018.cxx | 11 ++++++---- .../monitor/CbmMcbm2018MonitorDataRates.cxx | 11 ++++++---- .../monitor/CbmMcbm2018MonitorMcbmPulser.cxx | 11 ++++++---- .../monitor/CbmMcbm2018MonitorMcbmRate.cxx | 11 ++++++---- .../monitor/CbmMcbm2018MonitorMcbmSync.cxx | 11 ++++++---- .../monitor/CbmMcbm2018MonitorMuch.cxx | 11 ++++++---- .../monitor/CbmMcbm2018MonitorMuchLite.cxx | 11 ++++++---- .../monitor/CbmMcbm2018MonitorSts.cxx | 11 ++++++---- .../monitor/CbmMcbm2018MonitorStsPulser.cxx | 11 ++++++---- .../monitor/CbmMcbm2018MonitorStsSync.cxx | 22 ++++++++++++------- .../monitor/CbmMcbm2018MonitorTaskHodo.cxx | 17 ++++++++------ .../monitor/CbmMcbm2018MonitorTaskPsd.cxx | 17 ++++++++------ .../monitor/CbmMcbm2018MonitorTaskT0.cxx | 17 ++++++++------ .../monitor/CbmMcbm2018MonitorTaskTof.cxx | 17 ++++++++------ .../CbmMcbm2018MonitorTaskTofPulser.cxx | 17 ++++++++------ .../monitor/CbmMcbm2018MonitorTof.cxx | 16 ++++++-------- .../monitor/CbmMcbm2018MonitorTofPulser.cxx | 16 ++++++-------- .../mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx | 11 ++++++---- .../monitor/CbmMcbm2018TofTestFee.cxx | 16 ++++++-------- .../CbmMcbm2019TimeWinEventBuilderTask.cxx | 17 ++++++++------ .../mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx | 10 +++++---- .../unpacker/CbmMcbm2018UnpackerTaskHodo.cxx | 17 ++++++++------ .../unpacker/CbmMcbm2018UnpackerTaskMuch.cxx | 17 ++++++++------ .../unpacker/CbmMcbm2018UnpackerTaskPsd.cxx | 18 +++++++++------ .../unpacker/CbmMcbm2018UnpackerTaskRich.cxx | 17 ++++++++------ .../unpacker/CbmMcbm2018UnpackerTaskSts.cxx | 17 ++++++++------ .../unpacker/CbmMcbm2018UnpackerTaskTof.cxx | 18 +++++++++------ .../unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx | 14 +++++++----- reco/base/CbmUnpackTask.tmpl | 16 ++++++++------ 29 files changed, 251 insertions(+), 175 deletions(-) diff --git a/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx b/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx index f03ff7708d..9766005407 100644 --- a/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx +++ b/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx @@ -1276,11 +1276,12 @@ void CbmCheckDataFormatGdpb2018::Reset() {} void CbmCheckDataFormatGdpb2018::Finish() { SaveAllHistos(fsHistoFilename); } void CbmCheckDataFormatGdpb2018::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1366,7 +1367,9 @@ void CbmCheckDataFormatGdpb2018::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorDataRates.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorDataRates.cxx index 05a137b5d8..c5708cde3e 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorDataRates.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorDataRates.cxx @@ -600,11 +600,12 @@ void CbmMcbm2018MonitorDataRates::Reset() {} void CbmMcbm2018MonitorDataRates::Finish() { SaveAllHistos(fsHistoFilename); } void CbmMcbm2018MonitorDataRates::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -645,7 +646,9 @@ void CbmMcbm2018MonitorDataRates::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmPulser.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmPulser.cxx index 4f3dab3d38..6c6b2b821f 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmPulser.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmPulser.cxx @@ -1398,11 +1398,12 @@ void CbmMcbm2018MonitorMcbmPulser::Finish() { void CbmMcbm2018MonitorMcbmPulser::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = nullptr; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = nullptr; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1441,7 +1442,9 @@ void CbmMcbm2018MonitorMcbmPulser::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } void CbmMcbm2018MonitorMcbmPulser::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmRate.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmRate.cxx index 1108ad79ed..3949008b90 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmRate.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmRate.cxx @@ -1285,11 +1285,12 @@ void CbmMcbm2018MonitorMcbmRate::Finish() { void CbmMcbm2018MonitorMcbmRate::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = nullptr; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = nullptr; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1331,7 +1332,9 @@ void CbmMcbm2018MonitorMcbmRate::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } void CbmMcbm2018MonitorMcbmRate::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmSync.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmSync.cxx index 247ec608a8..a2932495aa 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmSync.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmSync.cxx @@ -1536,11 +1536,12 @@ void CbmMcbm2018MonitorMcbmSync::Finish() { void CbmMcbm2018MonitorMcbmSync::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = nullptr; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = nullptr; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1591,7 +1592,9 @@ void CbmMcbm2018MonitorMcbmSync::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } void CbmMcbm2018MonitorMcbmSync::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuch.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuch.cxx index 9e38a2ff6b..7f87df29a2 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuch.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuch.cxx @@ -1951,11 +1951,12 @@ void CbmMcbm2018MonitorMuch::Finish() { void CbmMcbm2018MonitorMuch::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -2059,7 +2060,9 @@ void CbmMcbm2018MonitorMuch::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } void CbmMcbm2018MonitorMuch::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuchLite.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuchLite.cxx index 863a373926..9f09fc3cab 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuchLite.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuchLite.cxx @@ -1566,11 +1566,12 @@ void CbmMcbm2018MonitorMuchLite::Finish() { void CbmMcbm2018MonitorMuchLite::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1652,7 +1653,9 @@ void CbmMcbm2018MonitorMuchLite::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorSts.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorSts.cxx index cd05407887..71c83655ba 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorSts.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorSts.cxx @@ -2567,11 +2567,12 @@ void CbmMcbm2018MonitorSts::Finish() { void CbmMcbm2018MonitorSts::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -2702,7 +2703,9 @@ void CbmMcbm2018MonitorSts::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } void CbmMcbm2018MonitorSts::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsPulser.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsPulser.cxx index 43b87d097e..b548473046 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsPulser.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsPulser.cxx @@ -1332,11 +1332,12 @@ void CbmCosy2018MonitorPulser::Finish() { void CbmCosy2018MonitorPulser::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1402,7 +1403,9 @@ void CbmCosy2018MonitorPulser::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } void CbmCosy2018MonitorPulser::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsSync.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsSync.cxx index bd37e5a2cb..bb8f8d5be1 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsSync.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsSync.cxx @@ -1800,11 +1800,12 @@ void CbmMcbm2018MonitorStsSync::Finish() { } void CbmMcbm2018MonitorStsSync::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1896,15 +1897,18 @@ void CbmMcbm2018MonitorStsSync::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } void CbmMcbm2018MonitorStsSync::SavePulserHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1927,7 +1931,9 @@ void CbmMcbm2018MonitorStsSync::SavePulserHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } void CbmMcbm2018MonitorStsSync::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskHodo.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskHodo.cxx index 1d79c996c1..91528178a0 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskHodo.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskHodo.cxx @@ -219,11 +219,12 @@ Bool_t CbmMcbm2018MonitorTaskHodo::SaveHistograms() { std::vector<std::pair<TCanvas*, std::string>> vCanvas = fMonitorAlgo->GetCanvasVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile("data/HistosMonitorHodo.root", "RECREATE"); @@ -256,8 +257,10 @@ Bool_t CbmMcbm2018MonitorTaskHodo::SaveHistograms() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); return kTRUE; diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskPsd.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskPsd.cxx index b2f808ea92..6423306e8a 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskPsd.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskPsd.cxx @@ -188,11 +188,12 @@ void CbmMcbm2018MonitorTaskPsd::Finish() { std::vector<std::pair<TNamed*, std::string>> vHistos = fMonitorAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile(fsHistoFileName, "RECREATE"); histoFile->cd(); @@ -210,8 +211,10 @@ void CbmMcbm2018MonitorTaskPsd::Finish() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskT0.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskT0.cxx index 135b85d7d2..8f08a21cf8 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskT0.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskT0.cxx @@ -186,11 +186,12 @@ void CbmMcbm2018MonitorTaskT0::Finish() { std::vector<std::pair<TNamed*, std::string>> vHistos = fMonitorAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile(fsHistoFileName, "RECREATE"); histoFile->cd(); @@ -208,8 +209,10 @@ void CbmMcbm2018MonitorTaskT0::Finish() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskTof.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskTof.cxx index 1bda1f0487..3574413d5a 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskTof.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskTof.cxx @@ -197,11 +197,12 @@ Bool_t CbmMcbm2018MonitorTaskTof::SaveHistograms() { std::vector<std::pair<TCanvas*, std::string>> vCanvas = fMonitorAlgo->GetCanvasVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile(fsHistoFileName, "RECREATE"); @@ -232,8 +233,10 @@ Bool_t CbmMcbm2018MonitorTaskTof::SaveHistograms() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); return kTRUE; diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskTofPulser.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskTofPulser.cxx index 53cd020db4..23353307da 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskTofPulser.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTaskTofPulser.cxx @@ -202,11 +202,12 @@ Bool_t CbmMcbm2018MonitorTaskTofPulser::SaveHistograms() { std::vector<std::pair<TCanvas*, std::string>> vCanvas = fMonitorPulserAlgo->GetCanvasVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile(fsHistoFileName, "RECREATE"); @@ -237,8 +238,10 @@ Bool_t CbmMcbm2018MonitorTaskTofPulser::SaveHistograms() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); return kTRUE; diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTof.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTof.cxx index 3439cff4b0..c11bcab45a 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTof.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTof.cxx @@ -3377,11 +3377,12 @@ void CbmMcbm2018MonitorTof::Finish() { } void CbmMcbm2018MonitorTof::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -3562,12 +3563,9 @@ void CbmMcbm2018MonitorTof::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); - } // if( "" != sFileName ) - if ("" != sFileName) { - // Restore original directory position - histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTofPulser.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTofPulser.cxx index c867ad6424..e4e2819075 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTofPulser.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTofPulser.cxx @@ -1593,11 +1593,12 @@ void CbmMcbm2018MonitorTofPulser::Finish() { } void CbmMcbm2018MonitorTofPulser::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1665,12 +1666,9 @@ void CbmMcbm2018MonitorTofPulser::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); - } // if( "" != sFileName ) - if ("" != sFileName) { - // Restore original directory position - histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } diff --git a/fles/mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx b/fles/mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx index 377c0a251d..2657d60db6 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx @@ -514,11 +514,12 @@ void CbmMcbm2018TofFeeThr::Finish() { } void CbmMcbm2018TofFeeThr::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -527,7 +528,9 @@ void CbmMcbm2018TofFeeThr::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } diff --git a/fles/mcbm2018/monitor/CbmMcbm2018TofTestFee.cxx b/fles/mcbm2018/monitor/CbmMcbm2018TofTestFee.cxx index 030d677337..d893bc5fe2 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018TofTestFee.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018TofTestFee.cxx @@ -1817,11 +1817,12 @@ void CbmMcbm2018TofTestFee::Finish() { } void CbmMcbm2018TofTestFee::SaveAllHistos(TString sFileName) { - TDirectory* oldDir = NULL; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* histoFile = NULL; if ("" != sFileName) { - // Store current directory position to allow restore later - oldDir = gDirectory; // open separate histo file in recreate mode histoFile = new TFile(sFileName, "RECREATE"); histoFile->cd(); @@ -1913,12 +1914,9 @@ void CbmMcbm2018TofTestFee::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - oldDir->cd(); - } // if( "" != sFileName ) - if ("" != sFileName) { - // Restore original directory position - histoFile->Close(); - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } // if( "" != sFileName ) } diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx index e56e4ef925..1216bf30e5 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx @@ -104,11 +104,12 @@ void CbmMcbm2019TimeWinEventBuilderTask::SaveHistos() { std::vector<std::pair<TNamed*, std::string>> vHistos = fpAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - /// Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + /// open separate histo file in recreate mode histoFile = new TFile(fsOutFileName, "RECREATE"); histoFile->cd(); @@ -126,8 +127,10 @@ void CbmMcbm2019TimeWinEventBuilderTask::SaveHistos() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - /// Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } //---------------------------------------------------------------------- diff --git a/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx b/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx index cfb880bbba..7fa222bf48 100644 --- a/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx +++ b/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx @@ -72,10 +72,12 @@ void CbmMcbmCheckTimingTask::SaveHistos() { std::vector< std::pair< TNamed *, std::string > > vHistos = fpAlgo->GetHistoVector(); /// (Re-)Create ROOT file to store the histos - TDirectory * oldDir = NULL; - TFile * histoFile = NULL; - /// Store current directory position to allow restore later - oldDir = gDirectory; + TFile* histoFile = nullptr; + + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + /// open separate histo file in recreate mode histoFile = new TFile( fsOutFileName , "RECREATE"); histoFile->cd(); diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskHodo.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskHodo.cxx index 50ab822581..a9e982ad81 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskHodo.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskHodo.cxx @@ -267,11 +267,12 @@ void CbmMcbm2018UnpackerTaskHodo::Finish() { fUnpackerAlgoSts->GetHistoVector(); vHistos.insert(vHistos.end(), vHistosSts.begin(), vHistosSts.end()); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile("data/HistosUnpackerSts.root", "RECREATE"); histoFile->cd(); @@ -289,8 +290,10 @@ void CbmMcbm2018UnpackerTaskHodo::Finish() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } // if( kTRUE == fbMonitorMode ) } diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskMuch.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskMuch.cxx index 8ffac75f50..42bcf9fb8f 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskMuch.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskMuch.cxx @@ -197,11 +197,12 @@ void CbmMcbm2018UnpackerTaskMuch::Finish() { std::vector<std::pair<TNamed*, std::string>> vHistos = fUnpackerAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile("data/HistosUnpackerMuch.root", "RECREATE"); histoFile->cd(); @@ -219,8 +220,10 @@ void CbmMcbm2018UnpackerTaskMuch::Finish() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } // if( kTRUE == fbMonitorMode ) } diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskPsd.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskPsd.cxx index b6c4d6d1b2..c6a5e5c4f8 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskPsd.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskPsd.cxx @@ -209,11 +209,12 @@ void CbmMcbm2018UnpackerTaskPsd::Finish() { std::vector<std::pair<TNamed*, std::string>> vHistos = fUnpackerAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile("data/HistosUnpackerPsd.root", "RECREATE"); histoFile->cd(); @@ -233,8 +234,11 @@ void CbmMcbm2018UnpackerTaskPsd::Finish() { fhArraySize->Write(); fhArrayCapacity->Write(); - // Restore original directory position - oldDir->cd(); + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } // if( kTRUE == fbMonitorMode ) } diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskRich.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskRich.cxx index d87a4d073b..13c85b393b 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskRich.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskRich.cxx @@ -105,11 +105,12 @@ void CbmMcbm2018UnpackerTaskRich::Finish() { std::vector<std::pair<TNamed*, std::string>> vHistos = fUnpackerAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile("data/HistosUnpackerRich.root", "RECREATE"); histoFile->cd(); @@ -127,8 +128,10 @@ void CbmMcbm2018UnpackerTaskRich::Finish() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } // if( kTRUE == fbMonitorMode ) } diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskSts.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskSts.cxx index 5462affc2a..b29bb7e501 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskSts.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskSts.cxx @@ -203,11 +203,12 @@ void CbmMcbm2018UnpackerTaskSts::Finish() { std::vector<std::pair<TNamed*, std::string>> vHistos = fUnpackerAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile("data/HistosUnpackerSts.root", "RECREATE"); histoFile->cd(); @@ -225,8 +226,10 @@ void CbmMcbm2018UnpackerTaskSts::Finish() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } // if( kTRUE == fbMonitorMode ) } diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTof.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTof.cxx index 4be0c21b4c..8046bcb2d9 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTof.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTof.cxx @@ -251,11 +251,12 @@ void CbmMcbm2018UnpackerTaskTof::Finish() { std::vector<std::pair<TNamed*, std::string>> vHistos = fUnpackerAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = NULL; - TFile* histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* histoFile = nullptr; + // open separate histo file in recreate mode histoFile = new TFile("data/HistosUnpackerTof.root", "RECREATE"); histoFile->cd(); @@ -275,8 +276,11 @@ void CbmMcbm2018UnpackerTaskTof::Finish() { fhArraySize->Write(); fhArrayCapacity->Write(); - // Restore original directory position - oldDir->cd(); + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } // if( kTRUE == fbMonitorMode ) } diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx index 910bfeaaef..7198fe4290 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx @@ -118,10 +118,12 @@ void CbmMcbm2018UnpackerTaskTrdR::Finish() { fUnpackerAlgo->GetHistoVector(); /// (Re-)Create ROOT file to store the histos - TDirectory* oldDir = nullptr; TFile* histoFile = nullptr; - // Store current directory position to allow restore later - oldDir = gDirectory; + + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + // open separate histo file in recreate mode TString histoFileName = fMonitorHistoFileName; histoFile = new TFile(histoFileName.Data(), "RECREATE"); @@ -136,8 +138,10 @@ void CbmMcbm2018UnpackerTaskTrdR::Finish() { vHistos[uHisto].first->Write(); histoFile->cd(); } - // Restore original directory position - oldDir->cd(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } } diff --git a/reco/base/CbmUnpackTask.tmpl b/reco/base/CbmUnpackTask.tmpl index 08fddecc6c..2c22de882e 100644 --- a/reco/base/CbmUnpackTask.tmpl +++ b/reco/base/CbmUnpackTask.tmpl @@ -226,10 +226,11 @@ void CbmUnpackTask< TDigi, TAlgo, TParam >::Finish() std::vector< std::pair< TNamed *, std::string > > vHistos = fUnpackerAlgo->GetHistoVector(); /// (Re-)Create ROOT file to store the histos - TDirectory * oldDir = NULL; - TFile * histoFile = NULL; - // Store current directory position to allow restore later - oldDir = gDirectory; + TFile * histoFile = nullptr; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + // open separate histo file in recreate mode histoFile = new TFile( "data/HistosUnpackerSts.root" , "RECREATE"); histoFile->cd(); @@ -249,9 +250,10 @@ void CbmUnpackTask< TDigi, TAlgo, TParam >::Finish() histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) - // Restore original directory position - oldDir->cd(); - histoFile->Close(); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + histoFile->Close(); } // if( kTRUE == fbMonitorMode ) } -- GitLab