ROOT logo
#ifndef HTOFDIGIPAR_H
#define HTOFDIGIPAR_H

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

class HTofDigiParCell : public TObject {

private:
  Float_t halfLen;       // half length of the strip (mm)
  Float_t angleRef;      // total internal reflection angle (deg)
  Float_t attenLen;      // attenuation length (mm)
  Float_t groupVel;      // group velocity (mm/ns)
  Float_t slopeLeftTDC;  // left TDC slope (ns/ch)
  Float_t slopeRightTDC; // right TDC slope (ns/ch)
  Int_t thrLeftCFD;      // left CFD threshold (ch)
  Int_t thrRightCFD;     // right CFD threshold (ch)
  Int_t thrLeftADC;      // left ADC threshold (ch)
  Int_t thrRightADC;     // right ADC threshold (ch)

public:
  HTofDigiParCell(void) {clear();}
  ~HTofDigiParCell(void) {}
  Float_t getHalfLen() { return halfLen; }
  Float_t getAngleRef() { return angleRef; }
  Float_t getAttenLen() { return attenLen; }
  Float_t getGroupVel() { return groupVel; }
  Float_t getLeftTDCSlope() {return slopeLeftTDC; }
  Float_t getRightTDCSlope() {return slopeRightTDC; }
  Int_t getLeftCFDThreshold() { return thrLeftCFD; }
  Int_t getRightCFDThreshold() { return thrRightCFD; }
  Int_t getLeftADCThreshold() { return thrLeftADC; }
  Int_t getRightADCThreshold() { return thrRightADC; }
  void fill(HTofDigiParCell& c) {
    halfLen=c.getHalfLen();
    angleRef=c.getAngleRef();
    attenLen=c.getAttenLen();
    groupVel=c.getGroupVel();
    slopeLeftTDC=c.getLeftTDCSlope();
    slopeRightTDC=c.getRightTDCSlope();
    thrLeftCFD=c.getLeftCFDThreshold();
    thrRightCFD=c.getRightCFDThreshold();
    thrLeftADC=c.getLeftADCThreshold();
    thrRightADC=c.getRightADCThreshold();
  }
  void setHalfLen(Float_t f) { halfLen = f; }
  void setAngleRef(Float_t f) { angleRef = f; }
  void setAttenLen(Float_t f) { attenLen = f; }
  void setGroupVel(Float_t f) { groupVel = f; }
  void setLeftTDCSlope(Float_t f) {slopeLeftTDC = f; }
  void setRightTDCSlope(Float_t f) {slopeRightTDC = f; }
  void setLeftCFDThreshold(Int_t f) { thrLeftCFD = f; }
  void setRightCFDThreshold(Int_t f) { thrRightCFD = f; }
  void setLeftADCThreshold(Int_t f) { thrLeftADC = f; }
  void setRightADCThreshold(Int_t f) { thrRightADC = f; }
  void setDefaults(Int_t f);
  void clear();
  ClassDef(HTofDigiParCell,1)  // Cell level of the TOF digitization parameters
};

class HTofDigiParMod: public TObject {
private:
  TObjArray* array;  // pointer array containing HTofDigiParCell objects
public:
  HTofDigiParMod(Int_t s=0, Int_t m=0);
  ~HTofDigiParMod();
  HTofDigiParCell& operator[](Int_t i) {
      return *static_cast<HTofDigiParCell*>((*array)[i]);
  }
  Int_t getSize() { return array->GetEntries(); }
  ClassDef(HTofDigiParMod,1) // Module level of the Tof digitization parameters
};

class HTofDigiParSec: public TObject {
private:
  TObjArray* array;  // pointer array containing HTofDigiParMod objects
public:
  HTofDigiParSec(Int_t s=0, Int_t n=22);
  ~HTofDigiParSec();
  HTofDigiParMod& operator[](Int_t i) {
      return *static_cast<HTofDigiParMod*>((*array)[i]);
  }
  Int_t getSize() { return array->GetEntries(); }
  ClassDef(HTofDigiParSec,1) // Sector level of the Tof digitizaton parameters
};

class HTofDigiPar : public HParSet {
private:
  TObjArray* array;     // array of pointers of type HTofDigiParMod
  void printPause(void);
public:
  HTofDigiPar(const Char_t* name="TofDigiPar",
              const Char_t* title="TOF digitization parameters",
              const Char_t* context="TofDigiProduction");
  ~HTofDigiPar(void);
  HTofDigiParSec& operator[](Int_t i) {
    return *static_cast<HTofDigiParSec*>((*array)[i]);
  }
  Int_t getSize() { return array->GetEntries(); }
  Bool_t init(HParIo*,Int_t*);
  Int_t write(HParIo*);
  void clear();
  void printParam();
  void readline(const Char_t*, Int_t*);
  void putAsciiHeader(TString&);
  Bool_t writeline(Char_t*, Int_t, Int_t, Int_t);
  ClassDef(HTofDigiPar,1)  // Container for the TOF digitization parameters
};

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