ROOT logo
#ifndef HRPCCALPAR_H
#define HRPCCALPAR_H

#include "TObject.h"
#include "TObjArray.h"
#include "hlocation.h"
#include "hparset.h"

class HRpcCalParCell: public TObject {

 private:
  Float_t rightTimeOffset;   //Time offset of the right channel    [TDC units]
  Float_t leftTimeOffset;    //Time offset of the left channel     [TDC units]
  Float_t rightTotOffset;    //ToT  offset of the right channel    [TDC units]
  Float_t leftTotOffset;     //ToT  offset of the left channel     [TDC units]
  Float_t tdc2time;          //Conversion from TDC units to time   [ns]
  Float_t tot2charge;        //Conversion from TOT units to charge [pC]
  Float_t t0;                //Overall offset                      [TDC units]

 public:
  HRpcCalParCell(void) {clear();}
  ~HRpcCalParCell(void) {}
  
  Float_t getRightTimeOffset() { return rightTimeOffset; }
  Float_t getLeftTimeOffset()  { return leftTimeOffset; }
  Float_t getRightTOTOffset()  { return rightTotOffset; }
  Float_t getLeftTOTOffset()   { return leftTotOffset; }
  Float_t getTDC2Time()        { return tdc2time; }
  Float_t getTOT2Charge()      { return tot2charge; }
  Float_t getT0()              { return t0;}

  void getAddress(Float_t& rtimoff, Float_t& ltimoff, Float_t& rtotoff, Float_t& ltotoff, Float_t& t2t,
		  Float_t& t2c,Float_t& tzero) {
    rtimoff = rightTimeOffset;
    ltimoff = leftTimeOffset;
    rtotoff = rightTotOffset;
    ltotoff = leftTotOffset;
    t2t     = tdc2time;
    t2c     = tot2charge;
    tzero   = t0;
  }

  void fill(const Float_t rtimoff, const Float_t ltimoff, const Float_t rtotoff, const Float_t ltotoff,
	    const Float_t t2t, const Float_t t2c, const Float_t tzero) {
    rightTimeOffset  =  rtimoff;
    leftTimeOffset   =  ltimoff;
    rightTotOffset   =  rtotoff;
    leftTotOffset    =  ltotoff;
    tdc2time         =  t2t;
    tot2charge       =  t2c;
    t0               =  tzero;
  }
  
  void fill(HRpcCalParCell& cell) {
    rightTimeOffset  =  cell.getRightTimeOffset();
    leftTimeOffset   =  cell.getLeftTimeOffset();
    rightTotOffset   =  cell.getRightTOTOffset();
    leftTotOffset    =  cell.getLeftTOTOffset();
    tdc2time         =  cell.getTDC2Time();
    tot2charge       =  cell.getTOT2Charge();
    t0               =  cell.getT0();
  }
  
  void setRightTimeOffset(Float_t rtimoff ) { rightTimeOffset = rtimoff; }
  void setLeftTimeOffset(Float_t ltimoff)   { leftTimeOffset = ltimoff;  }
  void setRightTOTOffset(Float_t rtotoff)   { rightTotOffset = rtotoff;  }
  void setLeftTOTOffset(Float_t ltotoff)    { leftTotOffset = ltotoff;   }
  void setTDC2Time(Float_t t2t)             { tdc2time = t2t;            } 
  void setTOT2Charge(Float_t t2c)           { tot2charge = t2c;          }
  void setT0(Float_t tzero)                 { t0 = tzero;                }

  void clear();
  ClassDef(HRpcCalParCell,1)  // Cell level of the RPC calibration parameters
};


class HRpcCalParCol: public TObject {
 private:
  TObjArray* array;    // pointer array containing HRpcCalParCell objects
  Int_t MaxCells;      //Maximum number of cells

 public:
  HRpcCalParCol();
  ~HRpcCalParCol();
  HRpcCalParCell& operator[](Int_t i) {
    return *static_cast<HRpcCalParCell*>((*array)[i]);
  }
  HRpcCalParCell* getCell(Int_t cell) {
    if (cell>=0 && cell<MaxCells) return &((*this)[cell]);
    else return 0;
  }
  Int_t getSize() { return array->GetEntries(); }
  void fill(Int_t,Float_t,Float_t,Float_t,Float_t,Float_t,Float_t,Float_t);
  ClassDef(HRpcCalParCol,1)   // Column level of the RPC calibration parameters
};


class HRpcCalParSec: public TObject {
 private:
  TObjArray* array;     // pointer array containing HRpcCalParCol objects
  Int_t MaxColumns;     //Maximum number of sectors

 public:
  HRpcCalParSec();
  ~HRpcCalParSec();

  HRpcCalParCol& operator[](Int_t i) {
    return *static_cast<HRpcCalParCol*>((*array)[i]);
  }
  HRpcCalParCol* getCol(Int_t col) {
    if (col>=0 && col<MaxColumns) return &((*this)[col]);
    else return 0;
  }
  Int_t getSize() { return array->GetEntries(); }
  void fill(Int_t,Int_t,Float_t,Float_t,Float_t,Float_t,Float_t,Float_t,Float_t);
  ClassDef(HRpcCalParSec,1) // Sector level of the RPC calibration parameters
};


class HRpcCalPar : public HParSet {
 private:
  TObjArray* array;       // array of pointers of type HRpcCalParSec
  Int_t MaxSectors;       //Maximum number of columns

  void printPause(void);
 public:
  HRpcCalPar(const Char_t* name="RpcCalPar",
	     const Char_t* title="Calibration parameters for the Rpc Detector",
	     const Char_t* context="RpcCalProduction");
  ~HRpcCalPar(void);
  HRpcCalParSec& operator[](Int_t i) {
    return *static_cast<HRpcCalParSec*>((*array)[i]);
  }
  HRpcCalParCol* getCol(Int_t sec, Int_t col) {
    if (sec>=0 && sec<MaxSectors) return (*this)[sec].getCol(col);
    else return 0;
  }
  Int_t getSize() { return array->GetEntries(); }
  Bool_t init(HParIo*,Int_t*);
  Int_t write(HParIo*);
  void clear();
  void printParam();
  void fill(Int_t,Int_t,Int_t,Float_t,Float_t,Float_t,Float_t,Float_t,Float_t,Float_t);
  void readline(const Char_t*, Int_t*);
  void putAsciiHeader(TString&);
  Bool_t writeline(Char_t*, Int_t, Int_t, Int_t);
  ClassDef(HRpcCalPar,1)  // Container for the RPC calibration parameters
};

#endif /* !HRPCCALPAR_H */
 hrpccalpar.h:1
 hrpccalpar.h:2
 hrpccalpar.h:3
 hrpccalpar.h:4
 hrpccalpar.h:5
 hrpccalpar.h:6
 hrpccalpar.h:7
 hrpccalpar.h:8
 hrpccalpar.h:9
 hrpccalpar.h:10
 hrpccalpar.h:11
 hrpccalpar.h:12
 hrpccalpar.h:13
 hrpccalpar.h:14
 hrpccalpar.h:15
 hrpccalpar.h:16
 hrpccalpar.h:17
 hrpccalpar.h:18
 hrpccalpar.h:19
 hrpccalpar.h:20
 hrpccalpar.h:21
 hrpccalpar.h:22
 hrpccalpar.h:23
 hrpccalpar.h:24
 hrpccalpar.h:25
 hrpccalpar.h:26
 hrpccalpar.h:27
 hrpccalpar.h:28
 hrpccalpar.h:29
 hrpccalpar.h:30
 hrpccalpar.h:31
 hrpccalpar.h:32
 hrpccalpar.h:33
 hrpccalpar.h:34
 hrpccalpar.h:35
 hrpccalpar.h:36
 hrpccalpar.h:37
 hrpccalpar.h:38
 hrpccalpar.h:39
 hrpccalpar.h:40
 hrpccalpar.h:41
 hrpccalpar.h:42
 hrpccalpar.h:43
 hrpccalpar.h:44
 hrpccalpar.h:45
 hrpccalpar.h:46
 hrpccalpar.h:47
 hrpccalpar.h:48
 hrpccalpar.h:49
 hrpccalpar.h:50
 hrpccalpar.h:51
 hrpccalpar.h:52
 hrpccalpar.h:53
 hrpccalpar.h:54
 hrpccalpar.h:55
 hrpccalpar.h:56
 hrpccalpar.h:57
 hrpccalpar.h:58
 hrpccalpar.h:59
 hrpccalpar.h:60
 hrpccalpar.h:61
 hrpccalpar.h:62
 hrpccalpar.h:63
 hrpccalpar.h:64
 hrpccalpar.h:65
 hrpccalpar.h:66
 hrpccalpar.h:67
 hrpccalpar.h:68
 hrpccalpar.h:69
 hrpccalpar.h:70
 hrpccalpar.h:71
 hrpccalpar.h:72
 hrpccalpar.h:73
 hrpccalpar.h:74
 hrpccalpar.h:75
 hrpccalpar.h:76
 hrpccalpar.h:77
 hrpccalpar.h:78
 hrpccalpar.h:79
 hrpccalpar.h:80
 hrpccalpar.h:81
 hrpccalpar.h:82
 hrpccalpar.h:83
 hrpccalpar.h:84
 hrpccalpar.h:85
 hrpccalpar.h:86
 hrpccalpar.h:87
 hrpccalpar.h:88
 hrpccalpar.h:89
 hrpccalpar.h:90
 hrpccalpar.h:91
 hrpccalpar.h:92
 hrpccalpar.h:93
 hrpccalpar.h:94
 hrpccalpar.h:95
 hrpccalpar.h:96
 hrpccalpar.h:97
 hrpccalpar.h:98
 hrpccalpar.h:99
 hrpccalpar.h:100
 hrpccalpar.h:101
 hrpccalpar.h:102
 hrpccalpar.h:103
 hrpccalpar.h:104
 hrpccalpar.h:105
 hrpccalpar.h:106
 hrpccalpar.h:107
 hrpccalpar.h:108
 hrpccalpar.h:109
 hrpccalpar.h:110
 hrpccalpar.h:111
 hrpccalpar.h:112
 hrpccalpar.h:113
 hrpccalpar.h:114
 hrpccalpar.h:115
 hrpccalpar.h:116
 hrpccalpar.h:117
 hrpccalpar.h:118
 hrpccalpar.h:119
 hrpccalpar.h:120
 hrpccalpar.h:121
 hrpccalpar.h:122
 hrpccalpar.h:123
 hrpccalpar.h:124
 hrpccalpar.h:125
 hrpccalpar.h:126
 hrpccalpar.h:127
 hrpccalpar.h:128
 hrpccalpar.h:129
 hrpccalpar.h:130
 hrpccalpar.h:131
 hrpccalpar.h:132
 hrpccalpar.h:133
 hrpccalpar.h:134
 hrpccalpar.h:135
 hrpccalpar.h:136
 hrpccalpar.h:137
 hrpccalpar.h:138
 hrpccalpar.h:139
 hrpccalpar.h:140
 hrpccalpar.h:141
 hrpccalpar.h:142
 hrpccalpar.h:143
 hrpccalpar.h:144
 hrpccalpar.h:145
 hrpccalpar.h:146
 hrpccalpar.h:147
 hrpccalpar.h:148
 hrpccalpar.h:149
 hrpccalpar.h:150