]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Added option to respond to missing galice.root or AliESD.root files in Open() with...
authormtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 26 Oct 2006 13:22:39 +0000 (13:22 +0000)
committermtadel <mtadel@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 26 Oct 2006 13:22:39 +0000 (13:22 +0000)
EVE/Alieve/EventAlieve.cxx
EVE/Alieve/EventAlieve.h

index d5f4b2460c6b3e41b4a1a335770422bc13b58f9b..00307911928bbe705de3a27c528b99d9dc77719e 100644 (file)
@@ -24,15 +24,18 @@ ClassImp(Event)
 
 Event* Alieve::gEvent = 0;
 
-Bool_t Alieve::Event::fgUseRunLoader = true;
-Bool_t Alieve::Event::fgUseESDTree   = true;
+Bool_t Alieve::Event::fgUseRunLoader   = kTRUE;
+Bool_t Alieve::Event::fgUseESDTree     = kTRUE;
+Bool_t Alieve::Event::fgAvoidExcOnOpen = kTRUE;
 
-void Event::Initialize(Bool_t use_runloader, Bool_t use_esd)
+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;
+  fgUseRunLoader   = use_runloader;
+  fgUseESDTree     = use_esd;
+  fgAvoidExcOnOpen = avoid_exc_on_open;
 
   /*
   if(fgUseRunLoader == false && fgUseESDTree == false)
@@ -81,8 +84,14 @@ void Event::Open()
 
   if(fgUseRunLoader) {
     TString ga_path(Form("%s/galice.root", fPath.Data()));
-    if(gSystem->AccessPathName(ga_path, kReadPermission))
-      throw(eH + "can not read '" + ga_path + "'.");
+    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 + "'.");
@@ -98,11 +107,18 @@ void Event::Open()
     if(fRunLoader->GetEvent(fEventId) != 0)
       throw(eH + "failed getting required event.");
   }
+end_run_loader:
 
   if(fgUseESDTree) {
     TString p(Form("%s/AliESDs.root", fPath.Data()));
-    if(gSystem->AccessPathName(p, kReadPermission))
-      throw(eH + "can not read '" + p + "'.");
+    if(gSystem->AccessPathName(p, kReadPermission)) {
+      if (fgAvoidExcOnOpen) {
+       Warning(eH, "ESD not initialized.");
+       goto end_esd_loader;
+      } else { 
+       throw(eH + "can not read '" + p + "'.");
+      }
+    }
     fESDFile = new TFile(p);
     if(fESDFile->IsZombie()) {
       delete fESDFile; fESDFile = 0;
@@ -135,6 +151,7 @@ void Event::Open()
       fESD->SetESDfriend(fESDfriend);
     }
   }
+end_esd_loader:
 
   SetName(Form("Event %d", fEventId));
   SetTitle(fPath);
@@ -144,17 +161,13 @@ void Event::GotoEvent(Int_t event)
 {
   static const Exc_t eH("Event::GotoEvent ");
 
-  if(fgUseRunLoader && fRunLoader == 0)
-    throw(eH + "RunLoader not initialized.");
-
-  if(fgUseESDTree && fESDTree == 0)
-    throw(eH + "ESDTree not initialized.");
-
   Int_t maxEvent = 0;
-  if(fgUseRunLoader)
+  if(fRunLoader)
     maxEvent = fRunLoader->GetNumberOfEvents() - 1;
-  else if(fgUseESDTree)
+  else if(fESDTree)
     maxEvent = fESDTree->GetEntries() - 1;
+  else
+    throw(eH + "neither RunLoader nor ESD loaded.");
 
   if(event < 0 || event > maxEvent)
     throw(eH + Form("event %d not present, available range [%d, %d].",
@@ -165,12 +178,12 @@ void Event::GotoEvent(Int_t event)
   SetName(Form("Event %d", fEventId));
   UpdateItems();
 
-  if(fgUseRunLoader) {
+  if(fRunLoader) {
     if(fRunLoader->GetEvent(fEventId) != 0)
       throw(eH + "failed getting required event.");
   }
 
-  if(fgUseESDTree) {
+  if(fESDTree) {
     if(fESDTree->GetEntry(fEventId) <= 0)
       throw(eH + "failed getting required event from ESD.");
 
index e91aa5153d527f10fb463a3c31ddf98fdcebffe2..394d4f82a3f499ef08c243707299b42afd839959 100644 (file)
@@ -35,9 +35,11 @@ protected:
 
   static Bool_t fgUseRunLoader;
   static Bool_t fgUseESDTree;
+  static Bool_t fgAvoidExcOnOpen;
 
 public:
-  static void Initialize(Bool_t use_runloader=true, Bool_t use_esd=true);
+  static void Initialize(Bool_t use_runloader=kTRUE, Bool_t use_esd=kTRUE,
+                        Bool_t avoid_exc_on_open=kTRUE);
 
   Event();
   Event(TString path, Int_t ev=0);