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 
61 class KVExpDB : public KVDataBase {
62 
63 protected:
67 
72  bool with_index_multiplier = false;
73  bool raw_files_have_index = false;
74  mutable std::map<int, run_index_t> fMapGlobRunFileNumberToRunIndex;
75  bool minimal_db = false; // set to true when just a runs/systems database is built
76 
77  Bool_t OpenCalibFile(const Char_t* type, std::ifstream& fs) const;
78  virtual void ReadSystemList();
79  virtual void ReadComments();
80  void init();
81 
83  {
86 
87  TIter it(GetRuns());
88  KVDBRun* r;
89  while ((r = (KVDBRun*)it()))
90  fListOfRuns.Add(r->GetNumber());
91  }
92 
94 
95  virtual void make_minimal_database()
96  {
97  AbstractMethod("make_minimal_database");
98  }
99  virtual void extend_minimal_database()
100  {
101  AbstractMethod("extend_minimal_database");
102  }
103 
104 public:
105  KVExpDB();
106  KVExpDB(const Char_t* name);
107  KVExpDB(const Char_t* name, const Char_t* title);
108 
109  Bool_t FindCalibFile(const Char_t* type, TString& fullpath, const TString& array_name = "") const;
110  void SetDataSet(const TString& s)
111  {
112  fDataSet = s;
113  }
115  {
116  return fDBType;
117  }
118  void SetDBType(const TString& s)
119  {
120  fDBType = s;
121  }
122 
123  virtual ~KVExpDB();
124 
125  virtual void LinkListToRunRanges(TList* list, UInt_t rr_number,
126  UInt_t run_ranges[][2]);
127  virtual void LinkRecordToRunRanges(KVDBRecord* rec, UInt_t rr_number,
128  UInt_t run_ranges[][2]);
129  virtual void LinkRecordToRunRange(KVDBRecord* rec, UInt_t first_run,
130  UInt_t last_run);
131  virtual void LinkListToRunRange(TList* list, const KVNumberList& nl);
132  virtual void LinkRecordToRunRange(KVDBRecord* rec, const KVNumberList& nl);
133  virtual void LinkRecordToRun(KVDBRecord* rec, Int_t run);
134 
135  void AddRun(KVDBRun* r)
136  {
137  fRuns->AddRecord(r);
138  fListOfRuns.Add(r->GetNumber());
139  }
140  virtual KVSeqCollection* GetRuns() const
141  {
142  return fRuns->GetRecords();
143  }
144  KVDBRun* GetDBRun(Int_t number) const
145  {
146  return (KVDBRun*)fRuns->GetRecord(number);
147  }
148  const KVDBRunFile& GetDBRunFile(const run_index_t& r) const
149  {
150  return GetDBRun(r.run())->GetRunFile(r);
151  }
153  {
154  return GetDBRun(r.run())->GetRunFile(r);
155  }
156  const KVNumberList& GetRunList() const
157  {
159 
160  if (fListOfRuns.IsEmpty())
161  const_cast<KVExpDB*>(this)->refill_list_of_runs();
162  return fListOfRuns;
163  }
164  virtual KVDBSystem* GetSystem(const Char_t* system) const
165  {
166  return (KVDBSystem*) fSystems->GetRecord(system);
167  }
168  virtual KVSeqCollection* GetSystems() const
169  {
170  return fSystems->GetRecords();
171  }
172 
174  {
175  fSystems->AddRecord(r);
176  }
178  {
180  }
181 
182  void WriteSystemsFile() const;
183  void WriteRunListFile() const;
184 
185  virtual void Save(const Char_t*);
186 
187  virtual TString GetDBEnv(const Char_t*) const;
188  TString GetCalibFileName(const Char_t* type) const
189  {
190  return GetDBEnv(type);
191  }
192 
193  virtual void WriteObjects(TFile*)
194  {
200  }
201 
202  virtual void ReadObjects(TFile*)
203  {
209  }
210 
211  virtual void PrintRuns(KVNumberList&) const;
212 
213  virtual void cd();
214 
215  const Char_t* GetDataSetDir() const
216  {
217  return fDataSetDir;
218  }
219  void SetDataSetDir(const Char_t* d)
220  {
221  fDataSetDir = d;
222  }
223  void Build(bool minimal = false)
224  {
228 
230  if(minimal)
231  {
232  minimal_db = true;
233  return;
234  }
236  }
238  {
241  if(minimal_db){
243  minimal_db = false;
244  }
245  else
246  Warning("CompleteDataBase", "Called for a non-minimal database: ignored");
247  }
248 
249  static KVExpDB* MakeDataBase(const Char_t* name, const Char_t* datasetdir, Bool_t minimal = false);
250 
251  ULong64_t GetTotalEvents(int first_run, int last_run = -1) const;
252  ULong64_t GetTotalEvents(const KVString& system) const;
253 
255  {
256  return raw_files_have_index;
257  }
259  {
260  return with_index_multiplier;
261  }
263  {
264  return index_multiplier;
265  }
266 
267  run_index_t GetRunIndexFromGlobalRunFileNumber(int glob_runfile) const;
268 
270 
272  {
274  return minimal_db;
275  }
276 
277  ClassDef(KVExpDB, 6) //base class to describe database of an experiment
278 };
279 
281 R__EXTERN KVExpDB* gExpDB;
282 
283 #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:73
Database class used to store information on different colliding systems studied during an experiment....
Definition: KVDBSystem.h:51
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:61
KVNumberList fListOfRuns
list of all run numbers
Definition: KVExpDB.h:68
void AddSystem(KVDBSystem *r)
Definition: KVExpDB.h:173
std::map< int, run_index_t > fMapGlobRunFileNumberToRunIndex
cannot be saved, no streamer for run_index_t
Definition: KVExpDB.h:74
run_index_list SetRunIndexListFromString(const TString &) const
Definition: KVExpDB.cpp:913
run_index_t GetRunIndexFromGlobalRunFileNumber(int glob_runfile) const
Definition: KVExpDB.cpp:857
virtual ~KVExpDB()
Destructor.
Definition: KVExpDB.cpp:271
virtual KVDBSystem * GetSystem(const Char_t *system) const
Definition: KVExpDB.h:164
virtual void ReadComments()
Definition: KVExpDB.cpp:1046
virtual void ReadSystemList()
Definition: KVExpDB.cpp:423
virtual void cd()
Definition: KVExpDB.cpp:757
void AddRun(KVDBRun *r)
Definition: KVExpDB.h:135
KVDBTable * fRuns
table of runs
Definition: KVExpDB.h:69
void SetDBType(const TString &s)
Definition: KVExpDB.h:118
void Build(bool minimal=false)
Definition: KVExpDB.h:223
Bool_t IsMinimal() const
Definition: KVExpDB.h:271
virtual void LinkRecordToRun(KVDBRecord *rec, Int_t run)
Definition: KVExpDB.cpp:329
KVDBRun * GetDBRun(Int_t number) const
Definition: KVExpDB.h:144
virtual KVSeqCollection * GetRuns() const
Definition: KVExpDB.h:140
void RemoveSystem(KVDBSystem *s)
Definition: KVExpDB.h:177
TString GetCalibFileName(const Char_t *type) const
Definition: KVExpDB.h:188
TString GetDBType() const
Definition: KVExpDB.h:114
bool with_index_multiplier
Definition: KVExpDB.h:72
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:368
KVDBTable * fSystems
table of systems
Definition: KVExpDB.h:70
const KVNumberList & GetRunList() const
Definition: KVExpDB.h:156
virtual void PrintRuns(KVNumberList &) const
Definition: KVExpDB.cpp:727
ULong64_t GetTotalEvents(int first_run, int last_run=-1) const
Definition: KVExpDB.cpp:811
virtual KVSeqCollection * GetSystems() const
Definition: KVExpDB.h:168
virtual void Save(const Char_t *)
Definition: KVExpDB.cpp:542
const KVDBRunFile & GetDBRunFile(const run_index_t &r) const
Definition: KVExpDB.h:148
TString fDBType
used by GetDBEnv
Definition: KVExpDB.h:66
bool raw_files_have_index
Definition: KVExpDB.h:73
virtual void LinkRecordToRunRanges(KVDBRecord *rec, UInt_t rr_number, UInt_t run_ranges[][2])
Definition: KVExpDB.cpp:348
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:394
void WriteSystemsFile() const
Definition: KVExpDB.cpp:509
KVDBRunFile & GetDBRunFile(const run_index_t &r)
Definition: KVExpDB.h:152
KVExpDB()
Default constructor.
Definition: KVExpDB.cpp:233
const Char_t * GetDataSetDir() const
Definition: KVExpDB.h:215
void init()
default initialisations
Definition: KVExpDB.cpp:23
virtual void WriteObjects(TFile *)
Definition: KVExpDB.h:193
virtual void LinkRecordToRunRange(KVDBRecord *rec, UInt_t first_run, UInt_t last_run)
Definition: KVExpDB.cpp:285
Int_t GetIndexMultiplier() const
Definition: KVExpDB.h:262
virtual void ReadObjects(TFile *)
Definition: KVExpDB.h:202
virtual void make_minimal_database()
Definition: KVExpDB.h:95
void refill_list_of_runs()
Definition: KVExpDB.h:82
TString fDataSetDir
the directory containing the dataset files
Definition: KVExpDB.h:65
void SetDataSet(const TString &s)
Definition: KVExpDB.h:110
int index_multiplier
Definition: KVExpDB.h:71
void CompleteDataBase()
Definition: KVExpDB.h:237
Bool_t HasIndexMultiplier() const
Definition: KVExpDB.h:258
void SetDataSetDir(const Char_t *d)
Definition: KVExpDB.h:219
void WriteRunListFile() const
Definition: KVExpDB.cpp:562
virtual TString GetDBEnv(const Char_t *) const
Definition: KVExpDB.cpp:1009
Bool_t OpenCalibFile(const Char_t *type, std::ifstream &fs) const
Definition: KVExpDB.cpp:613
static KVExpDB * MakeDataBase(const Char_t *name, const Char_t *datasetdir, Bool_t minimal=false)
Definition: KVExpDB.cpp:778
Bool_t HasRawFilesWithIndex() const
Definition: KVExpDB.h:254
bool minimal_db
Definition: KVExpDB.h:75
void read_beams_targets_reactions()
Definition: KVExpDB.cpp:90
TString fDataSet
the name of the dataset to which this database is associated
Definition: KVExpDB.h:64
Bool_t FindCalibFile(const Char_t *type, TString &fullpath, const TString &array_name="") const
Definition: KVExpDB.cpp:667
virtual void extend_minimal_database()
Definition: KVExpDB.h:99
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
virtual void Warning(const char *method, const char *msgfmt,...) const
List of runfiles specified by run number and file index ,.
Specifies a runfile according to run number and file index ,.
Definition: run_index.h:31
unsigned long long ULong64_t