1 #ifndef ALIMUONTRIGGERDDLDECODEREVENTHANDLER_H
2 #define ALIMUONTRIGGERDDLDECODEREVENTHANDLER_H
356 static UChar_t
GetDarcType(UInt_t header) {
return (UChar_t)(header >> 24) & 0x7; }
360 static UChar_t
GetDarcSerialNb(UInt_t header) {
return (UChar_t)(header >> 20) & 0xF; }
364 static UChar_t
GetDarcVersion(UInt_t header) {
return (UChar_t)(header >> 12) & 0xFF; }
392 assert( header != NULL );
399 assert( header != NULL );
406 assert( header != NULL );
407 return (header->
fWord & 0x80000000) != 0;
413 assert( header != NULL );
414 return (UChar_t)(header->
fWord >> 25) & 0x3F;
420 assert( header != NULL );
421 return (UChar_t)(header->
fWord >> 20) & 0x1F;
427 assert( header != NULL );
428 return (UChar_t)(header->
fWord >> 16) & 0x0F;
434 assert( header != NULL );
435 return (UChar_t)(header->
fWord >> 8) & 0xFF;
441 assert( header != NULL );
442 return (UChar_t)(header->
fWord & 0xFF);
448 assert( header != NULL );
449 return (UShort_t)(header->
fDarcWord >> 22) & 0x3FF;
455 assert( header != NULL );
456 return (UChar_t) (header->
fDarcWord >> 19) & 0x7;
462 assert( header != NULL );
463 return (header->
fDarcWord & 0x8000) != 0;
469 assert( header != NULL );
470 return (header->
fDarcWord & 0x4000) != 0;
476 assert( header != NULL );
477 return (header->
fDarcWord & 0x2000) != 0;
483 assert( header != NULL );
484 return (header->
fDarcWord & 0x1000) != 0;
490 assert( header != NULL );
497 assert( header != NULL );
504 assert( header != NULL );
511 assert( header != NULL );
518 assert( header != NULL );
519 return (UChar_t) (header->
fDarcWord >> 4) & 0x4;
525 assert( header != NULL );
526 return (UChar_t) (header->
fDarcWord) & 0x4;
536 assert(header != NULL);
544 assert(header != NULL);
545 return (header->
fOutput >> 16) & 0xFFFF;
554 assert(local != NULL);
555 return (local->
fX2X1 >> 16) & 0xFFFF;
561 assert(local != NULL);
562 return (local->
fX2X1) & 0xFFFF;
568 assert(local != NULL);
569 return (local->
fX4X3 >> 16) & 0xFFFF;
575 assert(local != NULL);
576 return (local->
fX4X3) & 0xFFFF;
582 assert(local != NULL);
583 return (local->
fY2Y1 >> 16) & 0xFFFF;
589 assert(local != NULL);
590 return (local->
fY2Y1) & 0xFFFF;
596 assert(local != NULL);
597 return (local->
fY4Y3 >> 16) & 0xFFFF;
603 assert(local != NULL);
604 return (local->
fY4Y3) & 0xFFFF;
610 assert(local != NULL);
617 assert(local != NULL);
624 assert(local != NULL);
637 assert(local != NULL);
644 assert(local != NULL);
651 assert(local != NULL);
665 assert(local != NULL);
678 assert(scalars != NULL);
679 return (scalars->
fEOS >> 1) & 0x3FF;
685 assert(scalars != NULL);
686 return scalars->
fEOS & 0x1;
692 assert(scalars != NULL and n < 16);
693 return (n % 2 == 1) ? (scalars->
fScaler[(n/2)] & 0xFFFF)
694 : ((scalars->
fScaler[(n/2)] >> 16) & 0xFFFF);
700 assert(scalars != NULL and n < 16);
701 return (n % 2 == 1) ? (scalars->
fScaler[8 + (n/2)] & 0xFFFF)
702 : ((scalars->
fScaler[8 + (n/2)] >> 16) & 0xFFFF);
708 assert(scalars != NULL and n < 16);
709 return (n % 2 == 1) ? (scalars->
fScaler[8*2 + (n/2)] & 0xFFFF)
710 : ((scalars->
fScaler[8*2 + (n/2)] >> 16) & 0xFFFF);
716 assert(scalars != NULL and n < 16);
717 return (n % 2 == 1) ? (scalars->
fScaler[8*3 + (n/2)] & 0xFFFF)
718 : ((scalars->
fScaler[8*3 + (n/2)] >> 16) & 0xFFFF);
780 default:
return "INVALID";
795 return "Decoding was successful.";
797 return "Too many regional card structures are expected in the DDL payload.";
799 return "The DARC header is missing. The DDL buffer is too short"
800 " to hold a DARC header.";
802 return "The DARC scalars are missing or corrupt."
803 " The DDL buffer is too short to contain them.";
805 return "Wrong event type obtained from the Darc header.";
807 return "The DDL buffer is too short to contain an end of DARC"
810 return "End of DARC header key word is incorrect or corrupt.";
812 return "The global header is missing. The DDL buffer is too"
813 " short to hold a global header.";
815 return "The global scalars are missing or corrupt. The DDL"
816 " buffer is too short to contain them.";
818 return "The DDL buffer is too short to contain an end of global"
821 return "End of global header key word is incorrect or corrupt.";
823 return "The regional header is missing. The DDL buffer is too"
824 " short to hold another regional header.";
826 return "The regional scalars are missing or corrupt. The DDL"
827 " buffer is too short to contain them.";
829 return "The DDL buffer is too short to contain an end of regional"
832 return "End of regional header key word is incorrect or corrupt.";
834 return "The local structure is missing. The DDL buffer is too"
835 " short to hold another local structure.";
837 return "The local scalars are missing or corrupt. The DDL buffer"
838 " is too short to contain them.";
840 return "The DDL buffer is too short to contain an end of local"
841 " structure key word.";
843 return "End of local structure key word is incorrect or corrupt.";
845 return "The DDL raw data is larger than indicated by the headers;"
846 " extra bytes are probably just garbage.";
848 return "Unknown error code!";
863 #endif // ALIMUONTRIGGERDDLDECODEREVENTHANDLER_H
static UShort_t GetLocalXY4(const AliMUONLocalScalarsStruct *scalars, UInt_t n)
Return XY4.
UInt_t fScaler[6]
Global card ouput scalars.
UInt_t fHPtNTrig
local high Pt no trigger
The optional DARC board scalars.
UInt_t fHold
Regional hold (dead time)
static UChar_t GetRegionalId(const AliMUONRegionalHeaderStruct *header)
Return Id.
static bool GetRegionalRamNotEmptyFlag(const AliMUONRegionalHeaderStruct *header)
Return RamNotEmptyFlag.
static bool GetDarcCTPTrig(UInt_t header)
UInt_t fL2R
DARC L2 reject.
The global scalars are missing or corrupt. The DDL buffer is too short to contain them...
UInt_t fScaler[8 *4]
local data
static UShort_t GetLocalY3(const AliMUONLocalInfoStruct *local)
Return Y3.
Optional regional card scalars.
void OnNewBuffer(const void *, UInt_t)
static bool GetRegionalL2AccStatus(const AliMUONRegionalHeaderStruct *header)
Return L2AccStatus.
static UChar_t GetLocalXPos(const AliMUONLocalInfoStruct *local)
Return Xpos.
UInt_t fHPtRTrig
local high Pt right trigger
void OnNewRegionalStruct(const AliMUONRegionalHeaderStruct *, const AliMUONRegionalScalarsStruct *, const void *)
ErrorCode
All the possible error codes from the parsing.
static bool GetRegionalDarcPhysFlag(const AliMUONRegionalHeaderStruct *header)
Return DarcPhysFlag.
UInt_t fLPtRTrig
local low Pt right trigger
static UChar_t GetLocalXDev(const AliMUONLocalInfoStruct *local)
Get X deviation.
void OnEndOfRegionalStructV2(UInt_t, const AliMUONRegionalHeaderStruct *, const AliMUONRegionalScalarsStruct *, const void *)
The DDL buffer is too short to contain an end of global header key word.
static UChar_t GetLocalLpt(const AliMUONLocalInfoStruct *local)
Return LPT.
static UShort_t GetLocalXY3(const AliMUONLocalScalarsStruct *scalars, UInt_t n)
Return XY3.
static UShort_t GetLocalXY1(const AliMUONLocalScalarsStruct *scalars, UInt_t n)
Return XY1.
End of local structure key word is incorrect or corrupt.
Local card trigger information.
Callback event handler class for the AliMUONTriggerDDLDecoder. This class is the base class defining ...
UInt_t fSpare
Global spare word.
UInt_t fClk
Regional number of clock cycles.
static UChar_t GetRegionalResetNb(const AliMUONRegionalHeaderStruct *header)
Return ResetNb.
Local card trigger scalars.
UInt_t fL0R
DARC L0 received and used.
static UChar_t GetLocalId(const AliMUONLocalInfoStruct *local)
Return Id.
void OnDarcHeader(UInt_t, const AliMUONDarcScalarsStruct *, const void *)
static const char * ErrorCodeToMessage(ErrorCode code)
UInt_t fY2Y1
16 bits Y2 position in 16 most significant bits and 16 bits of Y1 in least significant bits...
The DDL buffer is too short to contain an end of local structure key word.
static UChar_t GetRegionalSerialNb(const AliMUONRegionalHeaderStruct *header)
Return SerialNb.
UInt_t fLPtSTrig
local low Pt straight trigger
void OnLocalStruct(const AliMUONLocalInfoStruct *, const AliMUONLocalScalarsStruct *)
static bool GetLocalTrigY(const AliMUONLocalInfoStruct *local)
Return TrigY.
UInt_t fHPtSTrig
local high Pt straight trigger
static bool GetDarcDAQFlag(UInt_t header)
The local scalars are missing or corrupt. The DDL buffer is too short to contain them.
static UShort_t GetRegionalL0(const AliMUONRegionalHeaderStruct *header)
Return L0.
static UShort_t GetLocalX2(const AliMUONLocalInfoStruct *local)
Return X2.
void OnNewRegionalStructV2(UInt_t, const AliMUONRegionalHeaderStruct *, const AliMUONRegionalScalarsStruct *, const void *)
UInt_t fHPtLTrig
local high Pt left trigger
static bool GetRegionalRamNotFullFlag(const AliMUONRegionalHeaderStruct *header)
Return RamNotFullFlag.
static bool GetRegionalL0Status(const AliMUONRegionalHeaderStruct *header)
Return L0Status.
UInt_t fClk
Global number of clock cycles.
static bool GetLocalSXDev(const AliMUONLocalInfoStruct *local)
Get Sign of X deviation.
static const char * ErrorCodeToString(ErrorCode code)
UInt_t fY4Y3
16 bits Y4 position in 16 most significant bits and 16 bits of Y3 in least significant bits...
static UChar_t GetLocalDec(const AliMUONLocalInfoStruct *local)
Return Dec.
static UChar_t GetRegionalOutput(const AliMUONRegionalHeaderStruct *header)
Return Output.
UInt_t fX2X1
16 bits X2 position in 16 most significant bits and 16 bits of X1 in least significant bits...
static UChar_t GetDarcEventType(UInt_t header)
std::ostream & operator<<(std::ostream &os, AliMUONTriggerDDLDecoderEventHandler::ErrorCode code)
static UShort_t GetLocalY4(const AliMUONLocalInfoStruct *local)
Return Y4.
static bool GetRegionalL1Status(const AliMUONRegionalHeaderStruct *header)
Return L1Status.
UInt_t fHold
Global number of hold (dead time)
static UShort_t GetLocalXY2(const AliMUONLocalScalarsStruct *scalars, UInt_t n)
Return XY2.
static UShort_t GetRegionalErrorBits(const AliMUONRegionalHeaderStruct *header)
Return ErrorBits.
static UChar_t GetRegionalFPGANumber(const AliMUONRegionalHeaderStruct *header)
Return FPGANumber.
UInt_t fL0
Global number of L0 triggers.
void OnGlobalHeader(const AliMUONGlobalHeaderStruct *, const AliMUONGlobalScalarsStruct *, const void *)
End of regional header key word is incorrect or corrupt.
End of DARC header key word is incorrect or corrupt.
static UChar_t GetDarcRegPattern(UInt_t header)
UInt_t fL1S
DARC L1 software.
UInt_t fHold
local hold (dead time)
UInt_t fL0
local number of L0 triggers.
static bool GetDarcGlobalFlag(UInt_t header)
The optional global card scalars.
static UChar_t GetDarcVersion(UInt_t header)
static UChar_t GetDarcSerialNb(UInt_t header)
The DDL buffer is too short to contain an end of DARC header key word.
The regional header is missing. The DDL buffer is too short to hold another regional header...
UInt_t fL2A
DARC L2 accept.
The global header is missing. The DDL buffer is too short to hold a global header.
UInt_t fClk
local number of clock cycles
void OnEndOfBuffer(const void *, UInt_t)
The local structure is missing. The DDL buffer is too short to hold another local structure...
UInt_t fX4X3
16 bits X4 position in 16 most significant bits and 16 bits of X3 in least significant bits...
static UChar_t GetLocalComptXY(const AliMUONLocalScalarsStruct *scalars)
Return ComptXY.
Too many regional card structures are expected in the DDL payload.
static bool GetLocalTriggerY(const AliMUONLocalInfoStruct *local)
Return TriggerY.
static bool GetRegionalPhysFlag(const AliMUONRegionalHeaderStruct *header)
Return RegPhysFlag.
The DARC scalars are missing or corrupt. The DDL buffer is too short to contain them.
static UChar_t GetRegionalEventInRam(const AliMUONRegionalHeaderStruct *header)
Return EventInRam.
static UChar_t GetDarcType(UInt_t header)
UInt_t fLPtNTrig
local low Pt no trigger
static UChar_t GetGlobalOutput(const AliMUONGlobalHeaderStruct *header)
static bool GetDarcVMETrig(UInt_t header)
void OnError(ErrorCode, const void *)
UInt_t fScaler[8]
Regional ouput scalars.
void OnEndOfRegionalStruct(const AliMUONRegionalHeaderStruct *, const AliMUONRegionalScalarsStruct *, const void *)
static UChar_t GetRegionalBusy(const AliMUONRegionalHeaderStruct *header)
Return Busy.
The regional scalars are missing or corrupt. The DDL buffer is too short to contain them...
static bool GetRegionalPresentFlag(const AliMUONRegionalHeaderStruct *header)
Return PresentFlag.
static bool GetLocalTriggerX(const AliMUONLocalInfoStruct *local)
Return TriggerX.
static UShort_t GetLocalX3(const AliMUONLocalInfoStruct *local)
Return X3.
virtual ~AliMUONTriggerDDLDecoderEventHandler()
The DARC header is missing. The DDL buffer is too short to hold a DARC header.
static UShort_t GetLocalY2(const AliMUONLocalInfoStruct *local)
Return Y2.
static UShort_t GetLocalSwitch(const AliMUONLocalScalarsStruct *scalars)
Return switch.
static UShort_t GetLocalX4(const AliMUONLocalInfoStruct *local)
Return X4.
static bool GetRegionalL2RejStatus(const AliMUONRegionalHeaderStruct *header)
Return L2RejStatus.
End of global header key word is incorrect or corrupt.
static UChar_t GetLocalHpt(const AliMUONLocalInfoStruct *local)
Return HPT.
UInt_t fL1P
DARC L1 physics.
UInt_t fSpare
DARC Empty slot (for the moment)
UInt_t fLPtLTrig
local low Pt left trigger
UInt_t fReset
reset signal
static UShort_t GetGlobalConfig(const AliMUONGlobalHeaderStruct *header)
static UChar_t GetLocalYPos(const AliMUONLocalInfoStruct *local)
Return Upos.
static UChar_t GetRegionalVersion(const AliMUONRegionalHeaderStruct *header)
Return Version.
Wrong event type obtained from the Darc header.
The DDL buffer is too short to contain an end of regional header key word.
static UShort_t GetRegionalMask(const AliMUONRegionalHeaderStruct *header)
Return mask.
void OnLocalStructV2(UInt_t, const AliMUONLocalInfoStruct *, const AliMUONLocalScalarsStruct *)
UInt_t fHold
DARC hold (dead time)
static UShort_t GetLocalX1(const AliMUONLocalInfoStruct *local)
Return X1.
static UShort_t GetLocalY1(const AliMUONLocalInfoStruct *local)
Return Y1.
UInt_t fTriggerBits
Trigger bits and deviation.
UInt_t fEOS
contains switches conf. & flag for reading X (0) or Y (1) in fScaler