ROOT logo
//*-- AUTHOR : Ilse Koenig
//*-- Modified : 19/01/2001 by I. Koenig

//_HADES_CLASS_DESCRIPTION 
/////////////////////////////////////////////////////////////
// HMdcParRootFileIo
//
//  Class for Mdc parameter input/output from/into ROOT file
//
//  It is derived from the base class HDetParRootFileIo and
//  inherits from it basic functions e.g. write(...)
//
// This class replaces the former class HMdcParFileIo.
/////////////////////////////////////////////////////////////
using namespace std;
#include "hmdcparrootfileio.h"
#include "hparrootfileio.h"
#include "hades.h"
#include "hmdcrawstruct.h"
#include "hmdcgeomstruct.h"
#include "hmdccalparraw.h"
#include "hmdctdcthreshold.h"
#include "hmdctdcchannel.h"
#include "hmdccal2parsim.h"
#include "hmdccelleff.h"
#include "hmdclookupgeom.h"
#include "hmdclayergeompar.h"
#include "hmdcgeompar.h"
#include "hmdctimecut.h"
#include <iostream> 
#include <iomanip>


ClassImp(HMdcParRootFileIo)

HMdcParRootFileIo::HMdcParRootFileIo(HParRootFile* f) : HDetParRootFileIo(f) {
  // constructor sets the name of the detector I/O "HMdcParIo"
  fName="HMdcParIo";
  initModules=new TArrayI(24);
  initModuleTypes=new TArrayI(4);
}


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


Bool_t HMdcParRootFileIo::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("Mdc");
  const Text_t* name=pPar->GetName();
  if (pFile) {
    if (strcmp(name,"MdcRawStruct")==0) return read((HMdcRawStruct*)pPar,set);
    if (strcmp(name,"MdcGeomStruct")==0) return read((HMdcGeomStruct*)pPar,set);
    if (strncmp(name,"MdcCalParRaw",strlen("MdcCalParRaw"))==0) return read((HMdcCalParRaw*)pPar,set);
    if (strncmp(name,"MdcTdcThreshold",strlen("MdcTdcThreshold"))==0) return read((HMdcTdcThreshold*)pPar,set);
    if (strncmp(name,"MdcTdcChannel",strlen("MdcTdcChannel"))==0) return read((HMdcTdcChannel*)pPar,set);
    if (strcmp(name,"MdcCal2ParSim")==0) return read((HMdcCal2ParSim*)pPar,set);
    if (strncmp(name,"MdcCellEff",strlen("MdcCellEff"))==0) return read((HMdcCellEff*)pPar,set);
    if (strncmp(name,"MdcTimeCut",strlen("MdcTimeCut"))==0) return read((HMdcTimeCut*)pPar,set);
    if (strcmp(name,"MdcLookupGeom")==0) return read((HMdcLookupGeom*)pPar,set);
    if (strcmp(name,"MdcLayerGeomPar")==0) return read((HMdcLayerGeomPar*)pPar,set);
    if (strcmp(name,"MdcGeomPar")==0) return HDetParRootFileIo::read((HMdcGeomPar*)pPar,set);
  }
  Error("HMdcParRootFileIo::init()","initialization of %s not possible from ROOT file!",name);
  return kFALSE;
}


Bool_t HMdcParRootFileIo::read(HMdcRawStruct* pPar,Int_t* set) {
  // reads and fills the container "MdcRawStruct"
  // ( names of the motherboards (characterizes the position) and
  //   the maximum number of TDCs on each of it )
  Text_t* name=(Char_t*)pPar->GetName();
  Int_t version=getMaxVersion(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
  HMdcRawStruct* r=(HMdcRawStruct*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModules->Reset();
  HMdcRawStruct& rMdc=*r;
  HMdcRawStruct& pMdc=*pPar;
  for(Int_t s=0;s<pMdc.getSize();s++) {
    HMdcRawSecStru& rSec=rMdc[s];
    HMdcRawSecStru& pSec=pMdc[s];
    for(Int_t m=0;m<pSec.getSize();m++) {
      HMdcRawModStru& rMod=rSec[m];
      HMdcRawModStru& pMod=pSec[m];
      pos=s*4+m;
      if (set[pos]) {
        if (modulesFound->At(pos)) {
          for(Int_t n=0;n<pMod.getSize();n++) {
            pMod[n].SetName(rMod[n].GetName());
            pMod[n].setNTdcs(rMod[n].getNTdcs());
          }
          set[pos]=0;
          initModules->AddAt(pos+1,pos);
        } else allFound=kFALSE;
      }
    }
  }
  pPar->setInputVersion(version,inputNumber);
  pPar->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);

  delete r;
  return allFound;
}


Bool_t HMdcParRootFileIo::read(HMdcGeomStruct* pPar,Int_t* set) {
  // reads and fills the container "MdcGeomStruct"
  // (number of the cells in each layer)
  Text_t* name=(Char_t*)pPar->GetName();
  Int_t version=getMaxVersion(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
  HMdcGeomStruct* r=(HMdcGeomStruct*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModules->Reset();
  HMdcGeomStruct& pP=*pPar;
  HMdcGeomStruct& rP=*r;
  for(Int_t i=0;i<pP.getSize();i++) {
    HMdcGeomSecStru& pSec=pP[i];
    HMdcGeomSecStru& rSec=rP[i];
    for(Int_t j=0;j<pSec.getSize();j++) {
      pos=i*4+j;
      if (set[pos]) {
        if (modulesFound->At(pos)) {
          HMdcGeomModStru& pMod=pSec[j];
          HMdcGeomModStru& rMod=rSec[j];
          for(Int_t k=0;k<pMod.getSize();k++) pMod.fill(k,rMod[k]);
          set[pos]=0;
          initModules->AddAt(pos+1,pos);
        } else allFound=kFALSE;
      }
    }
  }
  pPar->setInputVersion(version,inputNumber);
  pPar->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);

  delete r;
  return allFound;
}


Bool_t HMdcParRootFileIo::read(HMdcCalParRaw* pCalPar,Int_t* set) {
  // reads and fills the container "MdcCalParRaw" for calibration parameters
  // on raw level
  Text_t* name=(Char_t*)pCalPar->GetName();
  Int_t version=findInputVersion(name);
   if (version<=0)
  {
      pCalPar->setInputVersion(-1,inputNumber);
      return kFALSE;
  }    // not in ROOT file
  if (pCalPar->getInputVersion(inputNumber)==version
        && pCalPar->getInputVersion(inputNumber)!=-1) return kTRUE;
  // needs reinitialization
  HMdcCalParRaw* r=(HMdcCalParRaw*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModules->Reset();
  HMdcCalParRaw& rMdc=*r;
  HMdcCalParRaw& pMdc=*pCalPar;
  for(Int_t s=0;s<pMdc.getSize();s++) {
    HMdcCalParRawSec& rSec=rMdc[s];
    HMdcCalParRawSec& pSec=pMdc[s];
    for(Int_t m=0;m<pSec.getSize();m++) {
      HMdcCalParRawMod& rMod=rSec[m];
      HMdcCalParRawMod& pMod=pSec[m];
      pos=s*4+m;
      if (set[pos]) {
        for(Int_t l=0;l<pMod.getSize();l++) {
          HMdcCalParMbo& rMbo=rMod[l];
          HMdcCalParMbo& pMbo=pMod[l];
          Int_t pMboSize=pMbo.getSize();
          if (pMboSize>0) {
            if (rMbo.getSize()==pMboSize) {
              for(Int_t c=0;c<pMboSize;c++) pMbo[c].fill(rMbo[c]);
              set[pos]=0;
              initModules->AddAt(pos+1,pos);
            } else allFound=kFALSE;
          }
        }
      }
    }
  }
  pCalPar->setInputVersion(version,inputNumber);
  pCalPar->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);

  delete r;
  return allFound;
}

Bool_t HMdcParRootFileIo::read(HMdcTdcThreshold* pCalPar,Int_t* set) {
  // reads and fills the container "MdcTdcThreshold" for threshold parameters of Mdc
  Text_t* name=(Char_t*)pCalPar->GetName();
  Int_t version=findInputVersion(name);
   if (version<=0)
  {
      pCalPar->setInputVersion(-1,inputNumber);
      return kFALSE;
  }    // not in ROOT file
  if (pCalPar->getInputVersion(inputNumber)==version
        && pCalPar->getInputVersion(inputNumber)!=-1) return kTRUE;
  // needs reinitialization
  HMdcTdcThreshold* r=(HMdcTdcThreshold*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModules->Reset();
  HMdcTdcThreshold& rMdc=*r;
  HMdcTdcThreshold& pMdc=*pCalPar;
  for(Int_t s=0;s<pMdc.getSize();s++) {
    HMdcTdcThresholdSec& rSec=rMdc[s];
    HMdcTdcThresholdSec& pSec=pMdc[s];
    for(Int_t m=0;m<pSec.getSize();m++) {
      HMdcTdcThresholdMod& rMod=rSec[m];
      HMdcTdcThresholdMod& pMod=pSec[m];
      pos=s*4+m;
      if (set[pos]) {
        for(Int_t l=0;l<pMod.getSize();l++) {
          HMdcTdcThresholdMbo& rMbo=rMod[l];
          HMdcTdcThresholdMbo& pMbo=pMod[l];
          Int_t pMboSize=pMbo.getSize();
          if (pMboSize>0) {
            if (rMbo.getSize()==pMboSize) {
              for(Int_t c=0;c<pMboSize;c++) pMbo[c].fill(rMbo[c]);
              set[pos]=0;
              initModules->AddAt(pos+1,pos);
            } else allFound=kFALSE;
          }
        }
      }
    }
  }
  pCalPar->setInputVersion(version,inputNumber);
  pCalPar->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);

  delete r;
  return allFound;
}

Bool_t HMdcParRootFileIo::read(HMdcTdcChannel* pCalPar,Int_t* set) {
  // reads and fills the container "MdcTdcChannel" for threshold parameters of Mdc
  Text_t* name=(Char_t*)pCalPar->GetName();
  Int_t version=findInputVersion(name);
   if (version<=0)
  {
      pCalPar->setInputVersion(-1,inputNumber);
      return kFALSE;
  }    // not in ROOT file
  if (pCalPar->getInputVersion(inputNumber)==version
        && pCalPar->getInputVersion(inputNumber)!=-1) return kTRUE;
  // needs reinitialization
  HMdcTdcChannel* r=(HMdcTdcChannel*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModules->Reset();
  HMdcTdcChannel& rMdc=*r;
  HMdcTdcChannel& pMdc=*pCalPar;
  for(Int_t s=0;s<pMdc.getSize();s++) {
    HMdcTdcChannelSec& rSec=rMdc[s];
    HMdcTdcChannelSec& pSec=pMdc[s];
    for(Int_t m=0;m<pSec.getSize();m++) {
      HMdcTdcChannelMod& rMod=rSec[m];
      HMdcTdcChannelMod& pMod=pSec[m];
      pos=s*4+m;
      if (set[pos]) {
        for(Int_t l=0;l<pMod.getSize();l++) {
          HMdcTdcChannelMbo& rMbo=rMod[l];
          HMdcTdcChannelMbo& pMbo=pMod[l];
          Int_t pMboSize=pMbo.getSize();
          if (pMboSize>0) {
            if (rMbo.getSize()==pMboSize) {
              for(Int_t c=0;c<pMboSize;c++) pMbo[c].fill(rMbo[c]);
              set[pos]=0;
              initModules->AddAt(pos+1,pos);
            } else allFound=kFALSE;
          }
        }
      }
    }
  }
  pCalPar->setInputVersion(version,inputNumber);
  pCalPar->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);

  delete r;
  return allFound;
}

Bool_t HMdcParRootFileIo::read(HMdcTimeCut* pTimeCut,Int_t* set) {
  // reads and fills the container "MdcTimeCut" for time cut parameters
  Text_t* name=(Char_t*)pTimeCut->GetName();
  Int_t version=findInputVersion(name);
   if (version<=0)
  {
      pTimeCut->setInputVersion(-1,inputNumber);
      return kFALSE;
  }    // not in ROOT file
  if (pTimeCut->getInputVersion(inputNumber)==version
        && pTimeCut->getInputVersion(inputNumber)!=-1) return kTRUE;
  // needs reinitialization
  HMdcTimeCut* r=(HMdcTimeCut*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModules->Reset();

  HMdcTimeCut& rMdc=*r;
  HMdcTimeCut& pMdc=*pTimeCut;

  for(Int_t s=0;s<pMdc.getSize();s++) {
    HMdcTimeCutSec& rSec=rMdc[s];
    HMdcTimeCutSec& pSec=pMdc[s];
    for(Int_t m=0;m<pSec.getSize();m++) {
      HMdcTimeCutMod& rMod=rSec[m];
      HMdcTimeCutMod& pMod=pSec[m];
      pos=s*4+m;
      if (set[pos]) {
	    pMod.fill(rMod);
            set[pos]=0;
            initModules->AddAt(pos+1,pos);
      }
    }
  }
  pTimeCut->setInputVersion(version,inputNumber);
  pTimeCut->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);

  delete r;
  return allFound;
}
Bool_t HMdcParRootFileIo::read(HMdcCal2ParSim* pCalPar,Int_t* set) {
  // reads and fills the container "MdcCal2ParSim" for calibration parameters
  Text_t* name=(Char_t*)pCalPar->GetName();
  Int_t version=findInputVersion(name);
   if (version<=0)
  {
      pCalPar->setInputVersion(-1,inputNumber);
      return kFALSE;
  }    // not in ROOT file
  if (pCalPar->getInputVersion(inputNumber)==version
        && pCalPar->getInputVersion(inputNumber)!=-1) return kTRUE;
  // needs reinitialization
  HMdcCal2ParSim* r=(HMdcCal2ParSim*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModules->Reset();
  HMdcCal2ParSim& rMdc=*r;
  HMdcCal2ParSim& pMdc=*pCalPar;
  for(Int_t s=0;s<pMdc.getSize();s++) {
    HMdcCal2ParSecSim& rSec=rMdc[s];
    HMdcCal2ParSecSim& pSec=pMdc[s];
    for(Int_t m=0;m<pSec.getSize();m++) {
      HMdcCal2ParModSim& rMod=rSec[m];
      HMdcCal2ParModSim& pMod=pSec[m];
      pos=s*4+m;
      if (set[pos]) {
        for(Int_t l=0;l<18;l++) {
          HMdcCal2ParAngleSim& rAngle=rMod[l];
          HMdcCal2ParAngleSim& pAngle=pMod[l];
            pAngle.fillTime1(rAngle);
            pAngle.fillTime2(rAngle);
            pAngle.fillTime1Error(rAngle);
            pAngle.fillTime2Error(rAngle);
	    set[pos]=0;
            initModules->AddAt(pos+1,pos);
        }
      }
    }
  }
  pCalPar->setInputVersion(version,inputNumber);
  pCalPar->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);

  delete r;
  return allFound;
}

Bool_t HMdcParRootFileIo::read(HMdcCellEff* pCellEff,Int_t* set) {
  // reads and fills the container "MdcCellEffPar" for efficiency cuts of the digitizer
  Text_t* name=(Char_t*)pCellEff->GetName();
  Int_t version=findInputVersion(name);
   if (version<=0)
  {
      pCellEff->setInputVersion(-1,inputNumber);
      return kFALSE;
  }    // not in ROOT file
  if (pCellEff->getInputVersion(inputNumber)==version
        && pCellEff->getInputVersion(inputNumber)!=-1) return kTRUE;
  // needs reinitialization
  HMdcCellEff* r=(HMdcCellEff*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModuleTypes->Reset();
  HMdcCellEff& rMdc=*r;
  HMdcCellEff& pMdc=*pCellEff;
  for(Int_t m=0;m<pMdc.getSize();m++) {
      HMdcCellEffMod& rMod=rMdc[m];
      HMdcCellEffMod& pMod=pMdc[m];
      pos=m;
      if (set[pos]) {
	  for(Int_t l=0;l<18;l++) {
	      HMdcCellEffAngle& rAngle=rMod[l];
	      HMdcCellEffAngle& pAngle=pMod[l];
	      pAngle.fill(rAngle);
	      set[pos]=0;
	      initModuleTypes->AddAt(pos+1,pos);
	  }
      }
  }
  pCellEff->setInputVersion(version,inputNumber);
  pCellEff->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);
  delete r;
  return allFound;
}

Bool_t HMdcParRootFileIo::read(HMdcLookupGeom* pPar,Int_t* set) {
  // reads and fills the container "MdcLookupGeom" for mapping of
  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
  HMdcLookupGeom* r=(HMdcLookupGeom*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModules->Reset();
  HMdcLookupGeom& rMdc=*r;
  HMdcLookupGeom& pMdc=*pPar;
  for(Int_t s=0;s<pMdc.getSize();s++) {
    HMdcLookupGSec& rSec=rMdc[s];
    HMdcLookupGSec& pSec=pMdc[s];
    for(Int_t m=0;m<pSec.getSize();m++) {
      HMdcLookupGMod& rMod=rSec[m];
      HMdcLookupGMod& pMod=pSec[m];
      pos=s*4+m;
      if (set[pos]) {
        for(Int_t l=0;l<pMod.getSize();l++) {
          HMdcLookupMoth& rMoth=rMod[l];
          HMdcLookupMoth& pMoth=pMod[l];
          Int_t pMothSize=pMoth.getSize();
          if (pMothSize>0) {
            if (rMoth.getSize()==pMothSize) {
              for(Int_t c=0;c<pMothSize;c++) pMoth[c].fill(rMoth[c]);
              set[pos]=0;
              initModules->AddAt(pos+1,pos);
            } else allFound=kFALSE;
          }
        }
      }
    }
  }
  pPar->setInputVersion(version,inputNumber);
  pPar->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);

  delete r;
  return allFound;
}

Bool_t HMdcParRootFileIo::read(HMdcLayerGeomPar* pPar,Int_t* set) {
  // reads and fills the container "MdcLayerGeomPar"
  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
  HMdcLayerGeomPar* r=(HMdcLayerGeomPar*)findContainer(name,version);
  Bool_t allFound=kTRUE;
  Int_t pos;
  initModules->Reset();
  HMdcLayerGeomPar& rMdc=*r;
  HMdcLayerGeomPar& pMdc=*pPar;
  for(Int_t s=0;s<6;s++) {
    HMdcLayerGeomParSec& rSec=rMdc[s];
    HMdcLayerGeomParSec& pSec=pMdc[s];
    for(Int_t m=0;m<4;m++) {
      HMdcLayerGeomParMod& rMod=rSec[m];
      HMdcLayerGeomParMod& pMod=pSec[m];
      pos=s*4+m;
      if (set[pos]) {
        Int_t pModSize=pMod.getSize();
        if (pModSize && rMod.getSize()==pModSize) {
          for(Int_t l=0;l<pModSize;l++) pMod[l].fill(rMod[l]);
          set[pos]=0;
          initModules->AddAt(pos+1,pos);
        } else allFound=kFALSE;
      }
    }
  }
  pPar->setInputVersion(version,inputNumber);
  pPar->setChanged();

  Char_t message[200];
  sprintf(message,"%s%s",name,": module(s) initialized from Root file ");
  printInfo(message);

  delete r;
  return allFound;
}
 hmdcparrootfileio.cc:1
 hmdcparrootfileio.cc:2
 hmdcparrootfileio.cc:3
 hmdcparrootfileio.cc:4
 hmdcparrootfileio.cc:5
 hmdcparrootfileio.cc:6
 hmdcparrootfileio.cc:7
 hmdcparrootfileio.cc:8
 hmdcparrootfileio.cc:9
 hmdcparrootfileio.cc:10
 hmdcparrootfileio.cc:11
 hmdcparrootfileio.cc:12
 hmdcparrootfileio.cc:13
 hmdcparrootfileio.cc:14
 hmdcparrootfileio.cc:15
 hmdcparrootfileio.cc:16
 hmdcparrootfileio.cc:17
 hmdcparrootfileio.cc:18
 hmdcparrootfileio.cc:19
 hmdcparrootfileio.cc:20
 hmdcparrootfileio.cc:21
 hmdcparrootfileio.cc:22
 hmdcparrootfileio.cc:23
 hmdcparrootfileio.cc:24
 hmdcparrootfileio.cc:25
 hmdcparrootfileio.cc:26
 hmdcparrootfileio.cc:27
 hmdcparrootfileio.cc:28
 hmdcparrootfileio.cc:29
 hmdcparrootfileio.cc:30
 hmdcparrootfileio.cc:31
 hmdcparrootfileio.cc:32
 hmdcparrootfileio.cc:33
 hmdcparrootfileio.cc:34
 hmdcparrootfileio.cc:35
 hmdcparrootfileio.cc:36
 hmdcparrootfileio.cc:37
 hmdcparrootfileio.cc:38
 hmdcparrootfileio.cc:39
 hmdcparrootfileio.cc:40
 hmdcparrootfileio.cc:41
 hmdcparrootfileio.cc:42
 hmdcparrootfileio.cc:43
 hmdcparrootfileio.cc:44
 hmdcparrootfileio.cc:45
 hmdcparrootfileio.cc:46
 hmdcparrootfileio.cc:47
 hmdcparrootfileio.cc:48
 hmdcparrootfileio.cc:49
 hmdcparrootfileio.cc:50
 hmdcparrootfileio.cc:51
 hmdcparrootfileio.cc:52
 hmdcparrootfileio.cc:53
 hmdcparrootfileio.cc:54
 hmdcparrootfileio.cc:55
 hmdcparrootfileio.cc:56
 hmdcparrootfileio.cc:57
 hmdcparrootfileio.cc:58
 hmdcparrootfileio.cc:59
 hmdcparrootfileio.cc:60
 hmdcparrootfileio.cc:61
 hmdcparrootfileio.cc:62
 hmdcparrootfileio.cc:63
 hmdcparrootfileio.cc:64
 hmdcparrootfileio.cc:65
 hmdcparrootfileio.cc:66
 hmdcparrootfileio.cc:67
 hmdcparrootfileio.cc:68
 hmdcparrootfileio.cc:69
 hmdcparrootfileio.cc:70
 hmdcparrootfileio.cc:71
 hmdcparrootfileio.cc:72
 hmdcparrootfileio.cc:73
 hmdcparrootfileio.cc:74
 hmdcparrootfileio.cc:75
 hmdcparrootfileio.cc:76
 hmdcparrootfileio.cc:77
 hmdcparrootfileio.cc:78
 hmdcparrootfileio.cc:79
 hmdcparrootfileio.cc:80
 hmdcparrootfileio.cc:81
 hmdcparrootfileio.cc:82
 hmdcparrootfileio.cc:83
 hmdcparrootfileio.cc:84
 hmdcparrootfileio.cc:85
 hmdcparrootfileio.cc:86
 hmdcparrootfileio.cc:87
 hmdcparrootfileio.cc:88
 hmdcparrootfileio.cc:89
 hmdcparrootfileio.cc:90
 hmdcparrootfileio.cc:91
 hmdcparrootfileio.cc:92
 hmdcparrootfileio.cc:93
 hmdcparrootfileio.cc:94
 hmdcparrootfileio.cc:95
 hmdcparrootfileio.cc:96
 hmdcparrootfileio.cc:97
 hmdcparrootfileio.cc:98
 hmdcparrootfileio.cc:99
 hmdcparrootfileio.cc:100
 hmdcparrootfileio.cc:101
 hmdcparrootfileio.cc:102
 hmdcparrootfileio.cc:103
 hmdcparrootfileio.cc:104
 hmdcparrootfileio.cc:105
 hmdcparrootfileio.cc:106
 hmdcparrootfileio.cc:107
 hmdcparrootfileio.cc:108
 hmdcparrootfileio.cc:109
 hmdcparrootfileio.cc:110
 hmdcparrootfileio.cc:111
 hmdcparrootfileio.cc:112
 hmdcparrootfileio.cc:113
 hmdcparrootfileio.cc:114
 hmdcparrootfileio.cc:115
 hmdcparrootfileio.cc:116
 hmdcparrootfileio.cc:117
 hmdcparrootfileio.cc:118
 hmdcparrootfileio.cc:119
 hmdcparrootfileio.cc:120
 hmdcparrootfileio.cc:121
 hmdcparrootfileio.cc:122
 hmdcparrootfileio.cc:123
 hmdcparrootfileio.cc:124
 hmdcparrootfileio.cc:125
 hmdcparrootfileio.cc:126
 hmdcparrootfileio.cc:127
 hmdcparrootfileio.cc:128
 hmdcparrootfileio.cc:129
 hmdcparrootfileio.cc:130
 hmdcparrootfileio.cc:131
 hmdcparrootfileio.cc:132
 hmdcparrootfileio.cc:133
 hmdcparrootfileio.cc:134
 hmdcparrootfileio.cc:135
 hmdcparrootfileio.cc:136
 hmdcparrootfileio.cc:137
 hmdcparrootfileio.cc:138
 hmdcparrootfileio.cc:139
 hmdcparrootfileio.cc:140
 hmdcparrootfileio.cc:141
 hmdcparrootfileio.cc:142
 hmdcparrootfileio.cc:143
 hmdcparrootfileio.cc:144
 hmdcparrootfileio.cc:145
 hmdcparrootfileio.cc:146
 hmdcparrootfileio.cc:147
 hmdcparrootfileio.cc:148
 hmdcparrootfileio.cc:149
 hmdcparrootfileio.cc:150
 hmdcparrootfileio.cc:151
 hmdcparrootfileio.cc:152
 hmdcparrootfileio.cc:153
 hmdcparrootfileio.cc:154
 hmdcparrootfileio.cc:155
 hmdcparrootfileio.cc:156
 hmdcparrootfileio.cc:157
 hmdcparrootfileio.cc:158
 hmdcparrootfileio.cc:159
 hmdcparrootfileio.cc:160
 hmdcparrootfileio.cc:161
 hmdcparrootfileio.cc:162
 hmdcparrootfileio.cc:163
 hmdcparrootfileio.cc:164
 hmdcparrootfileio.cc:165
 hmdcparrootfileio.cc:166
 hmdcparrootfileio.cc:167
 hmdcparrootfileio.cc:168
 hmdcparrootfileio.cc:169
 hmdcparrootfileio.cc:170
 hmdcparrootfileio.cc:171
 hmdcparrootfileio.cc:172
 hmdcparrootfileio.cc:173
 hmdcparrootfileio.cc:174
 hmdcparrootfileio.cc:175
 hmdcparrootfileio.cc:176
 hmdcparrootfileio.cc:177
 hmdcparrootfileio.cc:178
 hmdcparrootfileio.cc:179
 hmdcparrootfileio.cc:180
 hmdcparrootfileio.cc:181
 hmdcparrootfileio.cc:182
 hmdcparrootfileio.cc:183
 hmdcparrootfileio.cc:184
 hmdcparrootfileio.cc:185
 hmdcparrootfileio.cc:186
 hmdcparrootfileio.cc:187
 hmdcparrootfileio.cc:188
 hmdcparrootfileio.cc:189
 hmdcparrootfileio.cc:190
 hmdcparrootfileio.cc:191
 hmdcparrootfileio.cc:192
 hmdcparrootfileio.cc:193
 hmdcparrootfileio.cc:194
 hmdcparrootfileio.cc:195
 hmdcparrootfileio.cc:196
 hmdcparrootfileio.cc:197
 hmdcparrootfileio.cc:198
 hmdcparrootfileio.cc:199
 hmdcparrootfileio.cc:200
 hmdcparrootfileio.cc:201
 hmdcparrootfileio.cc:202
 hmdcparrootfileio.cc:203
 hmdcparrootfileio.cc:204
 hmdcparrootfileio.cc:205
 hmdcparrootfileio.cc:206
 hmdcparrootfileio.cc:207
 hmdcparrootfileio.cc:208
 hmdcparrootfileio.cc:209
 hmdcparrootfileio.cc:210
 hmdcparrootfileio.cc:211
 hmdcparrootfileio.cc:212
 hmdcparrootfileio.cc:213
 hmdcparrootfileio.cc:214
 hmdcparrootfileio.cc:215
 hmdcparrootfileio.cc:216
 hmdcparrootfileio.cc:217
 hmdcparrootfileio.cc:218
 hmdcparrootfileio.cc:219
 hmdcparrootfileio.cc:220
 hmdcparrootfileio.cc:221
 hmdcparrootfileio.cc:222
 hmdcparrootfileio.cc:223
 hmdcparrootfileio.cc:224
 hmdcparrootfileio.cc:225
 hmdcparrootfileio.cc:226
 hmdcparrootfileio.cc:227
 hmdcparrootfileio.cc:228
 hmdcparrootfileio.cc:229
 hmdcparrootfileio.cc:230
 hmdcparrootfileio.cc:231
 hmdcparrootfileio.cc:232
 hmdcparrootfileio.cc:233
 hmdcparrootfileio.cc:234
 hmdcparrootfileio.cc:235
 hmdcparrootfileio.cc:236
 hmdcparrootfileio.cc:237
 hmdcparrootfileio.cc:238
 hmdcparrootfileio.cc:239
 hmdcparrootfileio.cc:240
 hmdcparrootfileio.cc:241
 hmdcparrootfileio.cc:242
 hmdcparrootfileio.cc:243
 hmdcparrootfileio.cc:244
 hmdcparrootfileio.cc:245
 hmdcparrootfileio.cc:246
 hmdcparrootfileio.cc:247
 hmdcparrootfileio.cc:248
 hmdcparrootfileio.cc:249
 hmdcparrootfileio.cc:250
 hmdcparrootfileio.cc:251
 hmdcparrootfileio.cc:252
 hmdcparrootfileio.cc:253
 hmdcparrootfileio.cc:254
 hmdcparrootfileio.cc:255
 hmdcparrootfileio.cc:256
 hmdcparrootfileio.cc:257
 hmdcparrootfileio.cc:258
 hmdcparrootfileio.cc:259
 hmdcparrootfileio.cc:260
 hmdcparrootfileio.cc:261
 hmdcparrootfileio.cc:262
 hmdcparrootfileio.cc:263
 hmdcparrootfileio.cc:264
 hmdcparrootfileio.cc:265
 hmdcparrootfileio.cc:266
 hmdcparrootfileio.cc:267
 hmdcparrootfileio.cc:268
 hmdcparrootfileio.cc:269
 hmdcparrootfileio.cc:270
 hmdcparrootfileio.cc:271
 hmdcparrootfileio.cc:272
 hmdcparrootfileio.cc:273
 hmdcparrootfileio.cc:274
 hmdcparrootfileio.cc:275
 hmdcparrootfileio.cc:276
 hmdcparrootfileio.cc:277
 hmdcparrootfileio.cc:278
 hmdcparrootfileio.cc:279
 hmdcparrootfileio.cc:280
 hmdcparrootfileio.cc:281
 hmdcparrootfileio.cc:282
 hmdcparrootfileio.cc:283
 hmdcparrootfileio.cc:284
 hmdcparrootfileio.cc:285
 hmdcparrootfileio.cc:286
 hmdcparrootfileio.cc:287
 hmdcparrootfileio.cc:288
 hmdcparrootfileio.cc:289
 hmdcparrootfileio.cc:290
 hmdcparrootfileio.cc:291
 hmdcparrootfileio.cc:292
 hmdcparrootfileio.cc:293
 hmdcparrootfileio.cc:294
 hmdcparrootfileio.cc:295
 hmdcparrootfileio.cc:296
 hmdcparrootfileio.cc:297
 hmdcparrootfileio.cc:298
 hmdcparrootfileio.cc:299
 hmdcparrootfileio.cc:300
 hmdcparrootfileio.cc:301
 hmdcparrootfileio.cc:302
 hmdcparrootfileio.cc:303
 hmdcparrootfileio.cc:304
 hmdcparrootfileio.cc:305
 hmdcparrootfileio.cc:306
 hmdcparrootfileio.cc:307
 hmdcparrootfileio.cc:308
 hmdcparrootfileio.cc:309
 hmdcparrootfileio.cc:310
 hmdcparrootfileio.cc:311
 hmdcparrootfileio.cc:312
 hmdcparrootfileio.cc:313
 hmdcparrootfileio.cc:314
 hmdcparrootfileio.cc:315
 hmdcparrootfileio.cc:316
 hmdcparrootfileio.cc:317
 hmdcparrootfileio.cc:318
 hmdcparrootfileio.cc:319
 hmdcparrootfileio.cc:320
 hmdcparrootfileio.cc:321
 hmdcparrootfileio.cc:322
 hmdcparrootfileio.cc:323
 hmdcparrootfileio.cc:324
 hmdcparrootfileio.cc:325
 hmdcparrootfileio.cc:326
 hmdcparrootfileio.cc:327
 hmdcparrootfileio.cc:328
 hmdcparrootfileio.cc:329
 hmdcparrootfileio.cc:330
 hmdcparrootfileio.cc:331
 hmdcparrootfileio.cc:332
 hmdcparrootfileio.cc:333
 hmdcparrootfileio.cc:334
 hmdcparrootfileio.cc:335
 hmdcparrootfileio.cc:336
 hmdcparrootfileio.cc:337
 hmdcparrootfileio.cc:338
 hmdcparrootfileio.cc:339
 hmdcparrootfileio.cc:340
 hmdcparrootfileio.cc:341
 hmdcparrootfileio.cc:342
 hmdcparrootfileio.cc:343
 hmdcparrootfileio.cc:344
 hmdcparrootfileio.cc:345
 hmdcparrootfileio.cc:346
 hmdcparrootfileio.cc:347
 hmdcparrootfileio.cc:348
 hmdcparrootfileio.cc:349
 hmdcparrootfileio.cc:350
 hmdcparrootfileio.cc:351
 hmdcparrootfileio.cc:352
 hmdcparrootfileio.cc:353
 hmdcparrootfileio.cc:354
 hmdcparrootfileio.cc:355
 hmdcparrootfileio.cc:356
 hmdcparrootfileio.cc:357
 hmdcparrootfileio.cc:358
 hmdcparrootfileio.cc:359
 hmdcparrootfileio.cc:360
 hmdcparrootfileio.cc:361
 hmdcparrootfileio.cc:362
 hmdcparrootfileio.cc:363
 hmdcparrootfileio.cc:364
 hmdcparrootfileio.cc:365
 hmdcparrootfileio.cc:366
 hmdcparrootfileio.cc:367
 hmdcparrootfileio.cc:368
 hmdcparrootfileio.cc:369
 hmdcparrootfileio.cc:370
 hmdcparrootfileio.cc:371
 hmdcparrootfileio.cc:372
 hmdcparrootfileio.cc:373
 hmdcparrootfileio.cc:374
 hmdcparrootfileio.cc:375
 hmdcparrootfileio.cc:376
 hmdcparrootfileio.cc:377
 hmdcparrootfileio.cc:378
 hmdcparrootfileio.cc:379
 hmdcparrootfileio.cc:380
 hmdcparrootfileio.cc:381
 hmdcparrootfileio.cc:382
 hmdcparrootfileio.cc:383
 hmdcparrootfileio.cc:384
 hmdcparrootfileio.cc:385
 hmdcparrootfileio.cc:386
 hmdcparrootfileio.cc:387
 hmdcparrootfileio.cc:388
 hmdcparrootfileio.cc:389
 hmdcparrootfileio.cc:390
 hmdcparrootfileio.cc:391
 hmdcparrootfileio.cc:392
 hmdcparrootfileio.cc:393
 hmdcparrootfileio.cc:394
 hmdcparrootfileio.cc:395
 hmdcparrootfileio.cc:396
 hmdcparrootfileio.cc:397
 hmdcparrootfileio.cc:398
 hmdcparrootfileio.cc:399
 hmdcparrootfileio.cc:400
 hmdcparrootfileio.cc:401
 hmdcparrootfileio.cc:402
 hmdcparrootfileio.cc:403
 hmdcparrootfileio.cc:404
 hmdcparrootfileio.cc:405
 hmdcparrootfileio.cc:406
 hmdcparrootfileio.cc:407
 hmdcparrootfileio.cc:408
 hmdcparrootfileio.cc:409
 hmdcparrootfileio.cc:410
 hmdcparrootfileio.cc:411
 hmdcparrootfileio.cc:412
 hmdcparrootfileio.cc:413
 hmdcparrootfileio.cc:414
 hmdcparrootfileio.cc:415
 hmdcparrootfileio.cc:416
 hmdcparrootfileio.cc:417
 hmdcparrootfileio.cc:418
 hmdcparrootfileio.cc:419
 hmdcparrootfileio.cc:420
 hmdcparrootfileio.cc:421
 hmdcparrootfileio.cc:422
 hmdcparrootfileio.cc:423
 hmdcparrootfileio.cc:424
 hmdcparrootfileio.cc:425
 hmdcparrootfileio.cc:426
 hmdcparrootfileio.cc:427
 hmdcparrootfileio.cc:428
 hmdcparrootfileio.cc:429
 hmdcparrootfileio.cc:430
 hmdcparrootfileio.cc:431
 hmdcparrootfileio.cc:432
 hmdcparrootfileio.cc:433
 hmdcparrootfileio.cc:434
 hmdcparrootfileio.cc:435
 hmdcparrootfileio.cc:436
 hmdcparrootfileio.cc:437
 hmdcparrootfileio.cc:438
 hmdcparrootfileio.cc:439
 hmdcparrootfileio.cc:440
 hmdcparrootfileio.cc:441
 hmdcparrootfileio.cc:442
 hmdcparrootfileio.cc:443
 hmdcparrootfileio.cc:444
 hmdcparrootfileio.cc:445
 hmdcparrootfileio.cc:446
 hmdcparrootfileio.cc:447
 hmdcparrootfileio.cc:448
 hmdcparrootfileio.cc:449
 hmdcparrootfileio.cc:450
 hmdcparrootfileio.cc:451
 hmdcparrootfileio.cc:452
 hmdcparrootfileio.cc:453
 hmdcparrootfileio.cc:454
 hmdcparrootfileio.cc:455
 hmdcparrootfileio.cc:456
 hmdcparrootfileio.cc:457
 hmdcparrootfileio.cc:458
 hmdcparrootfileio.cc:459
 hmdcparrootfileio.cc:460
 hmdcparrootfileio.cc:461
 hmdcparrootfileio.cc:462
 hmdcparrootfileio.cc:463
 hmdcparrootfileio.cc:464
 hmdcparrootfileio.cc:465
 hmdcparrootfileio.cc:466
 hmdcparrootfileio.cc:467
 hmdcparrootfileio.cc:468
 hmdcparrootfileio.cc:469
 hmdcparrootfileio.cc:470
 hmdcparrootfileio.cc:471
 hmdcparrootfileio.cc:472
 hmdcparrootfileio.cc:473
 hmdcparrootfileio.cc:474
 hmdcparrootfileio.cc:475
 hmdcparrootfileio.cc:476
 hmdcparrootfileio.cc:477
 hmdcparrootfileio.cc:478
 hmdcparrootfileio.cc:479
 hmdcparrootfileio.cc:480
 hmdcparrootfileio.cc:481
 hmdcparrootfileio.cc:482
 hmdcparrootfileio.cc:483
 hmdcparrootfileio.cc:484
 hmdcparrootfileio.cc:485
 hmdcparrootfileio.cc:486
 hmdcparrootfileio.cc:487
 hmdcparrootfileio.cc:488
 hmdcparrootfileio.cc:489
 hmdcparrootfileio.cc:490
 hmdcparrootfileio.cc:491
 hmdcparrootfileio.cc:492
 hmdcparrootfileio.cc:493
 hmdcparrootfileio.cc:494
 hmdcparrootfileio.cc:495
 hmdcparrootfileio.cc:496
 hmdcparrootfileio.cc:497
 hmdcparrootfileio.cc:498
 hmdcparrootfileio.cc:499
 hmdcparrootfileio.cc:500
 hmdcparrootfileio.cc:501
 hmdcparrootfileio.cc:502
 hmdcparrootfileio.cc:503
 hmdcparrootfileio.cc:504
 hmdcparrootfileio.cc:505
 hmdcparrootfileio.cc:506
 hmdcparrootfileio.cc:507
 hmdcparrootfileio.cc:508
 hmdcparrootfileio.cc:509
 hmdcparrootfileio.cc:510
 hmdcparrootfileio.cc:511
 hmdcparrootfileio.cc:512
 hmdcparrootfileio.cc:513
 hmdcparrootfileio.cc:514
 hmdcparrootfileio.cc:515
 hmdcparrootfileio.cc:516
 hmdcparrootfileio.cc:517
 hmdcparrootfileio.cc:518
 hmdcparrootfileio.cc:519
 hmdcparrootfileio.cc:520
 hmdcparrootfileio.cc:521
 hmdcparrootfileio.cc:522
 hmdcparrootfileio.cc:523
 hmdcparrootfileio.cc:524
 hmdcparrootfileio.cc:525
 hmdcparrootfileio.cc:526
 hmdcparrootfileio.cc:527
 hmdcparrootfileio.cc:528
 hmdcparrootfileio.cc:529
 hmdcparrootfileio.cc:530
 hmdcparrootfileio.cc:531
 hmdcparrootfileio.cc:532
 hmdcparrootfileio.cc:533
 hmdcparrootfileio.cc:534
 hmdcparrootfileio.cc:535
 hmdcparrootfileio.cc:536
 hmdcparrootfileio.cc:537
 hmdcparrootfileio.cc:538
 hmdcparrootfileio.cc:539
 hmdcparrootfileio.cc:540
 hmdcparrootfileio.cc:541
 hmdcparrootfileio.cc:542
 hmdcparrootfileio.cc:543
 hmdcparrootfileio.cc:544
 hmdcparrootfileio.cc:545
 hmdcparrootfileio.cc:546
 hmdcparrootfileio.cc:547
 hmdcparrootfileio.cc:548
 hmdcparrootfileio.cc:549
 hmdcparrootfileio.cc:550
 hmdcparrootfileio.cc:551
 hmdcparrootfileio.cc:552
 hmdcparrootfileio.cc:553
 hmdcparrootfileio.cc:554
 hmdcparrootfileio.cc:555
 hmdcparrootfileio.cc:556
 hmdcparrootfileio.cc:557
 hmdcparrootfileio.cc:558
 hmdcparrootfileio.cc:559
 hmdcparrootfileio.cc:560
 hmdcparrootfileio.cc:561
 hmdcparrootfileio.cc:562
 hmdcparrootfileio.cc:563
 hmdcparrootfileio.cc:564
 hmdcparrootfileio.cc:565
 hmdcparrootfileio.cc:566
 hmdcparrootfileio.cc:567
 hmdcparrootfileio.cc:568
 hmdcparrootfileio.cc:569
 hmdcparrootfileio.cc:570
 hmdcparrootfileio.cc:571
 hmdcparrootfileio.cc:572
 hmdcparrootfileio.cc:573