CMS 3D CMS Logo

GlobalEventNumber.h

Go to the documentation of this file.
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

Generated on Tue Jun 9 17:34:40 2009 for CMSSW by  doxygen 1.5.4