//_HADES_CLASS_DESCRIPTION ////////////////////////////////////////////////////// //HldStackEvent // // Class used for reading HLD events with HldStackSource // ///////////////////////////////////////////////////// #include "hldstackevt.h" #include #include "Riostream.h" //ClassImp(HldStackEvt) HldStackEvt::HldStackEvt() { pHdr = (UInt4*) &hdr; pData = 0; lastSubEvtIdx = 0; } HldStackEvt::~HldStackEvt() { } Bool_t HldStackEvt::read() { /* pHdr = 0; pData = 0; if (pHdr) { // if (isSwapped()) swapHdr(); if (getSize() > getHdrSize()) { pData = pHdr + getHdrLen(); if (pData) return kTRUE; } } return kFALSE; */ return kTRUE; } Bool_t HldStackEvt::readSubEvt(size_t i) { UInt4* p; if (i) p = subEvt[i-1].getPaddedEnd(); else p = pData; if (p < getPaddedEnd()) subEvt[i] = HldSubEvt(p); else return kFALSE; return kTRUE; } Bool_t HldStackEvt::execute() { if (read()) { for (size_t idx = 0; idx < lastSubEvtIdx; idx++) *subEvtTable[idx].p = 0; for (size_t i = 0; i < maxSubEvts && readSubEvt(i); i++) { // loop subevts Bool_t unpacked=kFALSE; for (size_t idx = 0; idx < lastSubEvtIdx; idx++) { // loop unpackers if (subEvt[i].getId() == subEvtTable[idx].id) { subEvt[i].swapData(); *subEvtTable[idx].p = subEvt + i; unpacked=kTRUE; } } if (isWritable && !unpacked) subEvt[i].swapData(); } return kTRUE; } else { return kFALSE; } } Bool_t HldStackEvt::swap() { //Only test the swap byte order in the event if (read()) { return kTRUE; } else { return kFALSE; } }