ROOT logo
#ifndef HSTART2TRB2LOOKUP_H
#define HSTART2TRB2LOOKUP_H

#include "TObjArray.h"
#include "TObject.h"

#include "hparset.h"
#include "htrbnetdef.h"

using namespace Trbnet;
using namespace std;

class HStart2Trb2LookupChan : public TObject {
protected:
   Int_t  module;    // module number
   Int_t  cell;      // cell number
public:
   HStart2Trb2LookupChan()     {
      clear();
   }
   ~HStart2Trb2LookupChan()    {
      ;
   }
   Int_t getModule()    {
      return module;
   }
   Int_t getCell()      {
      return cell;
   }
   void getAddress(Int_t& m, Int_t& c) {
      m = module;
      c = cell;
   }
   void fill(Int_t m, Int_t c) {
      module = m;
      cell = c;
   }
   void fill(HStart2Trb2LookupChan& r) {
      module = r.getModule();
      cell = r.getCell();
   }
   void setModule(const Int_t n)    {
      module = n;
   }
   void setCell(const Int_t n)      {
      cell = n;
   }
   void clear() {
      module = -1;
      cell = -1;
   }
   ClassDef(HStart2Trb2LookupChan, 1) // Channel level of the lookup table for the START2 TRB2 unpacker
};


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


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

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