ROOT logo
#ifndef AliOADBContainer_H
#define AliOADBContainer_H
/* Copyright(c) 1998-2007, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

/* $Id$ */

//-------------------------------------------------------------------------
//     Offline Analysis Database Container and Service Class 
//     Author: Andreas Morsch, CERN
//-------------------------------------------------------------------------

#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);
// Object adding and removal
  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;}
// I/O  
  void  WriteToFile(const char* fname)  const;
  Int_t InitFromFile(const char* fname, const 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 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));}
// Debugging  
  void List();
// Browsable
  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;         // Array with objects corresponding to run ranges
  TList*                   fDefaultList;   // List with default arrays
  TObjArray*               fPassNames;     // Pass names
  TArrayI                  fLowerLimits;   // lower limit of run range
  TArrayI                  fUpperLimits;   // upper limit of run range
  Int_t                    fEntries;       // Number of entries
//  TString                  fRelPath;       // Relative path to object
  
  ClassDef(AliOADBContainer, 2);
};

#endif
 AliOADBContainer.h:1
 AliOADBContainer.h:2
 AliOADBContainer.h:3
 AliOADBContainer.h:4
 AliOADBContainer.h:5
 AliOADBContainer.h:6
 AliOADBContainer.h:7
 AliOADBContainer.h:8
 AliOADBContainer.h:9
 AliOADBContainer.h:10
 AliOADBContainer.h:11
 AliOADBContainer.h:12
 AliOADBContainer.h:13
 AliOADBContainer.h:14
 AliOADBContainer.h:15
 AliOADBContainer.h:16
 AliOADBContainer.h:17
 AliOADBContainer.h:18
 AliOADBContainer.h:19
 AliOADBContainer.h:20
 AliOADBContainer.h:21
 AliOADBContainer.h:22
 AliOADBContainer.h:23
 AliOADBContainer.h:24
 AliOADBContainer.h:25
 AliOADBContainer.h:26
 AliOADBContainer.h:27
 AliOADBContainer.h:28
 AliOADBContainer.h:29
 AliOADBContainer.h:30
 AliOADBContainer.h:31
 AliOADBContainer.h:32
 AliOADBContainer.h:33
 AliOADBContainer.h:34
 AliOADBContainer.h:35
 AliOADBContainer.h:36
 AliOADBContainer.h:37
 AliOADBContainer.h:38
 AliOADBContainer.h:39
 AliOADBContainer.h:40
 AliOADBContainer.h:41
 AliOADBContainer.h:42
 AliOADBContainer.h:43
 AliOADBContainer.h:44
 AliOADBContainer.h:45
 AliOADBContainer.h:46
 AliOADBContainer.h:47
 AliOADBContainer.h:48
 AliOADBContainer.h:49
 AliOADBContainer.h:50
 AliOADBContainer.h:51
 AliOADBContainer.h:52
 AliOADBContainer.h:53
 AliOADBContainer.h:54
 AliOADBContainer.h:55
 AliOADBContainer.h:56
 AliOADBContainer.h:57
 AliOADBContainer.h:58
 AliOADBContainer.h:59
 AliOADBContainer.h:60
 AliOADBContainer.h:61
 AliOADBContainer.h:62
 AliOADBContainer.h:63
 AliOADBContainer.h:64
 AliOADBContainer.h:65
 AliOADBContainer.h:66
 AliOADBContainer.h:67
 AliOADBContainer.h:68
 AliOADBContainer.h:69
 AliOADBContainer.h:70