]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliSimulation.cxx
Avoiding memory problems.
[u/mrichter/AliRoot.git] / STEER / AliSimulation.cxx
index 8f6562f05efcedf59d903026ded935152030bcf6..18fe93a9720f7eeae282faa0c1243a9c294d8ccd 100644 (file)
 
 #include <TCint.h>
 #include <TFile.h>
+#include <TGeoGlobalMagField.h>
 #include <TGeoManager.h>
 #include <TObjString.h>
 #include <TROOT.h>
 #include "AliGeomManager.h"
 #include "AliHLTSimulation.h"
 #include "AliHeader.h"
+#include "AliLego.h"
+#include "AliLegoGenerator.h"
 #include "AliLog.h"
 #include "AliMC.h"
 #include "AliMagF.h"
 #include "AliSimulation.h"
 #include "AliSysInfo.h"
 #include "AliVertexGenFile.h"
-#include "AliLegoGenerator.h"
-#include "AliLego.h"
 
 ClassImp(AliSimulation)
 
@@ -779,20 +780,23 @@ Bool_t AliSimulation::RunLego(const char *setup, Int_t nc1, Float_t c1min,
   } else {
     AliWarning("Run number not initialized!!");
   }
-  
-  AliRunLoader::GetRunLoader()->CdGAFile();
+
+  AliRunLoader::Instance()->CdGAFile();
   
   AliPDG::AddParticlesToPdgDataBase();  
   
   gAlice->GetMCApp()->Init();
   
+  gMC->SetMagField(TGeoGlobalMagField::Instance()->GetField());
+
+  
   //Must be here because some MCs (G4) adds detectors here and not in Config.C
   gAlice->InitLoaders();
-  AliRunLoader::GetRunLoader()->MakeTree("E");
+  AliRunLoader::Instance()->MakeTree("E");
   
   //
   // Save stuff at the beginning of the file to avoid file corruption
-  AliRunLoader::GetRunLoader()->CdGAFile();
+  AliRunLoader::Instance()->CdGAFile();
   gAlice->Write();
 
   //Save current generator
@@ -804,7 +808,7 @@ Bool_t AliSimulation::RunLego(const char *setup, Int_t nc1, Float_t c1min,
   //Run Lego Object
   
   
-  AliRunLoader::GetRunLoader()->SetNumberOfEventsPerFile(nev);
+  AliRunLoader::Instance()->SetNumberOfEventsPerFile(nev);
   gMC->ProcessRun(nev);
   
   // End of this run, close files
@@ -915,26 +919,28 @@ Bool_t AliSimulation::RunSimulation(Int_t nEvents)
   gInterpreter->ProcessLine(gAlice->GetConfigFunction());
 
   if(AliCDBManager::Instance()->GetRun() >= 0) { 
-       gAlice->SetRunNumber(AliCDBManager::Instance()->GetRun());
+    AliRunLoader::Instance()->SetRunNumber(AliCDBManager::Instance()->GetRun());
   } else {
        AliWarning("Run number not initialized!!");
   }
   
-   AliRunLoader::GetRunLoader()->CdGAFile();
+   AliRunLoader::Instance()->CdGAFile();
     
    AliPDG::AddParticlesToPdgDataBase();  
 
    gAlice->GetMCApp()->Init();
+
+   gMC->SetMagField(TGeoGlobalMagField::Instance()->GetField());
    
    //Must be here because some MCs (G4) adds detectors here and not in Config.C
    gAlice->InitLoaders();
-   AliRunLoader::GetRunLoader()->MakeTree("E");
-   AliRunLoader::GetRunLoader()->LoadKinematics("RECREATE");
-   AliRunLoader::GetRunLoader()->LoadTrackRefs("RECREATE");
-   AliRunLoader::GetRunLoader()->LoadHits("all","RECREATE");
+   AliRunLoader::Instance()->MakeTree("E");
+   AliRunLoader::Instance()->LoadKinematics("RECREATE");
+   AliRunLoader::Instance()->LoadTrackRefs("RECREATE");
+   AliRunLoader::Instance()->LoadHits("all","RECREATE");
    //
    // Save stuff at the beginning of the file to avoid file corruption
-   AliRunLoader::GetRunLoader()->CdGAFile();
+   AliRunLoader::Instance()->CdGAFile();
    gAlice->Write();
    gAlice->SetEventNrInRun(-1); //important - we start Begin event from increasing current number in run
   //___________________________________________________________________________________________
@@ -952,7 +958,7 @@ Bool_t AliSimulation::RunSimulation(Int_t nEvents)
   // Set run number in CDBManager
   AliInfo(Form("Run number: %d",AliCDBManager::Instance()->GetRun()));
 
-  AliRunLoader* runLoader = AliRunLoader::GetRunLoader();
+  AliRunLoader* runLoader = AliRunLoader::Instance();
   if (!runLoader) {
              AliError(Form("gAlice has no run loader object. "
                             "Check your config file: %s", fConfigFileName.Data()));
@@ -979,7 +985,7 @@ Bool_t AliSimulation::RunSimulation(Int_t nEvents)
   MisalignGeometry(runLoader);
 #endif
 
-//   AliRunLoader* runLoader = AliRunLoader::GetRunLoader();
+//   AliRunLoader* runLoader = AliRunLoader::Instance();
 //   if (!runLoader) {
 //     AliError(Form("gAlice has no run loader object. "
 //                   "Check your config file: %s", fConfigFileName.Data()));
@@ -1113,7 +1119,7 @@ Bool_t AliSimulation::RunDigitization(const char* detectors,
   if (!SetRunNumberFromData()) if (fStopOnError) return kFALSE;
   SetCDBLock();
   
-  delete AliRunLoader::GetRunLoader();
+  delete AliRunLoader::Instance();
   delete gAlice;
   gAlice = NULL;
 
@@ -1557,7 +1563,7 @@ AliRunLoader* AliSimulation::LoadRun(const char* mode) const
 {
 // delete existing run loaders, open a new one and load gAlice
 
-  delete AliRunLoader::GetRunLoader();
+  delete AliRunLoader::Instance();
   AliRunLoader* runLoader = 
     AliRunLoader::Open(fGAliceFileName.Data(), 
                       AliConfig::GetDefaultEventFolderName(), mode);
@@ -1693,21 +1699,23 @@ Bool_t AliSimulation::ConvertRaw2SDigits(const char* rawDirectory, const char* e
        AliWarning("Run number not initialized!!");
   }
   
-   AliRunLoader::GetRunLoader()->CdGAFile();
+   AliRunLoader::Instance()->CdGAFile();
     
    AliPDG::AddParticlesToPdgDataBase();  
 
    gAlice->GetMCApp()->Init();
+
+   gMC->SetMagField(TGeoGlobalMagField::Instance()->GetField());
    
    //Must be here because some MCs (G4) adds detectors here and not in Config.C
    gAlice->InitLoaders();
-   AliRunLoader::GetRunLoader()->MakeTree("E");
-   AliRunLoader::GetRunLoader()->LoadKinematics("RECREATE");
-   AliRunLoader::GetRunLoader()->LoadTrackRefs("RECREATE");
-   AliRunLoader::GetRunLoader()->LoadHits("all","RECREATE");
+   AliRunLoader::Instance()->MakeTree("E");
+   AliRunLoader::Instance()->LoadKinematics("RECREATE");
+   AliRunLoader::Instance()->LoadTrackRefs("RECREATE");
+   AliRunLoader::Instance()->LoadHits("all","RECREATE");
    //
    // Save stuff at the beginning of the file to avoid file corruption
-   AliRunLoader::GetRunLoader()->CdGAFile();
+   AliRunLoader::Instance()->CdGAFile();
    gAlice->Write();
 //
 //  Initialize CDB     
@@ -1718,7 +1726,7 @@ Bool_t AliSimulation::ConvertRaw2SDigits(const char* rawDirectory, const char* e
     Int_t iDet;
     //
     // Get the runloader
-    AliRunLoader* runLoader = AliRunLoader::GetRunLoader();
+    AliRunLoader* runLoader = AliRunLoader::Instance();
     //
     // Open esd file if available
     TFile* esdFile = TFile::Open(esdFileName);
@@ -1815,7 +1823,7 @@ void AliSimulation::FinishRun()
   if(IsLegoRun()) 
    {
     AliDebug(1, "Finish Lego");
-    AliRunLoader::GetRunLoader()->CdGAFile();
+    AliRunLoader::Instance()->CdGAFile();
     fLego->FinishRun();
    }
   
@@ -1827,16 +1835,16 @@ void AliSimulation::FinishRun()
     detector->FinishRun();
   }
   
-  AliDebug(1, "AliRunLoader::GetRunLoader()->WriteHeader(OVERWRITE)");
-  AliRunLoader::GetRunLoader()->WriteHeader("OVERWRITE");
+  AliDebug(1, "AliRunLoader::Instance()->WriteHeader(OVERWRITE)");
+  AliRunLoader::Instance()->WriteHeader("OVERWRITE");
 
   // Write AliRun info and all detectors parameters
-  AliRunLoader::GetRunLoader()->CdGAFile();
+  AliRunLoader::Instance()->CdGAFile();
   gAlice->Write(0,TObject::kOverwrite);//write AliRun
-  AliRunLoader::GetRunLoader()->Write(0,TObject::kOverwrite);//write RunLoader itself
+  AliRunLoader::Instance()->Write(0,TObject::kOverwrite);//write RunLoader itself
   
   if(gAlice->GetMCApp()) gAlice->GetMCApp()->FinishRun();  
-  AliRunLoader::GetRunLoader()->Synchronize();
+  AliRunLoader::Instance()->Synchronize();
 }
 
 //_____________________________________________________________________________
@@ -1975,7 +1983,7 @@ Bool_t AliSimulation::RunQA()
        // run the QA on summable hits, digits or digits
        
   if(!gAlice) return kFALSE;
-       fQASteer->SetRunLoader(AliRunLoader::GetRunLoader()) ;
+       fQASteer->SetRunLoader(AliRunLoader::Instance()) ;
 
        TString detectorsw("") ;  
        Bool_t rv = kTRUE ; 
@@ -2147,9 +2155,9 @@ void AliSimulation::WriteGRPEntry()
   grpObj->SetLHCLuminosity(0,(AliGRPObject::Stats)0);
   grpObj->SetBeamIntensity(0,(AliGRPObject::Stats)0);
 
-  AliMagF *field = gAlice->Field();
-  Float_t solenoidField = TMath::Abs(field->SolenoidField());
-  Float_t factor = field->Factor();
+  AliMagF *field = (AliMagF*)TGeoGlobalMagField::Instance()->GetField();
+  Float_t solenoidField = field ? TMath::Abs(field->SolenoidField()) : 0;
+  Float_t factor =        field ? field->Factor() : 0;
   Float_t l3current = TMath::Abs(factor)*solenoidField*30000./5.;
   grpObj->SetL3Current(l3current,(AliGRPObject::Stats)0);