#ifndef HMDCUNPACKER_H
#define HMDCUNPACKER_H
#include "hldunpack.h"
#include "hmdcdataword.h"
class HCategory;
class HMdcRaw;
class HMdcRawStruct;
class HMdcRawEventHeader;
class TString;
class HMdcEvReadout;
class HMdcUnpacker: public HldUnpack {
protected:
static HMdcDataWord* dataword;
static Bool_t noComment;
HCategory *pMdcRawEventHeaderCat;
HCategory *pMdcDataWordCat;
HMdcEvReadout *pReadout;
HMdcRawStruct *rawc;
Int_t subEvtId;
Int_t tdcMode;
UInt_t subHeaderDecodeVersion;
UInt_t decodeVersion;
UInt_t maxDecodeVersion;
Bool_t debug;
Bool_t consistencyCheck;
Bool_t disableSamNrConsistencyCheck;
Bool_t mdcRawEventHeaderCatPersistency;
Bool_t mdcDataWordCatPersistency;
Bool_t fillDataWord;
Bool_t continueDecodingAfterInconsistency;
Int_t determineDecodeVersionCtr;
Bool_t standalone;
Bool_t versionSetManual;
Int_t setup[6][4];
Bool_t unpackerDebug;
UInt_t rocEvtHeaderSize;
Bool_t excludeBlackList;
Int_t* excludedBlackListCounters;
UInt_t* excludeBlackListMask;
UInt_t* excludeBlackListAdress;
Int_t excludeBlackListSize;
TString excludeBlackListContext;
Bool_t recoverBlackList;
Int_t* recoveredBlackListCounters;
UInt_t* recoverBlackListMask;
UInt_t* recoverBlackListAdress;
Int_t recoverBlackListSize;
TString recoverBlackListContext;
UInt_t* recoveryStorage;
UInt_t recoveryStorageCounter;
UInt_t createBlackListRecoveryTools;
enum { versionSwitchId = 1033466400 } ;
enum { COMPRESSED = 2, UNCOMPRESSED = 1 };
enum { UNCOMPRESSED_ROC_HEADERSIZE = 3, COMPRESSED_ROC_HEADERSIZE=0} ;
static const TString excludeBlackListContextDefaultString;
static const TString recoverBlackListContextDefaultString;
public:
HMdcUnpacker(Int_t id, Bool_t dbg=kFALSE, Bool_t consisCheck=kFALSE);
HMdcUnpacker(Int_t id, Int_t version, Bool_t dbg=kFALSE, Bool_t consisCheck=kFALSE);
HMdcUnpacker(HMdcUnpacker& mdc);
~HMdcUnpacker();
Bool_t init();
Bool_t reinit();
Int_t execute();
Bool_t finalize();
Bool_t checkMdcSetup(Int_t sector, Int_t module);
Bool_t checkMboRawStructBounds(Int_t sector, Int_t module, Int_t mbo, Int_t tdc);
Bool_t decodeSubHeader(UInt_t *data, UInt_t &subEvtSize);
Bool_t decodingMode(void);
void determineDecodeVersion(void);
Bool_t getConsistencyCheck(void){return consistencyCheck;};
Bool_t getContinueDecodingAfterInconsistency(void){return continueDecodingAfterInconsistency;};
Bool_t getDebug(void){return debug;};
UInt_t getDecodeVersion(void);
UInt_t getMaxDecodeVersion(void){return maxDecodeVersion;};
Bool_t getExcludeBlackList(void) {return excludeBlackList;};
Bool_t getRecoverBlackList(void) {return recoverBlackList;};
Bool_t getFillDataWord(void){return fillDataWord;};
void getMdcSetup(void);
Bool_t getPersistencyRawEventHeader(void){return mdcRawEventHeaderCatPersistency;};
Bool_t getPersistencyDataWord(void){return mdcDataWordCatPersistency;};
Bool_t getStandalone(void) {return standalone;};
Int_t getSubEvtId(void) const { return subEvtId; }
Int_t getSubEvtIdToSamNr(Int_t subEvtId,Bool_t expectUndefined=kFALSE);
UInt_t getSubHeaderDecodeVersion(void){return subHeaderDecodeVersion;};
UInt_t getRocEvtHeaderSize(void){return rocEvtHeaderSize;};
Int_t getTime(void) const { return dataword->getTime();};
Int_t getTdc(const Int_t chip, const Int_t chan) const {return 8*chip + chan;};
Int_t getTdcMode(void);
Bool_t getUnpackerDebug(void){return unpackerDebug;};
HCategory* initCategory(Cat_t cat, TString catname=" ", TString detector="Mdc");
void print(TString t="");
void setConsistencyCheck(Bool_t cons=kTRUE){consistencyCheck=cons;};
void setContinueDecodingAfterInconsistency(Bool_t cont=kTRUE);
void setDebug(Bool_t deb=kTRUE){debug=deb;};
void setDecodeVersion(UInt_t version, Bool_t manual=kTRUE);
void setDefaults(void);
void setDisableSamNrConsistencyCheck(Bool_t cons=kTRUE){disableSamNrConsistencyCheck=cons;};
void setErrorOutputFileName(const Char_t* f){Warning("setErrorOutputFileName()","obsolete function, no effect");};
void SetErrorOutputFileName(const Char_t* c){setErrorOutputFileName(c);};
void setExcludeBlackList(Bool_t b=kTRUE);
void setExcludeBlackListContext(TString s);
void setExcludeBlackList(TString s);
void enableExcludeBlackList(TString context);
void disableExcludeBlackList(void);
void setRecoverBlackList(Bool_t b=kTRUE);
void setRecoverBlackListContext(TString s);
void setRecoverBlackList(TString s);
void enableRecoverBlackList(TString context);
void disableRecoverBlackList(void);
void setFillDataWord(Bool_t b=kTRUE)
{
Warning("setFillDataWord()","Functionality switch disabled until bug is found - default: kFALSE");
};
void setPersistencyRawEventHeader(Bool_t b=kTRUE){mdcRawEventHeaderCatPersistency=b;};
void setRocEvtHeaderSize(UInt_t ui=3);
void setPersistencyDataWord(Bool_t b=kTRUE){mdcDataWordCatPersistency=b;};
void setStandalone(Bool_t b=kTRUE){standalone = b;};
void setSubHeaderDecodeVersion(UInt_t ui, Bool_t manual=kTRUE)
{subHeaderDecodeVersion=ui; versionSetManual=manual;};
void setTdcMode(int);
void setUnpackerDebug(Bool_t b=kTRUE){unpackerDebug=b;};
Bool_t testMdcSetup(Int_t sec, Int_t mod);
void setQuietMode(Bool_t quiet=kTRUE);
static Bool_t getQuietMode(void);
Int_t compareEventDateTimeTo(UInt_t cyear, UInt_t cmonth=1,
UInt_t cday=1, UInt_t chour=0,
UInt_t cmin=0, UInt_t csec=0);
static TString myexec(Char_t *);
protected:
Bool_t excludeBlackListData(UInt_t* data);
void errorAndExitCompareEventDateTimeTo(void);
void errorAndExitDetermineDecodeVersion(void);
void errorAndExitGetMdcSetup(void);
void errorAndExitFillUnknownReturnValueOfFillData(void);
void errorAndExitInitExcludeBlackListNoValidContext(void);
void errorAndExitInitRecoverBlackListNoValidContext(void);
void errorAndExitRecoverBlackListSep2005UnknownReturnValueOfFillData(void);
void errorAndExitSetDecodeVersion(UInt_t version);
void errorAndExitSetExcludeBlackListObsoleteCall(void);
void errorAndExitSetRecoverBlackListObsoleteCall(void);
void errorCheckMdcSetup(Int_t sector, Int_t module);
void errorCheckMboRawStructBoundsOutOfBounds(Int_t value, Int_t maxValue,
Int_t sector=-100, Int_t module=-100, Int_t mbo=-100);
void errorDecodeSubHeaderCannotDecode(void);
void errorDecodingModeInvalidCompressMode(UInt_t compressMode,UInt_t decoding);
void errorExecuteNoValidPointerTo(TString pointerName);
void errorExecuteErrorInFill(void);
void errorGetSubEvtIdToSamNrSamNrNotInLookupTable(UInt_t localSubEvtId, Int_t samNr);
void errorGetSubEvtIdToSamNrSubEvtIdOutOfMdcRange(UInt_t localSubEvtId, TString range);
void errorInitCannotGetParameterContainer(TString container);
void errorInitCategoryCannotAddCategory(TString catname, TString detector);
void errorInitCategoryCannotGetCategory(TString catname);
void errorFillCannotGetSlot(Int_t sector, Int_t module, Int_t mbo, Int_t tdc);
void errorFillDecodeSubHeaderFailed(void);
void errorFillDataPointerExceedingRange(UInt_t* deb,
UInt_t* end, UInt_t* enddata);
void errorFillErrorFillingDataWord(void);
void errorFillNoValidAddressInLookUpTable();
void errorFillSkippingRestOfSubEvent(void);
void errorFillMdcDataWordCannotGetSlot(void);
void errorFillMdcDataWordTooManyEntriesToSameLocation(Int_t maxentry);
void errorFillMdcRawEventHeaderCannotGetSlot(void);
void errorFillUnknownCodeForBlacklistRecovery(void);
Int_t executeBlackListRecovery(void);
Int_t fill(void);
Int_t fillData(void);
Int_t fillMdcDataWord(Int_t sector,Int_t module,Int_t mbo,Int_t tdc);
Int_t fillMdcRawEventHeader(Int_t errorFlag, Int_t rocModule, Int_t rocNumber,
Int_t rocSector, Int_t subEventSize,
Int_t trigType);
HMdcRaw* getFreeOrExistingSlot(Int_t §or,Int_t &module,Int_t &mbo,Int_t &tdc);
void infoDetermineDecodeVersion(void);
Int_t initExcludeBlackList(void);
Int_t initRecoverBlackList(void);
Bool_t matchHardwareAdressToSecModMboTdc(Int_t §or, Int_t &module, Int_t &mbo, Int_t &tdc);
void prepareBlackListRecovery(UInt_t eventSize);
void printExcludedBlackListCounter(void);
void printRecoveredBlackListCounter(void);
Int_t recoverBlackListSep2005(void);
Int_t recoverBlackListApr2006(void);
Int_t recoverBlackListSep2008(void);
void reinitBlackListRecovery(void);
void setExcludeBlackListInternal(Bool_t b){excludeBlackList=b;};
void setRecoverBlackListInternal(Bool_t b){recoverBlackList=b;};
Bool_t storeForRecoveryFromBlackList(UInt_t *data);
void warningExcludeDataWords(UInt_t data, UInt_t mask, UInt_t adress);
void warningExecuteSamNrNegative(Int_t samNr);
void warningExecuteNoValidSectorEntryInLookupTableForSamNr(Int_t samNr);
void warningExecuteNoValidModuleEntryInLookupTableForSamNr(Int_t samNr);
void warningInitExcludeBlackListNoValidContext(TString context);
void warningInitRecoverBlackListNoValidContext(TString context);
void warningRecoverBlackListSep2005IgnoringDatum(Int_t ctr, UInt_t datum);
void warningRecoverBlackListSep2005SkippingDataWord(UInt_t datum);
void warningSetQuietMode(void);
ClassDef(HMdcUnpacker, 3)
};
#endif /* ! HMDCUNPACKER_H */
Last change: Sat May 22 13:04:19 2010
Last generated: 2010-05-22 13:04
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.