ROOT logo
//*-- AUTHOR : Ilse Koenig
//*-- Modified : 03/12/2009 by I.Koenig

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

#include "hades.h"
#include "hparrootfileio.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hstart2calpar.h"
#include "hstart2detector.h"
#include "hstart2trb2lookup.h"
#include "hstart2geompar.h"
#include "hstart2trb3lookup.h"
#include "hstart2trb3calpar.h"
#include "hstartparrootfileio.h"

#include <iostream>

using namespace std;

ClassImp(HStartParRootFileIo)

HStartParRootFileIo::HStartParRootFileIo(HParRootFile* f) : HDetParRootFileIo(f)
{
   // constructor sets the name of the detector I/O "HStartParIo"
   fName = "HStartParIo";
   Int_t n = gHades->getSetup()->getDetector("Start")->getMaxModules();
   initModules = new TArrayI(n);
}


HStartParRootFileIo::~HStartParRootFileIo()
{
   // destructor
   if (modulesFound) {
      delete modulesFound;
      modulesFound = 0;
   }
   if (initModules) {
      delete initModules;
      initModules = 0;
   }
}

Bool_t HStartParRootFileIo::init(HParSet* pPar, Int_t* set)
{
   // Initializes a container called by name, but only the modules defined
   //   in the array 'set.
   // 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("Start");
   const Text_t* name = pPar->GetName();
   if (pFile) {
      if (strcmp(name, "Start2Trb2Lookup") == 0) return HDetParRootFileIo::read(pPar);
      if (strcmp(name, "Start2Calpar") == 0)     return read((HStart2Calpar*)pPar, set);
      if (strcmp(name, "Start2GeomPar")==0)
           return HDetParRootFileIo::read((HStart2GeomPar*)pPar,set);
      if (strcmp(name, "Start2Trb3Lookup") == 0) return HDetParRootFileIo::read(pPar);
      if (strcmp(name, "Start2Trb3Calpar") == 0) return HDetParRootFileIo::read(pPar);
   }
   cerr << "initialization of " << name << " not possible from ROOT file!" << endl;
   return kFALSE;
}

Bool_t HStartParRootFileIo::read(HStart2Calpar* pPar, Int_t* set)
{
   // Reads and fills the container "Start2CalPar"
   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
   pPar->clear();
   HStart2Calpar* rStart = (HStart2Calpar*)findContainer(name, version);
   Bool_t allFound = kTRUE;
   initModules->Reset();
   for (Int_t m = 0; m < pPar->getSize(); m++) {
      if (set[m]) {
         HStart2CalparMod& r = (*rStart)[m];
         HStart2CalparMod& p = (*pPar)[m];
         Int_t pModSize = p.getSize();
         if (pModSize && r.getSize() == pModSize) {
            for (Int_t c = 0; c < pModSize; c++) p[c].fill(r[c]);
            initModules->AddAt(m + 1, m);
         } else allFound = kFALSE;
      }
   }
   if (allFound) {
      pPar->setInputVersion(version, inputNumber);
      pPar->setChanged();
      cout << name << " initialized from ROOT file" << endl;
   }
   delete rStart;
   return allFound;
}

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