ROOT logo
//*-- AUTHOR : Ilse Koenig
//*-- Modified : 03/02/2000 by Ilse Koenig

//_HADES_CLASS_DESCRIPTION 
//////////////////////////////////////////////////////////////////////////////
// HParRootFileIo
//
// Interface class for parameter I/O from/to ROOT file
// derived from interface base class HParIo.
//
// It contains a pointer to the "connection class" of type HParRootFile
// inherited from TFile.  HParRootFile contains an object of type HRun
// which holds the list of container versions for an event file.
//
// It contains also a list of detector interface classes all having the common
// base type HDetParRootFileIo. Every detector has its own interface class.
//
// This class replaces the former class HParFileIo.
// 
//////////////////////////////////////////////////////////////////////////////
using namespace std;
#include "TROOT.h"  
#include "hparrootfileio.h"
#include "hdetpario.h"
#include "hades.h"
#include "hspectrometer.h"
#include "hrun.h"
#include <stdio.h>
#include <iostream> 
#include <iomanip>

ClassImp(HParRootFile)
ClassImp(HParRootFileIo)

HParRootFile::HParRootFile(const Text_t* fname,const Option_t* option,
                           const Text_t* ftitle, Int_t compress)
              : TFile(fname,option,ftitle,compress) {
  // constructor opens a ROOT file
  run=0;
}

HParRootFile::~HParRootFile() {
  // destructor
  if (run) delete run;
  run=0;
}

void HParRootFile::readVersions(HRun* currentRun) {
  // finds the current run containing the parameter container versions
  // in the ROOT file
  if (run) delete run;
  run=(HRun*)Get(((Char_t*)currentRun->GetName()));
}



HParRootFileIo::HParRootFileIo() {
  // constructor
  file=0;
}

HParRootFileIo::~HParRootFileIo() {
  // destructor closes an open file
  close();
}

Bool_t HParRootFileIo::open(const Text_t* fname,const Option_t* option,
                        const Text_t* ftitle, Int_t compress) {
  // It opens a ROOT file (default option "READ"). An open file will be closed.
  // The detector I/Os for all detectors defined in the setup are activated.
  close();
  file=new HParRootFile(fname,option,ftitle,compress);
  if (file && file->IsOpen()) {
    inputName=fname;
    gHades->getSetup()->activateParIo(this);
    return kTRUE;
  }
  return kFALSE;
}

void HParRootFileIo::close() {
  // closes an open ROOT file and deletes the detector I/Os
  if (file) {
    file->Close();
    delete file;
    file=0;
    inputName="";
  }
  if (detParIoList) detParIoList->Delete();
}

void HParRootFileIo::print() {
  // prints the content of a open ROOT file and the list of detector I/Os
  if (file) {
    file->ls();
    TIter next(detParIoList);
    HDetParIo* io;
    cout<<"detector I/Os: ";
    while ((io=(HDetParIo*)next())) {
      cout<<" "<<io->GetName();
    }
    cout<<'\n';
  }
  else cout<<"No pointer to ROOT file"<<'\n';
}

HParRootFile* HParRootFileIo::getParRootFile() {
  // returns a pointer to the current ROOT file
  return file;
}

void HParRootFileIo::readVersions(HRun* currentRun) {
  // reads the parameter container versions for the current run from
  // the ROOT file
  if (file) file->readVersions(currentRun);
}

TList* HParRootFileIo::getList() {
  // returns the list of keys found in the ROOT file
  if (file) return file->GetListOfKeys();
  return 0;
}
 hparrootfileio.cc:1
 hparrootfileio.cc:2
 hparrootfileio.cc:3
 hparrootfileio.cc:4
 hparrootfileio.cc:5
 hparrootfileio.cc:6
 hparrootfileio.cc:7
 hparrootfileio.cc:8
 hparrootfileio.cc:9
 hparrootfileio.cc:10
 hparrootfileio.cc:11
 hparrootfileio.cc:12
 hparrootfileio.cc:13
 hparrootfileio.cc:14
 hparrootfileio.cc:15
 hparrootfileio.cc:16
 hparrootfileio.cc:17
 hparrootfileio.cc:18
 hparrootfileio.cc:19
 hparrootfileio.cc:20
 hparrootfileio.cc:21
 hparrootfileio.cc:22
 hparrootfileio.cc:23
 hparrootfileio.cc:24
 hparrootfileio.cc:25
 hparrootfileio.cc:26
 hparrootfileio.cc:27
 hparrootfileio.cc:28
 hparrootfileio.cc:29
 hparrootfileio.cc:30
 hparrootfileio.cc:31
 hparrootfileio.cc:32
 hparrootfileio.cc:33
 hparrootfileio.cc:34
 hparrootfileio.cc:35
 hparrootfileio.cc:36
 hparrootfileio.cc:37
 hparrootfileio.cc:38
 hparrootfileio.cc:39
 hparrootfileio.cc:40
 hparrootfileio.cc:41
 hparrootfileio.cc:42
 hparrootfileio.cc:43
 hparrootfileio.cc:44
 hparrootfileio.cc:45
 hparrootfileio.cc:46
 hparrootfileio.cc:47
 hparrootfileio.cc:48
 hparrootfileio.cc:49
 hparrootfileio.cc:50
 hparrootfileio.cc:51
 hparrootfileio.cc:52
 hparrootfileio.cc:53
 hparrootfileio.cc:54
 hparrootfileio.cc:55
 hparrootfileio.cc:56
 hparrootfileio.cc:57
 hparrootfileio.cc:58
 hparrootfileio.cc:59
 hparrootfileio.cc:60
 hparrootfileio.cc:61
 hparrootfileio.cc:62
 hparrootfileio.cc:63
 hparrootfileio.cc:64
 hparrootfileio.cc:65
 hparrootfileio.cc:66
 hparrootfileio.cc:67
 hparrootfileio.cc:68
 hparrootfileio.cc:69
 hparrootfileio.cc:70
 hparrootfileio.cc:71
 hparrootfileio.cc:72
 hparrootfileio.cc:73
 hparrootfileio.cc:74
 hparrootfileio.cc:75
 hparrootfileio.cc:76
 hparrootfileio.cc:77
 hparrootfileio.cc:78
 hparrootfileio.cc:79
 hparrootfileio.cc:80
 hparrootfileio.cc:81
 hparrootfileio.cc:82
 hparrootfileio.cc:83
 hparrootfileio.cc:84
 hparrootfileio.cc:85
 hparrootfileio.cc:86
 hparrootfileio.cc:87
 hparrootfileio.cc:88
 hparrootfileio.cc:89
 hparrootfileio.cc:90
 hparrootfileio.cc:91
 hparrootfileio.cc:92
 hparrootfileio.cc:93
 hparrootfileio.cc:94
 hparrootfileio.cc:95
 hparrootfileio.cc:96
 hparrootfileio.cc:97
 hparrootfileio.cc:98
 hparrootfileio.cc:99
 hparrootfileio.cc:100
 hparrootfileio.cc:101
 hparrootfileio.cc:102
 hparrootfileio.cc:103
 hparrootfileio.cc:104
 hparrootfileio.cc:105
 hparrootfileio.cc:106
 hparrootfileio.cc:107
 hparrootfileio.cc:108
 hparrootfileio.cc:109
 hparrootfileio.cc:110
 hparrootfileio.cc:111
 hparrootfileio.cc:112
 hparrootfileio.cc:113
 hparrootfileio.cc:114
 hparrootfileio.cc:115
 hparrootfileio.cc:116
 hparrootfileio.cc:117
 hparrootfileio.cc:118
 hparrootfileio.cc:119
 hparrootfileio.cc:120
 hparrootfileio.cc:121
 hparrootfileio.cc:122