KaliVeda  1.12/06
Heavy-Ion Analysis Toolkit
KVBase.h
Go to the documentation of this file.
1 /***************************************************************************
2  kvbase.h - description
3  -------------------
4  begin : Thu May 16 2002
5  copyright : (C) 2002 by J.D. Frankland
6  email : frankland@ganil.fr
7 
8 $Id: KVBase.h,v 1.42 2009/03/12 13:59:40 franklan Exp $
9 ***************************************************************************/
10 
11 #ifndef KVBASE_H
12 #define KVBASE_H
13 
14 #include "KVConfig.h"
15 #include "TRandom3.h"
16 #include "TNamed.h"
17 #include "RVersion.h"
18 #include "TString.h"
19 #include "KVLockfile.h"
20 #include "Riostream.h"
21 #include "TPluginManager.h"
22 #include "TFile.h"
23 #include "TF1.h"
24 class KVString;
25 
135 class KVBase: public TNamed {
136 
137 private:
138  static UInt_t fNbObj;
140 protected:
142 
143 private:
146 
147  void init();
148  static void ReadGUIMimeTypes();
149  static void ReadConfigFiles();
150 
151 public:
152 
153  static void Deprecated(const char* method, const char* advice);
154 
156  kIsKaliVedaObject = BIT(23) //all KVBase-derived objects have this bit set in TObject::fBits
157  };
158 
159  static void InitEnvironment();
160  KVBase();
161  KVBase(const Char_t* name, const Char_t* title = "");
162  KVBase(const KVBase&);
163  KVBase& operator=(const KVBase&);
164  virtual ~ KVBase();
165 
166  virtual void SetType(const Char_t* str)
167  {
168  SetTitle(str);
169  }
170  const Char_t* GetType() const
171  {
172  return GetTitle();
173  }
174  static const Char_t* WorkingDirectory()
175  {
176  return fWorkingDirectory.Data();
177  }
178  virtual Bool_t IsType(const Char_t* typ) const
179  {
181  return (fTitle == typ);
182  }
183  virtual Bool_t IsCalled(const Char_t* name) const
184  {
186  return !strcmp(GetName(), name);
187  }
188  void SetLabel(const Char_t* lab)
189  {
190  fLabel = lab;
191  }
192  const Char_t* GetLabel() const
193  {
194  return fLabel;
195  }
196  Bool_t HasLabel() const
197  {
198  return fLabel.Length();
199  }
200  Bool_t IsLabelled(const Char_t* l) const
201  {
203  return fLabel == l;
204  }
205  virtual void Print(Option_t* option = "") const;
206  virtual void List()
207  {
208  }
209  virtual void SetNumber(UInt_t num)
210  {
211  fNumber = num;
212  }
214  {
215  return fNumber;
216  }
218  {
219  return fNbObj;
220  }
221  virtual void Clear(Option_t* opt = "");
222 #if ROOT_VERSION_CODE >= ROOT_VERSION(3,4,0)
223  virtual void Copy(TObject&) const;
224 #else
225  virtual void Copy(TObject&);
226 #endif
227 
228  static Bool_t SearchKVFile(const Char_t* name, TString& fullpath,
229  const Char_t* kvsubdir = "");
230  static Bool_t SearchAndOpenKVFile(const Char_t* name, std::ifstream& file,
231  const Char_t* kvsubdir = "", KVLockfile* locks = 0);
232  static Bool_t SearchAndOpenKVFile(const Char_t* name, std::ofstream& file,
233  const Char_t* kvsubdir = "", KVLockfile* locks = 0);
234  static void BackupFileWithDate(const Char_t* path);
235  static TPluginHandler* LoadPlugin(const Char_t* base,
236  const Char_t* uri = "0");
237  static const Char_t* GetPluginURI(const Char_t* base, const Char_t* plugin);
238  static const Char_t* GetListOfPlugins(const Char_t* base);
239  static const Char_t* GetListOfPluginURIs(const Char_t* base);
240  static Bool_t IsThisAPlugin(const TString& uri, TString& base);
241  static void OpenTempFile(TString& base, std::ofstream& fp); /* open temp file with basename 'base' */
242  static void GetTempFileName(TString& base);
243 
244  static const Char_t* GetKVVersion();
245  static const Char_t* GetKVBuildDate();
246  static const Char_t* GetKVBuildTime();
247  static const Char_t* GetKVBuildType();
248  static const Char_t* GetKVBuildUser();
249  static const Char_t* GetKVSourceDir();
250  static const Char_t* GetKVBuildDir();
251 
252 #ifdef WITH_GIT_INFOS
253  static const Char_t* gitBranch();
254  static const Char_t* gitCommit();
255 #endif
256 
257  static const Char_t* GetETCDIRFilePath(const Char_t* namefile = "");
258  static const Char_t* GetDATADIRFilePath(const Char_t* namefile = "");
259  static const Char_t* GetDATABASEFilePath();
260  static const Char_t* GetLIBDIRFilePath(const Char_t* namefile = "");
261  static const Char_t* GetINCDIRFilePath(const Char_t* namefile = "");
262  static const Char_t* GetBINDIRFilePath(const Char_t* namefile = "");
263  static const Char_t* GetWORKDIRFilePath(const Char_t* namefile = "");
264  static const Char_t* GetTEMPLATEDIRFilePath(const Char_t* namefile = "");
265  static const Char_t* GetExampleFilePath(const Char_t* library, const Char_t* namefile);
266  static bool is_gnuinstall()
267  {
271 #ifdef WITH_GNU_INSTALL
272  return true;
273 #else
274  return false;
275 #endif
276  }
277 
278  static Bool_t FindExecutable(TString& exec, const Char_t* path =
279  "$(PATH)");
280 
281  static const Char_t* FindFile(const Char_t* search, TString& wfil);
282  static Bool_t FindClassSourceFiles(const Char_t* class_name, KVString& imp_file,
283  KVString& dec_file, const Char_t* dir_name = ".");
284 
285  static Bool_t AreEqual(Double_t x, Double_t y, Long64_t maxdif = 1);
286 
287  static Bool_t OpenContextMenu(const char* method, TObject* obj, const char* alt_method_name = "");
288 
289  static void CombineFiles(const Char_t* file1, const Char_t* file2, const Char_t* newfilename, Bool_t keep = kTRUE);
290 
291  virtual TObject* GetObject() const;
292 
293  static void PrintSplashScreen();
294  static const Char_t* GetDataSetEnv(const Char_t* dataset, const Char_t* type, const Char_t* defval);
295  static Double_t GetDataSetEnv(const Char_t* dataset, const Char_t* type, Double_t defval);
296  static Bool_t GetDataSetEnv(const Char_t* dataset, const Char_t* type, Bool_t defval);
297 
298  Double_t ProtectedGetX(const TF1* func, Double_t val, int& status, Double_t xmin = 0.0, Double_t xmax = 0.0) const;
299 
300  ClassDef(KVBase, 4) //Base class for all KaliVeda objects
301 };
302 
305 extern void AssignAndDelete(TString& target, char* tobedeleted);
307 Bool_t SearchFile(const Char_t* name, TString& fullpath, int ndirs, ...);
308 #endif
unsigned int UInt_t
#define str(s)
Definition: KVBase.cpp:57
void AssignAndDelete(TString &target, char *tobedeleted)
Bool_t SearchFile(const Char_t *name, TString &fullpath, int ndirs,...)
Search for file in an arbitrary number of locations, return kTRUE if file found and put full path to ...
Definition: KVBase.cpp:489
char Char_t
bool Bool_t
double Double_t
const char Option_t
#define ClassDef(name, id)
#define BIT(n)
Base class for KaliVeda framework.
Definition: KVBase.h:135
static TString fWorkingDirectory
user working directory for e.g. database files
Definition: KVBase.h:145
static const Char_t * WorkingDirectory()
Definition: KVBase.h:174
static UInt_t fNbObj
Total number of KaliVeda objects (actually counts number of calls to default ctor)
Definition: KVBase.h:138
void SetLabel(const Char_t *lab)
Definition: KVBase.h:188
UInt_t fNumber
for numbering objects
Definition: KVBase.h:139
static Bool_t FindClassSourceFiles(const Char_t *class_name, KVString &imp_file, KVString &dec_file, const Char_t *dir_name=".")
Definition: KVBase.cpp:1065
static const Char_t * GetBINDIRFilePath(const Char_t *namefile="")
Definition: KVBase.cpp:118
static void OpenTempFile(TString &base, std::ofstream &fp)
Definition: KVBase.cpp:790
static const Char_t * GetDATADIRFilePath(const Char_t *namefile="")
Definition: KVBase.cpp:74
static const Char_t * GetDATABASEFilePath()
Definition: KVBase.cpp:92
static const Char_t * GetKVBuildDate()
Returns KaliVeda build date.
Definition: KVBase.cpp:863
static const Char_t * FindFile(const Char_t *search, TString &wfil)
Definition: KVBase.cpp:1023
static const Char_t * GetINCDIRFilePath(const Char_t *namefile="")
Definition: KVBase.cpp:109
static const Char_t * gitCommit()
Returns last git commit of sources.
Definition: KVBase.cpp:939
static const Char_t * GetWORKDIRFilePath(const Char_t *namefile="")
Definition: KVBase.cpp:127
void init()
Default initialisation.
Definition: KVBase.cpp:138
UInt_t GetNumberOfObjects() const
Definition: KVBase.h:217
static Bool_t FindExecutable(TString &exec, const Char_t *path="$(PATH)")
Definition: KVBase.cpp:964
static const Char_t * GetKVBuildUser()
Returns username of person who performed build.
Definition: KVBase.cpp:850
static void BackupFileWithDate(const Char_t *path)
Definition: KVBase.cpp:716
static void ReadConfigFiles()
Definition: KVBase.cpp:275
static const Char_t * gitBranch()
Returns git branch of sources.
Definition: KVBase.cpp:927
static const Char_t * GetListOfPluginURIs(const Char_t *base)
Definition: KVBase.cpp:1290
TString fLabel
label for the object
Definition: KVBase.h:141
virtual void Clear(Option_t *opt="")
Clear object properties : name, type/title, number, label.
Definition: KVBase.cpp:383
KVBase()
Default constructor.
Definition: KVBase.cpp:320
static const Char_t * GetListOfPlugins(const Char_t *base)
Definition: KVBase.cpp:1223
static Bool_t fEnvIsInit
set when environment is initialised
Definition: KVBase.h:144
Bool_t HasLabel() const
Definition: KVBase.h:196
static Bool_t AreEqual(Double_t x, Double_t y, Long64_t maxdif=1)
Comparison between two 64-bit floating-point values.
Definition: KVBase.cpp:1405
virtual Bool_t IsType(const Char_t *typ) const
Definition: KVBase.h:178
KVBase & operator=(const KVBase &)
copy assignment operator
Definition: KVBase.cpp:358
static void CombineFiles(const Char_t *file1, const Char_t *file2, const Char_t *newfilename, Bool_t keep=kTRUE)
Definition: KVBase.cpp:1490
const Char_t * GetLabel() const
Definition: KVBase.h:192
virtual void SetNumber(UInt_t num)
Definition: KVBase.h:209
static bool is_gnuinstall()
Definition: KVBase.h:266
const Char_t * GetType() const
Definition: KVBase.h:170
static const Char_t * GetTEMPLATEDIRFilePath(const Char_t *namefile="")
Definition: KVBase.cpp:83
static const Char_t * GetKVSourceDir()
Returns top-level directory of source tree used for build.
Definition: KVBase.cpp:901
Bool_t IsLabelled(const Char_t *l) const
Definition: KVBase.h:200
static void InitEnvironment()
Definition: KVBase.cpp:181
virtual void Print(Option_t *option="") const
Definition: KVBase.cpp:413
virtual void SetType(const Char_t *str)
Definition: KVBase.h:166
static const Char_t * GetDataSetEnv(const Char_t *dataset, const Char_t *type, const Char_t *defval)
Definition: KVBase.cpp:1582
static const Char_t * GetKVBuildTime()
Returns KaliVeda build date.
Definition: KVBase.cpp:875
static void PrintSplashScreen()
Prints welcome message and infos on version etc.
Definition: KVBase.cpp:1556
virtual void List()
Definition: KVBase.h:206
static const Char_t * GetLIBDIRFilePath(const Char_t *namefile="")
Definition: KVBase.cpp:100
static const Char_t * GetExampleFilePath(const Char_t *library, const Char_t *namefile)
Return full path to example file for given library (="KVMultiDet", "BackTrack", etc....
Definition: KVBase.cpp:1540
virtual Bool_t IsCalled(const Char_t *name) const
Definition: KVBase.h:183
Double_t ProtectedGetX(const TF1 *func, Double_t val, int &status, Double_t xmin=0.0, Double_t xmax=0.0) const
Definition: KVBase.cpp:1654
static const Char_t * GetKVBuildDir()
Returns top-level directory used for build.
Definition: KVBase.cpp:914
static Bool_t SearchAndOpenKVFile(const Char_t *name, std::ifstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0)
Definition: KVBase.cpp:601
static void ReadGUIMimeTypes()
Definition: KVBase.cpp:1360
static Bool_t IsThisAPlugin(const TString &uri, TString &base)
Definition: KVBase.cpp:1320
EKaliVedaBits
Definition: KVBase.h:155
@ kIsKaliVedaObject
Definition: KVBase.h:156
virtual TObject * GetObject() const
Definition: KVBase.cpp:1523
static void GetTempFileName(TString &base)
Definition: KVBase.cpp:811
static Bool_t SearchKVFile(const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
Definition: KVBase.cpp:541
static const Char_t * GetKVBuildType()
Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...)
Definition: KVBase.cpp:888
static const Char_t * GetPluginURI(const Char_t *base, const Char_t *plugin)
Definition: KVBase.cpp:1140
static const Char_t * GetETCDIRFilePath(const Char_t *namefile="")
Definition: KVBase.cpp:65
virtual ~ KVBase()
static Bool_t OpenContextMenu(const char *method, TObject *obj, const char *alt_method_name="")
Definition: KVBase.cpp:1458
virtual void Copy(TObject &) const
Make a copy of this object.
Definition: KVBase.cpp:397
static TPluginHandler * LoadPlugin(const Char_t *base, const Char_t *uri="0")
Definition: KVBase.cpp:756
static const Char_t * GetKVVersion()
Returns KaliVeda version string.
Definition: KVBase.cpp:837
static void Deprecated(const char *method, const char *advice)
Definition: KVBase.cpp:1697
UInt_t GetNumber() const
Definition: KVBase.h:213
Interface to (Linux) system lockfile command.
Definition: KVLockfile.h:69
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:72
virtual const char * GetName() const
virtual void SetTitle(const char *title="")
virtual const char * GetTitle() const
TString fTitle
Ssiz_t Length() const
const char * Data() const
long long Long64_t
auto * l