From 3d20c3d5f591d84c0806d621aad77c64c102a937 Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Fri, 12 Feb 2021 13:45:54 +0100 Subject: [PATCH] Rework gFile + gDirectory protection Add gDirectory protection in any case even if directory is not changed. For some files gFile an gDirectory where only set back if file was opened. Restore the original values in any case ebven if not necessary. --- .../monitor/CbmCheckDataFormatGdpb2018.cxx | 7 ++++--- .../monitor/CbmMcbm2018MonitorDataRates.cxx | 7 ++++--- .../monitor/CbmMcbm2018MonitorMcbmPulser.cxx | 7 ++++--- .../monitor/CbmMcbm2018MonitorMcbmRate.cxx | 7 ++++--- .../monitor/CbmMcbm2018MonitorMcbmSync.cxx | 7 ++++--- fles/mcbm2018/monitor/CbmMcbm2018MonitorMuch.cxx | 7 ++++--- .../monitor/CbmMcbm2018MonitorMuchLite.cxx | 7 ++++--- fles/mcbm2018/monitor/CbmMcbm2018MonitorSts.cxx | 7 ++++--- .../monitor/CbmMcbm2018MonitorStsPulser.cxx | 7 ++++--- .../mcbm2018/monitor/CbmMcbm2018MonitorStsSync.cxx | 14 ++++++++------ fles/mcbm2018/monitor/CbmMcbm2018MonitorTof.cxx | 7 ++++--- .../monitor/CbmMcbm2018MonitorTofPulser.cxx | 7 ++++--- fles/mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx | 7 ++++--- fles/mcbm2018/monitor/CbmMcbm2018TofTestFee.cxx | 7 ++++--- fles/mcbm2018/tasks/CbmCheckDigisNbCorr.cxx | 8 ++++++-- fles/mcbm2018/tasks/CbmCheckEvents.cxx | 8 ++++++-- fles/mcbm2018/tasks/CbmMcbm2018EventBuilder.cxx | 8 ++++++-- fles/mcbm2018/tasks/CbmMcbm2019CheckDigisMuch.cxx | 8 ++++++-- fles/mcbm2018/tasks/CbmMcbm2019CheckDigisSts.cxx | 8 ++++++-- fles/mcbm2018/tasks/CbmMcbm2019CheckDtInDet.cxx | 10 +++++++--- fles/mcbm2018/tasks/CbmMcbm2019CheckPulser.cxx | 9 ++++++--- .../mcbm2018/tasks/CbmMcbm2019CheckTimingPairs.cxx | 9 ++++++--- .../tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx | 5 +++-- fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx | 8 ++++++-- fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx | 11 ++++++----- .../unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx | 7 ++++--- 26 files changed, 128 insertions(+), 76 deletions(-) diff --git a/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx b/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx index 9766005407..ab09f0795b 100644 --- a/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx +++ b/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx @@ -1367,10 +1367,11 @@ void CbmCheckDataFormatGdpb2018::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmCheckDataFormatGdpb2018::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorDataRates.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorDataRates.cxx index c5708cde3e..af06f1eefd 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorDataRates.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorDataRates.cxx @@ -646,10 +646,11 @@ void CbmMcbm2018MonitorDataRates::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorDataRates::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmPulser.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmPulser.cxx index 6c6b2b821f..1e1e229b0a 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmPulser.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmPulser.cxx @@ -1442,10 +1442,11 @@ void CbmMcbm2018MonitorMcbmPulser::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorMcbmPulser::ResetAllHistos() { /****************** STS Sync ******************************************/ diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmRate.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmRate.cxx index 3949008b90..3f35bd67de 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmRate.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmRate.cxx @@ -1332,10 +1332,11 @@ void CbmMcbm2018MonitorMcbmRate::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorMcbmRate::ResetAllHistos() { /****************** STS Sync ******************************************/ diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmSync.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmSync.cxx index a2932495aa..5132d801d0 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmSync.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMcbmSync.cxx @@ -1592,10 +1592,11 @@ void CbmMcbm2018MonitorMcbmSync::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorMcbmSync::ResetAllHistos() { /****************** STS Sync ******************************************/ diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuch.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuch.cxx index 7f87df29a2..a788a645bc 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuch.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuch.cxx @@ -2060,10 +2060,11 @@ void CbmMcbm2018MonitorMuch::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorMuch::ResetAllHistos() { LOG(info) << "Reseting all STS histograms."; diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuchLite.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuchLite.cxx index 9f09fc3cab..d37d5f5fa6 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuchLite.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorMuchLite.cxx @@ -1653,10 +1653,11 @@ void CbmMcbm2018MonitorMuchLite::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorMuchLite::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorSts.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorSts.cxx index 71c83655ba..8416ea06d6 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorSts.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorSts.cxx @@ -2703,10 +2703,11 @@ void CbmMcbm2018MonitorSts::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorSts::ResetAllHistos() { LOG(info) << "Reseting all STS histograms."; diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsPulser.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsPulser.cxx index b548473046..70b9a39368 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsPulser.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsPulser.cxx @@ -1403,10 +1403,11 @@ void CbmCosy2018MonitorPulser::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmCosy2018MonitorPulser::ResetAllHistos() { LOG(info) << "Reseting all STS histograms."; diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsSync.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsSync.cxx index bb8f8d5be1..9114f57e5b 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsSync.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorStsSync.cxx @@ -1897,10 +1897,11 @@ void CbmMcbm2018MonitorStsSync::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorStsSync::SavePulserHistos(TString sFileName) { /// Save old global file and folder pointer to avoid messing with FairRoot @@ -1931,10 +1932,11 @@ void CbmMcbm2018MonitorStsSync::SavePulserHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorStsSync::ResetAllHistos() { LOG(info) << "Reseting all STS histograms."; diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTof.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTof.cxx index c11bcab45a..1de7fb8380 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTof.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTof.cxx @@ -3563,10 +3563,11 @@ void CbmMcbm2018MonitorTof::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorTof::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTofPulser.cxx b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTofPulser.cxx index e4e2819075..bb87352fd5 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018MonitorTofPulser.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018MonitorTofPulser.cxx @@ -1666,10 +1666,11 @@ void CbmMcbm2018MonitorTofPulser::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018MonitorTofPulser::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx b/fles/mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx index 2657d60db6..36fc7876a2 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018TofFeeThr.cxx @@ -528,10 +528,11 @@ void CbmMcbm2018TofFeeThr::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018TofFeeThr::ResetAllHistos() { diff --git a/fles/mcbm2018/monitor/CbmMcbm2018TofTestFee.cxx b/fles/mcbm2018/monitor/CbmMcbm2018TofTestFee.cxx index d893bc5fe2..87cbd73cfe 100644 --- a/fles/mcbm2018/monitor/CbmMcbm2018TofTestFee.cxx +++ b/fles/mcbm2018/monitor/CbmMcbm2018TofTestFee.cxx @@ -1914,10 +1914,11 @@ void CbmMcbm2018TofTestFee::SaveAllHistos(TString sFileName) { if ("" != sFileName) { // Restore original directory position histoFile->Close(); - /// Restore old global file and folder pointer to avoid messing with FairRoot - gFile = oldFile; - gDirectory = oldDir; } // if( "" != sFileName ) + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } void CbmMcbm2018TofTestFee::ResetAllHistos() { diff --git a/fles/mcbm2018/tasks/CbmCheckDigisNbCorr.cxx b/fles/mcbm2018/tasks/CbmCheckDigisNbCorr.cxx index 1908197eaa..62613aa695 100644 --- a/fles/mcbm2018/tasks/CbmCheckDigisNbCorr.cxx +++ b/fles/mcbm2018/tasks/CbmCheckDigisNbCorr.cxx @@ -20,6 +20,7 @@ #include "TH2.h" #include "THttpServer.h" #include "TProfile.h" +#include <TDirectory.h> #include <TFile.h> #include "CbmMuchDigi.h" @@ -698,7 +699,9 @@ void CbmCheckDigisNbCorr::Exec(Option_t* /*option*/) { void CbmCheckDigisNbCorr::Finish() { WriteHistos(); } void CbmCheckDigisNbCorr::WriteHistos() { - TFile* old = gFile; + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* outfile = TFile::Open(fOutFileName, "RECREATE"); @@ -741,7 +744,8 @@ void CbmCheckDigisNbCorr::WriteHistos() { outfile->Close(); delete outfile; - gFile = old; + gFile = oldFile; + gDirectory = oldDir; } ClassImp(CbmCheckDigisNbCorr) diff --git a/fles/mcbm2018/tasks/CbmCheckEvents.cxx b/fles/mcbm2018/tasks/CbmCheckEvents.cxx index f954d3e579..35e2dc0ad3 100644 --- a/fles/mcbm2018/tasks/CbmCheckEvents.cxx +++ b/fles/mcbm2018/tasks/CbmCheckEvents.cxx @@ -24,6 +24,7 @@ #include "TH2.h" #include "THttpServer.h" #include "TProfile.h" +#include <TDirectory.h> #include <TFile.h> #include <iomanip> @@ -264,7 +265,9 @@ void CbmCheckEvents::GetTimeDiffT0(CbmEvent* event, TH1* deltaT, TH1* size) { // ---- Finish -------------------------------------------------------- void CbmCheckEvents::Finish() { - TFile* old = gFile; + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* outfile = TFile::Open("test2.root", "RECREATE"); fEventSize->Write(); @@ -287,7 +290,8 @@ void CbmCheckEvents::Finish() { outfile->Close(); delete outfile; - gFile = old; + gFile = oldFile; + gDirectory = oldDir; } ClassImp(CbmCheckEvents) diff --git a/fles/mcbm2018/tasks/CbmMcbm2018EventBuilder.cxx b/fles/mcbm2018/tasks/CbmMcbm2018EventBuilder.cxx index d57aef935d..28ae219ea4 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2018EventBuilder.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2018EventBuilder.cxx @@ -15,6 +15,7 @@ #include "TH1.h" #include "TH2.h" #include "THttpServer.h" +#include <TDirectory.h> #include <TFile.h> #include "CbmMuchBeamTimeDigi.h" @@ -649,7 +650,9 @@ void CbmMcbm2018EventBuilder::AddDigiToSorter(ECbmModuleId _system, // ---- Finish -------------------------------------------------------- void CbmMcbm2018EventBuilder::Finish() { if (fFillHistos) { - TFile* old = gFile; + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* outfile = TFile::Open(fOutFileName, "RECREATE"); fDiffTime->Write(); @@ -670,7 +673,8 @@ void CbmMcbm2018EventBuilder::Finish() { outfile->Close(); delete outfile; - gFile = old; + gFile = oldFile; + gDirectory = oldDir; } LOG(info) << "Total errors: " << fErrors; } diff --git a/fles/mcbm2018/tasks/CbmMcbm2019CheckDigisMuch.cxx b/fles/mcbm2018/tasks/CbmMcbm2019CheckDigisMuch.cxx index ef8d17e1c6..63f3bffae8 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019CheckDigisMuch.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019CheckDigisMuch.cxx @@ -18,6 +18,7 @@ #include "TH1.h" #include "TH2.h" #include "THttpServer.h" +#include <TDirectory.h> #include <TFile.h> #include <iomanip> @@ -199,7 +200,9 @@ void CbmMcbm2019CheckDigisMuch::Exec(Option_t* /*option*/) { void CbmMcbm2019CheckDigisMuch::Finish() { WriteHistos(); } void CbmMcbm2019CheckDigisMuch::WriteHistos() { - TFile* old = gFile; + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* outfile = TFile::Open(fOutFileName, "RECREATE"); fDigisPerAsicEvo->Write(); @@ -209,7 +212,8 @@ void CbmMcbm2019CheckDigisMuch::WriteHistos() { outfile->Close(); delete outfile; - gFile = old; + gFile = oldFile; + gDirectory = oldDir; } ClassImp(CbmMcbm2019CheckDigisMuch) diff --git a/fles/mcbm2018/tasks/CbmMcbm2019CheckDigisSts.cxx b/fles/mcbm2018/tasks/CbmMcbm2019CheckDigisSts.cxx index f84c03802b..110db892f9 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019CheckDigisSts.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019CheckDigisSts.cxx @@ -18,6 +18,7 @@ #include "TH1.h" #include "TH2.h" #include "THttpServer.h" +#include <TDirectory.h> #include <TFile.h> #include <iomanip> @@ -186,7 +187,9 @@ void CbmMcbm2019CheckDigisSts::Exec(Option_t* /*option*/) { void CbmMcbm2019CheckDigisSts::Finish() { WriteHistos(); } void CbmMcbm2019CheckDigisSts::WriteHistos() { - TFile* old = gFile; + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* outfile = TFile::Open(fOutFileName, "RECREATE"); fDigisPerAsicEvo->Write(); @@ -195,7 +198,8 @@ void CbmMcbm2019CheckDigisSts::WriteHistos() { outfile->Close(); delete outfile; - gFile = old; + gFile = oldFile; + gDirectory = oldDir; } ClassImp(CbmMcbm2019CheckDigisSts) diff --git a/fles/mcbm2018/tasks/CbmMcbm2019CheckDtInDet.cxx b/fles/mcbm2018/tasks/CbmMcbm2019CheckDtInDet.cxx index 96290840e2..88c58aad45 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019CheckDtInDet.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019CheckDtInDet.cxx @@ -25,9 +25,9 @@ #include "TH2.h" #include "THttpServer.h" #include "TProfile.h" +#include <TDirectory.h> #include <TFile.h> - #include <iomanip> #include <iostream> #include <type_traits> @@ -510,7 +510,10 @@ void CbmMcbm2019CheckDtInDet::FillHistosPerDet(TH1* histoSameTime, void CbmMcbm2019CheckDtInDet::Finish() { WriteHistos(); } void CbmMcbm2019CheckDtInDet::WriteHistos() { - TFile* old = gFile; + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + + TFile* outfile = TFile::Open(fOutFileName, "RECREATE"); fT0T0SameTime->Write(); @@ -548,7 +551,8 @@ void CbmMcbm2019CheckDtInDet::WriteHistos() { outfile->Close(); delete outfile; - gFile = old; + gFile = oldFile; + gDirectory = oldDir; } ClassImp(CbmMcbm2019CheckDtInDet) diff --git a/fles/mcbm2018/tasks/CbmMcbm2019CheckPulser.cxx b/fles/mcbm2018/tasks/CbmMcbm2019CheckPulser.cxx index 642a7ed8ff..40fb17690d 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019CheckPulser.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019CheckPulser.cxx @@ -25,9 +25,9 @@ #include "TH2.h" #include "THttpServer.h" #include "TProfile.h" +#include <TDirectory.h> #include <TFile.h> - #include <iomanip> #include <iostream> #include <type_traits> @@ -1113,7 +1113,9 @@ Int_t CbmMcbm2019CheckPulser::FillSystemOffsetHistos(TH1* histo, void CbmMcbm2019CheckPulser::Finish() { WriteHistos(); } void CbmMcbm2019CheckPulser::WriteHistos() { - TFile* old = gFile; + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* outfile = TFile::Open(fOutFileName, "RECREATE"); fT0StsDiff->Write(); @@ -1189,7 +1191,8 @@ void CbmMcbm2019CheckPulser::WriteHistos() { outfile->Close(); delete outfile; - gFile = old; + gFile = oldFile; + gDirectory = oldDir; } ClassImp(CbmMcbm2019CheckPulser) diff --git a/fles/mcbm2018/tasks/CbmMcbm2019CheckTimingPairs.cxx b/fles/mcbm2018/tasks/CbmMcbm2019CheckTimingPairs.cxx index 6403fe7b31..c4da8780fc 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019CheckTimingPairs.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019CheckTimingPairs.cxx @@ -19,9 +19,9 @@ #include "TH2.h" #include "THttpServer.h" #include "TProfile.h" +#include <TDirectory.h> #include <TFile.h> - #include <iomanip> #include <iostream> #include <type_traits> @@ -626,7 +626,9 @@ void CbmMcbm2019CheckTimingPairs::FillHistos(UInt_t uIndexT0, void CbmMcbm2019CheckTimingPairs::Finish() { WriteHistos(); } void CbmMcbm2019CheckTimingPairs::WriteHistos() { - TFile* old = gFile; + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* outfile = TFile::Open(fOutFileName, "RECREATE"); for (UInt_t uPair = 0; uPair < fhDtADtB.size(); ++uPair) { @@ -636,7 +638,8 @@ void CbmMcbm2019CheckTimingPairs::WriteHistos() { outfile->Close(); delete outfile; - gFile = old; + gFile = oldFile; + gDirectory = oldDir; } ClassImp(CbmMcbm2019CheckTimingPairs) diff --git a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx index 1216bf30e5..683a1f8e67 100644 --- a/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx +++ b/fles/mcbm2018/tasks/CbmMcbm2019TimeWinEventBuilderTask.cxx @@ -17,6 +17,7 @@ #include "TH1.h" #include "TH2.h" #include "THttpServer.h" +#include <TDirectory.h> #include <TFile.h> // ---- Default constructor ------------------------------------------- @@ -127,11 +128,11 @@ void CbmMcbm2019TimeWinEventBuilderTask::SaveHistos() { histoFile->cd(); } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) + histoFile->Close(); + /// Restore old global file and folder pointer to avoid messing with FairRoot gFile = oldFile; gDirectory = oldDir; - - histoFile->Close(); } //---------------------------------------------------------------------- void CbmMcbm2019TimeWinEventBuilderTask::SetFillHistos(Bool_t bFlag) { diff --git a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx index 5d325e5d37..af8c47e657 100644 --- a/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx +++ b/fles/mcbm2018/tasks/CbmMcbmCheckTimingAlgo.cxx @@ -23,6 +23,7 @@ #include "TH1.h" #include "TH2.h" #include "THttpServer.h" +#include <TDirectory.h> #include <TFile.h> #include <iomanip> @@ -415,7 +416,9 @@ void CbmMcbmCheckTimingAlgo::Finish() { } void CbmMcbmCheckTimingAlgo::WriteHistos() { - TFile* old = gFile; + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* outfile = TFile::Open(fOutFileName, "RECREATE"); for (UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx) { @@ -435,7 +438,8 @@ void CbmMcbmCheckTimingAlgo::WriteHistos() { outfile->Close(); delete outfile; - gFile = old; + gFile = oldFile; + gDirectory = oldDir; } // ---- Finish -------------------------------------------------------- diff --git a/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx b/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx index 7fa222bf48..5fd266077b 100644 --- a/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx +++ b/fles/mcbm2018/tasks/CbmMcbmCheckTimingTask.cxx @@ -16,6 +16,7 @@ #include "TH1.h" #include "TH2.h" #include "THttpServer.h" +#include <TDirectory.h> #include <TFile.h> /// C/C++ headers @@ -71,13 +72,13 @@ void CbmMcbmCheckTimingTask::SaveHistos() { /// Obtain vector of pointers on each histo from the algo (+ optionally desired folder) std::vector< std::pair< TNamed *, std::string > > vHistos = fpAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TFile* histoFile = nullptr; - /// Save old global file and folder pointer to avoid messing with FairRoot TFile* oldFile = gFile; TDirectory* oldDir = gDirectory; + /// (Re-)Create ROOT file to store the histos + TFile* histoFile = nullptr; + /// open separate histo file in recreate mode histoFile = new TFile( fsOutFileName , "RECREATE"); histoFile->cd(); @@ -98,8 +99,8 @@ void CbmMcbmCheckTimingTask::SaveHistos() { } // for( UInt_t uHisto = 0; uHisto < vHistos.size(); ++uHisto ) /// Restore original directory position - oldDir->cd(); - histoFile->Close(); + gFile = oldFile; + gDirectory = oldDir; */ } //---------------------------------------------------------------------- diff --git a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx index 7198fe4290..70638ccdf8 100644 --- a/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx +++ b/fles/mcbm2018/unpacker/CbmMcbm2018UnpackerTaskTrdR.cxx @@ -117,13 +117,13 @@ void CbmMcbm2018UnpackerTaskTrdR::Finish() { std::vector<std::pair<TNamed*, std::string>> vHistos = fUnpackerAlgo->GetHistoVector(); - /// (Re-)Create ROOT file to store the histos - TFile* histoFile = nullptr; - /// Save old global file and folder pointer to avoid messing with FairRoot TFile* oldFile = gFile; TDirectory* oldDir = gDirectory; + /// (Re-)Create ROOT file to store the histos + TFile* histoFile = nullptr; + // open separate histo file in recreate mode TString histoFileName = fMonitorHistoFileName; histoFile = new TFile(histoFileName.Data(), "RECREATE"); @@ -138,6 +138,7 @@ void CbmMcbm2018UnpackerTaskTrdR::Finish() { vHistos[uHisto].first->Write(); histoFile->cd(); } + /// Restore old global file and folder pointer to avoid messing with FairRoot gFile = oldFile; gDirectory = oldDir; -- GitLab