]> git.uio.no Git - u/mrichter/AliRoot.git/blame - STEER/CDB/AliCDBManager.h
Improved output when setting the CDB manager in snapshot mode
[u/mrichter/AliRoot.git] / STEER / CDB / AliCDBManager.h
CommitLineData
9e1ceb13 1#ifndef ALI_CDB_MANAGER_H
2#define ALI_CDB_MANAGER_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7/////////////////////////////////////////////////////////////////////
8// //
9// class AliCDBManager //
10// //
11/////////////////////////////////////////////////////////////////////
12
13#include <TObject.h>
14#include <TList.h>
15#include <TMap.h>
27cac7e3 16#include <TSystem.h>
c022b397 17#include <TFile.h>
9e1ceb13 18
fdf65bb5 19class AliCDBEntry;
02c4845e 20class AliCDBId;
21class AliCDBPath;
22class AliCDBRunRange;
23class AliCDBMetaData;
9e1ceb13 24class AliCDBStorage;
25class AliCDBStorageFactory;
26class AliCDBParam;
27
28class AliCDBManager: public TObject {
29
30 public:
b8ec52f6 31 enum DataType {kCondition=0, kReference, kPrivate};
9e1ceb13 32
33 void RegisterFactory(AliCDBStorageFactory* factory);
34
fdf65bb5 35 Bool_t HasStorage(const char* dbString) const;
9e1ceb13 36
fdf65bb5 37 AliCDBParam* CreateParameter(const char* dbString) const;
b8ec52f6 38 AliCDBParam* GetCondParam() const {return fCondParam;}
39 AliCDBParam* GetRefParam() const {return fRefParam;}
40 static const char* GetDataTypeName(DataType type);
9e1ceb13 41
42 AliCDBStorage* GetStorage(const char* dbString);
43 AliCDBStorage* GetStorage(const AliCDBParam* param);
b8ec52f6 44
9e1ceb13 45 TList* GetActiveStorages();
46
b21e3194 47 const TMap* GetStorageMap() const {return fStorageMap;}
48 const TList* GetRetrievedIds() const {return fIds;}
49
9e1ceb13 50 void SetDefaultStorage(const char* dbString);
51 void SetDefaultStorage(const AliCDBParam* param);
52 void SetDefaultStorage(AliCDBStorage *storage);
7de84b33 53 void SetDefaultStorage(const char* runType, const char* simType);
54 void SetDefaultStorageFromRun(Int_t run);
4667c116 55
02c4845e 56 Bool_t IsDefaultStorageSet() const {return fDefaultStorage != 0;}
fdf65bb5 57 AliCDBStorage* GetDefaultStorage() const {return fDefaultStorage;}
1f341624 58 void UnsetDefaultStorage();
4667c116 59
024cf675 60 void SetSpecificStorage(const char* calibType, const char* dbString);
647d2bb8 61 void SetSpecificStorage(const char* calibType, const AliCDBParam* param);
02c4845e 62
024cf675 63 AliCDBStorage* GetSpecificStorage(const char* calibType);
9e1ceb13 64
65 void SetDrain(const char* dbString);
66 void SetDrain(const AliCDBParam* param);
67 void SetDrain(AliCDBStorage *storage);
68
fdf65bb5 69 Bool_t IsDrainSet() const {return fDrainStorage != 0;}
9e1ceb13 70
71 Bool_t Drain(AliCDBEntry* entry);
72
b05400be 73 void UnsetDrain(){fDrainStorage = 0x0;}
9e1ceb13 74
02c4845e 75 AliCDBEntry* Get(const AliCDBId& query);
62032124 76 AliCDBEntry* Get(const AliCDBPath& path, Int_t runNumber=-1,
02c4845e 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);
c022b397 80 AliCDBEntry* GetEntryFromSnapshot(const char* path);
02c4845e 81
0f40a831 82 const char* GetURI(const char* path);
83
4667c116 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);
89
02c4845e 90 TList* GetAll(const AliCDBId& query);
62032124 91 TList* GetAll(const AliCDBPath& path, Int_t runNumber=-1,
02c4845e 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);
95
647d2bb8 96 Bool_t Put(TObject* object, const AliCDBId& id,
27cac7e3 97 AliCDBMetaData* metaData, const DataType type=kPrivate);
b8ec52f6 98 Bool_t Put(AliCDBEntry* entry, DataType type=kPrivate);
99
4b5e0dce 100 void SetCacheFlag(Bool_t cacheFlag) {fCache=cacheFlag;}
e1e6896f 101 Bool_t GetCacheFlag() const {return fCache;}
1f341624 102
a6f59240 103 ULong_t SetLock(Bool_t lockFlag=kTRUE, ULong_t key=0);
1f341624 104 Bool_t GetLock() const {return fLock;}
4b5e0dce 105
7de84b33 106 void SetRaw(Bool_t rawFlag){fRaw=rawFlag;}
107 Bool_t GetRaw() const {return fRaw;}
108
c3a7b59a 109 void SetRun(Int_t run);
110 Int_t GetRun() const {return fRun;}
4b5e0dce 111
9e1ceb13 112 void DestroyActiveStorages();
113 void DestroyActiveStorage(AliCDBStorage* storage);
917a098b 114
62032124 115 void QueryCDB();
116
917a098b 117 void Print(Option_t* option="") const;
118
9e1ceb13 119 static void Destroy();
120 ~AliCDBManager();
121
8e245d15 122 void ClearCache();
4005d0b5 123 void UnloadFromCache(const char* path);
d1982b43 124 const TMap* GetEntryCache() const {return &fEntryCache;}
8e245d15 125
4667c116 126 Bool_t IsShortLived(const char* path);
127
d1982b43 128 static AliCDBManager* Instance(TMap *entryCache = NULL, Int_t run = -1);
9e1ceb13 129
b03591ab 130 void Init();
131 void InitFromCache(TMap *entryCache, Int_t run);
b0e8cda6 132 Bool_t InitFromSnapshot(const char* snapshotFileName, Bool_t overwrite=kTRUE);
c022b397 133 Bool_t SetSnapshotMode(const char* snapshotFileName="OCDB.root");
134 void UnsetSnapshotMode() {fSnapshotMode=kFALSE;}
135 void DumpToSnapshotFile(const char* snapshotFileName, Bool_t singleKeys);
b03591ab 136
137protected:
b8ec52f6 138
139 static TString fgkCondUri; // URI of the Conditions data base folder
140 static TString fgkRefUri; // URI of the Reference data base folder
7de84b33 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
b8ec52f6 145
b03591ab 146 AliCDBManager() ;
fe12e09c 147 AliCDBManager(const AliCDBManager & source);
148 AliCDBManager & operator=(const AliCDBManager & source);
149
fdf65bb5 150 static AliCDBManager* fgInstance; // AliCDBManager instance
9e1ceb13 151
152 AliCDBStorage* GetActiveStorage(const AliCDBParam* param);
153 void PutActiveStorage(AliCDBParam* param, AliCDBStorage* storage);
917a098b 154
4b5e0dce 155 void CacheEntry(const char* path, AliCDBEntry* entry);
8e245d15 156
024cf675 157 AliCDBParam* SelectSpecificStorage(const TString& path);
158
9e1ceb13 159
b03591ab 160// void Init();
4667c116 161 void InitShortLived();
b03591ab 162// void InitFromCache(TMap *entryCache, Int_t run);
4667c116 163
164
b05400be 165 TList fFactories; //! list of registered storage factories
166 TMap fActiveStorages; //! list of active storages
02c4845e 167 TMap fSpecificStorages; //! list of detector-specific storages
b21e3194 168 TMap fEntryCache; //! cache of the retrieved objects
169
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
4b5e0dce 173
b05400be 174 AliCDBStorage *fDefaultStorage; //! pointer to default storage
175 AliCDBStorage *fDrainStorage; //! pointer to drain storage
9e1ceb13 176
b21e3194 177 AliCDBParam* fCondParam; // Conditions data storage parameters
178 AliCDBParam* fRefParam; // Reference data storage parameters
4b5e0dce 179
b21e3194 180 Int_t fRun; //! The run number
4b5e0dce 181 Bool_t fCache; //! The cache flag
1f341624 182 Bool_t fLock; //! Lock flag, if ON default storage and run number cannot be reset
4b5e0dce 183
c022b397 184 Bool_t fSnapshotMode; //! flag saying if we are in snapshot mode
c022b397 185 TFile *fSnapshotFile;
186
7de84b33 187 Bool_t fRaw; // flag to say whether we are in the raw case
188 Int_t fStartRunLHCPeriod; // 1st run of the LHC period set
189 Int_t fEndRunLHCPeriod; // last run of the LHC period set
190 TString fLHCPeriod; // LHC period alien folder
191
a6f59240 192private:
193 ULong_t fKey; //! Key for locking/unlocking
194
4667c116 195
9e1ceb13 196 ClassDef(AliCDBManager, 0);
197};
198
199
200/////////////////////////////////////////////////////////////////////
201// //
202// class AliCDBStorageFactory //
203// //
204/////////////////////////////////////////////////////////////////////
205
206class AliCDBParam;
207class AliCDBStorageFactory: public TObject {
208 friend class AliCDBManager;
209
210public:
e1e6896f 211 virtual ~AliCDBStorageFactory(){}
9e1ceb13 212 virtual Bool_t Validate(const char* dbString) = 0;
b05400be 213 virtual AliCDBParam* CreateParameter(const char* dbString) = 0;
9e1ceb13 214
215protected:
216 virtual AliCDBStorage* Create(const AliCDBParam* param) = 0;
217
218 ClassDef(AliCDBStorageFactory, 0);
219};
220
221/////////////////////////////////////////////////////////////////////
222// //
223// class AliCDBParam //
224// //
225/////////////////////////////////////////////////////////////////////
226
227class AliCDBParam: public TObject {
228
229public:
230
231 AliCDBParam();
232 virtual ~AliCDBParam();
233
234 const TString& GetType() const {return fType;};
235 const TString& GetURI() const {return fURI;};
236
237 virtual AliCDBParam* CloneParam() const = 0;
238
239protected:
240
241 void SetType(const char* type) {fType = type;};
242 void SetURI(const char* uri) {fURI = uri;};
243
244private:
245
917a098b 246 TString fType; //! CDB type
247 TString fURI; //! CDB URI
9e1ceb13 248
249 ClassDef(AliCDBParam, 0);
250};
251
252#endif