ROOT logo
//_HADES_CLASS_DESCRIPTION
//_HADES_CLASS_DESCRIPTION
/////////////////////////////////////////////////////////////
// HEmcParAsciiFileIo
//
// Class for EMC parameter input/output from/into Ascii file
//
/////////////////////////////////////////////////////////////
                                                                                              
#include "hemcparasciifileio.h"
#include "hades.h"
#include "hspectrometer.h"
#include "hdetector.h"
#include "hparset.h"
#include "hemcdetector.h"
#include "hemctrb3lookup.h"
#include "hemccalpar.h"
#include "hemcgeompar.h"
    
ClassImp(HEmcParAsciiFileIo)
                                                                                              
HEmcParAsciiFileIo::HEmcParAsciiFileIo(fstream* f) : HDetParAsciiFileIo(f) {
  // constructor calls the base class constructor
  fName="HEmcParIo";
}
                                                                                              
Bool_t HEmcParAsciiFileIo::init(HParSet* pPar,Int_t* set) {
  // calls the appropriate read function for the container
  const  Text_t* name=pPar->GetName();
  if (pFile) {
    if (0 == strncmp(name, "EmcTrb3Lookup", strlen("EmcTrb3Lookup"))) {
      return HDetParAsciiFileIo::readFile<HEmcTrb3Lookup>((HEmcTrb3Lookup*)pPar);
    }
    if (0 == strncmp(name, "EmcCalPar", strlen("EmcCalPar"))) {
      return read((HEmcCalPar*)pPar,set);
    }
    if (0 == strncmp(name,"EmcGeomPar", strlen("EmcGeomPar"))) {
      return HDetParAsciiFileIo::read((HDetGeomPar*)pPar,set);
    }
    Error("init(HParSet*,Int_t*)","Initialization of %s not possible from ASCII file",name);
    return kFALSE;
  }
  Error("init(HParSet*,Int_t*)","No input file open");
  return kFALSE;
}
                                                                                              
Int_t HEmcParAsciiFileIo::write(HParSet* pPar) {
  // calls the appropriate write function for the container
  if (pFile) {
    const  Text_t* name=pPar->GetName();
    if (0 == strncmp(name, "EmcTrb3Lookup", strlen("EmcTrb3Lookup"))) {
      return HDetParAsciiFileIo::writeFile<HEmcTrb3Lookup>((HEmcTrb3Lookup*)pPar);
    }
    if (0 == strncmp(name, "EmcCalPar", strlen("EmcCalPar"))) {
      return HDetParAsciiFileIo::writeFile<HEmcCalPar>((HEmcCalPar*)pPar);
    }
    if (0 == strncmp(name,"EmcGeomPar", strlen("EmcGeomPar"))) {
      return HDetParAsciiFileIo::writeFile((HDetGeomPar*)pPar);
    }
    Error("write(HParSet*)","%s could not be written to ASCII file",name);
    return -1;
  }
  Error("write(HParSet*)","No output file open");
  return -1;
}
                                                                                              
template<class T> Bool_t HEmcParAsciiFileIo::read(T* pPar, Int_t* set) {
  // template function for all parameter containers
  // searches the container in the file, reads the data line by line and
  //   calles the member function readline(...) of the container class
  const Text_t* name = pPar->GetName();
  HDetector* det = gHades->getSetup()->getDetector("Emc");
  Int_t nSize = det->getMaxModules();
  if (!findContainer(name)) return kFALSE;
  pPar->clear();
  const Int_t maxbuf = 155;
  Text_t buf[maxbuf];
  while (!pFile->eof()) {
    pFile->getline(buf, maxbuf);
    if (buf[0] == '#') break;
    if (buf[0] != '/' && buf[0] != '\0') pPar->readline(buf, set);
  }
  Bool_t allFound = kTRUE;
  for (Int_t i = 0; i < nSize; i++) {
    if (set[i]) {
      if (set[i] == 999) set[i] = 1;
      else allFound = kFALSE;
    }
  }
  if (allFound) {
    pPar->setInputVersion(1, inputNumber);
    pPar->setChanged();
    Info("readFile", "%s initialized from Ascii file", pPar->GetName());
  }
  return allFound;
}


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