#include "hmdcunpacker.h" |
HMdcUnpacker
class description - source file - inheritance tree (.pdf)
protected:
void errorAndExitCompareEventDateTimeTo()
void errorAndExitDetermineDecodeVersion()
void errorAndExitFillUnknownReturnValueOfFillData()
void errorAndExitGetMdcSetup()
void errorAndExitInitExcludeBlackListNoValidContext()
void errorAndExitInitRecoverBlackListNoValidContext()
void errorAndExitRecoverBlackListSep2005UnknownReturnValueOfFillData()
void errorAndExitSetDecodeVersion(UInt_t version)
void errorAndExitSetExcludeBlackListObsoleteCall()
void errorAndExitSetRecoverBlackListObsoleteCall()
void errorCheckMboRawStructBoundsOutOfBounds(Int_t value, Int_t maxValue, Int_t sector = -100, Int_t module = -100, Int_t mbo = -100)
void errorCheckMdcSetup(Int_t sector, Int_t module)
void errorDecodeSubHeaderCannotDecode()
void errorDecodingModeInvalidCompressMode(UInt_t compressMode, UInt_t decoding)
void errorExecuteErrorInFill()
void errorExecuteNoValidPointerTo(TString pointerName)
void errorFillCannotGetSlot(Int_t sector, Int_t module, Int_t mbo, Int_t tdc)
void errorFillDataPointerExceedingRange(UInt_t* deb, UInt_t* end, UInt_t* enddata)
void errorFillDecodeSubHeaderFailed()
void errorFillErrorFillingDataWord()
void errorFillMdcDataWordCannotGetSlot()
void errorFillMdcDataWordTooManyEntriesToSameLocation(Int_t maxentry)
void errorFillMdcRawEventHeaderCannotGetSlot()
void errorFillNoValidAddressInLookUpTable()
void errorFillSkippingRestOfSubEvent()
void errorFillUnknownCodeForBlacklistRecovery()
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)
Bool_t excludeBlackListData(UInt_t* data)
Int_t executeBlackListRecovery()
Int_t fill()
Int_t fillData()
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& sector, Int_t& module, Int_t& mbo, Int_t& tdc)
void infoDetermineDecodeVersion()
Int_t initExcludeBlackList()
Int_t initRecoverBlackList()
Bool_t matchHardwareAdressToSecModMboTdc(Int_t& sector, Int_t& module, Int_t& mbo, Int_t& tdc)
void prepareBlackListRecovery(UInt_t eventSize)
void printExcludedBlackListCounter()
void printRecoveredBlackListCounter()
Int_t recoverBlackListApr2006()
Int_t recoverBlackListSep2005()
void reinitBlackListRecovery()
void setExcludeBlackListInternal(Bool_t b)
void setRecoverBlackListInternal(Bool_t b)
Bool_t storeForRecoveryFromBlackList(UInt_t* data)
void warningExcludeDataWords(UInt_t data, UInt_t mask, UInt_t adress)
void warningExecuteNoValidModuleEntryInLookupTableForSamNr(Int_t samNr)
void warningExecuteNoValidSectorEntryInLookupTableForSamNr(Int_t samNr)
void warningExecuteSamNrNegative(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()
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 checkMboRawStructBounds(Int_t sector, Int_t module, Int_t mbo, Int_t tdc)
Bool_t checkMdcSetup(Int_t sector, Int_t module)
static TClass* Class()
int compareEventDateTimeTo(UInt_t cyear, UInt_t cmonth = 1, UInt_t cday = 1, UInt_t chour = 0, UInt_t cmin = 0, UInt_t csec = 0)
Bool_t decodeSubHeader(UInt_t* data, UInt_t& subEvtSize)
Bool_t decodingMode()
void determineDecodeVersion()
void disableExcludeBlackList()
void disableRecoverBlackList()
void enableExcludeBlackList(TString context)
void enableRecoverBlackList(TString context)
virtual Int_t execute()
virtual Bool_t finalize()
Bool_t getConsistencyCheck()
Bool_t getContinueDecodingAfterInconsistency()
Bool_t getDebug()
UInt_t getDecodeVersion()
Bool_t getExcludeBlackList()
Bool_t getFillDataWord()
UInt_t getMaxDecodeVersion()
void getMdcSetup()
Bool_t getPersistencyDataWord()
Bool_t getPersistencyRawEventHeader()
static Bool_t getQuietMode()
Bool_t getRecoverBlackList()
UInt_t getRocEvtHeaderSize()
Bool_t getStandalone()
virtual Int_t getSubEvtId() const
Int_t getSubEvtIdToSamNr(Int_t subEvtId, Bool_t expectUndefined = kFALSE)
UInt_t getSubHeaderDecodeVersion()
Int_t getTdc(const Int_t chip, const Int_t chan) const
Int_t getTdcMode()
Int_t getTime() const
Bool_t getUnpackerDebug()
virtual Bool_t init()
HCategory* initCategory(Cat_t cat, TString catname = , TString detector = Mdc)
virtual TClass* IsA() const
static TString myexec(char*)
HMdcUnpacker& operator=(const HMdcUnpacker&)
void print(TString t)
virtual Bool_t reinit()
void setConsistencyCheck(Bool_t cons = kTRUE)
void setContinueDecodingAfterInconsistency(Bool_t cont = kTRUE)
void setDebug(Bool_t deb = kTRUE)
void setDecodeVersion(UInt_t version, Bool_t manual = kTRUE)
void setDefaults()
void setDisableSamNrConsistencyCheck(Bool_t cons = kTRUE)
void setErrorOutputFileName(Char_t* f)
void SetErrorOutputFileName(Char_t* c)
void setExcludeBlackList(Bool_t b = kTRUE)
void setExcludeBlackList(TString s)
void setExcludeBlackListContext(TString s)
void setFillDataWord(Bool_t b = kTRUE)
void setPersistencyDataWord(Bool_t b = kTRUE)
void setPersistencyRawEventHeader(Bool_t b = kTRUE)
void setQuietMode(Bool_t quiet = kTRUE)
void setRecoverBlackList(Bool_t b = kTRUE)
void setRecoverBlackList(TString s)
void setRecoverBlackListContext(TString s)
void setRocEvtHeaderSize(UInt_t ui = 3)
void setStandalone(Bool_t b = kTRUE)
void setSubHeaderDecodeVersion(UInt_t ui, Bool_t manual = kTRUE)
void setTdcMode(int)
void setUnpackerDebug(Bool_t b = kTRUE)
virtual void ShowMembers(TMemberInspector& insp, char* parent)
virtual void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
Bool_t testMdcSetup(Int_t sec, Int_t mod)
protected:
static HMdcDataWord* dataword !
static Bool_t noComment ! switch off all prints
HCategory* pMdcRawEventHeaderCat
HCategory* pMdcDataWordCat
HMdcEvReadout* pReadout !Lookup table
HMdcRawStruct* rawc
Int_t subEvtId !
Int_t tdcMode tdcMode defines the mode the tdc has taken data:
UInt_t subHeaderDecodeVersion ! version number of subHeader decoding
UInt_t decodeVersion ! version number of data word decoding
UInt_t maxDecodeVersion ! maximum number of decode versions
Bool_t debug ! flag for debug mode w/ extended output
Bool_t consistencyCheck ! flag for consistency check on the data words
Bool_t disableSamNrConsistencyCheck ! flag to disable check on SAM Nr to sector check
Bool_t mdcRawEventHeaderCatPersistency ! flag for persistency of HMdcRawEventHeader category
Bool_t mdcDataWordCatPersistency ! flag for persistency of HMdcDataWord category
Bool_t fillDataWord ! flag to enable filling of the dataword
Bool_t continueDecodingAfterInconsistency ! flag to enable stubborn behaviour of unpacker
Int_t determineDecodeVersionCtr ! internal counter
Bool_t standalone ! If MDCs are not run via the common daq system, but in a standalone mode, ...
Bool_t versionSetManual ! switch for version setting of unpacker
Int_t setup[6][4] ! setup of Mdc (sec,mod)
Bool_t unpackerDebug ! switch to display debug infos of the unpacker software
UInt_t rocEvtHeaderSize ! size of the roc header;
Bool_t excludeBlackList ! switch to exclude explicitly data words
Int_t* excludedBlackListCounters ! counters of excluded data words
UInt_t* excludeBlackListMask ! list of hex masks on dataword for matching test with adress, preliminary parameter, to be replaced by a lookup table
UInt_t* excludeBlackListAdress ! list of adresses for comparison, preliminary parameter, to be replaced by a lookup table
Int_t excludeBlackListSize ! number of adresses/mask of black list
TString excludeBlackListContext ! context string for different exclude list, default:"UNDEFINED";
Bool_t recoverBlackList ! switch to recover explicitly data words
Int_t* recoveredBlackListCounters ! counters of recovered data words
UInt_t* recoverBlackListMask ! list of hex masks on dataword for matching test with adress, preliminary parameter, to be replaced by a lookup table
UInt_t* recoverBlackListAdress ! list of adresses for comparison, preliminary parameter, to be replaced by a lookup table
Int_t recoverBlackListSize ! number of adresses/mask of black list
TString recoverBlackListContext ! context string for different recover list, default:"UNDEFINED";
UInt_t* recoveryStorage ! pointer to array to store data values for recovery
UInt_t recoveryStorageCounter ! size of recovery array
UInt_t createBlackListRecoveryTools ! 0 if not active else in hex date of time
static const TString excludeBlackListContextDefaultString
static const TString recoverBlackListContextDefaultString
public:
static const enum HMdcUnpacker:: versionSwitchId
static const enum HMdcUnpacker:: COMPRESSED
static const enum HMdcUnpacker:: UNCOMPRESSED
static const enum HMdcUnpacker:: UNCOMPRESSED_ROC_HEADERSIZE
static const enum HMdcUnpacker:: COMPRESSED_ROC_HEADERSIZE
HMdcUnpacker
Unpacker for mdc data
decodes the raw list mode data and fills the HMdcRaw category
using information from the parameter containers HMdcEvReadout
and HMdcRawStruct.
For decoding the functions of HMdcDataWord are used.
Additionally the categories HMdcRawEventHeader and on purpose
the HMdcDataWord (not yet implemented)
The constructor gives several (additional) options
when being called:
HMdcUnpacker( subEvtId, debug, consistency )
HMdcUnpacker( subEvtId, version, debug, consistency)
subEvtId : subevent Id for which this
Instance is called by the Hades::eventLoop() calls to
the HldSource and derived classes
version : decoding version for the unpacker
version = 1, used for data since 2002-10-01 12:00:00
includes new naming scheme for the SAMs
version = 0, used for data before 2002-10-01 12:00:00
if not set in the constructor or via setDecodeVersion()
the decoding is derived from the referenceRunId (if set)
or the runId
(reference)RunId < versionSwitchId : version 0
(reference)RunId > versionSwitchId : version 1
debug : additional debug features of the Unpacker for debugging
the hardware
debug = TRUE:
1) Errors/Warnings are extended by
detailed informations of the dataword
(if not switched of by setQuietMode())
2) HMdcRawEventHeader is written out for every call
of decodeSubHeader
of the Header (not only for not zero error
words in the sub header (ROC)
3) HMdcDataWord is written to tree (not yet implemented)
persistency changeable with setPersistencyDataWord()
debug = FALSE: (default)
1) Errors/Warnings are displayed in a reduced set
(if not completely switched of by setQuietMode())
2) HMdcRawEventHeader is only written out for a non zero error word
in the sub header (ROC)
consistency: enables a rough border checking on the hardware level
on the data words while decoding.
this is actually a feature of HMdcDataWord::decode() HMdcDataWord::subheader()
which is called during execute().
HMdcUnpacker(Int_t id , Bool_t dbg, Bool_t consisCheck) : HldUnpack()
id = sub event id for which the unpacker is called by
HMdcUnpacker(Int_t id, Int_t myversion, Bool_t dbg, Bool_t consisCheck)
HMdcUnpacker(HMdcUnpacker& mdc)
~HMdcUnpacker()
void setDefaults(void)
set the default values for all intrinsic variables
called by the constructor
Bool_t getQuietMode()
get status of quietMode
quiet = kTRUE : messaging switch off
= kFALSE: messages are displayed
void setQuietMode(Bool_t quiet)
switch to disable all error messages and warnings from hmdcunpacker AND hmdcdataword
quiet = kTRUE : messaging switch of
= kFALSE: messages are displayed
void setContinueDecodingAfterInconsistency(Bool_t cont)
this function is only for debugging use!
the decoding of the data words continue even if there is
unconsistency in the datawords
cont = kTRUE : continue
cont = kFALSE: skip event
UInt_t getDecodeVersion(void)
returns decoding version of the unpacker
version : decoding version for the unpacker
version = 1, used for data since 2002-10-01 12:00:00
includes new naming scheme for the SAMs
version = 0, used for data before 2002-10-01 12:00:00
void setDecodeVersion(UInt_t version,Bool_t manual)
set decoding version of the unpacker
version : decoding version for the unpacker
version = 1, used for data since 2002-10-01 12:00:00
includes new naming scheme for the SAMs
version = 0, used for data before 2002-10-01 12:00:00
manual : used for internal calls
if version exceeds the value of maxDecodeVersion exit is called
Int_t getTdcMode(void)
returns mode the tdc is triggering on signals
mode 0 (default) : trigger on leading and trailing edge
mode 1 : trigger on 2 leading edges:
void setTdcMode(Int_t i)
In measurement mode the TDC accepts two hits per channel. The TDC can hereby
trigger either on on a leading and the trailing edge of a single pulse
or on two leading edges.
This influences the polarity of the hitCounter in the HMdcRaw Class:
mode 0 : trigger on leading and trailing edge
(hit multiplicity nHits: +1 or +2)
mode 1 : trigger on 2 leading edges:
(hit multiplicity nHits: -1 or -2)
(0 default if i is not equal to 0 or 1)
void setRocEvtHeaderSize(UInt_t ui)
function to set the size in words of the ROC Header
TString myexec(char * in)
tool to execute an arbitray unix command
the output is returned as an char pointer (maximum size 1000)
TODO: check whether PTools::myexec or other method can replace it
void print(TString parent)
prints out the variables of the unpacker object
Bool_t init()
Initialisation of
- lookup table
- category for raw-level storage
- additional category if debug option
- additional Tree if debug option
- local mdc setup table for lookup
void getMdcSetup()
gets Mdc detector setup
and initializes setup array
HCategory* initCategory(Cat_t cat, TString catname, TString detector)
inits the container cat
looks first whether it already exists
otherwise it is created
default for detector is "Mdc"
catname is used for Error handling
Int_t initExcludeBlackList(void)
initializes list of black listed mask and adress matches to be exclude from data stream
Int_t initRecoverBlackList(void)
initializes list of black listed mask and adress matches which can be recovered
Bool_t reinit()
reinit function
if versionSetManual not set it determines the decodeVersion via determineDecodeVersion()
void reinitBlackListRecovery()
Int_t execute()
execute funtion of the task
calls the fill() function (DETAILED) information here
before it checks whether the called subEvtId corresponds
to an active module in the mdc detector setup
return values: always 1 (philosophy: a wrong sub event should not affect the other sub events)
Bool_t testMdcSetup(Int_t sector, Int_t module)
Tests the Mdc setup if the module are present
in the running analysis at position sector, module
Int_t getSubEvtIdToSamNr(Int_t localSubEvtId, Bool_t expectUndefined)
determines the samNr from the sub event id localSubEvtId
in addition it crosschecks the samNr with the DAQ specifications
and does boundary checks by default.
You can switch it off by setDisableSamNrConsistencyCheck()
Int_t fill()
fill function:
performs the loop over the subevent data
-- if the ROC header size > 0 (change it via setRocEvtHeaderSize())
then the roc header is decoded via decodeSubHeader()
otherwise the whole subevent is decoded as once
-- The data loop performs the following steps
1.a. if enabled check for recoverable blacklisted adresses and store them
1.b. if enabled check for further blacklisted adresses and ignore them
2. call of decode for each dataword
3. the hardware address is matched to the sector/module/mbo/tdc coordinates of HMdcRaw
via the lookup table HMdcEvReadout
4. a new/existing slot at the corresponding address is requested
5. the time information is filled to this slot
-- if enabled recover recoverable datawords after the data loop
-- if the debug and fillDataWord flag is set (set via setFillDataWord() and setDebug())
the extended dataword information is written to the category HMdcDataword()
(the persistency of this container can be set via setPersistencyDataWord())
-- the return values of the function are:
1 : success
-1 : Error while decoding the dataword
-1 : Error while decoding the roc header
-1 : Error while decoding the in data loop (data pointer exceeds data range)
-2 : Error while filling the to category HMdcRaw
-- in the case that there is no entry in the lookup table
for a correctly decoded dataword there the next dataword is taken
--------------------------------------------------------------------------
DETAILS:
The single steps of this function are:
1. check for existing pointers to subEvt and pReadout
- if not
-> "goto" end of function returning 1
2. if the decode version is not set manually (via setDecodeVersion())
-> call determineDecodeVersion()
3. get subEvt's pointers to data and its end
4. check for positive difference (data-end > 0)
- if not
-> leave function with return code -1
5. if decodingMode() returns kFALSE (DETAILS see decodingMode())
-> leave function with return code -1
6. if "recoverBlackList" is enabled
-> call prepareBlackListRecovery()
7. sub sub event while loop
7.1. determine end of subsub event loop from subsub event header
7.2. subsub event dataword loop
7.2.1. check whether subsub event endpointer exceeds sub event pointer
- yes:
-> skipping rest of sub event returning -1
(incl. a possible correction of recoverable datawords)
-> exception: "ontinueAfterInconsistency" is enabled
-> continue with next dataword at 7.2
7.2.2. if "recoverBlackList" is enabled
-> check if dataword matches the list criteria
- yes:
-> call storeForRecoveryFromBlackList()
and continue with next dataword at 7.2
7.2.3. if "recoverBlackList" is enabled
-> check if dataword matches the list criteria
- yes:
-> continue with next dataword at 7.2
7.2.4. dataword decoding
* behaviour during the dataword decoding:
- if the consistency check is switched
- on
-> decode returns
- kFALSE if any of the border checks failed
- kTRUE else
- off
-> decode returns kTRUE
- in case of an inconsistency: (kFALSE returned from decode with checkInconsistency switched on)
-> the decoding of all following datawords of this sub event is skipped
(including a possible correction of recoverable datawords)
the function returns -1
-> exception: "continueDecodingAfterInconsistency" is enabled
- then, ignoring this maybe hazardous error (!!!),
decoding is continued with the next dataword at 7.2
- in case of errors and "noComment" disabled
-> error messages are issued
and if also unpackerDebug is enabled
-> the dataword is dumped to the screen
7.2.5. fill data to Raw categories calling fillData()
in case of failures of fillData():
- adress, setup or matching table errors
-> continue with next dataword at 7.2
- "cannot get Slot" (severe problems)
-> leave function returning -1 and skipping rest of sub event
(incl. possible recovery of datawords)
7.2.6. END OF subsub event dataword loop
7.3. increase data pointer by subsub event size
7.4. END OF sub event while loop
8. if recoverBlackList is enabled
-> call of executeBlackListRecovery()
- same return code behaviour as in 7.2.5 (fillData())
9. leave function always returning 1
void determineDecodeVersion(void)
obsolete !!!
cannot be used any more since nov02, because the runId's are now
random numbers not containing any useful time information
you have to set the decode version manually with setDecodeVersion()
method to determine from the referenceId/runId the time and so the valid version for decoding
see the discription in setDecodeVersion()
Int_t compareEventDateTimeTo(UInt_t cyear,UInt_t cmonth, UInt_t cday,UInt_t chour,UInt_t cmin,UInt_t csec)
function to compare were the date and time of the event is relative to the given Time and Date
returns:
0 : time and date are the same
1 : time and date of event are after the given time
-1 : time and date of event are before the given time
Bool_t decodingMode(void)
evaluates the decoding info in the sub event header
dependent on the decoding information in the sub event header
the following modes are selected:
the least significant byte of the decoding word determines the compression modes:
so decoding & f =
0 : not allowed by definition of the sub event header
1 : uncompressed structure
- the event contains a roc sub structure
- error bits and roc event sizes are determined from the roc headers
and filled independently to HMdcRawEventHeader
2 : compressed structure
- the only contains pure data words
- error informations are determined from
the second least significant byte
and assigned to all roc header synchronously
to HMdcRawEventHeader but shifted by 4 bits to the left (*16)
also the size of the complete sub event is assigned to each roc
to distinguish from the case they have a negativ sign.
any other value: not defined
Bool_t decodeSubHeader(UInt_t *data, UInt_t &subEvtSize)
decodes the sub header (ROC-Header)
and returns the size of this header
If the errorFlag of the ROC-Header is set or
the debug flag of the unpacker is set
the header is written out to the category HMdcRawEventHeader
(set its persistency via, setPersistencyRawEventHeader())
If the standalone mode is chosen the trigger type (id) of the whole event
is set to the trigger type of the roc header if it is a calibration trigger
(If MDCs are not run via the common daq system, but in a standalone mode,
the event trig type is not provided in the event header (it is always 1).)
Int_t fillMdcRawEventHeader(Int_t errorFlag, Int_t rocModule, Int_t rocNumber,
Int_t rocSector, Int_t subEvtSize,
Int_t trigType)
function for filling the category HMdcRawEventHeader
void prepareBlackListRecovery(UInt_t eventSize)
Int_t executeBlackListRecovery()
Bool_t storeForRecoveryFromBlackList(UInt_t *data)
Is dataword include in an recovery black list?
TODO: recovery black list from oracle
first masking then comparing to adress
if it matches this dataword is stored
until the end of the while loop and then processes
returns kTRUE if data word matches
kFALSE else
Bool_t excludeBlackListData(UInt_t* data)
Is dataword included in an excluding black list?
TODO: black list from oracle
first masking then comparing to adress
if it matches this dataword is ignored
returns kTRUE if data word matches
kFALSE else
Int_t fillData(void)
Converts the content of the already decoded dataword via the lookup table HMdcEvReadout
to sector/module/mbo/tdc coordinates.
Then, if available the information is stored in a new or added to an existing
data slot of HMdcRaw
If activated, the raw data is written by fillMdcDataWord()
(formerly additional debug had to be switched on, not necessary any more)
Bool_t matchHardwareAdressToSecModMboTdc(Int_t §or, Int_t &module,
Int_t &mbo, Int_t &tdc)
the hardware address is matched to the sector/module/mbo/tdc coordinates of HMdcRaw
via the lookup table HMdcEvReadout
the result is checked for consistency
deb is the pointer to the current rwa dataword
kFALSE is returned in case of failures
otherwise kTRUE
Bool_t checkMdcSetup(Int_t sector, Int_t module)
checks whether module and sector are set in the MdcSetup
returns kTRUE if set,
kFALSE else
Bool_t checkMboRawStructBounds(Int_t sector,Int_t module, Int_t mbo, Int_t tdc)
checks consistency whether sector, module, mbo, tdc values are inside
the bounds of the parameter container MboRawStruct
return value
kTRUE the checks were passed
kFALSE if otherwise
HMdcRaw* getFreeOrExistingSlot(Int_t §or, Int_t &module, Int_t &mbo, Int_t &tdc)
get a free or existing slot from the HMdcRaw category
at the location of HLocation loc
returns the pointer to the (new) HMdcRaw object
NULL if it couldn't be done
Int_t fillMdcDataWord(Int_t sector,Int_t module,Int_t mbo,Int_t tdc)
function for filling the category HMdcDataword
Int_t recoverBlackListApr2006()
Hardware bugfix for beamtime apr2006:
In Module IV (Orsay) of Sector IV (SubEvtId 222)
The mob id of the two motherboards in the LVL1 chain
of mbo 113 and mbo 115 is corrupted.
Up to now the Blacklist option ignored all datawords of this if activated
Now it the channels should if possible be reconstructed:
Because mbo 113 is a 64-channel board and mbo 115 is a 96 long
the topmost 32 channels can automatically be assigned to mbo 115
Since this is the same error as in Sep2005
recoverBlackListSep2005 is called
Int_t recoverBlackListSep2005()
Hardware bugfix for beamtime sep05:
In Module IV (Orsay) of Sector IV (SubEvtId 222)
The mob id of the two motherboards in the LVL1 chain
of mbo 113 and mbo 115 is corrupted.
Up to now the Blacklist option ignored all datawords of this if activated
Now it the channels should if possible be reconstructed:
Because mbo 113 is a 64-channel board and mbo 115 is a 96 long
the topmost 32 channels can automatically be assigned to mbo 115
void enableExcludeBlackList(TString context)
void disableExcludeBlackList()
void setExcludeBlackList(Bool_t b)
void setExcludeBlackListContext(TString context)
void setExcludeBlackList(TString context)
function set/unset exclude black list feature via HMdcUnpacker::setExcludeBlackList
and its context via HMdcUnpacker::setExcludeBlackListContext
in one line.
if context is empty or equal to HMdcUnpacker::excludeBlackListContextDefaultString
the feature is deactivated.
Any other value activates this, provided a corresponding table exists
up to now "sep05" is the only valid context
(see HMdcUnpacker::init() function)
void enableRecoverBlackList(TString context)
void disableRecoverBlackList()
void setRecoverBlackList(Bool_t b)
void setRecoverBlackListContext(TString context)
void setRecoverBlackList(TString context)
function set/unset recover black list feature via HMdcUnpacker::setRecoverBlackList
and its context via HMdcUnpacker::setRecoverBlackListContext
in one line.
if context is empty or equal to HMdcUnpacker::recoverBlackListContextDefaultString
the feature is deactivated.
Any other value activates this, provided a corresponding table exists
up to now "sep05" is the only valid context
(see HMdcUnpacker::init() function)
Bool_t finalize()
finalize function
returning always kTRUE
void printExcludedBlackListCounter()
prints out messages for each mask - adress pair how many excludes were encountered
void printRecoveredBlackListCounter()
prints out messages for each mask - adress pair how many recovers were encountered
void infoDetermineDecodeVersion(void)
void warningExcludeDataWords(UInt_t data, UInt_t mask, UInt_t adress)
void warningExecuteNoValidModuleEntryInLookupTableForSamNr(Int_t samNr)
void warningExecuteNoValidSectorEntryInLookupTableForSamNr(Int_t samNr)
void warningExecuteSamNrNegative(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)
void errorCheckMboRawStructBoundsOutOfBounds(Int_t value, Int_t maxValue,
Int_t sector, Int_t module, Int_t mbo)
void errorCheckMdcSetup(Int_t sector, Int_t module)
void errorDecodeSubHeaderCannotDecode()
void errorDecodingModeInvalidCompressMode(UInt_t compressMode,UInt_t decoding)
void errorExecuteErrorInFill()
void errorExecuteNoValidPointerTo(TString pointerName)
void errorFillCannotGetSlot(Int_t sector, Int_t module, Int_t mbo, Int_t tdc)
void errorFillDecodeSubHeaderFailed()
void errorFillDataPointerExceedingRange(UInt_t* deb, UInt_t* end, UInt_t* enddata)
void errorFillErrorFillingDataWord()
void errorFillMdcDataWordTooManyEntriesToSameLocation(Int_t maxentry)
void errorFillMdcDataWordCannotGetSlot()
void errorFillMdcRawEventHeaderCannotGetSlot()
void errorFillNoValidAddressInLookUpTable()
void errorFillSkippingRestOfSubEvent(void)
void errorFillUnknownCodeForBlacklistRecovery()
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 errorAndExitCompareEventDateTimeTo()
void errorAndExitDetermineDecodeVersion(void)
void errorAndExitFillUnknownReturnValueOfFillData()
void errorAndExitGetMdcSetup()
void errorAndExitInitExcludeBlackListNoValidContext()
void errorAndExitInitRecoverBlackListNoValidContext()
void errorAndExitRecoverBlackListSep2005UnknownReturnValueOfFillData()
void errorAndExitSetDecodeVersion(UInt_t version)
void errorAndExitSetExcludeBlackListObsoleteCall()
void errorAndExitSetRecoverBlackListObsoleteCall()
Inline Functions
Bool_t getConsistencyCheck()
Bool_t getContinueDecodingAfterInconsistency()
Bool_t getDebug()
UInt_t getMaxDecodeVersion()
Bool_t getExcludeBlackList()
Bool_t getRecoverBlackList()
Bool_t getFillDataWord()
Bool_t getPersistencyRawEventHeader()
Bool_t getPersistencyDataWord()
Bool_t getStandalone()
Int_t getSubEvtId() const
UInt_t getSubHeaderDecodeVersion()
UInt_t getRocEvtHeaderSize()
Int_t getTime() const
Int_t getTdc(const Int_t chip, const Int_t chan) const
Bool_t getUnpackerDebug()
void setConsistencyCheck(Bool_t cons = kTRUE)
void setDebug(Bool_t deb = kTRUE)
void setDisableSamNrConsistencyCheck(Bool_t cons = kTRUE)
void setErrorOutputFileName(Char_t* f)
void SetErrorOutputFileName(Char_t* c)
void setFillDataWord(Bool_t b = kTRUE)
void setPersistencyRawEventHeader(Bool_t b = kTRUE)
void setPersistencyDataWord(Bool_t b = kTRUE)
void setStandalone(Bool_t b = kTRUE)
void setSubHeaderDecodeVersion(UInt_t ui, Bool_t manual = kTRUE)
void setUnpackerDebug(Bool_t b = kTRUE)
void setExcludeBlackListInternal(Bool_t b)
void setRecoverBlackListInternal(Bool_t b)
TClass* Class()
TClass* IsA() const
void ShowMembers(TMemberInspector& insp, char* parent)
void Streamer(TBuffer& b)
void StreamerNVirtual(TBuffer& b)
HMdcUnpacker& operator=(const HMdcUnpacker&)
Last update: Fri Jan 26 12:18:30 2007
ROOT page - Class index - Class Hierarchy - Top of the page
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.