ROOT logo
//*-- AUTHOR Rainer Schicker
//*-- modified: 15/08/2005 by Filip Krizek
//*-- modified: 18/12/2001 by Ilse Koenig
//*-- modified: 06/03/2000 by Ilse Koenig
//*-- created : 18/02/00

//_HADES_CLASS_DESCRIPTION 
/////////////////////////////////////////////////////////////
//
// HWallCalPar
//
// Container class for Forward Wall calibration parameters
//
/////////////////////////////////////////////////////////////


using namespace std;
#include "hwallcalpar.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hwalldetector.h"
#include "hpario.h"
#include "hdetpario.h"
#include <iostream>

ClassImp(HWallCalPar)
ClassImp(HWallCalParCell)

HWallCalPar::HWallCalPar(const Char_t* name,const Char_t* title,
                         const Char_t* context)
             : HParSet(name,title,context) {
  // constructor creates an array of pointers of type HWallCalParCell
  strcpy(detName,"Wall");
  HDetector* det= gHades->getSetup()->getDetector("Wall");
  Int_t nComp=det->getMaxComponents(); //302 cells
  array = new TObjArray(nComp);
  for(Int_t i=0; i<nComp; i++) array->AddAt(new HWallCalParCell(),i);
}

HWallCalPar::~HWallCalPar() {
  // destructor
  array->Delete();
  delete array;
}

Bool_t HWallCalPar::init(HParIo* inp,Int_t* set) {
  // intitializes the container from an input
  HDetParIo* input=inp->getDetParIo("HWallParIo");
  if (input) return (input->init(this,set));
  return kFALSE;
}

Int_t HWallCalPar::write(HParIo* output) {
  // writes the container to an output
  HDetParIo* out=output->getDetParIo("HWallParIo");
  if (out) return out->write(this);
  return -1;
}

void HWallCalPar::clear() {
  // clears the container
  for(Int_t i=0;i<getSize();i++) (*this)[i].clear();
  status=kFALSE;
  resetInputVersions();
}

void HWallCalPar::printParam() {
  // prints the calibration parameters
  printf("Calibration parameters for the Wall detector\n");
  printf("cell TDC_K TDC_offset ADC_K ADC_offset\n");
  for(Int_t i=0;i<getSize();i++) {
    HWallCalParCell& cell=(*this)[i];
    printf("%i  %8.3f %9.3f %7.4f %7.4f %8.3f %9.3f \n",i,cell.getTDC_Slope(),cell.getTDC_Offset(),cell.getTDC_WalkCorr1(),cell.getTDC_WalkCorr2(),cell.getADC_Slope(),cell.getADC_Offset());
  }
}

void HWallCalPar::readline(const Char_t *buf, Int_t *set) {
  // decodes one line read from ascii file I/O
  Int_t  cell;
  Float_t TDC_slope, TDC_offset, TDC_WalkCorr1, TDC_WalkCorr2, ADC_slope, ADC_offset;
  sscanf(buf,"%i%f%f%f%f%f%f", &cell, &TDC_slope, &TDC_offset, &TDC_WalkCorr1, &TDC_WalkCorr2, &ADC_slope, &ADC_offset);
  if (!set[0]) return;
  (*this)[cell].fill(TDC_slope,TDC_offset,TDC_WalkCorr1,TDC_WalkCorr2,ADC_slope,ADC_offset); 
  set[0]=999;
}

void HWallCalPar::putAsciiHeader(TString& header) {
  // puts the ascii header to the string used in HWallParAsciiFileIo
  header=
    "# Calibration parameters for the WALL detector\n"
    "# Format:\n"
    "# cell  TDC_slope   TDC_offset   TDC_WalkCorr1   TDC_WalkCorr2   ADC_slope   ADC_offset\n";
}

Bool_t HWallCalPar::writeline(Char_t *buf,Int_t cell) {
  // writes one line to the buffer used by ascii file I/O
  HWallCalParCell& c=(*this)[cell];
  sprintf(buf,"%i %8.3f %9.3f %7.4f %7.4f %8.3f %9.3f\n",
          cell, c.getTDC_Slope(),c.getTDC_Offset(),c.getTDC_WalkCorr1(),c.getTDC_WalkCorr2(),c.getADC_Slope(),c.getADC_Offset());
  return kTRUE;
}
  






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