#ifndef AliOADBContainer_H
#define AliOADBContainer_H
#include <TNamed.h>
#include <TList.h>
#include <TArrayI.h>
#include <TObjArray.h>
class TObjArray;
class TArrayI;
class AliOADBContainer : public TNamed {
public :
AliOADBContainer();
AliOADBContainer(const char* name);
virtual ~AliOADBContainer();
AliOADBContainer(const AliOADBContainer& cont);
AliOADBContainer& operator=(const AliOADBContainer& cont);
void AppendObject(TObject* obj, Int_t lower, Int_t upper, TString passName="");
void UpdateObject(Int_t index, TObject* obj, Int_t lower, Int_t upper, TString passName="");
void RemoveObject(Int_t index);
void AddDefaultObject(TObject* obj);
void CleanDefaultList();
TList* GetDefaultList() const {return fDefaultList;}
void WriteToFile(const char* fname) const;
Int_t InitFromFile(const char* fname, const char* key);
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 run, const char* def = "", TString passName="") const;
TObject* GetObjectByIndex(Int_t run) const;
TObject* GetPassNameByIndex(Int_t idx) const;
TObject* GetDefaultObject(const char* key)
{return(fDefaultList->FindObject(key));}
void List();
virtual Bool_t IsFolder() const { return kTRUE; }
void Browse(TBrowser *b);
Int_t GetIndexForRun(Int_t run, TString passName="") const;
static const char* GetOADBPath();
private:
Int_t HasOverlap(Int_t lower, Int_t upper, TString passName) const;
private :
TObjArray* fArray;
TList* fDefaultList;
TObjArray* fPassNames;
TArrayI fLowerLimits;
TArrayI fUpperLimits;
Int_t fEntries;
ClassDef(AliOADBContainer, 2);
};
#endif