Getters added.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 14 Jan 2011 17:46:25 +0000 (17:46 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 14 Jan 2011 17:46:25 +0000 (17:46 +0000)
OADB/AliOADBContainer.cxx
OADB/AliOADBContainer.h

index 167b7ab27fe8c545636f6baeca61e133af11f57f..527ad881cf5ea49d928b76b70bfa6068fc3365fb 100644 (file)
@@ -74,6 +74,14 @@ AliOADBContainer& AliOADBContainer::operator=(const AliOADBContainer& cont)
   // Assignment operator
   if(this!=&cont) {
     TNamed::operator=(cont);
+    fEntries = cont.fEntries;
+    fLowerLimits.Set(fEntries);
+    fUpperLimits.Set(fEntries);
+    for (Int_t i = 0; i < fEntries; i++) {
+       fLowerLimits[i] = cont.fLowerLimits[i]; 
+       fUpperLimits[i] = cont.fUpperLimits[i];
+       fArray->AddAt(cont.fArray->At(i), i);
+    }
   }
   return *this;
 }
@@ -126,7 +134,7 @@ void AliOADBContainer::UpdateObject(Int_t idx, TObject* obj, Int_t lower, Int_t
   fArray->AddAt(obj, idx);
 }
 
-Int_t AliOADBContainer::GetIndexForRun(Int_t run) 
+Int_t AliOADBContainer::GetIndexForRun(Int_t run) const
 {
   // Find the index for a given run 
   Int_t found = 0;
@@ -142,13 +150,39 @@ Int_t AliOADBContainer::GetIndexForRun(Int_t run)
   return index;
 }
 
-void AliOADBContainer::WriteToFile(char* fname)
+void AliOADBContainer::WriteToFile(char* fname) const
 {
   // Write object to file
   TFile* f = new TFile(fname, "recreate");
   Write();
   f->Close();
 }
+Int_t AliOADBContainer::InitFromFile(char* fname, char* key)
+{
+    // Initialize object from file
+    TFile* file = TFile::Open(fname);
+    if (!file) return (1);
+    AliOADBContainer* cont  = 0;
+    file->GetObject(key, cont);
+    if (!cont)
+    {
+       AliError("Object not found in file \n");        
+       return 1;
+    }
+    
+    fEntries = cont->GetNumberOfEntries();
+    fLowerLimits.Set(fEntries);
+    fUpperLimits.Set(fEntries);
+    for (Int_t i = 0; i < fEntries; i++) {
+       fLowerLimits[i] = cont->LowerLimit(i); 
+       fUpperLimits[i] = cont->UpperLimit(i);
+       fArray->AddAt(cont->GetObject(i), i);
+    }
+    
+    return 0;
+    
+}
+
 
 void AliOADBContainer::List()
 {
index 00a5f1a84fc4ee8b56644a8ee83129d1811c2cb4..4ab6fb9bfd0560c586e7147d70d96c9fd7e38798 100644 (file)
@@ -12,7 +12,7 @@
 
 #include <TNamed.h>
 #include <TArrayI.h>
-
+#include <TObjArray.h>
 
 class TObjArray;
 class TArrayI;
@@ -25,11 +25,20 @@ class AliOADBContainer : public TNamed {
   virtual ~AliOADBContainer();
   AliOADBContainer(const AliOADBContainer& cont); 
   AliOADBContainer& operator=(const AliOADBContainer& cont);
-  void AppendObject(TObject* obj, Int_t lower, Int_t upper);
-  void UpdateObject(Int_t index, TObject* obj, Int_t lower, Int_t upper);
-  void RemoveObject(Int_t index);
-  Int_t GetIndexForRun(Int_t run);
-  void WriteToFile(char* fname);
+// Object adding and removal
+  void  AppendObject(TObject* obj, Int_t lower, Int_t upper);
+  void  UpdateObject(Int_t index, TObject* obj, Int_t lower, Int_t upper);
+  void  RemoveObject(Int_t index);
+  Int_t GetIndexForRun(Int_t run) const;
+// I/O  
+  void  WriteToFile(char* fname)  const;
+  Int_t InitFromFile(char* fname, char* key);
+// Getters
+  Int_t GetNumberOfEntries()    const {return fEntries;}
+  Int_t LowerLimit(Int_t idx)   const {return fLowerLimits[idx];}
+  Int_t UpperLimit(Int_t idx)   const {return fUpperLimits[idx];}
+  TObject* GetObject(Int_t idx) const {return fArray->At(idx);}
+// Debugging  
   void List();
  private :
   TObjArray*               fArray;         // Array with objects