ROOT logo
#ifndef HPIONTRACKERTRB3LOOKUP_H
#define HPIONTRACKERTRB3LOOKUP_H

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

using namespace Trbnet;
using namespace std;

class HPionTrackerTrb3LookupChan : public TObject {
protected:
  Int_t  module;    // module number
  Int_t  cell;      // cell number
public:
  HPionTrackerTrb3LookupChan()  {clear();}
  ~HPionTrackerTrb3LookupChan() {}

  Int_t getModule() {return module;}
  Int_t getCell()   {return cell;}

  void getAddress(Int_t& m, Int_t& c) {
    m = module;
    c = cell;
  }

  void clear() {
    module = -1;
    cell = -1;
  }

  void setModule(const Int_t n) {module = n;}
  void setCell(const Int_t n)   {cell = n;}

  void fill(Int_t m, Int_t c) {
    module = m;
    cell = c;
  }

  void fill(HPionTrackerTrb3LookupChan& r) {
    module = r.getModule();
    cell = r.getCell();
  }

  ClassDef(HPionTrackerTrb3LookupChan, 1) // Channel level of the lookup table for the PionTracker TRB3 unpacker
};


class HPionTrackerTrb3LookupBoard: public TObject {
  friend class HPionTrackerTrb3Lookup;
protected:
  TObjArray* array;     // pointer array containing HPionTrackerTrb3LookupChan objects
public:
  HPionTrackerTrb3LookupBoard();
  ~HPionTrackerTrb3LookupBoard();

  HPionTrackerTrb3LookupChan* getChannel(Int_t c) {
    if (c >= 0 && c < 256) return &((*this)[c]);
    else return 0;
  }

  HPionTrackerTrb3LookupChan& operator[](Int_t i) {
    return *static_cast<HPionTrackerTrb3LookupChan*>((*array)[i]);
  }

  Int_t getSize()  {return 256;}
  void  clear();
  ClassDef(HPionTrackerTrb3LookupBoard, 1) // Board level of  the lookup table for the PionTracker TRB3 unpacker
};


class HPionTrackerTrb3Lookup : public HParSet {
protected:
  TObjArray* array;  // array of pointers of type HPionTrackerTrb3LookupBoard
  Int_t arrayOffset; // offset to calculate the index
public:
  HPionTrackerTrb3Lookup(const Char_t* name = "PionTrackerTrb3Lookup",
                         const Char_t* title = "Lookup table for the TRB3 unpacker of the PionTracker",
                         const Char_t* context = "PionTrackerTrb3LookupProduction",
                         Int_t minTrbnetAddress = Trbnet::kPionTrackerTrb3MinTrbnetAddress,
                         Int_t maxTrbnetAddress = Trbnet::kPionTrackerTrb3MaxTrbnetAddress);
  ~HPionTrackerTrb3Lookup();

  HPionTrackerTrb3LookupBoard* getBoard(Int_t trbnetAddress) {
    return (HPionTrackerTrb3LookupBoard*)(array->At(trbnetAddress - arrayOffset));
  }
  HPionTrackerTrb3LookupBoard* operator[](Int_t i) {
     return static_cast<HPionTrackerTrb3LookupBoard*>((*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   printParams();
  Bool_t fill(Int_t, Int_t, Int_t, Int_t);
  Bool_t readline(const Char_t*);
  void   putAsciiHeader(TString&);
  void   write(fstream&);
  ClassDef(HPionTrackerTrb3Lookup, 1) // Lookup table for the TRB3 unpacker of the PionTracker
};

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