ROOT logo
#ifndef HTOFTRB2LOOKUP_H
#define HTOFTRB2LOOKUP_H

#include "TObject.h"
#include "TObjArray.h"
#include "hparset.h"
#include "htrbnetdef.h"
#include <fstream>

using namespace Trbnet;
using namespace std;

class HTofTrb2LookupChan : public TObject {
protected:
  Int_t  sector;    // sector number
  Int_t  module;    // module number
  Int_t  cell;      // cell number
  Char_t side;      // side of cell
public:
  HTofTrb2LookupChan()     { clear(); }
  ~HTofTrb2LookupChan()    {;}
  Int_t getSector()    { return sector; }
  Int_t getModule()    { return module; }
  Int_t getCell()      { return cell;  }
  Char_t getSide()     { return side;  }
  void getAddress(Int_t& s,Int_t& m,Int_t& c,Char_t& t) {
    s=sector;
    m=module;
    c=cell;
    t=side;
  }
  void fill(Int_t s,Int_t m,Int_t c,Char_t t) {
    sector=s;
    module=m;
    cell=c;
    side=t;
  }
  void fill(HTofTrb2LookupChan& r) {
    sector=r.getSector();
    module=r.getModule();
    cell=r.getCell();
    side=r.getSide();
  }
  void setSector(const Int_t n)    { sector=n; }
  void setModule(const Int_t n)    { module=n; }
  void setCell(const Int_t n)      { cell=n; }
  void setSide(Char_t c)           { side=c; }
  void clear() {
    sector=-1;
    module=-1;
    cell=-1;
    side='\0';
  }
  ClassDef(HTofTrb2LookupChan,1) // Channel level of the lookup table for the TOF TRB2 unpacker
};


class HTofTrb2LookupBoard: public TObject {
  friend class HTofTrb2Lookup;
protected:
  TObjArray* array;     // pointer array containing HTofTrb2LookupChan objects
public:
  HTofTrb2LookupBoard();
  ~HTofTrb2LookupBoard();
  HTofTrb2LookupChan* getChannel(Int_t c) {
    if (c>=0 && c<128) return &((*this)[c]);
    else return 0;
  }
  HTofTrb2LookupChan& operator[](Int_t i) {
      return *static_cast<HTofTrb2LookupChan*>((*array)[i]);
  }
  Int_t getSize()  { return 128; }
  void clear();
  ClassDef(HTofTrb2LookupBoard,1) // Board level of  the lookup table for the TOF TRB2 unpacker
};


class HTofTrb2Lookup : public HParSet {
protected:
  TObjArray* array;  // array of pointers of type HTofTrb2LookupBoard
  Int_t arrayOffset; // offset to calculate the index
public:
  HTofTrb2Lookup(const Char_t* name="TofTrb2Lookup",
             const Char_t* title="Lookup table for the TRB2 unpacker of the TOF detector",
             const Char_t* context="TofTrb2LookupProduction",
             Int_t minTrbnetAddress=Trbnet::kTofMinTrbnetAddress,
             Int_t maxTrbnetAddress=Trbnet::kTofMaxTrbnetAddress);
  ~HTofTrb2Lookup();
  HTofTrb2LookupBoard* getBoard(Int_t trbnetAddress) {
    return (HTofTrb2LookupBoard*)(array->At(trbnetAddress-arrayOffset));
  }
  HTofTrb2LookupBoard* operator[](Int_t i) {
    return static_cast<HTofTrb2LookupBoard*>((*array)[i]);
  }
  Int_t getSize() { return array->GetLast()+1; }
  Int_t getArrayOffset() { return arrayOffset; }
  Bool_t init(HParIo* input,Int_t* set);
  Int_t write(HParIo* output);
  void clear();
  void printParam();
  Bool_t fill(Int_t,Int_t,Int_t,Int_t,Int_t,Char_t);
  Bool_t readline(const Char_t*);
  void putAsciiHeader(TString&);
  void write(fstream&);
  ClassDef(HTofTrb2Lookup,1) // Lookup table for the TRB2 unpacker of the TOF detector
};

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