ROOT logo
//_HADES_CLASS_DESCRIPTION
////////////////////////////////////////////////////////////////////
//  HPionTrackerParRootFileIo
//
//  Class for PionTracker 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 "hpiontrackerparrootfileio.h"
#include "hades.h"
#include "hspectrometer.h"
#include "hpiontrackerdetector.h"
#include "hparset.h"
#include "hpiontrackertrb3lookup.h"
#include "hpiontrackercalpar.h"
#include <iostream>
#include <iomanip>

ClassImp(HPionTrackerParRootFileIo)

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

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

Bool_t HPionTrackerParRootFileIo::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("PionTracker");
  const Text_t* name = pPar->GetName();
  if (NULL != pFile) {
    if (0 == strncmp(name, "PionTrackerTrb3Lookup", strlen("PionTrackerTrb3Lookup"))) {
      return HDetParRootFileIo::read(pPar);
    }
    if (0 == strncmp(name, "PionTrackerCalPar", strlen("PionTrackerCalPar"))) {
      return read((HPionTrackerCalPar*)pPar, set);
    }
  }
  Error("init(HParSet*,Int_t*)","Initialization of %s not possible from ROOT file",name);
  return kFALSE;
}

Bool_t HPionTrackerParRootFileIo::read(HPionTrackerCalPar* pPar, Int_t* set) {
  // Reads and fills the container "PionTrackerCalPar"
  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();
  HPionTrackerCalPar* rPar = (HPionTrackerCalPar*)findContainer(name, version);
  Bool_t allFound = kTRUE;
  initModules->Reset();
  for (Int_t m = 0; m < pPar->getSize(); m++) {
    if (set[m]) {
      HPionTrackerCalParMod& r = (*rPar)[m];
      HPionTrackerCalParMod& 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 rPar;
  return allFound;
}
 hpiontrackerparrootfileio.cc:1
 hpiontrackerparrootfileio.cc:2
 hpiontrackerparrootfileio.cc:3
 hpiontrackerparrootfileio.cc:4
 hpiontrackerparrootfileio.cc:5
 hpiontrackerparrootfileio.cc:6
 hpiontrackerparrootfileio.cc:7
 hpiontrackerparrootfileio.cc:8
 hpiontrackerparrootfileio.cc:9
 hpiontrackerparrootfileio.cc:10
 hpiontrackerparrootfileio.cc:11
 hpiontrackerparrootfileio.cc:12
 hpiontrackerparrootfileio.cc:13
 hpiontrackerparrootfileio.cc:14
 hpiontrackerparrootfileio.cc:15
 hpiontrackerparrootfileio.cc:16
 hpiontrackerparrootfileio.cc:17
 hpiontrackerparrootfileio.cc:18
 hpiontrackerparrootfileio.cc:19
 hpiontrackerparrootfileio.cc:20
 hpiontrackerparrootfileio.cc:21
 hpiontrackerparrootfileio.cc:22
 hpiontrackerparrootfileio.cc:23
 hpiontrackerparrootfileio.cc:24
 hpiontrackerparrootfileio.cc:25
 hpiontrackerparrootfileio.cc:26
 hpiontrackerparrootfileio.cc:27
 hpiontrackerparrootfileio.cc:28
 hpiontrackerparrootfileio.cc:29
 hpiontrackerparrootfileio.cc:30
 hpiontrackerparrootfileio.cc:31
 hpiontrackerparrootfileio.cc:32
 hpiontrackerparrootfileio.cc:33
 hpiontrackerparrootfileio.cc:34
 hpiontrackerparrootfileio.cc:35
 hpiontrackerparrootfileio.cc:36
 hpiontrackerparrootfileio.cc:37
 hpiontrackerparrootfileio.cc:38
 hpiontrackerparrootfileio.cc:39
 hpiontrackerparrootfileio.cc:40
 hpiontrackerparrootfileio.cc:41
 hpiontrackerparrootfileio.cc:42
 hpiontrackerparrootfileio.cc:43
 hpiontrackerparrootfileio.cc:44
 hpiontrackerparrootfileio.cc:45
 hpiontrackerparrootfileio.cc:46
 hpiontrackerparrootfileio.cc:47
 hpiontrackerparrootfileio.cc:48
 hpiontrackerparrootfileio.cc:49
 hpiontrackerparrootfileio.cc:50
 hpiontrackerparrootfileio.cc:51
 hpiontrackerparrootfileio.cc:52
 hpiontrackerparrootfileio.cc:53
 hpiontrackerparrootfileio.cc:54
 hpiontrackerparrootfileio.cc:55
 hpiontrackerparrootfileio.cc:56
 hpiontrackerparrootfileio.cc:57
 hpiontrackerparrootfileio.cc:58
 hpiontrackerparrootfileio.cc:59
 hpiontrackerparrootfileio.cc:60
 hpiontrackerparrootfileio.cc:61
 hpiontrackerparrootfileio.cc:62
 hpiontrackerparrootfileio.cc:63
 hpiontrackerparrootfileio.cc:64
 hpiontrackerparrootfileio.cc:65
 hpiontrackerparrootfileio.cc:66
 hpiontrackerparrootfileio.cc:67
 hpiontrackerparrootfileio.cc:68
 hpiontrackerparrootfileio.cc:69
 hpiontrackerparrootfileio.cc:70
 hpiontrackerparrootfileio.cc:71
 hpiontrackerparrootfileio.cc:72
 hpiontrackerparrootfileio.cc:73
 hpiontrackerparrootfileio.cc:74
 hpiontrackerparrootfileio.cc:75
 hpiontrackerparrootfileio.cc:76
 hpiontrackerparrootfileio.cc:77
 hpiontrackerparrootfileio.cc:78
 hpiontrackerparrootfileio.cc:79
 hpiontrackerparrootfileio.cc:80
 hpiontrackerparrootfileio.cc:81
 hpiontrackerparrootfileio.cc:82
 hpiontrackerparrootfileio.cc:83
 hpiontrackerparrootfileio.cc:84
 hpiontrackerparrootfileio.cc:85
 hpiontrackerparrootfileio.cc:86
 hpiontrackerparrootfileio.cc:87
 hpiontrackerparrootfileio.cc:88
 hpiontrackerparrootfileio.cc:89
 hpiontrackerparrootfileio.cc:90
 hpiontrackerparrootfileio.cc:91
 hpiontrackerparrootfileio.cc:92