Invert the modality of run-loader and esd loading: always try to open them and compla...
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 Jun 2007 15:27:17 +0000 (15:27 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 26 Jun 2007 15:27:17 +0000 (15:27 +0000)
EVE/Alieve/EventAlieve.cxx
EVE/Alieve/EventAlieve.h

index b071372b5278e8846bb10eea7fbebfb5de0b5bdf..5219c772ff79eae6bad58fdeb727916f3b7c1297 100644 (file)
@@ -39,39 +39,14 @@ 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;
 
 TString  Alieve::Event::fgCdbUri("local://$ALICE_ROOT");
 
 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 ");
-
-  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");
-  }
-  */
-}
-
-/**************************************************************************/
-
 Event::Event() :
   EventBase(),
 
@@ -107,65 +82,92 @@ void Event::Open()
 
   Int_t runNo = -1;
 
-  if(fgUseRunLoader)
+  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;
+      }
+    }
+    else // run-loader open failed
+    {
+      Warning(eH, "failed opening ALICE run-loader from '%s'.", ga_path.Data());
     }
-    if(fRunLoader->LoadgAlice() != 0)
-      throw(eH + "failed loading gAlice.");
-    if(fRunLoader->LoadHeader() != 0)
-      throw(eH + "failed loading header.");
-    runNo = fRunLoader->GetHeader()->GetRun();
   }
-end_run_loader:
+  else // galice not readable
+  {
+    Warning(eH, "can not read '%s'.", ga_path.Data());
+  }
+  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 AliESD();
+      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);
-    runNo = fESD->GetESDRun()->GetRunNumber();
-
-    // 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.");
     }
   }
 
@@ -180,7 +182,6 @@ end_run_loader:
     cdb->SetRun(runNo);
   }
 
-end_esd_loader:
   SetName(Form("Event %d", fEventId));
   SetTitle(fPath);
 }
index 2db1d0b51a25dc75be5cb4b38726d7b89a877dfd..7b09a4c2218125cad89bd839938315f734ff326e 100644 (file)
@@ -39,19 +39,16 @@ protected:
 
   TList         fNewEventCommands;
 
-  static Bool_t fgUseRunLoader;
-  static Bool_t fgUseESDTree;
-  static Bool_t fgAvoidExcOnOpen;
-
   static TString  fgCdbUri;
+  static Bool_t   fgAssertRunLoader;
+  static Bool_t   fgAssertESDTree;
 
   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; }
+  static void SetAssertElements(Bool_t assertRunloader, Bool_t assertEsd)
+  { fgAssertRunLoader = assertRunloader; fgAssertESDTree = assertEsd; }
 
   Event();
   Event(TString path, Int_t ev=0);