#include "hpiontrackertrb3lookup.h"
#include "hdetpario.h"
#include "hpario.h"
#include <fstream>
using namespace std;
ClassImp(HPionTrackerTrb3LookupChan)
ClassImp(HPionTrackerTrb3LookupBoard)
ClassImp(HPionTrackerTrb3Lookup)
HPionTrackerTrb3LookupBoard::HPionTrackerTrb3LookupBoard() {
array = new TObjArray(256);
for (Int_t i = 0; i < 256; i++) array->AddAt(new HPionTrackerTrb3LookupChan(), i);
}
HPionTrackerTrb3LookupBoard::~HPionTrackerTrb3LookupBoard() {
array->Delete();
delete array;
}
void HPionTrackerTrb3LookupBoard::clear() {
for (Int_t i = 0; i < 256; i++)(*this)[i].clear();
}
HPionTrackerTrb3Lookup::HPionTrackerTrb3Lookup(const Char_t* name,
const Char_t* title,
const Char_t* context,
Int_t minTrbnetAddress,
Int_t maxTrbnetAddress)
: HParSet(name, title, context) {
arrayOffset = minTrbnetAddress;
array = new TObjArray(maxTrbnetAddress - minTrbnetAddress + 1);
}
HPionTrackerTrb3Lookup::~HPionTrackerTrb3Lookup() {
array->Delete();
delete array;
}
Bool_t HPionTrackerTrb3Lookup::init(HParIo* inp, Int_t* set) {
HDetParIo* input = inp->getDetParIo("HPionTrackerParIo");
if (input) return (input->init(this, set));
return kFALSE;
}
Int_t HPionTrackerTrb3Lookup::write(HParIo* output) {
HDetParIo* out = output->getDetParIo("HPionTrackerParIo");
if (out) return out->write(this);
return -1;
}
void HPionTrackerTrb3Lookup::clear() {
array->Delete();
status = kFALSE;
resetInputVersions();
}
void HPionTrackerTrb3Lookup::printParams() {
printf("Lookup table for the TRB3 unpacker of the PionTracker\n");
printf("trbnet-address channel module cell\n");
for (Int_t i = 0; i <= array->GetLast(); i++) {
HPionTrackerTrb3LookupBoard* b = (*this)[i];
if (b) {
for (Int_t j = 0; j < b->getSize(); j++) {
HPionTrackerTrb3LookupChan& chan = (*b)[j];
Int_t module = chan.getModule();
if (module >= 0) {
printf("0x%x %4i %5i%5i\n",
arrayOffset + i, j, module, chan.getCell());
}
}
}
}
}
Bool_t HPionTrackerTrb3Lookup::fill(Int_t id, Int_t chan, Int_t mod, Int_t cell) {
Bool_t rc = kFALSE;
HPionTrackerTrb3LookupBoard* p = getBoard(id);
if (!p) {
p = new HPionTrackerTrb3LookupBoard();
array->AddAt(p, id - arrayOffset);
}
HPionTrackerTrb3LookupChan* c = p->getChannel(chan);
if (c) {
c->fill(mod, cell);
rc = kTRUE;
} else {
Error("fill", "Invalid channel number %i", chan);
}
return rc;
}
Bool_t HPionTrackerTrb3Lookup::readline(const Char_t *buf) {
Bool_t rc = kFALSE;
Int_t id, chan, mod, cell;
Int_t n = sscanf(buf, " 0x%x %i %i%i", &id, &chan, &mod, &cell);
if (4 == n) {
rc = fill(id, chan, mod, cell);
} else {
if (n < 4) Error("readline", "Not enough values in line %s\n", buf);
else Error("readline", "Too many values in line %s\n", buf);
}
return rc;
}
void HPionTrackerTrb3Lookup::putAsciiHeader(TString& header) {
header = "# Lookup table for the TRB3 unpacker of the PionTracker\n"
"# Format:\n"
"# trbnet-address channel module cell\n";
}
void HPionTrackerTrb3Lookup::write(fstream& fout) {
for (Int_t i = 0; i <= array->GetLast(); i++) {
HPionTrackerTrb3LookupBoard* b = (*this)[i];
if (b) {
for (Int_t j = 0; j < b->getSize(); j++) {
HPionTrackerTrb3LookupChan& chan = (*b)[j];
Int_t module = chan.getModule();
if (module >= 0) {
fout << "0x" << hex << (arrayOffset + i) << dec << setw(5) << j
<< setw(5) << module << setw(5) << chan.getCell() << '\n';
}
}
}
}
}
hpiontrackertrb3lookup.cc:1 hpiontrackertrb3lookup.cc:2 hpiontrackertrb3lookup.cc:3 hpiontrackertrb3lookup.cc:4 hpiontrackertrb3lookup.cc:5 hpiontrackertrb3lookup.cc:6 hpiontrackertrb3lookup.cc:7 hpiontrackertrb3lookup.cc:8 hpiontrackertrb3lookup.cc:9 hpiontrackertrb3lookup.cc:10 hpiontrackertrb3lookup.cc:11 hpiontrackertrb3lookup.cc:12 hpiontrackertrb3lookup.cc:13 hpiontrackertrb3lookup.cc:14 hpiontrackertrb3lookup.cc:15 hpiontrackertrb3lookup.cc:16 hpiontrackertrb3lookup.cc:17 hpiontrackertrb3lookup.cc:18 hpiontrackertrb3lookup.cc:19 hpiontrackertrb3lookup.cc:20 hpiontrackertrb3lookup.cc:21 hpiontrackertrb3lookup.cc:22 hpiontrackertrb3lookup.cc:23 hpiontrackertrb3lookup.cc:24 hpiontrackertrb3lookup.cc:25 hpiontrackertrb3lookup.cc:26 hpiontrackertrb3lookup.cc:27 hpiontrackertrb3lookup.cc:28 hpiontrackertrb3lookup.cc:29 hpiontrackertrb3lookup.cc:30 hpiontrackertrb3lookup.cc:31 hpiontrackertrb3lookup.cc:32 hpiontrackertrb3lookup.cc:33 hpiontrackertrb3lookup.cc:34 hpiontrackertrb3lookup.cc:35 hpiontrackertrb3lookup.cc:36 hpiontrackertrb3lookup.cc:37 hpiontrackertrb3lookup.cc:38 hpiontrackertrb3lookup.cc:39 hpiontrackertrb3lookup.cc:40 hpiontrackertrb3lookup.cc:41 hpiontrackertrb3lookup.cc:42 hpiontrackertrb3lookup.cc:43 hpiontrackertrb3lookup.cc:44 hpiontrackertrb3lookup.cc:45 hpiontrackertrb3lookup.cc:46 hpiontrackertrb3lookup.cc:47 hpiontrackertrb3lookup.cc:48 hpiontrackertrb3lookup.cc:49 hpiontrackertrb3lookup.cc:50 hpiontrackertrb3lookup.cc:51 hpiontrackertrb3lookup.cc:52 hpiontrackertrb3lookup.cc:53 hpiontrackertrb3lookup.cc:54 hpiontrackertrb3lookup.cc:55 hpiontrackertrb3lookup.cc:56 hpiontrackertrb3lookup.cc:57 hpiontrackertrb3lookup.cc:58 hpiontrackertrb3lookup.cc:59 hpiontrackertrb3lookup.cc:60 hpiontrackertrb3lookup.cc:61 hpiontrackertrb3lookup.cc:62 hpiontrackertrb3lookup.cc:63 hpiontrackertrb3lookup.cc:64 hpiontrackertrb3lookup.cc:65 hpiontrackertrb3lookup.cc:66 hpiontrackertrb3lookup.cc:67 hpiontrackertrb3lookup.cc:68 hpiontrackertrb3lookup.cc:69 hpiontrackertrb3lookup.cc:70 hpiontrackertrb3lookup.cc:71 hpiontrackertrb3lookup.cc:72 hpiontrackertrb3lookup.cc:73 hpiontrackertrb3lookup.cc:74 hpiontrackertrb3lookup.cc:75 hpiontrackertrb3lookup.cc:76 hpiontrackertrb3lookup.cc:77 hpiontrackertrb3lookup.cc:78 hpiontrackertrb3lookup.cc:79 hpiontrackertrb3lookup.cc:80 hpiontrackertrb3lookup.cc:81 hpiontrackertrb3lookup.cc:82 hpiontrackertrb3lookup.cc:83 hpiontrackertrb3lookup.cc:84 hpiontrackertrb3lookup.cc:85 hpiontrackertrb3lookup.cc:86 hpiontrackertrb3lookup.cc:87 hpiontrackertrb3lookup.cc:88 hpiontrackertrb3lookup.cc:89 hpiontrackertrb3lookup.cc:90 hpiontrackertrb3lookup.cc:91 hpiontrackertrb3lookup.cc:92 hpiontrackertrb3lookup.cc:93 hpiontrackertrb3lookup.cc:94 hpiontrackertrb3lookup.cc:95 hpiontrackertrb3lookup.cc:96 hpiontrackertrb3lookup.cc:97 hpiontrackertrb3lookup.cc:98 hpiontrackertrb3lookup.cc:99 hpiontrackertrb3lookup.cc:100 hpiontrackertrb3lookup.cc:101 hpiontrackertrb3lookup.cc:102 hpiontrackertrb3lookup.cc:103 hpiontrackertrb3lookup.cc:104 hpiontrackertrb3lookup.cc:105 hpiontrackertrb3lookup.cc:106 hpiontrackertrb3lookup.cc:107 hpiontrackertrb3lookup.cc:108 hpiontrackertrb3lookup.cc:109 hpiontrackertrb3lookup.cc:110 hpiontrackertrb3lookup.cc:111 hpiontrackertrb3lookup.cc:112 hpiontrackertrb3lookup.cc:113 hpiontrackertrb3lookup.cc:114 hpiontrackertrb3lookup.cc:115 hpiontrackertrb3lookup.cc:116 hpiontrackertrb3lookup.cc:117 hpiontrackertrb3lookup.cc:118 hpiontrackertrb3lookup.cc:119 hpiontrackertrb3lookup.cc:120 hpiontrackertrb3lookup.cc:121 hpiontrackertrb3lookup.cc:122 hpiontrackertrb3lookup.cc:123 hpiontrackertrb3lookup.cc:124 hpiontrackertrb3lookup.cc:125 hpiontrackertrb3lookup.cc:126 hpiontrackertrb3lookup.cc:127 hpiontrackertrb3lookup.cc:128 hpiontrackertrb3lookup.cc:129 hpiontrackertrb3lookup.cc:130 hpiontrackertrb3lookup.cc:131 hpiontrackertrb3lookup.cc:132 hpiontrackertrb3lookup.cc:133 hpiontrackertrb3lookup.cc:134 hpiontrackertrb3lookup.cc:135 hpiontrackertrb3lookup.cc:136 hpiontrackertrb3lookup.cc:137 hpiontrackertrb3lookup.cc:138 hpiontrackertrb3lookup.cc:139 hpiontrackertrb3lookup.cc:140 hpiontrackertrb3lookup.cc:141 hpiontrackertrb3lookup.cc:142 hpiontrackertrb3lookup.cc:143 hpiontrackertrb3lookup.cc:144 hpiontrackertrb3lookup.cc:145 hpiontrackertrb3lookup.cc:146 hpiontrackertrb3lookup.cc:147 hpiontrackertrb3lookup.cc:148 hpiontrackertrb3lookup.cc:149 hpiontrackertrb3lookup.cc:150 hpiontrackertrb3lookup.cc:151 hpiontrackertrb3lookup.cc:152 hpiontrackertrb3lookup.cc:153