diff --git a/analysis/detectors/psd/CbmPsdMCbmQaReal.cxx b/analysis/detectors/psd/CbmPsdMCbmQaReal.cxx index 2abf885349d41671494788a702c3d315954958c8..47fbb5d9dc1e61aa4e0de769f397557465798a43 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 1554899204dc84b611236776919d4657f1996649..00e10162044b630f0217ba0118e94fc9a42dfbb5 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 7464c792f7321b94e3b26d43e34a49dc48fef9dc..0e5cf56dc4f4e18757f6cba0a8f31fc42f3f3a0b 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();