ROOT logo
#ifndef HRPCTRB3LOOKUP_H
#define HRPCTRB3LOOKUP_H

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

using namespace Trbnet;
using namespace std;

class HRpcTrb3LookupChan : public TObject {
protected:
  Int_t  sector;    // sector number
  Int_t  column;    // column number
  Int_t  cell;      // cell number
  Char_t side;      // side of cell
  Int_t  feAddress; // front end address
  TString geomname; // geometric position
public:
  HRpcTrb3LookupChan()     { clear(); }
  ~HRpcTrb3LookupChan()    {;}
  Int_t getSector()    { return sector; }
  Int_t getColumn()    { return column; }
  Int_t getCell()      { return cell;  }
  Char_t getSide()     { return side;  }
  Int_t getFeAddress() { return feAddress;  }
  TString  getGeomName() { return geomname;  }
  void getAddress(Int_t& se,Int_t& co,Int_t& ce,Char_t& si,Int_t& fa) {
    se=sector;
    co=column;
    ce=cell;
    si=side;
    fa=feAddress;
  }
  void getAddress(Int_t& se,Int_t& co,Int_t& ce) {
    se=sector;
    co=column;
    ce=cell;
  }
  void fill(Int_t se,Int_t co,Int_t ce,Char_t si,Int_t fa,TString& gn) {
    sector=se;
    column=co;
    cell=ce;
    side=si;
    feAddress=fa;
    geomname=gn;
  }
  void fill(HRpcTrb3LookupChan& r) {
    sector=r.getSector();
    column=r.getColumn();
    cell=r.getCell();
    side=r.getSide();
    feAddress=r.getFeAddress();
    geomname=r.getGeomName();
  }
  void setSector(const Int_t n)    { sector=n; }
  void setColumn(const Int_t n)    { column=n; }
  void setCell(const Int_t n)      { cell=n; }
  void setSide(Char_t c)           { side=c; }
  void setFeAddress(const Int_t n) { feAddress=n; }
  void setGeomName(TString n)      { geomname=n; }
  void clear() {
    sector=column=cell=feAddress=-1;
    side='\0';
  }
  ClassDef(HRpcTrb3LookupChan,1) // Channel level of the lookup table for the RPC TRB2 unpacker
};


class HRpcTrb3LookupBoard: public TObject {
  friend class HRpcTrb3Lookup;
protected:
  TObjArray* array;     // pointer array containing HRpcTrb3LookupChan objects
public:
  HRpcTrb3LookupBoard();
  ~HRpcTrb3LookupBoard();
  HRpcTrb3LookupChan* getChannel(Int_t c) { if (c >= 0 && c < getSize()) return &((*this)[c]); else return 0; }
  HRpcTrb3LookupChan& operator[](Int_t i) { return *static_cast<HRpcTrb3LookupChan*>((*array)[i]); }
  Int_t getSize()  { return array ? array->GetLast() + 1 : 0; }
  void clear();
  ClassDef(HRpcTrb3LookupBoard,1) // Board level of  the lookup table for the RPC TRB3 unpacker
};


class HRpcTrb3Lookup : public HParSet {
protected:
  TObjArray* array;  // array of pointers of type HRpcTrb3LookupBoard
  Int_t arrayOffset; // offset to calculate the index
public:
  HRpcTrb3Lookup(const Char_t* name="RpcTrb3Lookup",
             const Char_t* title="Lookup table for the TRB3 unpacker of the RPC detector",
             const Char_t* context="RpcTrb3LookupProduction",
             Int_t minTrbnetAddress=Trbnet::kRpcTrb3MinTrbnetAddress,
             Int_t maxTrbnetAddress=Trbnet::kRpcTrb3MaxTrbnetAddress);
  ~HRpcTrb3Lookup();
  HRpcTrb3LookupBoard* getBoard(Int_t trbnetAddress) {
      if ((arrayOffset <= trbnetAddress) && (trbnetAddress <= (array->GetSize() + arrayOffset)))
	    return (HRpcTrb3LookupBoard*)(array->At(trbnetAddress - arrayOffset));
	return 0;
    }
  HRpcTrb3LookupBoard* operator[](Int_t i) { return static_cast<HRpcTrb3LookupBoard*>((*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,Int_t,TString& n);
  Bool_t readline(const Char_t*);
  void putAsciiHeader(TString&);
  void write(fstream&);
  ClassDef(HRpcTrb3Lookup,1) // Lookup table for the TRB3 unpacker of the RPC detector
};

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