From 4bc9f11c660b1d3a938ab7c69a4aa8c5b8864720 Mon Sep 17 00:00:00 2001 From: Florian Uhlig <f.uhlig@gsi.de> Date: Thu, 11 Feb 2021 18:01:50 +0100 Subject: [PATCH] psd: Add gFile + gDirectory protection --- analysis/detectors/psd/CbmPsdMCbmQaReal.cxx | 17 +++++++++++++++-- reco/detectors/psd/CbmPsdHitProducer.cxx | 12 +++++++++++- sim/detectors/psd/CbmPsdMC.cxx | 12 +++++++++++- 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/analysis/detectors/psd/CbmPsdMCbmQaReal.cxx b/analysis/detectors/psd/CbmPsdMCbmQaReal.cxx index 2abf885349..47fbb5d9dc 100644 --- a/analysis/detectors/psd/CbmPsdMCbmQaReal.cxx +++ b/analysis/detectors/psd/CbmPsdMCbmQaReal.cxx @@ -485,7 +485,10 @@ void CbmPsdMCbmQaReal::Finish() { } if (this->fDoWriteHistToFile) { - TDirectory* oldir = gDirectory; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + std::string s = fOutputDir + "/RecoHists.root"; TFile* outFile = new TFile(s.c_str(), "RECREATE"); if (outFile->IsOpen()) { @@ -494,7 +497,9 @@ void CbmPsdMCbmQaReal::Finish() { outFile->Close(); std::cout << "Done!" << std::endl; } - gDirectory->cd(oldir->GetPath()); + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } } @@ -503,6 +508,10 @@ void CbmPsdMCbmQaReal::DrawFromFile(const string& fileName, const string& outputDir) { fOutputDir = outputDir; + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + if (fHM != nullptr) delete fHM; fHM = new CbmHistManager(); @@ -511,6 +520,10 @@ void CbmPsdMCbmQaReal::DrawFromFile(const string& fileName, DrawHist(); fHM->SaveCanvasToImage(fOutputDir); + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; } diff --git a/reco/detectors/psd/CbmPsdHitProducer.cxx b/reco/detectors/psd/CbmPsdHitProducer.cxx index 1554899204..00e1016204 100644 --- a/reco/detectors/psd/CbmPsdHitProducer.cxx +++ b/reco/detectors/psd/CbmPsdHitProducer.cxx @@ -142,7 +142,7 @@ void CbmPsdHitProducer::Exec(Option_t* /*opt*/) { /* for (Int_t imod=0; imod<NPsdMod; imod++) //marina - { + { if (edep[imod]>0.) { new ((*fHitArray)[fNHits]) CbmPsdHit(imod+1, edep[imod]); @@ -160,9 +160,19 @@ void CbmPsdHitProducer::Exec(Option_t* /*opt*/) { // ------------------------------------------------------------------------- void CbmPsdHitProducer::Finish() { cout << " CbmPsdHitProducer::Finish() " << endl; + + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* outfile = new TFile("EdepHistos.root", "RECREATE"); outfile->cd(); fhModXNewEn->Write(); + + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + //outfile->Close(); //SELIM } diff --git a/sim/detectors/psd/CbmPsdMC.cxx b/sim/detectors/psd/CbmPsdMC.cxx index 7464c792f7..0e5cf56dc4 100644 --- a/sim/detectors/psd/CbmPsdMC.cxx +++ b/sim/detectors/psd/CbmPsdMC.cxx @@ -71,6 +71,10 @@ void CbmPsdMC::ConstructGeometry() { } // --- Look for PSD volume and transformation matrix in geometry file + /// Save old global file and folder pointer to avoid messing with FairRoot + TFile* oldFile = gFile; + TDirectory* oldDir = gDirectory; + TFile* geoFile = new TFile(fgeoName); assert ( geoFile ); TKey* key = nullptr; @@ -122,9 +126,15 @@ void CbmPsdMC::ConstructGeometry() { for (Int_t i=0; i<psdVolume->GetNdaughters(); ++i) RegisterSensitiveVolumes(psdVolume->GetNode(i)); // RegisterSensitiveVolumes(psdVolume->GetNode(0)); - + LOG(debug) << GetName() << ": " << fNbOfSensitiveVol << " sensitive volumes"; + * + /// Restore old global file and folder pointer to avoid messing with FairRoot + gFile = oldFile; + gDirectory = oldDir; + + geoFile->Close(); */ LOG(info) << "Importing PSD geometry from ROOT file " << fgeoName.Data(); -- GitLab