ROOT logo
//*-- AUTHOR : Ilse Koenig
//*-- Created : 17/01/2005
// Modified by M.Golubeva 01.11.2006

//_HADES_CLASS_DESCRIPTION 
/////////////////////////////////////////////////////////////////////
//
//  HWallParRootFileIo
//
//  Class for Forward Wall parameter input/output from/into ROOT file
//
//  It is derived from the base class HDetParRootFileIo and
//  inherits from it basic functions e.g. write(...)
//
/////////////////////////////////////////////////////////////////////

using namespace std;
#include "hwallparrootfileio.h"
#include "hparrootfileio.h"
#include "hades.h"
#include "hspectrometer.h"
#include "hwalldetector.h"
#include "hwalllookup.h"
#include "hwalltrb2lookup.h"
#include "hwallcalpar.h"
#include "hwallgeompar.h"
#include "hruntimedb.h"
#include <iostream> 
#include <iomanip>

ClassImp(HWallParRootFileIo)

HWallParRootFileIo::HWallParRootFileIo(HParRootFile* f) : HDetParRootFileIo(f) {
  // constructor sets the name of the detector I/O "HWallParIo"
  fName="HWallParIo";
  initModules=new TArrayI(1);
}

Bool_t HWallParRootFileIo::init(HParSet* pPar,Int_t* set) {
  // initializes a container called by name
  // calls the special read function for this container
  // If it is called the first time it reads the setup found in the file
  if (!isActiv) readModules("Wall");
  const Text_t* name=pPar->GetName();
  if (pFile) {
    if (strcmp(name,"WallLookup")==0) return read((HWallLookup*)pPar,set);
    if (strcmp(name,"WallCalPar")==0) return read((HWallCalPar*)pPar,set);
    if (strcmp(name,"WallTrb2Lookup")==0)
        return HDetParRootFileIo::read((HWallTrb2Lookup*)pPar);
    if (strcmp(name,"WallGeomPar")==0)
        return HDetParRootFileIo::read((HWallGeomPar*)pPar,set);
  }
  cerr<<"initialization of "<<name<<" not possible from ROOT file!"<<endl;
  return kFALSE;
}

Bool_t HWallParRootFileIo::read(HWallLookup* pPar,Int_t* set) {
  // reads and fills the container "WallLookup" needed by the unpacker.
  // Returns kFalse, when not initialized completely from this input
  Text_t* name=(Char_t*)pPar->GetName();
  Int_t version=findInputVersion(name);
  if (version<=0) {
    pPar->setInputVersion(-1,inputNumber);
    return kFALSE;    // not in ROOT file
  }
  if (pPar->getInputVersion(inputNumber)==version
        && pPar->getInputVersion(inputNumber)!=-1) return kTRUE;
  // needs reinitialization
  HWallLookup* rWall=(HWallLookup*)findContainer(name,version);
  pPar->clear();
  Int_t cell;
  Char_t modType; // type of digital converter (A=ADC, T=TDC, U=undefined)
  Bool_t allFound=kFALSE;
  for(Int_t c=0;c<rWall->getSize();c++) {
    for(Int_t s=0;s<(*rWall)[c].getSize();s++) {
      HWallLookupSlot& slot=(*rWall)[c][s];
      modType=slot.getType();
      for(Int_t i=0;i<slot.getSize();i++) {
        cell=slot[i].getCell();
        if (cell>=0) {
          pPar->fill(c,s,modType,i,cell);
          allFound=kTRUE;
        }
      }
    }
  }
  if (allFound) {
    pPar->setInputVersion(version,inputNumber);
    pPar->setChanged();
    cout<<"WallLookup: module(s) initialized from ROOT file\n";
  }
  return allFound;
}
Bool_t HWallParRootFileIo::read(HWallCalPar* pPar,Int_t* set) {
  // reads and fills the container "WallCalPar" for calibration parameters
  Text_t* name=(Char_t*)pPar->GetName();
  Int_t version=findInputVersion(name);
  if (version==-1) {
   pPar->setInputVersion(-1,inputNumber);
   return kFALSE;    // not in ROOT file
  }
  if (pPar->getInputVersion(inputNumber)==version
        && pPar->getInputVersion(inputNumber)!=-1) return kTRUE;
  // needs reinitialization
  pPar->clear();
  HWallCalPar* r=(HWallCalPar*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  HWallCalPar& rWall=*r;
  HWallCalPar& pWall=*pPar;
  Int_t pWallSize=pWall.getSize();
  if (pWallSize && (rWall.getSize()==pWallSize)) {
    for(Int_t c=0;c<pWallSize;c++) pWall[c].fill(rWall[c]);
  } else allFound=kFALSE;
  if (allFound) {
    pPar->setInputVersion(version,inputNumber);
    pPar->setChanged();
    cout<<"WallCalPar initialized from ROOT file\n";
  } else pPar->setInputVersion(-1,inputNumber);
  delete r;
  return allFound;
}















 hwallparrootfileio.cc:1
 hwallparrootfileio.cc:2
 hwallparrootfileio.cc:3
 hwallparrootfileio.cc:4
 hwallparrootfileio.cc:5
 hwallparrootfileio.cc:6
 hwallparrootfileio.cc:7
 hwallparrootfileio.cc:8
 hwallparrootfileio.cc:9
 hwallparrootfileio.cc:10
 hwallparrootfileio.cc:11
 hwallparrootfileio.cc:12
 hwallparrootfileio.cc:13
 hwallparrootfileio.cc:14
 hwallparrootfileio.cc:15
 hwallparrootfileio.cc:16
 hwallparrootfileio.cc:17
 hwallparrootfileio.cc:18
 hwallparrootfileio.cc:19
 hwallparrootfileio.cc:20
 hwallparrootfileio.cc:21
 hwallparrootfileio.cc:22
 hwallparrootfileio.cc:23
 hwallparrootfileio.cc:24
 hwallparrootfileio.cc:25
 hwallparrootfileio.cc:26
 hwallparrootfileio.cc:27
 hwallparrootfileio.cc:28
 hwallparrootfileio.cc:29
 hwallparrootfileio.cc:30
 hwallparrootfileio.cc:31
 hwallparrootfileio.cc:32
 hwallparrootfileio.cc:33
 hwallparrootfileio.cc:34
 hwallparrootfileio.cc:35
 hwallparrootfileio.cc:36
 hwallparrootfileio.cc:37
 hwallparrootfileio.cc:38
 hwallparrootfileio.cc:39
 hwallparrootfileio.cc:40
 hwallparrootfileio.cc:41
 hwallparrootfileio.cc:42
 hwallparrootfileio.cc:43
 hwallparrootfileio.cc:44
 hwallparrootfileio.cc:45
 hwallparrootfileio.cc:46
 hwallparrootfileio.cc:47
 hwallparrootfileio.cc:48
 hwallparrootfileio.cc:49
 hwallparrootfileio.cc:50
 hwallparrootfileio.cc:51
 hwallparrootfileio.cc:52
 hwallparrootfileio.cc:53
 hwallparrootfileio.cc:54
 hwallparrootfileio.cc:55
 hwallparrootfileio.cc:56
 hwallparrootfileio.cc:57
 hwallparrootfileio.cc:58
 hwallparrootfileio.cc:59
 hwallparrootfileio.cc:60
 hwallparrootfileio.cc:61
 hwallparrootfileio.cc:62
 hwallparrootfileio.cc:63
 hwallparrootfileio.cc:64
 hwallparrootfileio.cc:65
 hwallparrootfileio.cc:66
 hwallparrootfileio.cc:67
 hwallparrootfileio.cc:68
 hwallparrootfileio.cc:69
 hwallparrootfileio.cc:70
 hwallparrootfileio.cc:71
 hwallparrootfileio.cc:72
 hwallparrootfileio.cc:73
 hwallparrootfileio.cc:74
 hwallparrootfileio.cc:75
 hwallparrootfileio.cc:76
 hwallparrootfileio.cc:77
 hwallparrootfileio.cc:78
 hwallparrootfileio.cc:79
 hwallparrootfileio.cc:80
 hwallparrootfileio.cc:81
 hwallparrootfileio.cc:82
 hwallparrootfileio.cc:83
 hwallparrootfileio.cc:84
 hwallparrootfileio.cc:85
 hwallparrootfileio.cc:86
 hwallparrootfileio.cc:87
 hwallparrootfileio.cc:88
 hwallparrootfileio.cc:89
 hwallparrootfileio.cc:90
 hwallparrootfileio.cc:91
 hwallparrootfileio.cc:92
 hwallparrootfileio.cc:93
 hwallparrootfileio.cc:94
 hwallparrootfileio.cc:95
 hwallparrootfileio.cc:96
 hwallparrootfileio.cc:97
 hwallparrootfileio.cc:98
 hwallparrootfileio.cc:99
 hwallparrootfileio.cc:100
 hwallparrootfileio.cc:101
 hwallparrootfileio.cc:102
 hwallparrootfileio.cc:103
 hwallparrootfileio.cc:104
 hwallparrootfileio.cc:105
 hwallparrootfileio.cc:106
 hwallparrootfileio.cc:107
 hwallparrootfileio.cc:108
 hwallparrootfileio.cc:109
 hwallparrootfileio.cc:110
 hwallparrootfileio.cc:111
 hwallparrootfileio.cc:112
 hwallparrootfileio.cc:113
 hwallparrootfileio.cc:114
 hwallparrootfileio.cc:115
 hwallparrootfileio.cc:116
 hwallparrootfileio.cc:117
 hwallparrootfileio.cc:118
 hwallparrootfileio.cc:119
 hwallparrootfileio.cc:120
 hwallparrootfileio.cc:121
 hwallparrootfileio.cc:122
 hwallparrootfileio.cc:123
 hwallparrootfileio.cc:124
 hwallparrootfileio.cc:125
 hwallparrootfileio.cc:126
 hwallparrootfileio.cc:127
 hwallparrootfileio.cc:128
 hwallparrootfileio.cc:129
 hwallparrootfileio.cc:130
 hwallparrootfileio.cc:131
 hwallparrootfileio.cc:132
 hwallparrootfileio.cc:133
 hwallparrootfileio.cc:134
 hwallparrootfileio.cc:135
 hwallparrootfileio.cc:136