Provide static pointer to self (Andrei)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 21 May 2007 15:19:55 +0000 (15:19 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 21 May 2007 15:19:55 +0000 (15:19 +0000)
STEER/AliSimulation.cxx
STEER/AliSimulation.h

index 39c55c6..e6e718e 100644 (file)
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
+#include <TVirtualMCApplication.h>
 #include <TGeoManager.h>
 #include <TObjString.h>
 #include <TStopwatch.h>
 #include "AliESD.h"
 #include "AliHeader.h"
 #include "AliGenEventHeader.h"
+#include "AliMC.h"
 
 ClassImp(AliSimulation)
 
+AliSimulation *AliSimulation::fgInstance = 0;
 
 //_____________________________________________________________________________
 AliSimulation::AliSimulation(const char* configFileName, const char* cdbUri,
@@ -168,7 +171,7 @@ AliSimulation::AliSimulation(const char* configFileName, const char* cdbUri,
   fEmbeddingFlag(kFALSE)
 {
 // create simulation object with default parameters
-
+  fgInstance = this;
   SetGAliceFile("galice.root");
 }
 
@@ -217,7 +220,7 @@ AliSimulation::AliSimulation(const AliSimulation& sim) :
   for (Int_t i = 0; i < sim.fSpecCDBUri.GetEntriesFast(); i++) {
     if (sim.fSpecCDBUri[i]) fSpecCDBUri.Add(sim.fSpecCDBUri[i]->Clone());
   }
-
+  fgInstance = this;
 }
 
 //_____________________________________________________________________________
@@ -245,6 +248,7 @@ AliSimulation::~AliSimulation()
   }
 
   fSpecCDBUri.Delete();
+  if (fgInstance==this) fgInstance = 0;
 }
 
 
@@ -372,6 +376,9 @@ Bool_t AliSimulation::MisalignGeometry(AliRunLoader *runLoader)
     delRunLoader = kTRUE;
   }
 
+  // Export ideal geometry 
+  if (gGeoManager) gGeoManager->Export("geometry.root");
+
   // Load alignment data from CDB and apply to geometry through AliGeomManager
   if(fLoadAlignFromCDB){
     
@@ -634,11 +641,8 @@ Bool_t AliSimulation::RunSimulation(Int_t nEvents)
   }
   SetGAliceFile(runLoader->GetFileName());
  
-  // Export ideal geometry 
-  if (gGeoManager) gGeoManager->Export("geometry.root");
-
   // Misalign geometry
-  MisalignGeometry(runLoader);
+//  MisalignGeometry(runLoader);
 
   // Export (mis)aligned geometry 
   if (gGeoManager) gGeoManager->Export("misaligned_geometry.root");
index a3663b3..23ea5c9 100644 (file)
@@ -31,6 +31,8 @@ public:
   AliSimulation& operator = (const AliSimulation& sim);
   virtual ~AliSimulation();
 
+  static AliSimulation *GetInstance() {return fgInstance;}
+
   void           SetNumberOfEvents(Int_t nEvents);
   void           SetConfigFile(const char* fileName);
   void           SetGAliceFile(const char* fileName);
@@ -96,6 +98,8 @@ private:
   Int_t          GetNSignalPerBkgrd(Int_t nEvents = 0) const;
   Bool_t         IsSelected(TString detName, TString& detectors) const;
 
+  static AliSimulation *fgInstance;    // Static pointer to object
+
   Bool_t         fRunGeneration;      // generate prim. particles or not
   Bool_t         fRunSimulation;      // simulate detectors (hits) or not
   Bool_t         fLoadAlignFromCDB;   // Load alignment data from CDB and apply it to geometry or not
@@ -122,7 +126,7 @@ private:
   TString       fCDBUri;             // Uri of the default CDB storage
   TObjArray      fSpecCDBUri;         // Array with detector specific CDB storages
   Bool_t         fEmbeddingFlag;      // Flag for embedding
-  ClassDef(AliSimulation, 3)  // class for running generation, simulation and digitization
+  ClassDef(AliSimulation, 4)  // class for running generation, simulation and digitization
 };
 
 #endif