]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/Alieve/EventAlieve.cxx
New class AliESDEvent, backward compatibility with the old AliESD (Christian)
[u/mrichter/AliRoot.git] / EVE / Alieve / EventAlieve.cxx
index a682e4cd969bbfe8c58734e62cfdd88bbb348061..86bf3c12787ec3080568fc9b0ab5d01e653c314d 100644 (file)
@@ -6,13 +6,17 @@
 
 #include <AliRunLoader.h>
 #include <AliRun.h>
-#include <AliESD.h>
+#include <AliESDEvent.h>
 #include <AliESDfriend.h>
 #include <AliMagFMaps.h>
+#include <AliCDBManager.h>
+#include <AliHeader.h>
+#include <AliGeomManager.h>
 
 #include <TFile.h>
 #include <TTree.h>
 #include <TObjString.h>
+#include <TError.h>
 
 #include <TROOT.h>
 #include <TSystem.h>
@@ -35,36 +39,13 @@ ClassImp(Event)
 
 Event* Alieve::gEvent = 0;
 
-Bool_t Alieve::Event::fgUseRunLoader   = kTRUE;
-Bool_t Alieve::Event::fgUseESDTree     = kTRUE;
-Bool_t Alieve::Event::fgAvoidExcOnOpen = kTRUE;
+Bool_t Alieve::Event::fgAssertRunLoader = kFALSE;
+Bool_t Alieve::Event::fgAssertESDTree   = kFALSE;
 
-AliMagF* Alieve::Event::fgMagField = 0;
-
-
-void Event::Initialize(Bool_t use_runloader, Bool_t use_esd,
-                      Bool_t avoid_exc_on_open)
-{
-  static const Exc_t eH("Event::Initialize ");
+TString  Alieve::Event::fgCdbUri("local://$ALICE_ROOT");
 
-  fgUseRunLoader   = use_runloader;
-  fgUseESDTree     = use_esd;
-  fgAvoidExcOnOpen = avoid_exc_on_open;
-
-  /*
-  if(fgUseRunLoader == false && fgUseESDTree == false)
-    throw(eH + "should use at least one data source.");
-
-  if(fgUseRunLoader) {
-    AssertMacro("loadlibs.C");
-  }
-  else if(fgUseESDTree) {
-    gSystem->Load("libESD.so");
-  }
-  */
-}
+AliMagF* Alieve::Event::fgMagField = 0;
 
-/**************************************************************************/
 
 Event::Event() :
   EventBase(),
@@ -72,7 +53,8 @@ Event::Event() :
   fPath (), fEventId   (0),
   fRunLoader (0),
   fESDFile   (0), fESDTree (0), fESD (0),
-  fESDfriend (0), fESDfriendExists(kFALSE)
+  fESDfriend (0), fESDfriendExists(kFALSE),
+  fNewEventCommands()
 {}
 
 Event::Event(TString path, Int_t ev) :
@@ -81,7 +63,8 @@ Event::Event(TString path, Int_t ev) :
   fPath (path), fEventId(-1),
   fRunLoader (0),
   fESDFile   (0), fESDTree (0), fESD (0),
-  fESDfriend (0), fESDfriendExists(kFALSE)
+  fESDfriend (0), fESDfriendExists(kFALSE),
+  fNewEventCommands()
 {
   Open();
   if (ev >= 0) GotoEvent(ev);
@@ -97,67 +80,108 @@ void Event::Open()
   if(fPath[0] != '/')
     fPath = Form("%s/%s", gSystem->WorkingDirectory(), fPath.Data());
 
-  if(fgUseRunLoader)
+  Int_t runNo = -1;
+
+  TString ga_path(Form("%s/galice.root", fPath.Data()));
+  if(gSystem->AccessPathName(ga_path, kReadPermission) == kFALSE)
   {
-    TString ga_path(Form("%s/galice.root", fPath.Data()));
-    if(gSystem->AccessPathName(ga_path, kReadPermission))
-    {
-      if (fgAvoidExcOnOpen) {
-       Warning(eH, "RunLoader not initialized.");
-       goto end_run_loader;
-      } else {
-       throw(eH + "can not read '" + ga_path + "'.");
-      }
-    }
     fRunLoader = AliRunLoader::Open(ga_path);
-    if(!fRunLoader)
-      throw(eH + "failed opening ALICE run loader from '" + ga_path + "'.");
+    if (fRunLoader)
     {
       TString alice_path = fPath + "/";
       fRunLoader->SetDirName(alice_path);
+
+      if (fRunLoader->LoadgAlice() != 0)
+       Warning(eH, "failed loading gAlice via run-loader.");
+
+      if (fRunLoader->LoadHeader() == 0)
+      {
+       runNo = fRunLoader->GetHeader()->GetRun();
+      }
+      else
+      {
+       Warning(eH, "failed loading run-loader's header.");
+       delete fRunLoader;
+       fRunLoader = 0;
+      }
     }
-    if(fRunLoader->LoadgAlice() != 0)
-      throw(eH + "failed loading gAlice.");
-    if(fRunLoader->LoadHeader() != 0)
-      throw(eH + "failed loading header.");
+    else // run-loader open failed
+    {
+      Warning(eH, "failed opening ALICE run-loader from '%s'.", ga_path.Data());
+    }
+  }
+  else // galice not readable
+  {
+    Warning(eH, "can not read '%s'.", ga_path.Data());
   }
-end_run_loader:
+  if (fRunLoader == 0)
+  {
+    if(fgAssertRunLoader)
+      throw(eH + "Bootstraping of run-loader failed. Its precence was requested.");
+    else
+      Warning(eH, "Bootstraping of run-loader failed.");
+  }
+  
 
-  if(fgUseESDTree)
+  TString esd_path(Form("%s/AliESDs.root", fPath.Data()));
+  if(gSystem->AccessPathName(esd_path, kReadPermission) == kFALSE)
   {
-    TString p(Form("%s/AliESDs.root", fPath.Data()));
-    if(gSystem->AccessPathName(p, kReadPermission))
+    fESDFile = new TFile(esd_path);
+    if(fESDFile->IsZombie() == kFALSE)
     {
-      if (fgAvoidExcOnOpen) {
-       Warning(eH, "ESD not initialized.");
-       goto end_esd_loader;
-      } else { 
-       throw(eH + "can not read '" + p + "'.");
+      fESD = new AliESDEvent();
+      fESDTree = (TTree*) fESDFile->Get("esdTree");
+      if (fESDTree != 0)
+      {
+       fESD->ReadFromTree(fESDTree);
+       runNo = fESD->GetESDRun()->GetRunNumber();
+
+       // Check if ESDfriends exists and attach the branch
+       TString p = Form("%s/AliESDfriends.root", fPath.Data());
+       if(gSystem->AccessPathName(p, kReadPermission) == kFALSE)
+       {
+         fESDfriendExists = kTRUE;
+         fESDTree->SetBranchStatus ("ESDfriend*", 1);
+         fESDTree->SetBranchAddress("ESDfriend.", &fESDfriend);
+       }
+      }
+      else // esdtree == 0
+      {
+       delete fESDFile; fESDFile = 0;
+       Warning(eH, "failed getting the esdTree.");
       }
     }
-    fESDFile = new TFile(p);
-    if(fESDFile->IsZombie()) {
+    else // esd tfile is zombie
+    {
       delete fESDFile; fESDFile = 0;
-      throw(eH + "failed opening ALICE ESD from '" + p + "'.");
+      Warning(eH, "failed opening ESD from '%s'.", esd_path.Data());
     }
-
-    fESD = new AliESD();
-    fESDTree = (TTree*) fESDFile->Get("esdTree");
-    if(fESDTree == 0)
-      throw(eH + "failed getting the esdTree.");
-    fESD->ReadFromTree(fESDTree);
-
-    // Check if ESDfriends exists and attach the branch
-    p = Form("%s/AliESDfriends.root", fPath.Data());
-    if(gSystem->AccessPathName(p, kReadPermission) == kFALSE)
+  }
+  else // esd not readable
+  {
+    Warning(eH, "can not read ESD file '%s'.", esd_path.Data());
+  }
+  if (fESDTree == 0)
+  {
+    if (fgAssertESDTree)
     {
-      fESDfriendExists = kTRUE;
-      fESDTree->SetBranchStatus ("ESDfriend*", 1);
-      fESDTree->SetBranchAddress("ESDfriend.", &fESDfriend);
+      throw(eH + "ESD not initialized. Its precence was requested.");
+    } else { 
+      Warning(eH, "ESD not initialized.");
     }
   }
 
-end_esd_loader:
+  if (runNo < 0)
+    throw(eH + "invalid run number.");
+
+  {
+    AliCDBManager* cdb = AliCDBManager::Instance();
+    cdb->SetDefaultStorage(fgCdbUri);
+    if (cdb->IsDefaultStorageSet() == kFALSE)
+      throw(eH + "CDB initialization failed.");
+    cdb->SetRun(runNo);
+  }
+
   SetName(Form("Event %d", fEventId));
   SetTitle(fPath);
 }
@@ -247,7 +271,7 @@ AliRunLoader* Event::AssertRunLoader()
   return gEvent->fRunLoader;
 }
 
-AliESD* Event::AssertESD()
+AliESDEvent* Event::AssertESD()
 {
   static const Exc_t eH("Event::AssertESD ");
 
@@ -280,3 +304,25 @@ AliMagF* Event::AssertMagField()
   }
   return fgMagField;
 }
+
+TGeoManager* Event::AssertGeometry()
+{
+  static const Exc_t eH("Event::AssertGeometry ");
+
+  if (AliGeomManager::GetGeometry() == 0)
+  {
+    gGeoManager = 0;
+    AliGeomManager::LoadGeometry();
+    if ( ! AliGeomManager::GetGeometry())
+    {
+      throw(eH + "can not load geometry.");
+    }
+    if ( ! AliGeomManager::ApplyAlignObjsFromCDB("ITS TPC TRD TOF PHOS HMPID EMCAL MUON FMD ZDC PMD T0 VZERO ACORDE"))
+    {
+      ::Warning(eH, "mismatch of alignable volumes. Proceeding.");
+      // throw(eH + "could not apply align objs.");
+    }
+  }
+
+  return AliGeomManager::GetGeometry();
+}