#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 */

Last change: Sat May 22 13:12:27 2010
Last generated: 2010-05-22 13:12

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.