Optimisation
[u/mrichter/AliRoot.git] / OADB / AliOADBContainer.h
1 #ifndef AliOADBContainer_H
2 #define AliOADBContainer_H
3 /* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //     Offline Analysis Database Container and Service Class 
10 //     Author: Andreas Morsch, CERN
11 //-------------------------------------------------------------------------
12
13 #include <TNamed.h>
14 #include <TList.h>
15 #include <TArrayI.h>
16 #include <TObjArray.h>
17
18 class TObjArray;
19 class TArrayI;
20
21 class AliOADBContainer : public TNamed {
22
23  public :
24   AliOADBContainer();
25   AliOADBContainer(char* name);
26   virtual ~AliOADBContainer();
27   AliOADBContainer(const AliOADBContainer& cont); 
28   AliOADBContainer& operator=(const AliOADBContainer& cont);
29 // Object adding and removal
30   void   AppendObject(TObject* obj, Int_t lower, Int_t upper);
31   void   UpdateObject(Int_t index, TObject* obj, Int_t lower, Int_t upper);
32   void   RemoveObject(Int_t index);
33   void   AddDefaultObject(TObject* obj);
34   void   CleanDefaultList();
35   TList* GetDefaultList() const {return fDefaultList;}
36 // I/O  
37   void  WriteToFile(char* fname)  const;
38   Int_t InitFromFile(char* fname, char* key);
39 // Getters
40   Int_t GetNumberOfEntries()    const {return fEntries;}
41   Int_t LowerLimit(Int_t idx)   const {return fLowerLimits[idx];}
42   Int_t UpperLimit(Int_t idx)   const {return fUpperLimits[idx];}
43   TObject* GetObject(Int_t run, char* def = "") const;
44   TObject* GetObjectByIndex(Int_t run) const;
45   TObject* GetDefaultObject(char* key) 
46   {return(fDefaultList->FindObject(key));}
47 // Debugging  
48   void List();
49 // Browsable
50   virtual Bool_t        IsFolder() const { return kTRUE; }
51   void Browse(TBrowser *b);
52   Int_t GetIndexForRun(Int_t run) const;
53  private:
54   Int_t HasOverlap(Int_t lower, Int_t upper) const;
55  private :
56   TObjArray*               fArray;         // Array with objects corresponding to run ranges
57   TList*                   fDefaultList;   // List with default arrays
58   TArrayI                  fLowerLimits;   // lower limit of run range
59   TArrayI                  fUpperLimits;   // upper limit of run range
60   Int_t                    fEntries;       // Number of entries
61 //  TString                  fRelPath;       // Relative path to object
62   
63   ClassDef(AliOADBContainer, 1);
64 };
65
66 #endif