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.); }