00001 /* 00002 * Header Name: trgStructures.h 00003 * Header Number: x.y 00004 * Package Name: All 00005 * Created: z. milosevich 06Dec99 00006 * Description: Global trigger structure header file. 00007 * Contains definitions of trigger data structures 00008 * History: 00009 * 00010 * 06Dec99 zm Created so offline can use and after modification for mod 8 DMA reads 00011 * 08Dec99 zm Changed Event Descriptor Structure to previous length 00012 * 03Feb00 zm Changed "ushort ZDCDSM[8]" to "BYTE ZDC[16]" in L0_DSM_Data structure 00013 * 22Jul00 egj Added L0RegBytes and L0RegHeader to trgDataHeaders and TrgSumData. 00014 * Also added Mult_Reg, ZDC_Reg and Spare_Reg to TrgSumData, making a 00015 * total of 16 extra bytes. I compensated for this by removing 16 bytes, 00016 * (4 uints) from L2Result, wich is currently unused. 00017 * 08Dec00 JMN Changed char hdr[2] in TrgSummary to unsigned short, which is packed 00018 * 25Feb01 JMN Redesigned and expanded abbreviations to full. 00019 * 12Mar01 JMN Added additional changes from ZM 00020 * 30May01 JMN NBNBNBNB Changed FORMAT version from 0x12 to 0x13 00021 * 02Jun01 zm defined bit 6 in addBits info FIFO3 for L2.5 abort 00022 * 27Jun01 JMN Added definition of number of bytes used in trigger summary headers 00023 * 28Jun01 JMN Added definition of ADD_BITs 00024 * 10Apr02 zm basic strawman for new structures with new TCU and added detectors 00025 * 22May02 zm removed references to current non-existent trigger event header 00026 * 24May02 zm incorporated eleanor's comments 00027 * 24May02 zm the L0_DSM_Data instance changed from DSM to DSMdata to be able to compile on linux 00028 * 19Jun02 zm removed or commented out references to TrgEvtHeader 00029 * 05Aug02 JMN changes in event descriptor - moved filler word to end 00030 * 15Aug02 HjC correct bytes for FPD 00031 * 21Nov02 zm corrections based on eleanor's email: L0 layout for bunch xing, 00032 * special and fpd elements; fpd broken down for east/west nort/south 00033 * vs top/bottom and layer 1 or 0; 00034 * also finished XXX_DATA_OFFSET and RAW_XXX_LEN for passing data from 00035 * dsm 00036 * 30Aug03 JMN Added RAW_MAX_LEN being maximum length possible in chain block transfer 00037 * 14Sep03 JMN Added new dsmMemcpy2Buf 00038 * 02Nov03 JMN Modified dsmMemcpy2Buf to ensure dsmData is 8-byte aligned. 00039 * 04Nov03 EGJ Modified RawTrgDet to add in ZDCSMD[32] 00040 * 28Oct04 JMN Modified RawTrgDet to increased BBC storage from 80 to 96 00041 * Format version changed from 0x21 to 0x22 00042 * 14Nov05 JMN Added source NodeID as first word of data buffer to L2 00043 * 16Mar06 CWP Added offsets into L2Result 00044 */ 00045 00046 #ifndef trgStructures_h 00047 #define trgStructures_h 00048 00049 #define MAX_L0_DATA_BLOCKS 11 /* Maximum number of L0 Data Blocks: current + npre + npost */ 00050 #define MAX_RAW_DATA_BLOCKS 11 /* Maximum number of Raw Data Blocks: current + npre + npost */ 00051 #define FORMAT_VERSION 0x22 /* Format Version number for trigger data */ 00052 #define EV_DESC_LEN sizeof(EvtDescData) /* Number of bytes in event descriptor */ 00053 #define L0DSM_DATA_LEN sizeof(L0_DSM_Data) /* Size of data block in L0 DSM Tree */ 00054 #define RAW_DET_DATA_LEN sizeof(RawTrgDet) /* Size of Raw Detector Data from CTB, MWC with headers */ 00055 #define TRG_SUM_LEN sizeof(TrgSumData) /* Number of bytes in the trigger summary for DAQ with headers */ 00056 00057 #define L1_DATA_LEN (EV_DESC_LEN+TRG_SUM_LEN) /* Size of data passed from L1ANA to L2 */ 00058 #define TRG_EVT_LEN (L1_DATA_LEN+(MAX_RAW_DATA_BLOCKS*RAW_DET_DATA_LEN)) /* Max size of a trigger event */ 00059 #define TDI_EVT_LEN (EV_DESC_LEN+TRG_SUM_LEN+(MAX_RAW_DATA_BLOCKS*RAW_DET_DATA_LEN)) /* size of event sent to TDI */ 00060 00061 #define L0_SUM_LEN 148 /* Number of bytes in L0 Summary + Header */ 00062 #define L1_SUM_LEN 132 /* Number of bytes in L1 Summary + Header */ 00063 #define L2_SUM_LEN 116 /* Number of bytes in L2 Summary + Header */ 00064 #define L0_REG_LEN 16 /* Number of bytes in L0 Register + Header */ 00065 00066 #define RAW_MAX_LEN 272 /* Maximum length of any Chain Block Transfer */ 00067 //#define CTB_DATA_OFFSET 8 /* Number of bytes CTB Raw data is offset in raw trigger structure */ 00068 //#define RAW_CTB_LEN 256 /* Number of bytes in raw CTB DSMs */ 00069 //#define MWC_DATA_OFFSET 272 /* Number of bytes MWC Raw data is offset in raw trigger structure */ 00070 //#define RAW_MWC_LEN 128 /* Number of bytes in raw CTB DSMs */ 00071 //#define BCE_DATA_OFFSET 408 /* Number of bytes BMC Raw data is offset in raw trigger structure */ 00072 //#define RAW_BCE_LEN 240 00073 //#define BCW_DATA_OFFSET 648 00074 //#define RAW_BCW_LEN 240 00075 //#define BC1_DATA_OFFSET 888 00076 //#define RAW_BC1_LEN 96 00077 //#define EEC_DATA_OFFSET 992 00078 //#define RAW_EEC_LEN 176 00079 //#define FPE_DATA_OFFSET 1176 /* everything after this will have to be re-done */ 00080 //#define RAW_FPE_LEN 208 00081 //#define FPW_DATA_OFFSET 1384 00082 //#define RAW_FPW_LEN 208 00083 //#define BBC_DATA_OFFSET 1600 00084 //#define RAW_BBC_LEN 176 /* Number of bytes in BBC and ZDC raw data structures */ 00085 00086 #define L2RESULTS_OFFSET_TRG 0 00087 #define L2RESULTS_OFFSET_EMC_CHECK 1 00088 #define L2RESULTS_OFFSET_JPSI 2 00089 #define L2RESULTS_OFFSET_UPS 8 00090 #define L2RESULTS_OFFSET_DIJET 14 00091 #define L2RESULTS_OFFSET_EMC_PED 19 00092 #define L2RESULTS_OFFSET_PIG 20 00093 00094 #define ADD_BIT_PILEUP 0 /* Contamination/Pileup bit in event descriptor add-bits */ 00095 #define ADD_BIT_FORCE 5 /* Force store of this event */ 00096 #define ADD_BIT_L2_5 6 /* Level 2.5 abort */ 00097 #define ADD_BIT_SIM 7 /* Simulated event - used by DAQ */ 00098 00099 /********** Trigger Structures ***********/ 00100 00101 /* Event Descriptor Data Structures */ 00102 00103 00104 typedef struct { 00105 unsigned short TCUdataBytes; 00106 char TCUEvtDesc; 00107 unsigned char TrgDataFmtVer; 00108 unsigned int bunchXing_hi; 00109 unsigned int bunchXing_lo; /* Two parts of RHIC bunch crossing number */ 00110 unsigned short actionWdDetectorBitMask; /* from Fifo 1 */ 00111 unsigned char actionWdTrgCommand; /* from Fifo 1 */ 00112 unsigned char actionWdDaqCommand; /* from Fifo 1 */ 00113 unsigned short TrgToken; /* from Fifo 2 */ 00114 unsigned short addBits; /* from Fifo 2 - bit 0=Contamination; bit 6=L2.5 abort; bit 7=1 is fake data */ 00115 unsigned short DSMInput; /* from Fifo 3 */ 00116 unsigned short externalBusy; /* from Fifo 3 */ 00117 unsigned short modifiedBusyStatus; /* from Fifo 4 */ 00118 unsigned short physicsWord; /* from Fifo 4 */ 00119 unsigned short TriggerWord; /* from Fifo 5 */ 00120 unsigned short DSMAddress; /* from Fifo 6 */ 00121 unsigned short contaminationBusyStatus; /* from Fifo 6 */ 00122 unsigned short npre; /* pre value for detector raw data */ 00123 unsigned short npost; /* post value for detector raw data */ 00124 unsigned short dummy; /* dummy - filler */ 00125 } EvtDescData; /* 40 bytes total */ 00126 00127 /* Trigger Summary Data Structures */ 00128 00129 /* L0 DSM data structures */ 00130 00131 typedef struct { 00132 unsigned short CPA[32]; /* Contents of 4 CTB+MWC DSM Input Buffers (IB's) - coarse pixel array*/ 00133 unsigned short quadDSM[8]; /* Contents of 1 CTB+MWC DSM IB - outputs of previous 4 */ 00134 unsigned short lastDSM[8]; /* Contents of last DSM IB - results of all DSM trees */ 00135 unsigned short VTX[8]; /* Separate ZDC and BBC DSMs have been replaced with this one */ 00136 unsigned short EMC[8]; /* Contents of 1 EMC IB - results of separate BEMC and EEMC DSMs */ 00137 unsigned short BCdata[16]; /* Contents of 2 Bunch Crossing DSMs IB's */ 00138 unsigned short specialTriggers[8]; /* Contents of 1 Special Trigger DSM - all the special trigger requests */ 00139 unsigned short FPD[8]; /* Contents of 1 FPD IB - we are installing this DSM this year but it */ 00140 } L0_DSM_Data; /* 192 bytes total */ 00141 00142 00143 /* Summary data */ 00144 00145 typedef struct { 00146 unsigned short TrgSumBytes; 00147 unsigned short TrgSumHeader; 00148 unsigned int L1Sum[2]; /* L1 Summary */ 00149 unsigned int L2Sum[2]; /* L2 Summary */ 00150 unsigned short L0SumBytes; 00151 unsigned short L0SumHeader; 00152 L0_DSM_Data DSMdata; /* L0 DSM Data from DSM Tree */ 00153 unsigned short L1SumBytes; 00154 unsigned short L1SumHeader; 00155 unsigned int L1Result[32]; /* Result from L1 CPU */ 00156 unsigned short L2SumBytes; 00157 unsigned short L2SumHeader; 00158 unsigned int L2Result[32]; /* Result from L2 CPU */ 00159 } TrgSumData; /* 480 bytes total */ 00160 00161 /* Data structure passed between L1ANA and L2 */ 00162 00163 typedef struct { 00164 EvtDescData EvtDesc; /* L1 Event Descriptor Data */ 00165 TrgSumData TrgSum; /* Summary data */ 00166 } L1dataType; /* 520 bytes */ 00167 00168 /* Raw Trigger Detector data structures */ 00169 00170 typedef struct { 00171 unsigned short RawDetBytes; 00172 char RawDetHeader[2]; 00173 unsigned short CTBdataBytes; 00174 char CTBdataHeader[2]; 00175 unsigned char CTB[256]; /* CTB raw data */ 00176 unsigned short MWCdataBytes; 00177 char MWCdataHeader[2]; 00178 unsigned int MWCfiller; /* Dummy to bring header to mod 8 */ 00179 unsigned char MWC[128]; /* MWC raw data */ 00180 unsigned short BEMCdataBytes; 00181 char BEMCdataHeader[2]; 00182 unsigned int BEMCfiller; /* Dummy to bring header to mod 8 */ 00183 unsigned char BEMCEast[240]; /* next year there will be 15 DSMs covering the East half, all in one crate */ 00184 unsigned char BEMCWest[240]; /* this year there will be 15 DSMs covering the West half, all in one crate */ 00185 unsigned short BEMClayer1[48]; /* there will be 6 DSMs at layer1 even if only 3 of them have input this year*/ 00186 unsigned short EEMCdataBytes; 00187 char EEMCdataHeader[2]; 00188 unsigned int EEMCfiller; /* Dummy to bring header to mod 8 */ 00189 unsigned short EEMClayer1[16]; /* the two layer1 DSMs are at the LHS of the crate so they get read first */ 00190 unsigned char EEMC[144]; /* next there are the 9 layer0 DSMs, of which only 4-5 have input this year */ 00191 unsigned short FPDdataBytes; 00192 char FPDdataHeader[2]; 00193 unsigned int FPDfiller; /* Dummy to bring header to mod 8 */ 00194 unsigned char FPDEastNSLayer0[112]; /* fpd east north/south layer 0 */ 00195 unsigned short FPDEastNSLayer1[8]; /* fpd east north/south layer 1 */ 00196 unsigned char FPDEastTBLayer0[64]; /* fpd east top/bottom layer 0 */ 00197 unsigned short FPDEastTBLayer1[8]; /* fpd east north/south layer 1 */ 00198 unsigned char FPDWestNSLayer0[112]; /* fpd east north/south layer 0 */ 00199 unsigned short FPDWestNSLayer1[8]; /* fpd east north/south layer 1 */ 00200 unsigned char FPDWestTBLayer0[64]; /* fpd east north/south layer 0 */ 00201 unsigned short FPDWestTBLayer1[8]; /* fpd east north/south layer 1 */ 00202 unsigned short BBCdataBytes; 00203 char BBCdataHeader[2]; 00204 unsigned int BBCfiller; /* Dummy to bring header to mod 8 */ 00205 unsigned char BBC[96]; /* increased from 80 to 96 for the addition of a DSM after layer 0 DSMs */ 00206 unsigned short BBClayer1[16]; /* this is the layer1 DSM that feeds the VTX DSM */ 00207 unsigned char ZDCSMD[32]; /* this is the 2 layer0 DSM for the ZDC SMD detector */ 00208 unsigned char ZDC[16]; /* this is the original ZDC DSM */ 00209 unsigned short ZDClayer1[8]; /* this is the new layer1 ZDC DSM that also feeds the VTX DSM */ 00210 } RawTrgDet; /* 1792 bytes total */ 00211 00212 /* Trigger Event Structure */ 00213 00214 typedef struct { 00215 EvtDescData EvtDesc; /* L1 Event Descriptor Data : 40 bytes */ 00216 TrgSumData TrgSum; /* Summary data: 480 bytes */ 00217 RawTrgDet rawTriggerDet[MAX_RAW_DATA_BLOCKS]; /* Raw Detector Data with pre and post History: 11*1792 bytes */ 00218 } TrgDataType; /* 20232 bytes */ 00219 00220 /* Data block for DSMs and L1 to pass to L2 via myriMemcpy2 */ 00221 00222 typedef struct { 00223 int src_nodeId; /* Source nodeId */ 00224 int cur_token; 00225 int Npre,Npost; 00226 unsigned int localClock; /* Local DSM clock */ 00227 int numGroup; /* Number of DSMs in first group */ 00228 int numDSM; /* Total number of DSMs */ 00229 int dummy; /* Ensure alignment of long long */ 00230 long long dsmData[RAW_MAX_LEN*MAX_RAW_DATA_BLOCKS/8]; /* Make this 8-byte aligned */ 00231 } dsmMemcpy2Buf; 00232 00233 #endif
1.5.9