make loader more tolerant to missing files
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Dec 2011 11:54:51 +0000 (11:54 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 13 Dec 2011 11:54:51 +0000 (11:54 +0000)
make Load function more tolerant to user selection

EVE/EveDet/AliEveTRDData.cxx
EVE/EveDet/AliEveTRDLoader.cxx

index e337663..0e7888a 100644 (file)
@@ -250,42 +250,41 @@ void AliEveTRDClusters::Load(const Char_t *w) const
   if(!c) return;
 
   Int_t det = c->GetDetector();
-  AliEveTRDLoader *loader = NULL;
+  AliEveTRDLoader *loader(NULL);
   switch(typ){
+  case 3:
+    loader = new AliEveTRDLoaderSim("MC");
+    if(!loader->Open("galice.root")) delete loader;
+    else{
+      loader->SetDataType(AliEveTRDLoader::kTRDHits | AliEveTRDLoader::kTRDDigits | AliEveTRDLoader::kTRDClusters);
+      break;
+    }
   case 0:  
     loader = new AliEveTRDLoader("Hits");
-    if(!loader->Open("TRD.Hits.root")){ 
-      delete loader;
-      return;
+    if(!loader->Open("TRD.Hits.root")) delete loader;
+    else{
+      loader->SetDataType(AliEveTRDLoader::kTRDHits);
+      if(typ!=3) break;
     }
-    loader->SetDataType(AliEveTRDLoader::kTRDHits);
-    break;
   case 1:
-    loader = new AliEveTRDLoader("Digits");
-    if(!loader->Open("TRD.Digits.root")){ 
-      delete loader;
-      return;
+    if(!loader) loader = new AliEveTRDLoader("Digits");
+    if(!loader->Open("TRD.Digits.root")){
+      if(typ==1) delete loader;
+    } else {
+      loader->SetDataType(AliEveTRDLoader::kTRDDigits);
+      if(typ!=3) break;
     }
-    loader->SetDataType(AliEveTRDLoader::kTRDDigits);
-    break;
   case 2:
-    loader = new AliEveTRDLoader("Clusters");
-    if(!loader->Open("TRD.RecPoints.root")){ 
-      delete loader;
-      return;
-    }
-    loader->SetDataType(AliEveTRDLoader::kTRDClusters);
-    break;
-  case 3:
-    loader = new AliEveTRDLoaderSim("MC");
-    if(!loader->Open("galice.root")){ 
-      delete loader;
-      return;
+    if(!loader) loader = new AliEveTRDLoader("Clusters");
+    if(!loader->Open("TRD.RecPoints.root")){
+      if(typ ==2) delete loader;
+    } else {
+      loader->SetDataType(AliEveTRDLoader::kTRDClusters);
+      break;
     }
-    loader->SetDataType(AliEveTRDLoader::kTRDHits | AliEveTRDLoader::kTRDDigits | AliEveTRDLoader::kTRDClusters);
-    break;
   default: return;
   }
+  if(!loader) return;
 
   loader->AddChambers(AliTRDgeometry::GetSector(det),AliTRDgeometry::GetStack(det), AliTRDgeometry::GetLayer(det));
   // load first event
index ffa84ff..62d98eb 100644 (file)
@@ -141,31 +141,45 @@ Bool_t AliEveTRDLoader::GoToEvent(int ev)
 
   Unload();
 
-  TTree *t = 0x0;
-  TFile *f = TFile::Open(Form("%s/%s", fDir.Data(), fFilename.Data()));
-  if(! f->cd(Form("Event%d", ev))){
-    AliError(Form("Couldn't find event %d in file \"%s/%s\".", ev, fDir.Data(), fFilename.Data()));
+  TTree *t(NULL); TFile *f(NULL);
+  if(!(f = TFile::Open(Form("%s/%s", fDir.Data(), fFilename.Data())))){
+    AliWarning(Form("File not found \"%s/%s\".", fDir.Data(), fFilename.Data()));
+    return kFALSE;
+  }
+  if(!f->cd(Form("Event%d", ev))){
+    AliError(Form("Event[%d] not found in file \"%s/%s\".", ev, fDir.Data(), fFilename.Data()));
     f->Close(); //delete f;
     return kFALSE;
   }
 
   if(fDataType&kTRDHits){
-    t = (TTree*)gDirectory->Get("TreeH");
-    if(!t) return kFALSE;
+    if(!(t = (TTree*)gDirectory->Get("TreeH"))){
+      AliError(Form("Tree[TreeH] not found for Event[%d].", ev));
+      return kFALSE;
+    }
     if(!LoadHits(t)) return kFALSE;
-  } else if(fDataType&kTRDDigits){
-    t = (TTree*)gDirectory->Get("TreeD");
-    if(!t) return kFALSE;
+  }
+  if(fDataType&kTRDDigits){
+    if(!(t = (TTree*)gDirectory->Get("TreeD"))){
+      AliError(Form("Tree[TreeD] not found for Event[%d].", ev));
+      return kFALSE;
+    }
     if(!LoadDigits(t)) return kFALSE;
-  } else if(fDataType&kTRDClusters){
-    t = (TTree*)gDirectory->Get("TreeR");
-    if(!t) return kFALSE;
+  }
+  if(fDataType&kTRDClusters){
+    if(!(t = (TTree*)gDirectory->Get("TreeR"))){
+      AliError(Form("Tree[TreeR] not found for Event[%d].", ev));
+      return kFALSE;
+    }
     if(!LoadClusters(t)) return kFALSE;
-  } else if(fDataType&kTRDTracklets){
-    t = (TTree*)gDirectory->Get("tracklets");
-    if(!t) return kFALSE;
+  }
+  if(fDataType&kTRDTracklets){
+    if(!(t = (TTree*)gDirectory->Get("tracklets"))){
+      AliError(Form("Tree[tracklets] not found for Event[%d].", ev));
+      return kFALSE;
+    }
     if(!LoadTracklets(t)) return kFALSE;
-  } else AliWarning("Please select first the type of data that you want to monitor and then hit the \"Load\" button.");
+  }// else AliWarning("Please select first the type of data that you want to monitor and then hit the \"Load\" button.");
 
   f->Close(); //delete f;
 
@@ -222,13 +236,12 @@ Bool_t AliEveTRDLoader::LoadClusters(TTree *tC)
   TObjArray *clusters = new TObjArray();
   tC->SetBranchAddress("TRDcluster", &clusters);
 
-  AliEveTRDChamber *chmb = 0x0;
-  AliTRDcluster *c=0x0;
-  for(int idet=0; idet<540; idet++){
+  AliEveTRDChamber *chmb(NULL);
+  AliTRDcluster *c(NULL);
+  for(int idet=0; idet<AliTRDgeometry::kNdet; idet++){
     tC->GetEntry(idet);
     if(!clusters->GetEntriesFast()) continue;
-    c = (AliTRDcluster*)clusters->UncheckedAt(0);
-    if(!c) continue;
+    if(!(c = (AliTRDcluster*)clusters->UncheckedAt(0))) continue;
     if((chmb = GetChamber(c->GetDetector()))) chmb->LoadClusters(clusters);
   }
   return kTRUE;
@@ -247,7 +260,7 @@ Bool_t AliEveTRDLoader::LoadDigits(TTree *tD)
   AliEveTRDChamber *chmb;
   AliTRDdigitsManager dm;
   dm.ReadDigits(tD);
-  for(int idet=0; idet<540; idet++){
+  for(int idet=0; idet<AliTRDgeometry::kNdet; idet++){
     if(!(chmb=GetChamber(idet))) continue;
     //  digits = dm.GetDigits(idet);
     //  if(!digits) continue;