ROOT logo
#ifndef HRICH700TRB3LOOKUP_H
#define HRICH700TRB3LOOKUP_H

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

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

using namespace Trbnet;
using namespace std;


// number of channels per dirich tdc. Note that channel 0 is special? so we need range 0 up to 32 inclusive
#define HRICH700_MAXTDCCHANNELS 33

/**
 * trb3 lookup classes for rich700. Adopted from lookup of start2
 * JAM (j.adamczewski@gsi.de) 8-Jun-2017 revised 24-Oct-2017
 * */


class HRich700Trb3LookupChan : public TObject {
protected:
   Int_t  fPMT;    	        //  Global ID of the RIÖCH700 PMT
   Int_t  fPixel;          // 	Local pixel number
public:
   HRich700Trb3LookupChan()     {
      clear();
   }
   virtual ~HRich700Trb3LookupChan()    {
      ;
   }
   Int_t getPMT()    {
      return fPMT;
   }
   Int_t getPixel()    {
        return fPixel;
     }


   void getAddress(Int_t& pmt, Int_t& pix) {
      pmt = fPMT;
      pix = fPixel;
   }
   void fill(Int_t pmt, Int_t pix) {
	   fPMT = pmt;
	   fPixel = pix;
   }
   void fill(HRich700Trb3LookupChan& r) {
	   fPMT = r.getPMT();
	   fPixel = r.getPixel();
   }
   void setPMT(const Int_t pmt)    {
	   fPMT = pmt;
   }
   void setPixel(const Int_t pix)    {
   	   fPixel = pix;
      }

   void clear() {
      fPMT = -1;
      fPixel = -1; //
   }
   ClassDef(HRich700Trb3LookupChan, 1) // Channel level of the lookup table for the RICH700 TRB3 unpacker
};


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


class HRich700Trb3Lookup : public HParSet {
protected:
   TObjArray* array;  // array of pointers of type HRich700Trb3LookupTdc
   Int_t arrayOffset; // offset to calculate the index
   Int_t arrayCursor; // scan exisiting subevent ids with this
public:
   HRich700Trb3Lookup(const Char_t* name = "Rich700Trb3Lookup",
                     const Char_t* title = "Lookup table for the TRB3 unpacker of the RICH700 detector",
                     const Char_t* context = "Rich700Trb3LookupProduction",
                     Int_t minTrbnetAddress = Trbnet::kRICHTrb3MinTrbnetAddress,
                     Int_t maxTrbnetAddress = Trbnet::kRICHTrb3MaxTrbnetAddress);
   virtual ~HRich700Trb3Lookup();
   HRich700Trb3LookupTdc* getTdc(Int_t trbnetAddress) {
	   if(trbnetAddress ==0) return 0;
      return (HRich700Trb3LookupTdc*)(array->At(trbnetAddress - arrayOffset));
   }
   HRich700Trb3LookupTdc* operator[](Int_t i) {
      return static_cast<HRich700Trb3LookupTdc*>((*array)[i]);
   }
   Int_t getSize() {
      return array->GetLast() + 1;
   }
   Int_t getArrayOffset() {
      return arrayOffset;
   }

  void resetTdcIterator();
  Int_t getNextTdcAddress();


   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(HRich700Trb3Lookup, 1) // Lookup table for the TRB3unpacker of the RICH700 detector
};

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