#include "hldsource.h"
#include "hldevt.h"
#include "hldsubevt.h"
#include "hrecevent.h"
#include "hades.h"
#include "hmessagemgr.h"
ClassImp(HldSource)
HldSource::HldSource(void) {
fReadEvent=0;
fUnpackerList=new TList();
isDumped=kFALSE;
isScanned=kFALSE;
}
HldSource::~HldSource(void) {
if (fUnpackerList) {
fUnpackerList->Delete();
delete fUnpackerList;
fUnpackerList = 0;
}
if (fReadEvent)
{
delete fReadEvent;
fReadEvent = NULL;
}
}
void HldSource::addUnpacker(HldUnpack *unpacker) {
fUnpackerList->Add(unpacker);
}
Bool_t HldSource::initUnpacker(void) {
TIter next(fUnpackerList);
HldUnpack *unpacker;
if (!(*fEventAddr)) {
(*fEventAddr)=new HRecEvent;
}
while ( (unpacker=(HldUnpack *)next())!=NULL) {
if (!unpacker->init()) return kFALSE;
}
return kTRUE;
}
Bool_t HldSource::reinit(void) {
TIter next(fUnpackerList);
HldUnpack *unpacker;
while ( (unpacker=(HldUnpack *)next())!=NULL) {
if (!unpacker->reinit()) return kFALSE;
}
return kTRUE;
}
Bool_t HldSource::finalizeUnpacker(void) {
TIter next(fUnpackerList);
HldUnpack *unpacker;
if (!(*fEventAddr)) {
(*fEventAddr)=new HRecEvent;
}
while ( (unpacker=(HldUnpack *)next())!=NULL) {
if (!unpacker->finalize()) return kFALSE;
}
return kTRUE;
}
Bool_t HldSource::finalize(void) {
return finalizeUnpacker();
}
void HldSource::decodeHeader(HEventHeader *dest) {
dest=((*fEventAddr)->getHeader());
dest->setEventSize(fReadEvent->getSize());
dest->setEventDecoding(fReadEvent->getDecoding());
dest->setEventSeqNumber(fReadEvent->getSeqNr());
dest->setDate(fReadEvent->getDate());
dest->setTime(fReadEvent->getTime());
dest->setEventRunNumber(fReadEvent->getRunNr());
dest->setEventPad(fReadEvent->getPad());
UInt_t trig = fReadEvent->getId();
dest->setId(trig & 0xf);
dest->setDownscalingFlag((trig >> 4) & 0x1);
dest->setTriggerDecision((trig >> 5) & 0x7);
dest->setVersion((trig >> 12) & 0xF);
dest->setErrorBit((trig >> 31) & 0x01 );
}
EDsState HldSource::scanIt(HldEvt *evt) {
Bool_t r=kTRUE;
if (!evt->scanHdr()) r=kFALSE;
UInt_t *data=evt->getData();
Int_t t=HMessageMgr::DET_ALL;
if (!data) {INFO_msg(10,t,"*** No subevent in this event ****\n");
return kDsOk;
}
UInt_t *end=evt->getEnd();
HldSubEvt subevt;
while ( data < end ){
subevt= HldSubEvt(data);
if (!subevt.scanIt()) r=kFALSE;
data= subevt.getPaddedEnd();
}
if (!r) return kDsError;
return kDsOk;
}
EDsState HldSource::showIt(HldEvt *evt){
SEPERATOR_msg("*",66);
evt->dumpHdr();
SEPERATOR_msg("*",66);
UInt_t *data=evt->getData();
if (!data) {INFO_msg(10,HMessageMgr::DET_ALL,"*** No subevent in this event ****\n");
return kDsOk;
}
UInt_t *end=evt->getEnd();
HldSubEvt subevt;
while ( data < end ){
subevt= HldSubEvt(data);
subevt.dumpIt();
data= subevt.getPaddedEnd();
}
return kDsOk;
}
EDsState HldSource::dumpEvt(void) {
if (!fReadEvent) return kDsError;
else{
if(!(fReadEvent->swap()) ) return kDsError;
return showIt(fReadEvent);
}
}
EDsState HldSource::scanEvt(void) {
if (!fReadEvent) return kDsError;
else{
if(!(fReadEvent->swap()) ) return kDsError;
return scanIt(fReadEvent);
}
}
Last change: Sat May 22 13:18:01 2010
Last generated: 2010-05-22 13:18
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.