KaliVeda
Toolkit for HIC analysis
KVExpDB.h
1 
4 #ifndef __KVEXPDB_H
5 #define __KVEXPDB_H
6 
7 #include "KVDataBase.h"
8 #include "KVDBRun.h"
9 #include "KVNumberList.h"
10 #include "run_index.h"
11 class KVDBSystem;
12 
20 class KVExpDB : public KVDataBase {
21 
22 protected:
26 
31  bool with_index_multiplier = false;
32  bool raw_files_have_index = false;
33  mutable std::map<int,run_index_t> fMapGlobRunFileNumberToRunIndex;
34 
35  Bool_t OpenCalibFile(const Char_t* type, std::ifstream& fs) const;
36  virtual void ReadSystemList();
37  virtual void ReadComments();
38  void init();
39 
41  {
44 
45  TIter it(GetRuns());
46  KVDBRun* r;
47  while((r = (KVDBRun*)it()))
48  fListOfRuns.Add(r->GetNumber());
49  }
50 public:
51  KVExpDB();
52  KVExpDB(const Char_t* name);
53  KVExpDB(const Char_t* name, const Char_t* title);
54 
55  Bool_t FindCalibFile(const Char_t* type, TString& fullpath, const TString& array_name = "") const;
56  void SetDataSet(const TString& s)
57  {
58  fDataSet = s;
59  }
61  {
62  return fDBType;
63  }
64  void SetDBType(const TString& s)
65  {
66  fDBType = s;
67  }
68 
69  virtual ~KVExpDB();
70 
71  virtual void LinkListToRunRanges(TList* list, UInt_t rr_number,
72  UInt_t run_ranges[][2]);
73  virtual void LinkRecordToRunRanges(KVDBRecord* rec, UInt_t rr_number,
74  UInt_t run_ranges[][2]);
75  virtual void LinkRecordToRunRange(KVDBRecord* rec, UInt_t first_run,
76  UInt_t last_run);
77  virtual void LinkListToRunRange(TList* list, const KVNumberList& nl);
78  virtual void LinkRecordToRunRange(KVDBRecord* rec, const KVNumberList& nl);
79  virtual void LinkRecordToRun(KVDBRecord* rec, Int_t run);
80 
81  void AddRun(KVDBRun* r)
82  {
83  fRuns->AddRecord(r);
84  fListOfRuns.Add(r->GetNumber());
85  }
86  virtual KVSeqCollection* GetRuns() const
87  {
88  return fRuns->GetRecords();
89  }
90  KVDBRun* GetDBRun(Int_t number) const
91  {
92  return (KVDBRun*)fRuns->GetRecord(number);
93  }
94  const KVDBRunFile& GetDBRunFile(const run_index_t& r) const
95  {
96  return GetDBRun(r.run())->GetRunFile(r);
97  }
99  {
100  return GetDBRun(r.run())->GetRunFile(r);
101  }
102  const KVNumberList& GetRunList() const
103  {
105 
106  if(fListOfRuns.IsEmpty())
107  const_cast<KVExpDB*>(this)->refill_list_of_runs();
108  return fListOfRuns;
109  }
110  virtual KVDBSystem* GetSystem(const Char_t* system) const
111  {
112  return (KVDBSystem*) fSystems->GetRecord(system);
113  }
114  virtual KVSeqCollection* GetSystems() const
115  {
116  return fSystems->GetRecords();
117  }
118 
120  {
121  fSystems->AddRecord(r);
122  }
124  {
126  }
127 
128  void WriteSystemsFile() const;
129  void WriteRunListFile() const;
130 
131  virtual void Save(const Char_t*);
132 
133  virtual TString GetDBEnv(const Char_t*) const;
134  TString GetCalibFileName(const Char_t* type) const
135  {
136  return GetDBEnv(type);
137  }
138 
139  virtual void WriteObjects(TFile*)
140  {
146  }
147 
148  virtual void ReadObjects(TFile*)
149  {
155  }
156 
157  virtual void PrintRuns(KVNumberList&) const;
158 
159  virtual void cd();
160 
161  const Char_t* GetDataSetDir() const
162  {
163  return fDataSetDir;
164  }
165  void SetDataSetDir(const Char_t* d)
166  {
167  fDataSetDir = d;
168  }
169  virtual void Build()
170  {
171  AbstractMethod("Build");
172  }
173 
174  static KVExpDB* MakeDataBase(const Char_t* name, const Char_t* datasetdir);
175 
176  ULong64_t GetTotalEvents(int first_run, int last_run = -1) const;
177  ULong64_t GetTotalEvents(const KVString& system) const;
178 
182 
183  run_index_t GetRunIndexFromGlobalRunFileNumber(int glob_runfile) const;
184 
185  run_index_list SetRunIndexListFromString(const TString&) const;
186 
187  ClassDef(KVExpDB, 5) //base class to describe database of an experiment
188 };
189 
191 R__EXTERN KVExpDB* gExpDB;
192 
193 #endif
int Int_t
unsigned int UInt_t
#define R__EXTERN
ROOT::R::TRInterface & r
#define d(i)
bool Bool_t
char Char_t
#define ClassDef(name, id)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Record folder for the database.
Definition: KVDBRecord.h:43
A single raw data file associated with an experimental run ,,.
Definition: KVDBRunFile.h:39
Description of an experimental run in database ,,.
Definition: KVDBRun.h:41
KVDBRunFile & GetRunFile(const run_index_t &run_index)
Definition: KVDBRun.h:74
Database class used to store information on different colliding systems studied during an experiment....
Definition: KVDBSystem.h:52
Table in a database.
Definition: KVDBTable.h:34
virtual Bool_t AddRecord(KVDBRecord *add)
Definition: KVDBTable.cpp:74
virtual void RemoveRecord(KVDBRecord *add)
Remove a KVDBRecord from the list of available records.
Definition: KVDBTable.cpp:93
virtual KVDBRecord * GetRecord(const Char_t *rec_name) const
Definition: KVDBTable.h:58
virtual KVSeqCollection * GetRecords() const
Definition: KVDBTable.h:63
Simple cross-referenced database structure.
Definition: KVDataBase.h:137
Base class to describe database of an experiment ,,.
Definition: KVExpDB.h:20
KVNumberList fListOfRuns
list of all run numbers
Definition: KVExpDB.h:27
void AddSystem(KVDBSystem *r)
Definition: KVExpDB.h:119
virtual void Build()
Definition: KVExpDB.h:169
run_index_list SetRunIndexListFromString(const TString &) const
run_index_t GetRunIndexFromGlobalRunFileNumber(int glob_runfile) const
Definition: KVExpDB.cpp:680
virtual ~KVExpDB()
Destructor.
Definition: KVExpDB.cpp:76
virtual KVDBSystem * GetSystem(const Char_t *system) const
Definition: KVExpDB.h:110
virtual void ReadSystemList()
Definition: KVExpDB.cpp:248
virtual void cd()
Definition: KVExpDB.cpp:576
void AddRun(KVDBRun *r)
Definition: KVExpDB.h:81
KVDBTable * fRuns
table of runs
Definition: KVExpDB.h:28
void SetDBType(const TString &s)
Definition: KVExpDB.h:64
virtual void ReadComments()
virtual void LinkRecordToRun(KVDBRecord *rec, Int_t run)
Definition: KVExpDB.cpp:134
KVDBRun * GetDBRun(Int_t number) const
Definition: KVExpDB.h:90
virtual KVSeqCollection * GetRuns() const
Definition: KVExpDB.h:86
void RemoveSystem(KVDBSystem *s)
Definition: KVExpDB.h:123
TString GetCalibFileName(const Char_t *type) const
Definition: KVExpDB.h:134
TString GetDBType() const
Definition: KVExpDB.h:60
bool with_index_multiplier
Definition: KVExpDB.h:31
virtual void LinkListToRunRanges(TList *list, UInt_t rr_number, UInt_t run_ranges[][2])
Link the records contained in the list to the set of runs (see LinkRecordToRunRanges).
Definition: KVExpDB.cpp:173
KVDBTable * fSystems
table of systems
Definition: KVExpDB.h:29
const KVNumberList & GetRunList() const
Definition: KVExpDB.h:102
virtual void PrintRuns(KVNumberList &) const
Definition: KVExpDB.cpp:546
ULong64_t GetTotalEvents(int first_run, int last_run=-1) const
Definition: KVExpDB.cpp:632
virtual KVSeqCollection * GetSystems() const
Definition: KVExpDB.h:114
virtual void Save(const Char_t *)
Definition: KVExpDB.cpp:361
const KVDBRunFile & GetDBRunFile(const run_index_t &r) const
Definition: KVExpDB.h:94
TString fDBType
used by GetDBEnv
Definition: KVExpDB.h:25
bool raw_files_have_index
Definition: KVExpDB.h:32
virtual void LinkRecordToRunRanges(KVDBRecord *rec, UInt_t rr_number, UInt_t run_ranges[][2])
Definition: KVExpDB.cpp:153
std::map< int, run_index_t > fMapGlobRunFileNumberToRunIndex
Definition: KVExpDB.h:33
virtual void LinkListToRunRange(TList *list, const KVNumberList &nl)
Link the records contained in the list to the set of runs (see LinkRecordToRunRanges).
Definition: KVExpDB.cpp:199
void WriteSystemsFile() const
Definition: KVExpDB.cpp:328
KVDBRunFile & GetDBRunFile(const run_index_t &r)
Definition: KVExpDB.h:98
KVExpDB()
Default constructor.
Definition: KVExpDB.cpp:38
const Char_t * GetDataSetDir() const
Definition: KVExpDB.h:161
void init()
default initialisations
Definition: KVExpDB.cpp:21
virtual void WriteObjects(TFile *)
Definition: KVExpDB.h:139
virtual TString GetDBEnv(const Char_t *) const
virtual void LinkRecordToRunRange(KVDBRecord *rec, UInt_t first_run, UInt_t last_run)
Definition: KVExpDB.cpp:90
Int_t GetIndexMultiplier() const
Definition: KVExpDB.h:181
virtual void ReadObjects(TFile *)
Definition: KVExpDB.h:148
void refill_list_of_runs()
Definition: KVExpDB.h:40
TString fDataSetDir
the directory containing the dataset files
Definition: KVExpDB.h:24
void SetDataSet(const TString &s)
Definition: KVExpDB.h:56
int index_multiplier
Definition: KVExpDB.h:30
Bool_t HasIndexMultiplier() const
Definition: KVExpDB.h:180
void SetDataSetDir(const Char_t *d)
Definition: KVExpDB.h:165
static KVExpDB * MakeDataBase(const Char_t *name, const Char_t *datasetdir)
Definition: KVExpDB.cpp:598
void WriteRunListFile() const
Definition: KVExpDB.cpp:381
Bool_t OpenCalibFile(const Char_t *type, std::ifstream &fs) const
cannot be saved, no streamer for run_index_t
Definition: KVExpDB.cpp:432
Bool_t HasRawFilesWithIndex() const
Definition: KVExpDB.h:179
TString fDataSet
the name of the dataset to which this database is associated
Definition: KVExpDB.h:23
Bool_t FindCalibFile(const Char_t *type, TString &fullpath, const TString &array_name="") const
Definition: KVExpDB.cpp:486
Strings used to represent a set of ranges of values.
Definition: KVNumberList.h:85
void Add(Int_t)
Add value 'n' to the list.
Bool_t IsEmpty() const
Definition: KVNumberList.h:175
KaliVeda extensions to ROOT collection classes.
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:73
void AbstractMethod(const char *method) const
Specifies a runfile according to run number and file index ,.
Definition: run_index.h:31
unsigned long long ULong64_t