using namespace std;
#include "htrbnetaddressmapping.h"
#include "htrb2correction.h"
#include "hpario.h"
#include "hdetpario.h"
#include <iostream>
#include <iomanip>
#include <ctype.h>
#include <stdlib.h>
ClassImp(HTrbnetAddressMapping)
HTrbnetAddressMapping::HTrbnetAddressMapping(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);
}
HTrbnetAddressMapping::~HTrbnetAddressMapping() {
array->Delete();
delete array;
}
Bool_t HTrbnetAddressMapping::init(HParIo* inp,Int_t* set) {
Bool_t rc=kFALSE;
HDetParIo* input=inp->getDetParIo("HSpecParIo");
if (input) rc=(input->init(this,set));
if (rc) {
Int_t n=0;
for(Int_t i=0;i<=array->GetLast();i++) {
HTrb2Correction* b=(*this)[i];
if (b&&strcmp(b->getBoardType(),"TRB")==0&&b->getNChannels()==0) {
if (n==0) cout<<" WARNING:\n";
cout<<" No TDC corrections for trbnet-address 0x"<<setw(4)<<left
<<hex<<(arrayOffset+i)<<dec<<endl;
n++;
}
}
}
return rc;
}
Int_t HTrbnetAddressMapping::write(HParIo* output) {
HDetParIo* out=output->getDetParIo("HSpecParIo");
if (out) return out->write(this);
return -1;
}
void HTrbnetAddressMapping::clear() {
array->Delete();
status=kFALSE;
resetInputVersions();
}
void HTrbnetAddressMapping::printParam() {
printf("Mapping of trbnet-addresses to readout boards\n");
printf("Format: trbnet-address temperatureSensor boardType nChannelsWithCorrections\n");
for(Int_t i=0;i<=array->GetLast();i++) {
HTrb2Correction* b=(*this)[i];
if (b) {
cout<<" 0x"<<setw(4)<<left<<hex<<(arrayOffset+i)<<dec<<" "<<b->GetName()
<<" "<<b->getBoardType()<<setw(5)<<right<<b->getNChannels()<<left<<endl;
}
}
}
HTrb2Correction* HTrbnetAddressMapping::addBoard(Int_t address,
const Char_t* temperatureSensor,
const Char_t* boardtype,
Int_t subEventId,
Int_t tdcResolMode) {
HTrb2Correction* p=0;
p=getBoard(address);
if (!p) {
p=new HTrb2Correction(temperatureSensor);
p->setBoardType(boardtype);
p->setSubeventId(subEventId);
p->setHighResolutionFlag(tdcResolMode);
array->AddAt(p,address-arrayOffset);
} else if (strcmp(p->GetName(),temperatureSensor)!=0) {
Error("addBoard","Board exists already for trbnet-address 0x%x:\n"
" old temperature sensor: %s new: %s\n",
address,p->GetName(),temperatureSensor);
}
return p;
}
Bool_t HTrbnetAddressMapping::readline(const Char_t *buf) {
Bool_t rc=kFALSE;
Int_t address=-1, subevtId=-1, tdcResolMode=-1;
Char_t tempSensor[30], boardType[30];
boardType[0]=tempSensor[0]='\0';
Int_t n=sscanf(buf," 0x%x %s %s %i %i",
&address,tempSensor,boardType,&subevtId,&tdcResolMode);
if (n==5) {
if (addBoard(address,tempSensor,boardType,subevtId,tdcResolMode)) rc=kTRUE;
} else {
Error("readline","Not enough or too many values in %s\n",buf);
}
return rc;
}
void HTrbnetAddressMapping::putAsciiHeader(TString& header) {
header=
"# Mapping of trbnet-address to TRB boards\n"
"# Format: trbnetAddress temperatureSensor boardType subeventId tdc resolution mode \n";
}
void HTrbnetAddressMapping::write(fstream& fout) {
for(Int_t i=0;i<=array->GetLast();i++) {
HTrb2Correction* b=(*this)[i];
if (b) {
fout<<" 0x"<<setw(4)<<left<<hex<<(arrayOffset+i)<<" "<<b->GetName()
<<" "<<b->getBoardType();
if (b->getSubeventId()>=0) {
fout<<" 0x"<<setw(4)<<left<<hex<<b->getSubeventId();
} else {
fout<<setw(8)<<right<<dec<<b->getSubeventId();
}
fout<<" "<<dec<<b->getHighResolutionFlag()<<endl;
}
}
fout<<"# ----------------------------------------------------------------------------"
<<endl;
fout<<"[Trb2Corrections]\n";
for(Int_t i=0;i<=array->GetLast();i++) {
HTrb2Correction* b=(*this)[i];
if (b) {
b->write(fout);
}
}
}
htrbnetaddressmapping.cc:1 htrbnetaddressmapping.cc:2 htrbnetaddressmapping.cc:3 htrbnetaddressmapping.cc:4 htrbnetaddressmapping.cc:5 htrbnetaddressmapping.cc:6 htrbnetaddressmapping.cc:7 htrbnetaddressmapping.cc:8 htrbnetaddressmapping.cc:9 htrbnetaddressmapping.cc:10 htrbnetaddressmapping.cc:11 htrbnetaddressmapping.cc:12 htrbnetaddressmapping.cc:13 htrbnetaddressmapping.cc:14 htrbnetaddressmapping.cc:15 htrbnetaddressmapping.cc:16 htrbnetaddressmapping.cc:17 htrbnetaddressmapping.cc:18 htrbnetaddressmapping.cc:19 htrbnetaddressmapping.cc:20 htrbnetaddressmapping.cc:21 htrbnetaddressmapping.cc:22 htrbnetaddressmapping.cc:23 htrbnetaddressmapping.cc:24 htrbnetaddressmapping.cc:25 htrbnetaddressmapping.cc:26 htrbnetaddressmapping.cc:27 htrbnetaddressmapping.cc:28 htrbnetaddressmapping.cc:29 htrbnetaddressmapping.cc:30 htrbnetaddressmapping.cc:31 htrbnetaddressmapping.cc:32 htrbnetaddressmapping.cc:33 htrbnetaddressmapping.cc:34 htrbnetaddressmapping.cc:35 htrbnetaddressmapping.cc:36 htrbnetaddressmapping.cc:37 htrbnetaddressmapping.cc:38 htrbnetaddressmapping.cc:39 htrbnetaddressmapping.cc:40 htrbnetaddressmapping.cc:41 htrbnetaddressmapping.cc:42 htrbnetaddressmapping.cc:43 htrbnetaddressmapping.cc:44 htrbnetaddressmapping.cc:45 htrbnetaddressmapping.cc:46 htrbnetaddressmapping.cc:47 htrbnetaddressmapping.cc:48 htrbnetaddressmapping.cc:49 htrbnetaddressmapping.cc:50 htrbnetaddressmapping.cc:51 htrbnetaddressmapping.cc:52 htrbnetaddressmapping.cc:53 htrbnetaddressmapping.cc:54 htrbnetaddressmapping.cc:55 htrbnetaddressmapping.cc:56 htrbnetaddressmapping.cc:57 htrbnetaddressmapping.cc:58 htrbnetaddressmapping.cc:59 htrbnetaddressmapping.cc:60 htrbnetaddressmapping.cc:61 htrbnetaddressmapping.cc:62 htrbnetaddressmapping.cc:63 htrbnetaddressmapping.cc:64 htrbnetaddressmapping.cc:65 htrbnetaddressmapping.cc:66 htrbnetaddressmapping.cc:67 htrbnetaddressmapping.cc:68 htrbnetaddressmapping.cc:69 htrbnetaddressmapping.cc:70 htrbnetaddressmapping.cc:71 htrbnetaddressmapping.cc:72 htrbnetaddressmapping.cc:73 htrbnetaddressmapping.cc:74 htrbnetaddressmapping.cc:75 htrbnetaddressmapping.cc:76 htrbnetaddressmapping.cc:77 htrbnetaddressmapping.cc:78 htrbnetaddressmapping.cc:79 htrbnetaddressmapping.cc:80 htrbnetaddressmapping.cc:81 htrbnetaddressmapping.cc:82 htrbnetaddressmapping.cc:83 htrbnetaddressmapping.cc:84 htrbnetaddressmapping.cc:85 htrbnetaddressmapping.cc:86 htrbnetaddressmapping.cc:87 htrbnetaddressmapping.cc:88 htrbnetaddressmapping.cc:89 htrbnetaddressmapping.cc:90 htrbnetaddressmapping.cc:91 htrbnetaddressmapping.cc:92 htrbnetaddressmapping.cc:93 htrbnetaddressmapping.cc:94 htrbnetaddressmapping.cc:95 htrbnetaddressmapping.cc:96 htrbnetaddressmapping.cc:97 htrbnetaddressmapping.cc:98 htrbnetaddressmapping.cc:99 htrbnetaddressmapping.cc:100 htrbnetaddressmapping.cc:101 htrbnetaddressmapping.cc:102 htrbnetaddressmapping.cc:103 htrbnetaddressmapping.cc:104 htrbnetaddressmapping.cc:105 htrbnetaddressmapping.cc:106 htrbnetaddressmapping.cc:107 htrbnetaddressmapping.cc:108 htrbnetaddressmapping.cc:109 htrbnetaddressmapping.cc:110 htrbnetaddressmapping.cc:111 htrbnetaddressmapping.cc:112 htrbnetaddressmapping.cc:113 htrbnetaddressmapping.cc:114 htrbnetaddressmapping.cc:115 htrbnetaddressmapping.cc:116 htrbnetaddressmapping.cc:117 htrbnetaddressmapping.cc:118 htrbnetaddressmapping.cc:119 htrbnetaddressmapping.cc:120 htrbnetaddressmapping.cc:121 htrbnetaddressmapping.cc:122 htrbnetaddressmapping.cc:123 htrbnetaddressmapping.cc:124 htrbnetaddressmapping.cc:125 htrbnetaddressmapping.cc:126 htrbnetaddressmapping.cc:127 htrbnetaddressmapping.cc:128 htrbnetaddressmapping.cc:129 htrbnetaddressmapping.cc:130 htrbnetaddressmapping.cc:131 htrbnetaddressmapping.cc:132 htrbnetaddressmapping.cc:133 htrbnetaddressmapping.cc:134 htrbnetaddressmapping.cc:135 htrbnetaddressmapping.cc:136 htrbnetaddressmapping.cc:137 htrbnetaddressmapping.cc:138 htrbnetaddressmapping.cc:139 htrbnetaddressmapping.cc:140 htrbnetaddressmapping.cc:141 htrbnetaddressmapping.cc:142 htrbnetaddressmapping.cc:143 htrbnetaddressmapping.cc:144 htrbnetaddressmapping.cc:145 htrbnetaddressmapping.cc:146 htrbnetaddressmapping.cc:147 htrbnetaddressmapping.cc:148 htrbnetaddressmapping.cc:149 htrbnetaddressmapping.cc:150 htrbnetaddressmapping.cc:151 htrbnetaddressmapping.cc:152 htrbnetaddressmapping.cc:153 htrbnetaddressmapping.cc:154 htrbnetaddressmapping.cc:155