With Cvetan: initialize CDB and provide proper geometry loading.
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jun 2007 15:31:58 +0000 (15:31 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 22 Jun 2007 15:31:58 +0000 (15:31 +0000)
EVE/Alieve/EventAlieve.cxx
EVE/Alieve/EventAlieve.h

index 987d500..b071372 100644 (file)
@@ -9,10 +9,14 @@
 #include <AliESD.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>
@@ -39,6 +43,8 @@ Bool_t Alieve::Event::fgUseRunLoader   = kTRUE;
 Bool_t Alieve::Event::fgUseESDTree     = kTRUE;
 Bool_t Alieve::Event::fgAvoidExcOnOpen = kTRUE;
 
+TString  Alieve::Event::fgCdbUri("local://$ALICE_ROOT");
+
 AliMagF* Alieve::Event::fgMagField = 0;
 
 
@@ -99,6 +105,8 @@ void Event::Open()
   if(fPath[0] != '/')
     fPath = Form("%s/%s", gSystem->WorkingDirectory(), fPath.Data());
 
+  Int_t runNo = -1;
+
   if(fgUseRunLoader)
   {
     TString ga_path(Form("%s/galice.root", fPath.Data()));
@@ -122,6 +130,7 @@ void Event::Open()
       throw(eH + "failed loading gAlice.");
     if(fRunLoader->LoadHeader() != 0)
       throw(eH + "failed loading header.");
+    runNo = fRunLoader->GetHeader()->GetRun();
   }
 end_run_loader:
 
@@ -148,6 +157,7 @@ end_run_loader:
     if(fESDTree == 0)
       throw(eH + "failed getting the esdTree.");
     fESD->ReadFromTree(fESDTree);
+    runNo = fESD->GetESDRun()->GetRunNumber();
 
     // Check if ESDfriends exists and attach the branch
     p = Form("%s/AliESDfriends.root", fPath.Data());
@@ -159,6 +169,17 @@ end_run_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);
+  }
+
 end_esd_loader:
   SetName(Form("Event %d", fEventId));
   SetTitle(fPath);
@@ -282,3 +303,24 @@ AliMagF* Event::AssertMagField()
   }
   return fgMagField;
 }
+
+TGeoManager* Event::AssertGeometry()
+{
+  static const Exc_t eH("Event::AssertGeometry ");
+
+  if (AliGeomManager::GetGeometry() == 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();
+}
index 683cf61..2db1d0b 100644 (file)
@@ -15,6 +15,7 @@ class AliMagF;
 
 class TFile;
 class TTree;
+class TGeoManager;
 
 namespace Alieve {
 
@@ -42,12 +43,16 @@ protected:
   static Bool_t fgUseESDTree;
   static Bool_t fgAvoidExcOnOpen;
 
+  static TString  fgCdbUri;
+
   static AliMagF* fgMagField;
 
 public:
   static void Initialize(Bool_t use_runloader=kTRUE, Bool_t use_esd=kTRUE,
                         Bool_t avoid_exc_on_open=kTRUE);
 
+  static void SetCdbUri(const Text_t* cdb) { if (cdb) fgCdbUri = cdb; }
+
   Event();
   Event(TString path, Int_t ev=0);
 
@@ -76,6 +81,8 @@ public:
 
   static AliMagF*      AssertMagField();
 
+  static TGeoManager*  AssertGeometry();
+
   ClassDef(Event, 1);
 }; // endclass Event