ROOT logo
#ifndef HWALLTRB2LOOKUP_H
#define HWALLTRB2LOOKUP_H

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

using namespace Trbnet;
using namespace std;

class HWallTrb2LookupChan : public TObject {
protected:
  Int_t  cell;      // cell number
public:
  HWallTrb2LookupChan()  { clear(); }
  ~HWallTrb2LookupChan() {;}
  Int_t getCell()        { return cell;  }
  void  setCell(Int_t c) { cell=c; }
  void fill(HWallTrb2LookupChan& r) {
    cell=r.getCell();
  }
  void clear() {
    cell=-1;
  }
  ClassDef(HWallTrb2LookupChan,1) // Channel level of the lookup table for the TRB2 unpacker of the Forward Wall
};


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


class HWallTrb2Lookup : public HParSet {
protected:
  TObjArray* array;  // array of pointers of type HWallTrb2LookupBoard
  Int_t arrayOffset; // offset to calculate the index
public:
  HWallTrb2Lookup(const Char_t* name="WallTrb2Lookup",
             const Char_t* title="Lookup table for the TRB2 unpacker of the Forward Wall",
             const Char_t* context="WallTrb2LookupProduction",
             Int_t minTrbnetAddress=Trbnet::kWallMinTrbnetAddress,
             Int_t maxTrbnetAddress=Trbnet::kWallMaxTrbnetAddress);
  ~HWallTrb2Lookup();
  HWallTrb2LookupBoard* getBoard(Int_t trbnetAddress) {
    return (HWallTrb2LookupBoard*)(array->At(trbnetAddress-arrayOffset));
  }
  HWallTrb2LookupBoard* operator[](Int_t i) {
    return static_cast<HWallTrb2LookupBoard*>((*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);
  Bool_t readline(const Char_t*);
  void putAsciiHeader(TString&);
  void write(fstream&);
  ClassDef(HWallTrb2Lookup,1) // Lookup table for the TRB2 unpacker of the Forward Wall
};

#endif  /*!HWALLTRB2LOOKUP_H*/
 hwalltrb2lookup.h:1
 hwalltrb2lookup.h:2
 hwalltrb2lookup.h:3
 hwalltrb2lookup.h:4
 hwalltrb2lookup.h:5
 hwalltrb2lookup.h:6
 hwalltrb2lookup.h:7
 hwalltrb2lookup.h:8
 hwalltrb2lookup.h:9
 hwalltrb2lookup.h:10
 hwalltrb2lookup.h:11
 hwalltrb2lookup.h:12
 hwalltrb2lookup.h:13
 hwalltrb2lookup.h:14
 hwalltrb2lookup.h:15
 hwalltrb2lookup.h:16
 hwalltrb2lookup.h:17
 hwalltrb2lookup.h:18
 hwalltrb2lookup.h:19
 hwalltrb2lookup.h:20
 hwalltrb2lookup.h:21
 hwalltrb2lookup.h:22
 hwalltrb2lookup.h:23
 hwalltrb2lookup.h:24
 hwalltrb2lookup.h:25
 hwalltrb2lookup.h:26
 hwalltrb2lookup.h:27
 hwalltrb2lookup.h:28
 hwalltrb2lookup.h:29
 hwalltrb2lookup.h:30
 hwalltrb2lookup.h:31
 hwalltrb2lookup.h:32
 hwalltrb2lookup.h:33
 hwalltrb2lookup.h:34
 hwalltrb2lookup.h:35
 hwalltrb2lookup.h:36
 hwalltrb2lookup.h:37
 hwalltrb2lookup.h:38
 hwalltrb2lookup.h:39
 hwalltrb2lookup.h:40
 hwalltrb2lookup.h:41
 hwalltrb2lookup.h:42
 hwalltrb2lookup.h:43
 hwalltrb2lookup.h:44
 hwalltrb2lookup.h:45
 hwalltrb2lookup.h:46
 hwalltrb2lookup.h:47
 hwalltrb2lookup.h:48
 hwalltrb2lookup.h:49
 hwalltrb2lookup.h:50
 hwalltrb2lookup.h:51
 hwalltrb2lookup.h:52
 hwalltrb2lookup.h:53
 hwalltrb2lookup.h:54
 hwalltrb2lookup.h:55
 hwalltrb2lookup.h:56
 hwalltrb2lookup.h:57
 hwalltrb2lookup.h:58
 hwalltrb2lookup.h:59
 hwalltrb2lookup.h:60
 hwalltrb2lookup.h:61
 hwalltrb2lookup.h:62
 hwalltrb2lookup.h:63
 hwalltrb2lookup.h:64
 hwalltrb2lookup.h:65
 hwalltrb2lookup.h:66
 hwalltrb2lookup.h:67
 hwalltrb2lookup.h:68
 hwalltrb2lookup.h:69
 hwalltrb2lookup.h:70
 hwalltrb2lookup.h:71
 hwalltrb2lookup.h:72
 hwalltrb2lookup.h:73
 hwalltrb2lookup.h:74
 hwalltrb2lookup.h:75
 hwalltrb2lookup.h:76
 hwalltrb2lookup.h:77
 hwalltrb2lookup.h:78
 hwalltrb2lookup.h:79
 hwalltrb2lookup.h:80
 hwalltrb2lookup.h:81