1 #ifndef ALI_CDB_MANAGER_H
2 #define ALI_CDB_MANAGER_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 /////////////////////////////////////////////////////////////////////
9 // class AliCDBManager //
11 /////////////////////////////////////////////////////////////////////
25 class AliCDBStorageFactory;
28 class AliCDBManager: public TObject {
31 enum DataType {kCondition=0, kReference, kPrivate};
33 void RegisterFactory(AliCDBStorageFactory* factory);
35 Bool_t HasStorage(const char* dbString) const;
37 AliCDBParam* CreateParameter(const char* dbString) const;
38 AliCDBParam* GetCondParam() const {return fCondParam;}
39 AliCDBParam* GetRefParam() const {return fRefParam;}
40 static const char* GetDataTypeName(DataType type);
42 AliCDBStorage* GetStorage(const char* dbString);
43 AliCDBStorage* GetStorage(const AliCDBParam* param);
45 TList* GetActiveStorages();
47 const TMap* GetStorageMap() const {return fStorageMap;}
48 const TList* GetRetrievedIds() const {return fIds;}
50 void SetDefaultStorage(const char* dbString);
51 void SetDefaultStorage(const AliCDBParam* param);
52 void SetDefaultStorage(AliCDBStorage *storage);
53 void SetDefaultStorage(const char* runType, const char* simType);
54 void SetDefaultStorageFromRun(Int_t run);
56 Bool_t IsDefaultStorageSet() const {return fDefaultStorage != 0;}
57 AliCDBStorage* GetDefaultStorage() const {return fDefaultStorage;}
58 void UnsetDefaultStorage();
60 void SetSpecificStorage(const char* calibType, const char* dbString);
61 void SetSpecificStorage(const char* calibType, const AliCDBParam* param);
63 AliCDBStorage* GetSpecificStorage(const char* calibType);
65 void SetDrain(const char* dbString);
66 void SetDrain(const AliCDBParam* param);
67 void SetDrain(AliCDBStorage *storage);
69 Bool_t IsDrainSet() const {return fDrainStorage != 0;}
71 Bool_t Drain(AliCDBEntry* entry);
73 void UnsetDrain(){fDrainStorage = 0x0;}
75 AliCDBEntry* Get(const AliCDBId& query);
76 AliCDBEntry* Get(const AliCDBPath& path, Int_t runNumber=-1,
77 Int_t version = -1, Int_t subVersion = -1);
78 AliCDBEntry* Get(const AliCDBPath& path, const AliCDBRunRange& runRange,
79 Int_t version = -1, Int_t subVersion = -1);
80 AliCDBEntry* GetEntryFromSnapshot(const char* path);
82 const char* GetURI(const char* path);
84 AliCDBId* GetId(const AliCDBId& query);
85 AliCDBId* GetId(const AliCDBPath& path, Int_t runNumber=-1,
86 Int_t version = -1, Int_t subVersion = -1);
87 AliCDBId* GetId(const AliCDBPath& path, const AliCDBRunRange& runRange,
88 Int_t version = -1, Int_t subVersion = -1);
90 TList* GetAll(const AliCDBId& query);
91 TList* GetAll(const AliCDBPath& path, Int_t runNumber=-1,
92 Int_t version = -1, Int_t subVersion = -1);
93 TList* GetAll(const AliCDBPath& path, const AliCDBRunRange& runRange,
94 Int_t version = -1, Int_t subVersion = -1);
96 Bool_t Put(TObject* object, const AliCDBId& id,
97 AliCDBMetaData* metaData, const DataType type=kPrivate);
98 Bool_t Put(AliCDBEntry* entry, DataType type=kPrivate);
100 void SetCacheFlag(Bool_t cacheFlag) {fCache=cacheFlag;}
101 Bool_t GetCacheFlag() const {return fCache;}
103 ULong_t SetLock(Bool_t lockFlag=kTRUE, ULong_t key=0);
104 Bool_t GetLock() const {return fLock;}
106 void SetRaw(Bool_t rawFlag){fRaw=rawFlag;}
107 Bool_t GetRaw() const {return fRaw;}
109 void SetRun(Int_t run);
110 Int_t GetRun() const {return fRun;}
112 void DestroyActiveStorages();
113 void DestroyActiveStorage(AliCDBStorage* storage);
117 void Print(Option_t* option="") const;
119 static void Destroy();
123 void UnloadFromCache(const char* path);
124 const TMap* GetEntryCache() const {return &fEntryCache;}
126 Bool_t IsShortLived(const char* path);
128 static AliCDBManager* Instance(TMap *entryCache = NULL, Int_t run = -1);
131 void InitFromCache(TMap *entryCache, Int_t run);
132 Bool_t InitFromSnapshot(const char* snapshotFileName, Bool_t overwrite=kTRUE);
133 Bool_t SetSnapshotMode(const char* snapshotFileName="OCDB.root");
134 void UnsetSnapshotMode() {fSnapshotMode=kFALSE;}
135 void DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys);
139 static TString fgkCondUri; // URI of the Conditions data base folder
140 static TString fgkRefUri; // URI of the Reference data base folder
141 static TString fgkMCIdealStorage; // URI of the MC-Ideal Conditions data base folder form MC data
142 static TString fgkMCFullStorage; // URI of the MC-Full Conditions data base folder form MC data
143 static TString fgkMCResidualStorage; // URI of the MC-Residual Conditions data base folder form MC data
144 static TString fgkOCDBFolderXMLfile; // alien path of the XML file for OCDB folder <--> Run range correspondance
147 AliCDBManager(const AliCDBManager & source);
148 AliCDBManager & operator=(const AliCDBManager & source);
150 static AliCDBManager* fgInstance; // AliCDBManager instance
152 AliCDBStorage* GetActiveStorage(const AliCDBParam* param);
153 void PutActiveStorage(AliCDBParam* param, AliCDBStorage* storage);
155 void CacheEntry(const char* path, AliCDBEntry* entry);
157 AliCDBParam* SelectSpecificStorage(const TString& path);
161 void InitShortLived();
162 // void InitFromCache(TMap *entryCache, Int_t run);
165 TList fFactories; //! list of registered storage factories
166 TMap fActiveStorages; //! list of active storages
167 TMap fSpecificStorages; //! list of detector-specific storages
168 TMap fEntryCache; //! cache of the retrieved objects
170 TList* fIds; //! List of the retrieved object Id's (to be streamed to file)
171 TMap* fStorageMap; //! list of storages (to be streamed to file)
172 TList* fShortLived; //! List of short lived objects
174 AliCDBStorage *fDefaultStorage; //! pointer to default storage
175 AliCDBStorage *fDrainStorage; //! pointer to drain storage
177 AliCDBParam* fCondParam; // Conditions data storage parameters
178 AliCDBParam* fRefParam; // Reference data storage parameters
180 Int_t fRun; //! The run number
181 Bool_t fCache; //! The cache flag
182 Bool_t fLock; //! Lock flag, if ON default storage and run number cannot be reset
184 Bool_t fSnapshotMode; //! flag saying if we are in snapshot mode
185 //TMap* fSnapshotCache; //! pointer to the cache of objects in the snapshot
186 //TList* fSnapshotIdsList; //! pointer to the list of the object Id's in the snapshot
187 TFile *fSnapshotFile;
189 Bool_t fRaw; // flag to say whether we are in the raw case
190 Int_t fStartRunLHCPeriod; // 1st run of the LHC period set
191 Int_t fEndRunLHCPeriod; // last run of the LHC period set
192 TString fLHCPeriod; // LHC period alien folder
195 ULong_t fKey; //! Key for locking/unlocking
198 ClassDef(AliCDBManager, 0);
202 /////////////////////////////////////////////////////////////////////
204 // class AliCDBStorageFactory //
206 /////////////////////////////////////////////////////////////////////
209 class AliCDBStorageFactory: public TObject {
210 friend class AliCDBManager;
213 virtual ~AliCDBStorageFactory(){}
214 virtual Bool_t Validate(const char* dbString) = 0;
215 virtual AliCDBParam* CreateParameter(const char* dbString) = 0;
218 virtual AliCDBStorage* Create(const AliCDBParam* param) = 0;
220 ClassDef(AliCDBStorageFactory, 0);
223 /////////////////////////////////////////////////////////////////////
225 // class AliCDBParam //
227 /////////////////////////////////////////////////////////////////////
229 class AliCDBParam: public TObject {
234 virtual ~AliCDBParam();
236 const TString& GetType() const {return fType;};
237 const TString& GetURI() const {return fURI;};
239 virtual AliCDBParam* CloneParam() const = 0;
243 void SetType(const char* type) {fType = type;};
244 void SetURI(const char* uri) {fURI = uri;};
248 TString fType; //! CDB type
249 TString fURI; //! CDB URI
251 ClassDef(AliCDBParam, 0);