00001 #ifndef EVF_EVTN_GLOBAL_EVENT_NUMBER_H 00002 #define EVF_EVTN_GLOBAL_EVENT_NUMBER_H 00003 00004 #include <stddef.h> 00005 #include "interface/shared/fed_header.h" // from xdaq 00006 namespace evf{ 00007 namespace evtn{ 00008 const unsigned int SLINK_WORD_SIZE = 8; 00009 const unsigned int SLINK_HALFWORD_SIZE = 4; 00010 00011 const unsigned int DAQ_TOTTRG_OFFSET = 2; //offset in 32-bit words 00012 const unsigned int DAQ_BOARDID_OFFSET = 1; 00013 const unsigned int DAQ_BOARDID_MASK = 0xffff0000; 00014 const unsigned int DAQ_BOARDID_SHIFT = 24; 00015 const unsigned int DAQ_BOARDID_VALUE = 0x11; 00016 00017 enum { 00018 BST32_3BX = 34 * SLINK_WORD_SIZE, 00019 BST32_5BX = 48 * SLINK_WORD_SIZE, 00020 BST52_3BX = 37 * SLINK_WORD_SIZE, 00021 BST52_5BX = 51 * SLINK_WORD_SIZE 00022 }; // EvmRecordsize 00023 00024 const unsigned int EVM_BOARDID_OFFSET = 1; 00025 const unsigned int EVM_BOARDID_MASK = 0xffff0000; 00026 const unsigned int EVM_BOARDID_SHIFT = 24; 00027 const unsigned int EVM_BOARDID_VALUE = 0x11; 00028 00029 const unsigned int EVM_GTFE_BLOCK_V0000 = 6; //size in 64-bit words 00030 const unsigned int EVM_GTFE_BLOCK_V0011 = 9; //size in 64-bit words, new format, not yet in effect 00031 const unsigned int EVM_GTFE_BSTGPS_OFFSET = 4; //offset in 32-bit words 00032 00033 00034 const unsigned int EVM_TCS_BLOCK = 5; //size in 64-bit words 00035 const unsigned int EVM_TCS_TRIGNR_OFFSET = 5; //offset in 32-bit words 00036 const unsigned int EVM_TCS_LSBLNR_OFFSET = 0; //offset in 32-bit words 00037 const unsigned int EVM_TCS_ORBTNR_OFFSET = 6; //offset in 32-bit words 00038 const unsigned int EVM_TCS_LSBLNR_MASK = 0x0000ffff; // 16 LSB 00039 const unsigned int EVM_TCS_EVNTYP_MASK = 0x00f00000; // 4 bits 00040 const unsigned int EVM_TCS_EVNTYP_SHIFT = 20; 00041 const unsigned int EVM_TCS_BCNRIN_MASK = 0x00000fff; // 12 LSB 00042 00043 00044 const unsigned int EVM_FDL_BLOCK = 7; //size in 64-bit words 00045 const unsigned int EVM_FDL_BCNRIN_OFFSET = 1; //offset in 32-bit words 00046 const unsigned int EVM_FDL_TECTRG_OFFSET = 2; //offset in 32-bit words 00047 const unsigned int EVM_FDL_ALGOB1_OFFSET = 4; //offset in 32-bit words 00048 const unsigned int EVM_FDL_ALGOB2_OFFSET = 6; //offset in 32-bit words 00049 const unsigned int EVM_FDL_PSCVSN_OFFSET = 11; //offset in 32-bit words 00050 00051 00052 00053 const unsigned int GTPE_BOARDID_OFFSET = 16; 00054 const unsigned int GTPE_BOARDID_MASK = 0x000000ff; 00055 const unsigned int GTPE_BOARDID_SHIFT = 0; 00056 const unsigned int GTPE_BOARDID_VALUE = 0x1; 00057 const unsigned int GTPE_TRIGNR_OFFSET = 14; //offset in 32-bit words 00058 const unsigned int GTPE_ORBTNR_OFFSET = 18; //offset in 32-bit words 00059 const unsigned int GTPE_BCNRIN_OFFSET = 3; //offset in 32-bit words 00060 const unsigned int GTPE_BCNRIN_MASK = 0x00000fff; // 12 LSB 00061 00062 unsigned int offset(bool); 00063 inline bool daq_board_sense(const unsigned char *p) 00064 { 00065 return (*(unsigned int*)(p + sizeof(fedh_t) + DAQ_BOARDID_OFFSET * SLINK_WORD_SIZE / 2) >> DAQ_BOARDID_SHIFT) == DAQ_BOARDID_VALUE; 00066 } 00067 bool evm_board_sense(const unsigned char *p, size_t size); 00068 void evm_board_setformat(size_t size); 00069 inline bool gtpe_board_sense(const unsigned char *p) 00070 { 00071 return (*(unsigned int*)(p + GTPE_BOARDID_OFFSET * SLINK_WORD_SIZE / 2) >> GTPE_BOARDID_SHIFT) != 0; 00072 } 00073 unsigned int get(const unsigned char *, bool); 00074 unsigned int gtpe_get(const unsigned char *); 00075 unsigned int getlbn(const unsigned char *); 00076 unsigned int gtpe_getlbn(const unsigned char *); 00077 unsigned int getgpslow(const unsigned char *); 00078 unsigned int getgpshigh(const unsigned char *); 00079 unsigned int getorbit(const unsigned char *); 00080 unsigned int getevtyp(const unsigned char *); 00081 unsigned int gtpe_getorbit(const unsigned char *); 00082 unsigned int getfdlbx(const unsigned char *); 00083 unsigned int gtpe_getbx(const unsigned char *); 00084 unsigned int getfdlpsc(const unsigned char *); 00085 unsigned long long getfdlttr(const unsigned char *); 00086 unsigned long long getfdlta1(const unsigned char *); 00087 unsigned long long getfdlta2(const unsigned char *); 00088 } 00089 } 00090 #endif