diff --git a/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx b/fles/mcbm2018/monitor/CbmCheckDataFormatGdpb2018.cxx index f03ff7708dc27a3bc3df1144f62e1c0457416016..976600540789537a51f23d8995e25325ec0b3a93 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 05a137b5d8145afd4f3e745bdccf2abf71ddd9ad..c5708cde3e152d7aca15b967e602fcc6656f3dbd 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 4f3dab3d38d10dae8ccf8e108d0edd94ea493d1d..6c6b2b821f92ab9d009fc73260f2d176e591a4d5 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 1108ad79ed79f46cf7c58113d1bc43cab7ad6609..3949008b903f928bf42a45988382814cf4f63343 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 247ec608a8823ddb2787a861a5c8998421a1358a..a2932495aa7e3339ec13c3d0caf41daaad6a1a4d 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 9e38a2ff6b0f393606786db8a9fb73f32a0563a1..7f87df29a2865481fc162aa1720130fb41bff486 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 863a37392678ca0e162a769aa0d9729f32215964..9f09fc3cab3b6cbc0f62078448b85bba244145e8 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 cd054078870b2f7fdb42e6be2db30deac7a8885f..71c83655ba2db2be80eb0cac53f14124425c62ec 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 43b87d097ec1f0ecefeb7165258ff441b42e5d9c..b548473046dd41078926eeb9770761d1547a6fe9 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 bd37e5a2cb4b0af80c8bf6493cd1d4837ca18827..bb8f8d5be107e47b7a178581c38189d5173c373b 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 1d79c996c1035d75f978069dc8e8811f29f7512b..91528178a0058162ba34dc9d7d1456b8f92309ce 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 b2f808ea9275c91f0cf206d2a8ba246cff2dc501..6423306e8ab623f155d2902f19b7acb99deb45d7 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 135b85d7d2dfa21aba42498cfa3de02a7dad743a..8f08a21cf891a18dda25381b26afab7ea0cf613d 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 1bda1f04879e35931ac693abe6829b892af3126b..3574413d5aae8722f6fa470faac9a6ae4458e764 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 53cd020db4d211d98f5ccd1e7d7f22166ba74a88..23353307dab9e26497c7001259cac508b62338ce 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 3439cff4b06a069a89502325d4d55fd15fb160ed..c11bcab45a79f4e4797e52f44345993fd0438269 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 c867ad64242fb9d05f5a28037b1c3fd7bc91eecb..e4e2819075b6fc662682465add6369ee037e3cde 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 377c0a251dbb04275bf7134242fd700e5ab008d8..2657d60db61560c77b974b7d5cb8d2715b526c7b 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 030d677337371c88f76fc32480026d2035441592..d893bc5fe2b952e1cf84a1e001269e6b84a9a09d 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 e56e4ef92534de4c4d159e402e40c99073cfa8d4..1216bf30e5dc7c8859819a47217e1b53518f779d 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 cfb880bbbab5ad9c892f869db97012fe28593055..7fa222bf489b7558afbbae51da5b5f6da6a2a20b 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 50ab822581228a9a88d92ee05e889d3b0f0a6743..a9e982ad81695cf70b63e3d8fa21f0c752b72189 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 8ffac75f500c0d1876cc0db95c721cca38918086..42bcf9fb8fbb982160120013479ab3f4f25e23da 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 b6c4d6d1b22c6680e85bbb966f63532ebe2e3a51..c6a5e5c4f871ce71307d551e69f7a0e7ac923fd5 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 d87a4d073b57a5dfb11fe3288df554634979b9a5..13c85b393b74c5204e7b2e27fc49854c6af56054 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 5462affc2adfffd1276b015925d8c359968a4557..b29bb7e501e8a9372ef3b358b16986637f50e160 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 4be0c21b4cd03d75ad90975efade99ec6eeab2e5..8046bcb2d9741202e4d0a1bba5f4e092696a917a 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 910bfeaaef80bab9ba5321f3aefb02ce8822b835..7198fe429042f5dd74f6ebef4c8ef11ee4ad9bbf 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 08fddecc6ccb849e9804f893daf0d63de8b1f58a..2c22de882e31fbf32dc45e2c9c2fc6ed705b57e5 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 ) }