ROOT logo
#ifndef HRUNTIMEDB_H
#define HRUNTIMEDB_H

#include "TObject.h"
#include "TList.h"

class HParIo;
class HParSet;
class HRun;
class HContFact;
class HParamFileGenerator;


class HRuntimeDb : public TObject {
private:
  static HRuntimeDb* gRtdb; //!
protected:
  HRuntimeDb(void);
  TList  contFactories;    // list of container factories 
  TList* containerList;    // list of parameter containers
  TList* runs;             // list of runs
  HParIo* firstInput;      // first (prefered) input for parameters
  HParIo* secondInput;     // second input (used if not found in first input)
  HParIo* output;          // output for parameters
  HRun* currentRun;        // Current run
  TString currentFileName; // Name of current event file
  Bool_t versionsChanged;  // flag for write of list of runs (set kTRUE by each write)
  Bool_t isRootFileOutput; // flag indicating that the output is a ROOT file
  HParamFileGenerator* pParamFileGenerator; //! generator for a parameter file
public:
  static HRuntimeDb* instance(void);
  ~HRuntimeDb(void);

  Bool_t addParamContext(const Char_t*);
  void printParamContexts();
  void addContFactory(HContFact*);

  Bool_t addContainer(HParSet*);
  HParSet* getContainer(const Text_t*);
  HParSet* findContainer(const Char_t*);
  void removeContainer(Text_t*);
  void removeAllContainers(void);
  Bool_t initContainers(Int_t runId,Int_t refId=-1,const Text_t* fileName="");
  void printContainers(void);
  void setContainersStatic(Bool_t f=kTRUE);
  Bool_t writeContainers(void);
  Bool_t writeContainer(HParSet*,HRun*,HRun* refRun=0);

  HRun* addRun(Int_t runId,Int_t refId=-1);
  HRun* getRun(Int_t);
  HRun* getRun(Text_t*);
  HRun* getCurrentRun(void) {return currentRun;}
  Text_t const *getCurrentFileName() {return currentFileName.Data();}
  void clearRunList(void);
  void removeRun(Text_t*);

  Bool_t setInputVersion(Int_t run,Text_t* container,
                        Int_t version,Int_t inputNumber);
  Bool_t setRootOutputVersion(Int_t run,Text_t* container,Int_t version);
  void setVersionsChanged(Bool_t f=kTRUE) {versionsChanged=f;}
  void resetInputVersions(void);
  void resetOutputVersions(void);
  void resetAllVersions(void);

  Bool_t readAll(void);
  void writeSetup(void);
  void writeVersions(void);
  void saveOutput(void);

  Bool_t setFirstInput(HParIo*);
  Bool_t setSecondInput(HParIo*);
  Bool_t setOutput(HParIo*);
  HParIo* getFirstInput(void);
  HParIo* getSecondInput(void);
  HParIo* getOutput(void);
  void closeFirstInput(void);
  void closeSecondInput(void);
  void closeOutput(void);
  Bool_t reconnectInputs();
  void disconnectInputs();

  void print(void);

  Bool_t makeParamFile(const Char_t*,const Char_t*,
                       const Char_t* startAt="",const Char_t* endAt="");

  Int_t findOutputVersion(HParSet*);

private:
  Bool_t initContainers(void);
  Bool_t fillParamFile();

  ClassDef(HRuntimeDb,0) // Class for runtime database
};

#endif  /* !HRUNTIMEDB_H */
 hruntimedb.h:1
 hruntimedb.h:2
 hruntimedb.h:3
 hruntimedb.h:4
 hruntimedb.h:5
 hruntimedb.h:6
 hruntimedb.h:7
 hruntimedb.h:8
 hruntimedb.h:9
 hruntimedb.h:10
 hruntimedb.h:11
 hruntimedb.h:12
 hruntimedb.h:13
 hruntimedb.h:14
 hruntimedb.h:15
 hruntimedb.h:16
 hruntimedb.h:17
 hruntimedb.h:18
 hruntimedb.h:19
 hruntimedb.h:20
 hruntimedb.h:21
 hruntimedb.h:22
 hruntimedb.h:23
 hruntimedb.h:24
 hruntimedb.h:25
 hruntimedb.h:26
 hruntimedb.h:27
 hruntimedb.h:28
 hruntimedb.h:29
 hruntimedb.h:30
 hruntimedb.h:31
 hruntimedb.h:32
 hruntimedb.h:33
 hruntimedb.h:34
 hruntimedb.h:35
 hruntimedb.h:36
 hruntimedb.h:37
 hruntimedb.h:38
 hruntimedb.h:39
 hruntimedb.h:40
 hruntimedb.h:41
 hruntimedb.h:42
 hruntimedb.h:43
 hruntimedb.h:44
 hruntimedb.h:45
 hruntimedb.h:46
 hruntimedb.h:47
 hruntimedb.h:48
 hruntimedb.h:49
 hruntimedb.h:50
 hruntimedb.h:51
 hruntimedb.h:52
 hruntimedb.h:53
 hruntimedb.h:54
 hruntimedb.h:55
 hruntimedb.h:56
 hruntimedb.h:57
 hruntimedb.h:58
 hruntimedb.h:59
 hruntimedb.h:60
 hruntimedb.h:61
 hruntimedb.h:62
 hruntimedb.h:63
 hruntimedb.h:64
 hruntimedb.h:65
 hruntimedb.h:66
 hruntimedb.h:67
 hruntimedb.h:68
 hruntimedb.h:69
 hruntimedb.h:70
 hruntimedb.h:71
 hruntimedb.h:72
 hruntimedb.h:73
 hruntimedb.h:74
 hruntimedb.h:75
 hruntimedb.h:76
 hruntimedb.h:77
 hruntimedb.h:78
 hruntimedb.h:79
 hruntimedb.h:80
 hruntimedb.h:81
 hruntimedb.h:82
 hruntimedb.h:83
 hruntimedb.h:84
 hruntimedb.h:85
 hruntimedb.h:86
 hruntimedb.h:87
 hruntimedb.h:88
 hruntimedb.h:89
 hruntimedb.h:90
 hruntimedb.h:91
 hruntimedb.h:92
 hruntimedb.h:93
 hruntimedb.h:94
 hruntimedb.h:95
 hruntimedb.h:96