Introduced possibility to store pass dependent parameters
[u/mrichter/AliRoot.git] / STEER / STEERBase / 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(const 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, TString passName="");
31   void   UpdateObject(Int_t index, TObject* obj, Int_t lower, Int_t upper, TString passName="");
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(const char* fname)  const;
38   Int_t InitFromFile(const char* fname, const 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, const char* def = "", TString passName="") const;
44   TObject* GetObjectByIndex(Int_t run) const;
45   TObject* GetPassNameByIndex(Int_t idx) const;
46   TObject* GetDefaultObject(const char* key) 
47   {return(fDefaultList->FindObject(key));}
48 // Debugging  
49   void List();
50 // Browsable
51   virtual Bool_t        IsFolder() const { return kTRUE; }
52   void Browse(TBrowser *b);
53   Int_t GetIndexForRun(Int_t run, TString passName="") const;
54 //
55   static const char*   GetOADBPath();
56  private:
57   Int_t HasOverlap(Int_t lower, Int_t upper, TString passName) const;
58  private :
59   TObjArray*               fArray;         // Array with objects corresponding to run ranges
60   TList*                   fDefaultList;   // List with default arrays
61   TObjArray*               fPassNames;     // Pass names
62   TArrayI                  fLowerLimits;   // lower limit of run range
63   TArrayI                  fUpperLimits;   // upper limit of run range
64   Int_t                    fEntries;       // Number of entries
65 //  TString                  fRelPath;       // Relative path to object
66   
67   ClassDef(AliOADBContainer, 2);
68 };
69
70 #endif