- Three classes by MinJung Kweon AliHFEpriVtx, AliHFEsecVtx and AliHFEmcQA for primar...
[u/mrichter/AliRoot.git] / STEER / AliCDBId.h
1 #ifndef ALI_CDB_ID_H
2 #define ALI_CDB_ID_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 AliCDBId                                                 //
10 //  Identity of an object stored into a database:                  //
11 //  path, run validity range, version, subVersion                  //
12 //                                                                 //
13 /////////////////////////////////////////////////////////////////////
14
15 #include "AliCDBPath.h"
16 #include "AliCDBRunRange.h"
17
18 #include <TObject.h>
19
20 class AliCDBId: public TObject {
21
22 public:
23
24         AliCDBId();
25
26         AliCDBId(const AliCDBId& other);
27
28         AliCDBId(const AliCDBPath& path, const AliCDBRunRange& runRange,
29                 Int_t version = -1, Int_t subVersion = -1);
30
31         AliCDBId(const AliCDBPath& path, 
32                 Int_t firstRun , Int_t lastRun , Int_t verison = -1, 
33                 Int_t subVersion = -1); 
34
35         static AliCDBId* MakeFromString(const TString& idString);               
36                 
37         virtual ~AliCDBId();
38
39         const AliCDBPath&       GetAliCDBPath() const {return fPath;}
40         const TString&          GetPath() const {return fPath.GetPath();}
41         const TString           GetPathLevel(Int_t i) const {return fPath.GetLevel(i);}
42         Bool_t                  IsWildcard() const {return fPath.IsWildcard();}
43
44         void    SetPath(const char* path) {fPath.SetPath(path);}
45
46         const           AliCDBRunRange& GetAliCDBRunRange() const {return fRunRange;}
47         AliCDBRunRange& GetAliCDBRunRange() {return fRunRange;}
48         Int_t           GetFirstRun() const {return fRunRange.GetFirstRun();}
49         Int_t           GetLastRun() const {return fRunRange.GetLastRun();}
50         void            SetFirstRun(Int_t firstRun) {fRunRange.SetFirstRun(firstRun);}
51         void            SetLastRun(Int_t lastRun) {fRunRange.SetLastRun(lastRun);}
52         void            SetRunRange(Int_t firstRun, Int_t lastRun)
53                         {fRunRange.SetRunRange(firstRun, lastRun);}
54
55
56         Bool_t  IsAnyRange() const {return fRunRange.IsAnyRange();}
57
58
59         Int_t   GetVersion() const {return fVersion;}
60         Int_t   GetSubVersion() const {return fSubVersion;}
61         void    SetVersion(Int_t version) {fVersion = version;}
62         void    SetSubVersion(Int_t subVersion) {fSubVersion = subVersion;}
63
64         const TString&  GetLastStorage() const {return fLastStorage;}
65         void            SetLastStorage(TString& lastStorage){fLastStorage = lastStorage;}
66
67         Bool_t IsValid() const; 
68         Bool_t IsSpecified() const {return !(IsWildcard() || IsAnyRange());}
69
70         Bool_t HasVersion() const {return fVersion >= 0;}
71         Bool_t HasSubVersion() const {return fSubVersion >= 0;}
72
73         Bool_t Comprises(const AliCDBId& other) const
74                 {return fPath.Comprises(other.fPath)
75                          && fRunRange.Comprises(other.fRunRange);}
76
77         virtual Bool_t IsEqual(const TObject *obj) const;
78
79         TString ToString() const;
80         void Print(Option_t* option="") const;
81
82 private:
83
84         AliCDBPath fPath;               // path 
85         AliCDBRunRange fRunRange;       // run range
86         Int_t fVersion;                 // version
87         Int_t fSubVersion;              // subversion
88         TString fLastStorage;           // previous storage place (new, grid, local, dump)
89
90         ClassDef(AliCDBId, 1);
91 };
92
93 #endif