#include "hades.h"
#include "hcategory.h"
#include "hdebug.h"
#include "hevent.h"
#include "heventheader.h"
#include "hldsource.h"
#include "hldsubevt.h"
#include "hruntimedb.h"
#include "hspectrometer.h"
#include "hstart2detector.h"
#include "hstart2raw.h"
#include "hstart2trb2lookup.h"
#include "hstart2trb2unpacker.h"
#include "hstartdef.h"
#include "htrb2correction.h"
#include "htrbnetaddressmapping.h"
#include "htrbnetunpacker.h"
#include <iostream>
using namespace std;
ClassImp(HStart2Trb2Unpacker)
HStart2Trb2Unpacker::HStart2Trb2Unpacker(UInt_t id): HTrb2Unpacker(id)
{
pRawCat = NULL;
timeRef = kTRUE;
}
Bool_t HStart2Trb2Unpacker::init(void)
{
HStart2Detector* det = (HStart2Detector*)gHades->getSetup()->getDetector("Start");
if (!det) {
Error("init", "No Start Detector found.");
return kFALSE;
}
pRawCat = det->buildCategory(catStart2Raw);
loc.set(2, 0, 0);
lookup = (HStart2Trb2Lookup*)(gHades->getRuntimeDb()->getContainer("Start2Trb2Lookup"));
if (!lookup) {
Error("init", "No Pointer to parameter container Start2Trb2Lookup.");
return kFALSE;
}
if (correctINL) {
trbaddressmap = (HTrbnetAddressMapping*)(gHades->getRuntimeDb()->getContainer("TrbnetAddressMapping"));
if (!trbaddressmap) {
Error("init", "No Pointer to parameter container TrbnetAddressMapping.");
return kFALSE;
}
}
if (NULL == trbNetUnpacker) {
if (gHades->getDataSource()) {
HDataSource* source = gHades->getDataSource();
if (source->InheritsFrom("HldSource")) {
trbNetUnpacker = ((HldSource *)gHades->getDataSource())->getTrbNetUnpacker();
} else {
Warning("init", "DataSource not inherited from HldSource! trbNetUnpacker == 0 ");
}
} else {
Warning("init", "Could not retrieve DataSource! trbNetUnpacker == 0 ");
}
}
if (!trbNetUnpacker->init()) {
Error("init()", "Failed to initialize HTrbNetUnpacker!");
return kFALSE;
}
return kTRUE;
}
Bool_t HStart2Trb2Unpacker::finalize(void)
{
if (!quietMode && debugFlag > 0) {
Info("finalize", "No control histograms implemented");
}
return kTRUE;
}
Int_t HStart2Trb2Unpacker::execute(void)
{
HStart2Raw *pRaw = 0;
Int_t nEvt = 0;
if (gHades->isCalibration()) {
return 1;
}
if (gHades->getCurrentEvent()->getHeader()->getId() == 0xe) {
return 1;
}
if (pSubEvt) {
nEvt = gHades->getCurrentEvent()->getHeader()->getEventSeqNumber();
Int_t DecodeOutput = 1;
while (1) {
DecodeOutput = decode();
uStartPosition = uStartPosition + uSubBlockSize + 1;
if (DecodeOutput == 0) {
Error("decode", "subsubevent decoding failed!!! Evt Nr : %i SubEvtId: %x", nEvt, subEvtId);
break;
}
if (DecodeOutput == 10) {
if (debugFlag > 0) Info("decode", "CTS info -> DecodeOutput : %i", DecodeOutput);
continue;
}
if (DecodeOutput == 100) {
uStartPosition = 0;
if (debugFlag > 0) Info("decode", "DecodeOutput : %i", DecodeOutput);
break;
}
if (timeRef) {
if (highResModeOn) correctRefTimeStartDet23();
else correctRefTimeCh(32);
}
HStart2Trb2LookupBoard *board = lookup->getBoard(uTrbNetAdress);
if (!board) {
Warning("execute", "Evt Nr : %i TrbNetAdress: %x (%i) unpacked but TRB Board not in lookup table", nEvt, uTrbNetAdress, uTrbNetAdress);
continue;
}
for (Int_t i = 0; i < board->getSize(); i++) {
if (trbLeadingMult[i] < 1) continue;
HStart2Trb2LookupChan *chan = board->getChannel(i);
chan->getAddress(loc[0], loc[1]);
if (loc[0] >= 0) {
pRaw = (HStart2Raw*)pRawCat->getObject(loc);
if (!pRaw) {
pRaw = (HStart2Raw *)pRawCat->getSlot(loc);
if (pRaw) {
pRaw = new(pRaw) HStart2Raw;
pRaw->setAddress(loc[0], loc[1]);
} else {
Error("execute()", "Can't get slot mod=%i, chan=%i", loc[0], loc[1]);
return -1;
}
} else {
Error("execute()", "Slot already exists for mod=%i, chan=%i", loc[0], loc[1]);
return -1;
}
Int_t m;
m = trbLeadingMult[i];
if (m > 10) {
m = 10;
}
for (Int_t chmult = 0; chmult < m; chmult++) {
if (debugFlag > 0) {
cout << "--filling data" << " time: " << trbLeadingTime[i][chmult] << endl;
}
pRaw->setTimeAndWidth(trbLeadingTime[i][chmult], trbADC[i][chmult]);
if (debugFlag > 0 && chmult < pRaw->getMaxMultiplicity()) {
cout << "--get data from raw" << " time: " << pRaw->getTime(chmult + 1) << endl;
}
}
}
}
}
}
return 1;
}
hstart2trb2unpacker.cc:10 hstart2trb2unpacker.cc:11 hstart2trb2unpacker.cc:12 hstart2trb2unpacker.cc:13 hstart2trb2unpacker.cc:14 hstart2trb2unpacker.cc:15 hstart2trb2unpacker.cc:16 hstart2trb2unpacker.cc:17 hstart2trb2unpacker.cc:18 hstart2trb2unpacker.cc:19 hstart2trb2unpacker.cc:20 hstart2trb2unpacker.cc:21 hstart2trb2unpacker.cc:22 hstart2trb2unpacker.cc:23 hstart2trb2unpacker.cc:24 hstart2trb2unpacker.cc:25 hstart2trb2unpacker.cc:26 hstart2trb2unpacker.cc:27 hstart2trb2unpacker.cc:28 hstart2trb2unpacker.cc:29 hstart2trb2unpacker.cc:30 hstart2trb2unpacker.cc:31 hstart2trb2unpacker.cc:32 hstart2trb2unpacker.cc:33 hstart2trb2unpacker.cc:34 hstart2trb2unpacker.cc:35 hstart2trb2unpacker.cc:36 hstart2trb2unpacker.cc:37 hstart2trb2unpacker.cc:38 hstart2trb2unpacker.cc:39 hstart2trb2unpacker.cc:40 hstart2trb2unpacker.cc:41 hstart2trb2unpacker.cc:42 hstart2trb2unpacker.cc:43 hstart2trb2unpacker.cc:44 hstart2trb2unpacker.cc:45 hstart2trb2unpacker.cc:46 hstart2trb2unpacker.cc:47 hstart2trb2unpacker.cc:48 hstart2trb2unpacker.cc:49 hstart2trb2unpacker.cc:50 hstart2trb2unpacker.cc:51 hstart2trb2unpacker.cc:52 hstart2trb2unpacker.cc:53 hstart2trb2unpacker.cc:54 hstart2trb2unpacker.cc:55 hstart2trb2unpacker.cc:56 hstart2trb2unpacker.cc:57 hstart2trb2unpacker.cc:58 hstart2trb2unpacker.cc:59 hstart2trb2unpacker.cc:60 hstart2trb2unpacker.cc:61 hstart2trb2unpacker.cc:62 hstart2trb2unpacker.cc:63 hstart2trb2unpacker.cc:64 hstart2trb2unpacker.cc:65 hstart2trb2unpacker.cc:66 hstart2trb2unpacker.cc:67 hstart2trb2unpacker.cc:68 hstart2trb2unpacker.cc:69 hstart2trb2unpacker.cc:70 hstart2trb2unpacker.cc:71 hstart2trb2unpacker.cc:72 hstart2trb2unpacker.cc:73 hstart2trb2unpacker.cc:74 hstart2trb2unpacker.cc:75 hstart2trb2unpacker.cc:76 hstart2trb2unpacker.cc:77 hstart2trb2unpacker.cc:78 hstart2trb2unpacker.cc:79 hstart2trb2unpacker.cc:80 hstart2trb2unpacker.cc:81 hstart2trb2unpacker.cc:82 hstart2trb2unpacker.cc:83 hstart2trb2unpacker.cc:84 hstart2trb2unpacker.cc:85 hstart2trb2unpacker.cc:86 hstart2trb2unpacker.cc:87 hstart2trb2unpacker.cc:88 hstart2trb2unpacker.cc:89 hstart2trb2unpacker.cc:90 hstart2trb2unpacker.cc:91 hstart2trb2unpacker.cc:92 hstart2trb2unpacker.cc:93 hstart2trb2unpacker.cc:94 hstart2trb2unpacker.cc:95 hstart2trb2unpacker.cc:96 hstart2trb2unpacker.cc:97 hstart2trb2unpacker.cc:98 hstart2trb2unpacker.cc:99 hstart2trb2unpacker.cc:100 hstart2trb2unpacker.cc:101 hstart2trb2unpacker.cc:102 hstart2trb2unpacker.cc:103 hstart2trb2unpacker.cc:104 hstart2trb2unpacker.cc:105 hstart2trb2unpacker.cc:106 hstart2trb2unpacker.cc:107 hstart2trb2unpacker.cc:108 hstart2trb2unpacker.cc:109 hstart2trb2unpacker.cc:110 hstart2trb2unpacker.cc:111 hstart2trb2unpacker.cc:112 hstart2trb2unpacker.cc:113 hstart2trb2unpacker.cc:114 hstart2trb2unpacker.cc:115 hstart2trb2unpacker.cc:116 hstart2trb2unpacker.cc:117 hstart2trb2unpacker.cc:118 hstart2trb2unpacker.cc:119 hstart2trb2unpacker.cc:120 hstart2trb2unpacker.cc:121 hstart2trb2unpacker.cc:122 hstart2trb2unpacker.cc:123 hstart2trb2unpacker.cc:124 hstart2trb2unpacker.cc:125 hstart2trb2unpacker.cc:126 hstart2trb2unpacker.cc:127 hstart2trb2unpacker.cc:128 hstart2trb2unpacker.cc:129 hstart2trb2unpacker.cc:130 hstart2trb2unpacker.cc:131 hstart2trb2unpacker.cc:132 hstart2trb2unpacker.cc:133 hstart2trb2unpacker.cc:134 hstart2trb2unpacker.cc:135 hstart2trb2unpacker.cc:136 hstart2trb2unpacker.cc:137 hstart2trb2unpacker.cc:138 hstart2trb2unpacker.cc:139 hstart2trb2unpacker.cc:140 hstart2trb2unpacker.cc:141 hstart2trb2unpacker.cc:142 hstart2trb2unpacker.cc:143 hstart2trb2unpacker.cc:144 hstart2trb2unpacker.cc:145 hstart2trb2unpacker.cc:146 hstart2trb2unpacker.cc:147 hstart2trb2unpacker.cc:148 hstart2trb2unpacker.cc:149 hstart2trb2unpacker.cc:150 hstart2trb2unpacker.cc:151 hstart2trb2unpacker.cc:152 hstart2trb2unpacker.cc:153 hstart2trb2unpacker.cc:154 hstart2trb2unpacker.cc:155 hstart2trb2unpacker.cc:156 hstart2trb2unpacker.cc:157 hstart2trb2unpacker.cc:158 hstart2trb2unpacker.cc:159 hstart2trb2unpacker.cc:160 hstart2trb2unpacker.cc:161 hstart2trb2unpacker.cc:162 hstart2trb2unpacker.cc:163 hstart2trb2unpacker.cc:164 hstart2trb2unpacker.cc:165 hstart2trb2unpacker.cc:166 hstart2trb2unpacker.cc:167 hstart2trb2unpacker.cc:168 hstart2trb2unpacker.cc:169 hstart2trb2unpacker.cc:170 hstart2trb2unpacker.cc:171 hstart2trb2unpacker.cc:172 hstart2trb2unpacker.cc:173 hstart2trb2unpacker.cc:174 hstart2trb2unpacker.cc:175 hstart2trb2unpacker.cc:176 hstart2trb2unpacker.cc:177 hstart2trb2unpacker.cc:178 hstart2trb2unpacker.cc:179 hstart2trb2unpacker.cc:180 hstart2trb2unpacker.cc:181 hstart2trb2unpacker.cc:182 hstart2trb2unpacker.cc:183 hstart2trb2unpacker.cc:184 hstart2trb2unpacker.cc:185 hstart2trb2unpacker.cc:186 hstart2trb2unpacker.cc:187 hstart2trb2unpacker.cc:188 hstart2trb2unpacker.cc:189 hstart2trb2unpacker.cc:190 hstart2trb2unpacker.cc:191 hstart2trb2unpacker.cc:192 hstart2trb2unpacker.cc:193 hstart2trb2unpacker.cc:194 hstart2trb2unpacker.cc:195 hstart2trb2unpacker.cc:196 hstart2trb2unpacker.cc:197 hstart2trb2unpacker.cc:198 hstart2trb2unpacker.cc:199 hstart2trb2unpacker.cc:200 hstart2trb2unpacker.cc:201 hstart2trb2unpacker.cc:202 hstart2trb2unpacker.cc:203 hstart2trb2unpacker.cc:204 hstart2trb2unpacker.cc:205 hstart2trb2unpacker.cc:206 hstart2trb2unpacker.cc:207 hstart2trb2unpacker.cc:208 hstart2trb2unpacker.cc:209 hstart2trb2unpacker.cc:210 hstart2trb2unpacker.cc:211 hstart2trb2unpacker.cc:212 hstart2trb2unpacker.cc:213 hstart2trb2unpacker.cc:214 hstart2trb2unpacker.cc:215 hstart2trb2unpacker.cc:216 hstart2trb2unpacker.cc:217