#ifndef HEMCCALPAR_H
#define HEMCCALPAR_H
#include "TObject.h"
#include "TObjArray.h"
#include "hparset.h"
class HEmcCalParCell : public TObject {
protected:
  Float_t tdcSlope;  
  Float_t tdcOffset; 
  Float_t adcPar0;   
  Float_t adcPar1;   
  Float_t adcPar2;   
  Float_t twcPar0;   
  Float_t twcPar1;   
  Float_t twcPar2;   
public:
  HEmcCalParCell()  {clear();}
  virtual ~HEmcCalParCell() {}
  void clear();
  Float_t getTdcSlope(void)  {return tdcSlope;}
  Float_t getTdcOffset(void) {return tdcOffset;}
  Float_t getAdcPar0(void)   {return adcPar0;}
  Float_t getAdcPar1(void)   {return adcPar1;}
  Float_t getAdcPar2(void)   {return adcPar2;}
  Float_t getTwcPar0(void)   {return twcPar0;}
  Float_t getTwcPar1(void)   {return twcPar1;}
  Float_t getTwcPar2(void)   {return twcPar2;}
  void getData(Float_t* data) {
    data[0] = tdcSlope;
    data[1] = tdcOffset;
    data[2] = adcPar0;
    data[3] = adcPar1;
    data[4] = adcPar2;
    data[5] = twcPar0;
    data[6] = twcPar1;
    data[7] = twcPar2;
  }
  void setTdcSlope(Float_t s)  {tdcSlope = s;}
  void setTdcOffset(Float_t o) {tdcOffset = o;}
  void setAdcPar0(Float_t p)  {adcPar0 = p;}
  void setAdcPar1(Float_t p)  {adcPar1 = p;}
  void setAdcPar2(Float_t p)  {adcPar2 = p;}
  void setTwcPar0(Float_t t)   {twcPar0 = t;}
  void setTwcPar1(Float_t t)   {twcPar1 = t;}
  void setTwcPar2(Float_t t)   {twcPar2 = t;}
  void fill(Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t, Float_t);
  void fill(Float_t*);
  void fill(HEmcCalParCell&);
  ClassDef(HEmcCalParCell, 1) 
};
class HEmcCalParSec: public TObject {
protected:
  TObjArray* array;  
public:
  HEmcCalParSec(Int_t n = 255);
  virtual ~HEmcCalParSec();
  HEmcCalParCell& operator[](Int_t i) {
    return *static_cast<HEmcCalParCell*>((*array)[i]);
  }
  Int_t getSize() {return array->GetEntries();}
  ClassDef(HEmcCalParSec, 1) 
};
class HEmcCalPar : public HParSet {
protected:
  TObjArray* array;     
public:
  HEmcCalPar(const Char_t* name,
             const Char_t* title,
             const Char_t* context) ;
  HEmcCalPar() : array(0) {;} 
  virtual ~HEmcCalPar();
  HEmcCalParSec& operator[](Int_t i) {
    return *static_cast<HEmcCalParSec*>((*array)[i]);
  }
  Int_t getSize() {return array->GetEntries();}
  Bool_t init(HParIo* input, Int_t* set);
  Int_t write(HParIo* output);
  void clear();
  void printParams();
  void readline(const Char_t*, Int_t*);
  void putAsciiHeader(TString&);
  void write(fstream&);
  ClassDef(HEmcCalPar, 1) 
};
#endif  /*!HEMCCALPAR_H*/