diff --git a/core/detectors/much/CbmMuchGeoScheme.cxx b/core/detectors/much/CbmMuchGeoScheme.cxx
index 1ae081aba677216e3785b5455050271010a29362..f5425451a88eacad4d9a3ae35539ecec4433feff 100644
--- a/core/detectors/much/CbmMuchGeoScheme.cxx
+++ b/core/detectors/much/CbmMuchGeoScheme.cxx
@@ -135,12 +135,19 @@ void CbmMuchGeoScheme::Init(TObjArray* stations, Int_t flag) {
 // -------------------------------------------------------------------------
 void CbmMuchGeoScheme::Init(TString digiFileName, Int_t flag) {
 
-  TFile* oldfile      = gFile;
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
+
   TFile* file         = new TFile(digiFileName);
   TObjArray* stations = (TObjArray*) file->Get("stations");
   file->Close();
   file->Delete();
-  gFile = oldfile;
+
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
+
   Init(stations, flag);
 }
 // -------------------------------------------------------------------------
diff --git a/core/detectors/much/CbmMuchSegmentAuto.cxx b/core/detectors/much/CbmMuchSegmentAuto.cxx
index fe08db8a6dd0db67868eedaef168df2988bef567..672ee236bd3fc422f420b670692e7892c9937eae 100644
--- a/core/detectors/much/CbmMuchSegmentAuto.cxx
+++ b/core/detectors/much/CbmMuchSegmentAuto.cxx
@@ -230,13 +230,18 @@ void CbmMuchSegmentAuto::FinishTask() {
     printf("Station%i segmented\n", i + 1);
   }
 
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
+
   // Save parameters
-  TFile* oldfile = gFile;
   TFile* f       = new TFile(fDigiFileName, "RECREATE");
   fStations->Write("stations", 1);
 
   f->Close();
-  gFile = oldfile;
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
 
   DrawSegmentation();
 
diff --git a/core/detectors/much/CbmMuchSegmentManual.cxx b/core/detectors/much/CbmMuchSegmentManual.cxx
index e6018f93c5f965d328cc9a800963073f71869601..1162c38b47403d4dbf8f122ca98a0e8f369bdcb7 100644
--- a/core/detectors/much/CbmMuchSegmentManual.cxx
+++ b/core/detectors/much/CbmMuchSegmentManual.cxx
@@ -261,13 +261,18 @@ void CbmMuchSegmentManual::SegmentMuch() {
     printf("Station %i segmented\n", iStation + 1);
   }
 
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
+
   // Save parameters
-  TFile* oldfile = gFile;
   TFile* f       = new TFile(fDigiFileName, "RECREATE");
   fStations->Write("stations", 1);
 
   f->Close();
-  gFile = oldfile;
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
 
   // Draw colored stations
   DrawSegmentation();
diff --git a/core/detectors/much/CbmMuchSegmentSector.cxx b/core/detectors/much/CbmMuchSegmentSector.cxx
index 283587da2ef584780c5c4b973c138add12bc2a1d..24ec4dc9b0a97f144599f28814ec535af40d82bd 100644
--- a/core/detectors/much/CbmMuchSegmentSector.cxx
+++ b/core/detectors/much/CbmMuchSegmentSector.cxx
@@ -144,13 +144,18 @@ void CbmMuchSegmentSector::SegmentMuch() {
     printf("Station %i segmented\n", iStation + 1);
   }
 
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
+
   // Save parameters
-  TFile* oldfile = gFile;
   TFile* f       = new TFile(fDigiFileName, "RECREATE");
   fStations->Write("stations", 1);
 
   f->Close();
-  gFile = oldfile;
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
 
   DrawSegmentation();
 }
diff --git a/reco/detectors/much/CbmMuchFindHitsGem.cxx b/reco/detectors/much/CbmMuchFindHitsGem.cxx
index a7dc2d83d9882a6144770c18f500d684cb9886ae..9a18f06417eca8d1a00c988e5dfa5c78032acec1 100644
--- a/reco/detectors/much/CbmMuchFindHitsGem.cxx
+++ b/reco/detectors/much/CbmMuchFindHitsGem.cxx
@@ -1,6 +1,6 @@
 /*
  * CbmMuchFindHitsGem.cxx
- * 
+ *
  * Modified on 08/08/2019 : Hit reconstruction in Event (in time slice) and Time slice mode
  * Default is time slice (kCbmTimeSlice) and it will run in event mode (kCbmEvent) if find event branch in the tree
  * @authors Vikas Singhal and Ajit Kumar
@@ -78,13 +78,13 @@ InitStatus CbmMuchFindHitsGem::Init() {
 
   // fDigis will not be used now. Just for checking. Need to remove
   /*fDigis     = (TClonesArray*) ioman->GetObject("MuchDigi");
-  if (! fDigis) 
-    fDigis     = (TClonesArray*) ioman->GetObject("MuchBeamTimeDigi"); 
-  if (! fDigis) 
-    fDigis     = (TClonesArray*) ioman->GetObject("CbmMuchBeamTimeDigi"); 
-  if (! fDigis) 
-    fDigis     = (TClonesArray*) ioman->GetObject("CbmMuchDigi"); 
-  if (! fDigis) 
+  if (! fDigis)
+    fDigis     = (TClonesArray*) ioman->GetObject("MuchBeamTimeDigi");
+  if (! fDigis)
+    fDigis     = (TClonesArray*) ioman->GetObject("CbmMuchBeamTimeDigi");
+  if (! fDigis)
+    fDigis     = (TClonesArray*) ioman->GetObject("CbmMuchDigi");
+  if (! fDigis)
     LOG(info) << "MuchFindHitsGem: No MuchDigi or MuchBeamTimeDigi or CbmMuchDigi or CbmMuchBeamTimeDigi exist";
     */
 
@@ -117,12 +117,18 @@ InitStatus CbmMuchFindHitsGem::Init() {
                   IsOutputBranchPersistent("MuchPixelHit"));
 
   // Initialize GeoScheme
-  TFile* oldfile      = gFile;
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
+
   TFile* file         = new TFile(fDigiFile);
   TObjArray* stations = (TObjArray*) file->Get("stations");
   file->Close();
   file->Delete();
-  gFile = oldfile;
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
+
   fGeoScheme->Init(stations, fFlag);
   return kSUCCESS;
 }
diff --git a/reco/detectors/much/CbmMuchHitProducerIdeal.cxx b/reco/detectors/much/CbmMuchHitProducerIdeal.cxx
index f719cb34e723d3646d872aeadb126978a36c1b2a..f6182355c939c536a26e185b4532e12dcc19e150 100644
--- a/reco/detectors/much/CbmMuchHitProducerIdeal.cxx
+++ b/reco/detectors/much/CbmMuchHitProducerIdeal.cxx
@@ -45,12 +45,18 @@ InitStatus CbmMuchHitProducerIdeal::Init() {
 
   // Initialize GeoScheme
   fGeoScheme          = CbmMuchGeoScheme::Instance();
-  TFile* oldfile      = gFile;
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
+
   TFile* file         = new TFile(fDigiFile);
   TObjArray* stations = (TObjArray*) file->Get("stations");
   file->Close();
   file->Delete();
-  gFile = oldfile;
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
+
   fGeoScheme->Init(stations, fId);
   return kSUCCESS;
 }
diff --git a/reco/detectors/much/qa/CbmMuchHitFinderQa.cxx b/reco/detectors/much/qa/CbmMuchHitFinderQa.cxx
index 6b397aaeb3af9cda75e6f03f3c2557fec23aad76..ebe7f849178069732888a1f28531e665292624ee 100644
--- a/reco/detectors/much/qa/CbmMuchHitFinderQa.cxx
+++ b/reco/detectors/much/qa/CbmMuchHitFinderQa.cxx
@@ -138,7 +138,16 @@ InitStatus CbmMuchHitFinderQa::Init() {
   // Reading Much Digis from CbmMuchDigiManager which are stored as vector
   fDigiManager = CbmDigiManager::Instance();
 
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
+
   TFile* f            = new TFile(fGeoFileName, "R");
+
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
+
   TObjArray* stations = (TObjArray*) f->Get("stations");
   fGeoScheme->Init(stations, fFlag);
 
diff --git a/sim/detectors/much/CbmMuchDigitizeGem.cxx b/sim/detectors/much/CbmMuchDigitizeGem.cxx
index 419df13c141c2d0c99e4cd810d98815e3184321b..dd38dc25e4ec163b2a5b6aecc041b6450fd0231c 100644
--- a/sim/detectors/much/CbmMuchDigitizeGem.cxx
+++ b/sim/detectors/much/CbmMuchDigitizeGem.cxx
@@ -2,8 +2,8 @@
  *@author Vikas Singhal <vikas@vecc.gov.in>
  *@since 15.01.2020
  *@version 4.0
- *@description: Using std::vector for digi and match containers. 
- *@author Ekata Nandy (ekata@vecc.gov.in) 
+ *@description: Using std::vector for digi and match containers.
+ *@author Ekata Nandy (ekata@vecc.gov.in)
  *@since 21.06.19 : RPC digitization parameters(for 3rd and 4th MUCH station) now have been implemented along with GEM param// eters (1st and 2nd station) @author Ekata Nandy (ekata@vecc.gov.in)
  *@description: ADC channels number is 32.GEM & RPC has different charge threshold value and dynamic range, so SetAdc has been changed acc// ordingly. ADC value starts from 1 to 32. ADC 0 has been excluded as it gives wrong x, y, t. @author Ekata Nandy
  *@author Vikas Singhal <vikas@vecc.gov.in>
@@ -378,7 +378,9 @@ InitStatus CbmMuchDigitizeGem::Init() {
 
 
   // Initialize GeoScheme
-  TFile* oldfile = gFile;
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
   TFile* file    = new TFile(fDigiFile);
   if (!file->IsOpen())
     LOG(fatal) << fName << ": parameter file " << fDigiFile
@@ -386,7 +388,9 @@ InitStatus CbmMuchDigitizeGem::Init() {
   TObjArray* stations = (TObjArray*) file->Get("stations");
   file->Close();
   file->Delete();
-  gFile = oldfile;
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
   fGeoScheme->Init(stations, fFlag);
 
 
@@ -808,11 +812,18 @@ void CbmMuchDigitizeGem::Finish() {
   LOG(info) << "=====================================";
 
   /*
+  /// Save old global file and folder pointer to avoid messing with FairRoot
+  TFile* oldFile     = gFile;
+  TDirectory* oldDir = gDirectory;
   TFile *f1 =new TFile ("pri_el_info.root","RECREATE");
   hPriElAfterDriftpathgem->Write();
   hPriElAfterDriftpathrpc->Write();
   hadcGEM->Write();
   hadcRPC->Write();
+  f1->Close();
+  /// Restore old global file and folder pointer to avoid messing with FairRoot
+  gFile      = oldFile;
+  gDirectory = oldDir;
   */
   //if (fDaq)	ReadAndRegister(-1.);
 }