#pragma implementation
using namespace std;
#include <iostream> 
#include <iomanip>
#include "hades.h"
#include "hspectrometer.h"
#include "hparhadasciifileio.h"
#include "hlocation.h"
#include "hspectrometer.h"
#include "hshowerparset.h"
#include "hshowercalpar.h"
#include "hshowerdetector.h"
#include "hshowerunpackparam.h"
#include "hshowersubidpar.h"
ClassImp(HShowerUnpackParam)

HShowerUnpackParam::HShowerUnpackParam(const Char_t* name,const Char_t* title,
                                       const Char_t* context)
                   : HShowerParSet(name,title,context) {
  m_nIsInit = kFALSE;
  m_nUseThresholds = kFALSE;
  for (Int_t i = 0; i < 18; m_nThresholds[i++]=0);
  for (Int_t i = 0; i < 384; i++) {
    m_nColumnsNumbers[i] = 0;
    m_nRowsNumbers[i] = 0;
    m_nModulesNumbers[i] = 0;
  }

  m_pSubIdArr = new TObjArray(12);
}

HShowerUnpackParam::~HShowerUnpackParam()
{
   if (m_pSubIdArr) {
     m_pSubIdArr->Delete();    
     delete m_pSubIdArr;
   }
}

Bool_t HShowerUnpackParam::defaultInit() {
  for (Int_t i = 0; i < 384; i++) {
    m_nColumnsNumbers[i] = calcColumn(i);
    m_nRowsNumbers[i] = calcRow(i);
    m_nModulesNumbers[i] = calcModule(i);
  }
 
  m_nIsInit = kTRUE;
  return kTRUE;
}
 

Bool_t HShowerUnpackParam::initAscii(HParHadAsciiFileIo* pHadAsciiFileIo) {
  Bool_t status = kTRUE;
  HShowerSubIdPar *pSubIdPar;
  Int_t nNSubId;
  Int_t subid[12];

  printf("initialization of unpacker's parameters\n");
  try {

     HAsciiKey* pHAscii = pHadAsciiFileIo->GetKeyAscii();
     HAsciiKey &mydata = *pHAscii;

     
     mydata.SetActiveSection("Shower's  subevents");
     nNSubId = mydata.ReadInt("Subevents number");
     mydata.ReadInt(subid, "Subevents", nNSubId); 

     for(Int_t i = 0; i < nNSubId; i++) {
        pSubIdPar = new HShowerSubIdPar(subid[i]);
        m_pSubIdArr->AddAt(pSubIdPar, subid[i] - 300);     
        pSubIdPar->initAscii(pHadAsciiFileIo);
     }
     printf("init: entries %d\n", m_pSubIdArr->GetEntries()); 

     mydata.SetActiveSection("Shower Unpacker's Parameters");
 
     m_nUseThresholds = mydata.ReadInt("Use thresholds");
     mydata.ReadInt(m_nThresholds, "Unpacker thresholds");  
     mydata.ReadInt(m_nColumnsNumbers, "Columns numbers");  
     mydata.ReadInt(m_nRowsNumbers, "Rows numbers");  
     mydata.ReadInt(m_nModulesNumbers, "Modules numbers");  
     m_nIsInit = kTRUE;
  }
  catch (Bool_t ret) {
    status = ret;
  }

  return status;
}

Bool_t HShowerUnpackParam::writeAscii(HParHadAsciiFileIo* pHadAsciiFileIo) {
  Bool_t status = kTRUE;
  HShowerSubIdPar *pSubIdPar[12];
  Int_t nNSubId;
  Int_t subid[12];

  TIterator* iter;
  iter = m_pSubIdArr->MakeIterator();
  printf("write: entries %d\n", m_pSubIdArr->GetEntries()); 
  try {

     HAsciiKey* pHAscii = pHadAsciiFileIo->GetKeyAscii();
     HAsciiKey &mydata = *pHAscii;

     nNSubId = 0;
     while ((pSubIdPar[nNSubId] = (HShowerSubIdPar*)iter->Next())){
        subid[nNSubId] = pSubIdPar[nNSubId]->getSubID();
        nNSubId++;
     }

     mydata.WriteSection("Shower's  subevents");
     mydata.WriteInt("Subevents number", nNSubId);
     mydata.WriteInt("Subevents", nNSubId, subid); 

     for(Int_t i = 0; i < nNSubId; i++)
       pSubIdPar[i]->writeAscii(pHadAsciiFileIo);

     mydata.WriteSection("Shower Unpacker's Parameters");
     mydata.SetNumInLine(9);

     mydata.WriteInt("Use thresholds", m_nUseThresholds);
     mydata.WriteInt("Unpacker thresholds*", 18, m_nThresholds);
   
     mydata.SetNumInLine(12);
     mydata.WriteInt("Columns numbers*", 384, m_nColumnsNumbers);
     mydata.WriteInt("Rows numbers*", 384, m_nRowsNumbers);
     mydata.WriteInt("Modules numbers*", 384, m_nModulesNumbers);
  }
  catch (Bool_t ret) {
    status = ret;
  }

  delete iter;

  return status;
}

HShowerSubIdPar* HShowerUnpackParam::getSubIdPar(Int_t nSubId) {
  return (HShowerSubIdPar*)m_pSubIdArr->At(nSubId - 300);
}
 

Last change: Sat May 22 13:14:16 2010
Last generated: 2010-05-22 13:14

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.