00001 /* 00002 *************************************************************************** 00003 * Author: Herb Ward 00004 *************************************************************************** 00005 * Description: TRG unpacking code 00006 * 00007 * 00008 * change log 00009 * 14-Jan-00 MJL added TRGD::PrintDataCompact() 00010 * 04-Feb-00 hjw adaptations for "ushort ZDCDSM[8]" to "BYTE ZDC[16]" in 00011 * trgStructures.h (BYTE = uchar) 00012 * 00013 *************************************************************************** 00014 */ 00015 00016 #include "TRG_Reader.hh" 00017 #include <assert.h> 00018 #include "trgStructures2007.h" 00019 #include "trgStructures2008.h" 00020 #define PP printf( 00021 00022 using namespace OLDEVP; 00023 00025 #define PREPOST 11 00026 #include "trgStructures.h" 00027 typedef struct { 00028 EvtDescData EvtDesc; /* L1 Event Descriptor Data */ 00029 TrgSumData TrgSum; /* summary data */ 00030 RawTrgDet RAW[PREPOST]; /* pre and post history determines actual dimension. */ 00031 } MarilynMonroe; 00032 MarilynMonroe *gs; 00033 00034 #include "trgStructures2000.h" 00035 typedef struct { 00036 EvtDescData2000 EvtDesc; /* L1 Event Descriptor Data */ 00037 TrgSumData2000 TrgSum; /* summary data */ 00038 RawTrgDet2000 RAW[PREPOST]; /* For simplicity, I assume that you don't want pre and post history. */ 00039 } MarilynMonroe2000; 00040 MarilynMonroe2000 *gs2000; // CAUTION: this is used in duplicated.code, even 00041 // though grep doesn't find it (see macro SWITCH). 00043 // This section of code causes the functions in the file duplicated.code to appear twice 00044 // in this code file. The second time is for trigger data in the year 2000 format. 00045 // The first time is for year 2001 format. 00046 #define SWITCH(x) x 00047 #include "duplicated.code" 00048 #undef SWITCH 00049 #define SWITCH(x) x ## 2000 00050 #include "duplicated.code" 00053 00055 int TRG_Reader::YearOfData(char *data) { 00056 data+=sizeof(unsigned short)+sizeof(char); // Skip the first two data. 00057 00058 if(*data==0x12) return 2000; // These years (2000, 2001, 2003, ...) correspond 00059 if(*data==0x13) return 2001; // roughly to the file names for the various 00060 if(*data==0x20) return 2003; // trgStructures.h versions (eg, trgStructures2003.h). 00061 if(*data==0x21) return 2004; // trgStructures.h versions (eg, trgStructures2004.h). 00062 if(*data==0x22) return 2005; // trgStructures.h versions (eg, trgStructures2005.h). 00063 //This version 30 had problem and fixed 20070404 by version 31. 00064 //Data before 20070404 have version 30, but will read correctly when casted to version 31 00065 if(*data==0x30) return 2007; // trgStructures.h versions (eg, trgStructures2007.h). 00066 //Fixed version of 2007 trigger structure 00067 if(*data==0x31) return 2007; // trgStructures.h versions (eg, trgStructures2007.h). 00068 //From run8 this will be TrgTowerTrnfer version# 00069 if(*data==0x10 || *data==0x32) return 2008; // trgStructures.h versions (eg, trgStructures2008.h). 00070 00071 (void) printf("TRG_Reader::YearOfData : value %d=0x%x not treated\n",*data,*data); 00072 //assert(0); // Should not be here. My ne dolzhny byt6 zdec6. 00073 00074 return 0; 00075 } 00076 00077 00078 TRG_Reader::TRG_Reader(EventReader *er, Bank_TRGP *pTRGP) : 00079 mErr(0),pBankUnp(0),sizeUnp(0),pTRGD(0) 00080 { 00081 if (!pTRGD) pTRGD = new Bank_TRGD(); 00082 00083 pBankTRGP=pTRGP; //copy into class data member for use by other methods 00084 ercpy=er; // squirrel away pointer eventreader for our friends 00085 00086 if ( !pTRGP) return; 00087 00088 if(!pBankTRGP->test_CRC()) { 00089 (void) printf("TRG_Reader::TRG_Reader: CRC error: %s %d\n",__FILE__,__LINE__); 00090 } 00091 00092 if(pBankTRGP->swap()<0) { 00093 // Use default swap. 00094 mErr = 1; 00095 (void) printf("TRG_Reader::TRG_Reader: swap error: %s %d\n",__FILE__,__LINE__); 00096 } 00097 pBankTRGP->header.CRC=0; 00098 pBankTRGD=(Bank_TRGD*) ((char *)pBankTRGP + 4*pBankTRGP->theData.offset); 00099 assert(pBankTRGD); 00100 00101 if(!pBankTRGD->test_CRC()) { 00102 mErr=2; 00103 (void) printf("TRG_Reader::TRG_Reader: CRC error: %s %d\n",__FILE__,__LINE__); 00104 } 00105 char *ptr=(char*)pBankTRGD; ptr+=40; /* Skip the 10-word TRGD bank header. */ 00106 00107 switch(YearOfData(ptr)) { 00108 case 0: 00109 // An error occured with decoding the version / year number 00110 (void) printf("TRG_Reader::TRG_Reader: YearOfData() returned a failure status\n"); 00111 mErr = 9999; 00112 return; 00113 break; 00114 00115 case 2000: 00116 gs2000=(MarilynMonroe2000*)ptr; 00117 // SanityCheck2000(1); 00118 if(pBankTRGD->HerbSwap2000() <0) { 00119 mErr = 2000; 00120 (void) printf("TRG_Reader::TRG_Reader: Swap error %s %d.\n",__FILE__,__LINE__); 00121 } 00122 break; 00123 00124 case 2001: 00125 gs=(MarilynMonroe*)ptr; 00126 // SanityCheck(1); 00127 if(pBankTRGD->HerbSwap() <0) { 00128 mErr = 2001; 00129 (void) printf("TRG_Reader::TRG_Reader: Swap error %s %d.\n",__FILE__,__LINE__); 00130 } 00131 break; 00132 00133 case 2003: 00134 S_mode = 0; 00135 // SanityCheck2003(ptr,S_mode); 00136 if(pBankTRGD->HerbSwap2003(ptr)<0) { 00137 mErr = 2003; 00138 (void) printf("TRG_Reader::TRG_Reader: Swap error %s %d.\n",__FILE__,__LINE__); 00139 } 00140 break; 00141 00142 case 2004: 00143 S_mode = 0; 00144 // SanityCheck2004(ptr,S_mode); 00145 if(pBankTRGD->HerbSwap2004(ptr)<0) { 00146 mErr = 2004; 00147 (void) printf("TRG_Reader::TRG_Reader: Swap error %s %d.\n",__FILE__,__LINE__); 00148 } 00149 break; 00150 00151 case 2005: 00152 S_mode = 0; 00153 // SanityCheck2004(ptr,S_mode); 00154 if(pBankTRGD->HerbSwap2005(ptr)<0) { 00155 mErr = 2005; 00156 (void) printf("TRG_Reader::TRG_Reader: Swap error %s %d.\n",__FILE__,__LINE__); 00157 } 00158 break; 00159 00160 case 2007: 00161 S_mode = 0; 00162 // Since 2007 run, trigger data has variable length. 00163 // Also byte swap accordingly 00164 if(UnpackTrg2007(pBankTRGP) < 0){ 00165 mErr = 2007; 00166 (void) printf("TRG_Reader::TRG_Reader: Swap error %s %d.\n",__FILE__,__LINE__); 00167 } 00168 pBankTRGD=(Bank_TRGD*) ((char *)pBankTRGP + 4*pBankTRGP->theData.offset); 00169 break; 00170 00171 case 2008: 00172 S_mode = 0; 00173 if(UnpackTrg2008(pBankTRGP) < 0){ 00174 mErr = 2008; 00175 (void) printf("TRG_Reader::TRG_Reader: Swap error %s %d.\n",__FILE__,__LINE__); 00176 } 00177 pBankTRGD=(Bank_TRGD*) ((char *)pBankTRGP + 4*pBankTRGP->theData.offset); 00178 break; 00179 00180 default: 00181 assert(0); 00182 } 00183 (void) printf("TRG_Reader::TRG_Reader: Trigger reader instantiated, distance to data = %d bytes.\n", 00184 pBankTRGP->theData.offset); 00185 } 00186 00187 void TRG_Reader::dumpWordsToScreenInHexAndExit(int nwords) { 00188 int i; 00189 unsigned int *pp; 00190 pp=(unsigned int*)pBankTRGD; 00191 if(sizeof(unsigned int)!=4) { PP"Error 77b in %s.\n",__FILE__); assert(0); } 00192 for(i=0;i<nwords;i++) { 00193 PP"word number %3d: 0x%08x\n",i+1,pp[i]); 00194 } 00195 PP"Exiting from diagnostic function.\n"); 00196 assert(0); // Do not remove this exit. If you don't want to exit, don't call this function. 00197 } 00198 char *Bank_TRGD::PrintHelp(char *msg,int nn) { 00199 static char rv[100]; 00200 sprintf(rv,"%s[%3d]",msg,nn); 00201 return rv; 00202 } 00203 #define Funsigned_short "%32s 0x%04x %15d\n" 00204 #define Fchar "%32s %c %15d\n" 00205 #define Funsigned_int "%32s 0x%08x %15d\n" 00206 #define Funsigned_char "%32s 0x%02x %15d\n" 00207 #define Funsigned_long Funsigned_int 00208 #define FF fprintf(ff, 00209 /*--------------------- Commented Sep 7 2001. St_trg_Maker has functions for printing the data. 00210 void Bank_TRGD::PrintAllTheData(FILE *ff) { 00211 int i; 00212 assert(ff); 00213 FF Funsigned_short ,"EvtDesc.TCUdataBytes",GS->EvtDesc.TCUdataBytes,GS->EvtDesc.TCUdataBytes); 00214 FF Fchar ,"EvtDesc.TCUEvtDesc",GS->EvtDesc.TCUEvtDesc,GS->EvtDesc.TCUEvtDesc); 00215 FF Funsigned_char ,"EvtDesc.TrgDataFmtVer",GS->EvtDesc.TrgDataFmtVer,GS->EvtDesc.TrgDataFmtVer); 00216 FF Funsigned_int ,"EvtDesc.bunchXing_hi",GS->EvtDesc.bunchXing_hi,GS->EvtDesc.bunchXing_hi); 00217 FF Funsigned_int ,"EvtDesc.bunchXing_lo",GS->EvtDesc.bunchXing_lo,GS->EvtDesc.bunchXing_lo); 00218 FF Funsigned_short ,"EvtDesc.TCU1.FIFO1.TrgToken",GS->EvtDesc.TCU1.FIFO1.TrgToken,GS->EvtDesc.TCU1.FIFO1.TrgToken); 00219 FF Funsigned_short ,"EvtDesc.TCU1.FIFO1.TrgActionWd",GS->EvtDesc.TCU1.FIFO1.TrgActionWd,GS->EvtDesc.TCU1.FIFO1.TrgActionWd); 00220 FF Funsigned_long ,"EvtDesc.TCU1.fifo1",GS->EvtDesc.TCU1.fifo1,GS->EvtDesc.TCU1.fifo1); 00221 FF Funsigned_short ,"EvtDesc.TCU2.FIFO2.DSMInput",GS->EvtDesc.TCU2.FIFO2.DSMInput,GS->EvtDesc.TCU2.FIFO2.DSMInput); 00222 FF Funsigned_short ,"EvtDesc.TCU2.FIFO2.DSMAddress",GS->EvtDesc.TCU2.FIFO2.DSMAddress,GS->EvtDesc.TCU2.FIFO2.DSMAddress); 00223 FF Funsigned_long ,"EvtDesc.TCU2.fifo2",GS->EvtDesc.TCU2.fifo2,GS->EvtDesc.TCU2.fifo2); 00224 FF Funsigned_char ,"EvtDesc.TCU3.FIFO3.DetectorBusy",GS->EvtDesc.TCU3.FIFO3.DetectorBusy,GS->EvtDesc.TCU3.FIFO3.DetectorBusy); 00225 FF Funsigned_char ,"EvtDesc.TCU3.FIFO3.addBits",GS->EvtDesc.TCU3.FIFO3.addBits,GS->EvtDesc.TCU3.FIFO3.addBits); 00226 FF Funsigned_char ,"EvtDesc.TCU3.FIFO3.TriggerWd",GS->EvtDesc.TCU3.FIFO3.TriggerWd,GS->EvtDesc.TCU3.FIFO3.TriggerWd); 00227 FF Funsigned_long ,"EvtDesc.TCU3.fifo3",GS->EvtDesc.TCU3.fifo3,GS->EvtDesc.TCU3.fifo3); 00228 FF Funsigned_short ,"EvtDesc.npre",GS->EvtDesc.npre,GS->EvtDesc.npre); 00229 FF Funsigned_short ,"EvtDesc.npost",GS->EvtDesc.npost,GS->EvtDesc.npost); 00230 FF Funsigned_short ,"TrgSum.TrgSumBytes",GS->TrgSum.TrgSumBytes,GS->TrgSum.TrgSumBytes); 00231 char *TrgSumHeader=(char*)&(GS->TrgSum.TrgSumHeader); 00232 for(i=0;i< 2;i++) FF Fchar ,PrintHelp("TrgSum.TrgSumHeader",i), 00233 TrgSumHeader[i], 00234 TrgSumHeader[i]); 00235 for(i=0;i< 2;i++) FF Funsigned_int ,PrintHelp("TrgSum.L1Sum",i),GS->TrgSum.L1Sum[i],GS->TrgSum.L1Sum[i]); 00236 for(i=0;i< 2;i++) FF Funsigned_int ,PrintHelp("TrgSum.L2Sum",i),GS->TrgSum.L2Sum[i],GS->TrgSum.L2Sum[i]); 00237 FF Funsigned_short ,"TrgSum.L0SumBytes",GS->TrgSum.L0SumBytes,GS->TrgSum.L0SumBytes); 00238 char *L0SumHeader=(char*)&(GS->TrgSum.L0SumHeader); 00239 for(i=0;i< 2;i++) FF Fchar ,PrintHelp("TrgSum.L0SumHeader",i), 00240 L0SumHeader[i], 00241 L0SumHeader[i]); 00242 for(i=0;i< 32;i++) FF Funsigned_short ,PrintHelp("TrgSum.DSM.CPA",i),GS->TrgSum.DSM.CPA[i],GS->TrgSum.DSM.CPA[i]); 00243 for(i=0;i< 8;i++) FF Funsigned_short ,PrintHelp("TrgSum.DSM.quadDSM",i),GS->TrgSum.DSM.quadDSM[i],GS->TrgSum.DSM.quadDSM[i]); 00244 for(i=0;i< 8;i++) FF Funsigned_short ,PrintHelp("TrgSum.DSM.lastDSM",i),GS->TrgSum.DSM.lastDSM[i],GS->TrgSum.DSM.lastDSM[i]); 00245 for(i=0;i< 16;i++) FF Funsigned_char ,PrintHelp("TrgSum.DSM.ZDC",i),GS->TrgSum.DSM.ZDC[i],GS->TrgSum.DSM.ZDC[i]); 00246 for(i=0;i< 16;i++) FF Funsigned_short ,PrintHelp("TrgSum.DSM.BCdata",i),GS->TrgSum.DSM.BCdata[i],GS->TrgSum.DSM.BCdata[i]); 00247 FF Funsigned_short ,"TrgSum.L1SumBytes",GS->TrgSum.L1SumBytes,GS->TrgSum.L1SumBytes); 00248 char *L1SumHeader=(char*)&(GS->TrgSum.L1SumHeader); 00249 for(i=0;i< 2;i++) FF Fchar ,PrintHelp("TrgSum.L1SumHeader",i), 00250 L1SumHeader[i], 00251 L1SumHeader[i]); 00252 for(i=0;i< 32;i++) FF Funsigned_int ,PrintHelp("TrgSum.L1Result",i),GS->TrgSum.L1Result[i],GS->TrgSum.L1Result[i]); 00253 FF Funsigned_short ,"TrgSum.L2SumBytes",GS->TrgSum.L2SumBytes,GS->TrgSum.L2SumBytes); 00254 char *L2SumHeader=(char*)&(GS->TrgSum.L2SumHeader); 00255 for(i=0;i< 2;i++) FF Fchar ,PrintHelp("TrgSum.L2SumHeader",i), 00256 L2SumHeader[i], 00257 L2SumHeader[i]); 00258 for(i=0;i< 32;i++) FF Funsigned_int ,PrintHelp("TrgSum.L2Result",i),GS->TrgSum.L2Result[i],GS->TrgSum.L2Result[i]); 00259 FF Funsigned_short ,"RAW.RawDetBytes",GS->RAW[0].RawDetBytes,GS->RAW[0].RawDetBytes); 00260 for(i=0;i< 2;i++) FF Fchar ,PrintHelp("RAW.RawDetHeader",i),GS->RAW[0].RawDetHeader[i],GS->RAW[0].RawDetHeader[i]); 00261 FF Funsigned_short ,"RAW.CTBdataBytes",GS->RAW[0].CTBdataBytes,GS->RAW[0].CTBdataBytes); 00262 for(i=0;i< 2;i++) FF Fchar ,PrintHelp("RAW.CTBdataHeader",i),GS->RAW[0].CTBdataHeader[i],GS->RAW[0].CTBdataHeader[i]); 00263 for(i=0;i<256;i++) FF Funsigned_char ,PrintHelp("RAW.CTB",i),GS->RAW[0].CTB[i],GS->RAW[0].CTB[i]); 00264 FF Funsigned_short ,"RAW.MWCdataBytes",GS->RAW[0].MWCdataBytes,GS->RAW[0].MWCdataBytes); 00265 for(i=0;i< 2;i++) FF Fchar ,PrintHelp("RAW.MWCdataHeader",i),GS->RAW[0].MWCdataHeader[i],GS->RAW[0].MWCdataHeader[i]); 00266 FF Funsigned_long ,"RAW.MWCfiller",GS->RAW[0].MWCfiller,GS->RAW[0].MWCfiller); 00267 for(i=0;i<128;i++) FF Funsigned_char ,PrintHelp("RAW.MWC",i),GS->RAW[0].MWC[i],GS->RAW[0].MWC[i]); 00268 FF Funsigned_short ,"RAW.EMCdataBytes",GS->RAW[0].EMCdataBytes,GS->RAW[0].EMCdataBytes); 00269 for(i=0;i< 2;i++) FF Fchar ,PrintHelp("RAW.EMCdataHeader",i),GS->RAW[0].EMCdataHeader[i],GS->RAW[0].EMCdataHeader[i]); 00270 FF Funsigned_long ,"RAW.EMCfiller",GS->RAW[0].EMCfiller,GS->RAW[0].EMCfiller); 00271 } 00272 #define Munsigned_short "%-32s 0x%04x %15d\n" 00273 #define Mchar "%-32s %c %15d\n" 00274 #define Munsigned_int "%-32s 0x%08x %15d\n" 00275 #define Munsigned_char "%-32s 0x%02x %15d\n" 00276 #define Munsigned_long Munsigned_int 00277 #define M1unsigned_short "%-32s 0x%04x\n" 00278 #define M1char "%-32s %c\n" 00279 #define M1unsigned_int "%-32s 0x%08x\n" 00280 #define M1unsigned_char "%-32s 0x%02x\n" 00281 #define M1unsigned_long M1unsigned_int 00282 #define PLINE fprintf(ff,"%s",line); 00283 void Bank_TRGD::PrintDataCompact(FILE *ff) { 00284 int i; 00285 char *L0SumHeader,*TrgSumHeader; 00286 TrgSumHeader=(char*)&(GS->TrgSum.TrgSumHeader); 00287 L0SumHeader=(char*)&(GS->TrgSum.L0SumHeader); 00288 char line[] = "-------------------------------------------------------------"; 00289 assert(ff); 00290 FF Munsigned_short ,"EvtDesc.TCUdataBytes",GS->EvtDesc.TCUdataBytes,GS->EvtDesc.TCUdataBytes); 00291 FF M1char ,"EvtDesc.TCUEvtDesc",GS->EvtDesc.TCUEvtDesc); 00292 FF Munsigned_char ,"EvtDesc.TrgDataFmtVer",GS->EvtDesc.TrgDataFmtVer,GS->EvtDesc.TrgDataFmtVer); 00293 FF M1unsigned_int ,"EvtDesc.bunchXing_hi",GS->EvtDesc.bunchXing_hi); 00294 FF M1unsigned_int ,"EvtDesc.bunchXing_lo",GS->EvtDesc.bunchXing_lo); 00295 FF Munsigned_short ,"EvtDesc.TCU1.FIFO1.TrgToken",GS->EvtDesc.TCU1.FIFO1.TrgToken,GS->EvtDesc.TCU1.FIFO1.TrgToken); 00296 FF M1unsigned_short ,"EvtDesc.TCU1.FIFO1.TrgActionWd",GS->EvtDesc.TCU1.FIFO1.TrgActionWd); 00297 FF M1unsigned_long ,"EvtDesc.TCU1.fifo1",GS->EvtDesc.TCU1.fifo1); 00298 FF M1unsigned_short ,"EvtDesc.TCU2.FIFO2.DSMInput",GS->EvtDesc.TCU2.FIFO2.DSMInput); 00299 FF M1unsigned_short ,"EvtDesc.TCU2.FIFO2.DSMAddress",GS->EvtDesc.TCU2.FIFO2.DSMAddress); 00300 FF M1unsigned_long ,"EvtDesc.TCU2.fifo2",GS->EvtDesc.TCU2.fifo2); 00301 FF M1unsigned_char ,"EvtDesc.TCU3.FIFO3.DetectorBusy",GS->EvtDesc.TCU3.FIFO3.DetectorBusy); 00302 FF M1unsigned_char ,"EvtDesc.TCU3.FIFO3.addBits",GS->EvtDesc.TCU3.FIFO3.addBits); 00303 FF M1unsigned_char ,"EvtDesc.TCU3.FIFO3.TriggerWd",GS->EvtDesc.TCU3.FIFO3.TriggerWd); 00304 FF M1unsigned_long ,"EvtDesc.TCU3.fifo3",GS->EvtDesc.TCU3.fifo3); 00305 FF Munsigned_short ,"EvtDesc.npre",GS->EvtDesc.npre,GS->EvtDesc.npre); 00306 FF Munsigned_short ,"EvtDesc.npost",GS->EvtDesc.npost,GS->EvtDesc.npost); 00307 FF Munsigned_short ,"TrgSum.TrgSumBytes",GS->TrgSum.TrgSumBytes,GS->TrgSum.TrgSumBytes); 00308 FF "%-32s '%c%c'\n","TrgSum.TrgSumHeader", TrgSumHeader[0],TrgSumHeader[1]); 00309 FF "%-32s 0x%08x 0x%08x\n", "TrgSum.L1Sum",GS->TrgSum.L1Sum[0],GS->TrgSum.L1Sum[1]); 00310 FF "%-32s 0x%08x 0x%08x\n", "TrgSum.L2Sum",GS->TrgSum.L2Sum[0],GS->TrgSum.L2Sum[1]); 00311 FF Munsigned_short ,"TrgSum.L0SumBytes",GS->TrgSum.L0SumBytes,GS->TrgSum.L0SumBytes); 00312 FF "%-32s '%c%c'\n", "TrgSum.L0SumHeader",L0SumHeader[0],L0SumHeader[1]); 00313 00314 00315 FF "\n%s ","TrgSum.DSM.CPA:"); 00316 for(i=0;i< 32;i++) { 00317 if (i%8) FF "%4x ",GS->TrgSum.DSM.CPA[i]); 00318 else FF "\n%2d| %4x ",i,GS->TrgSum.DSM.CPA[i]); 00319 } 00320 FF "\n\n"); 00321 00322 FF "\n%s ","TrgSum.DSM.quadDSM:"); 00323 for(i=0;i< 8;i++) { 00324 if (i%8) FF "%4x ",GS->TrgSum.DSM.quadDSM[i]); 00325 else FF "\n%2d| %4x ",i,GS->TrgSum.DSM.quadDSM[i]); 00326 } 00327 FF "\n\n"); 00328 00329 FF "\n%s ","TrgSum.DSM.lastDSM:"); 00330 for(i=0;i< 8;i++) { 00331 if (i%8) FF "%4x ",GS->TrgSum.DSM.lastDSM[i]); 00332 else FF "\n%2d| %4x ",i,GS->TrgSum.DSM.lastDSM[i]); 00333 } 00334 FF "\n\n"); 00335 00336 00337 FF "\n%s ","TrgSum.DSM.ZDC:"); 00338 for(i=0;i<16;i++) { 00339 if (i%8) FF "%2x ",GS->TrgSum.DSM.ZDC[i]); 00340 else FF "\n%2d| %2x ",i,GS->TrgSum.DSM.ZDC[i]); 00341 } 00342 FF "\n\n"); 00343 00344 00345 FF "\n%s ","TrgSum.DSM.BCdata:"); 00346 for(i=0;i< 16;i++) { 00347 if (i%8) FF "%4x ",GS->TrgSum.DSM.BCdata[i]); 00348 else FF "\n%2d| %4x ",i,GS->TrgSum.DSM.BCdata[i]); 00349 } 00350 FF "\n\n"); 00351 00352 PLINE 00353 char *L1SumHeader=(char*)&(GS->TrgSum.L1SumHeader); 00354 FF "\n%-20s0x%x (%d) bytes\tHeader: '%c%c'\n","TrgSum.L1Result:",GS->TrgSum.L1SumBytes,GS->TrgSum.L1SumBytes, 00355 L1SumHeader[0], 00356 L1SumHeader[1]); 00357 PLINE 00358 for(i=0;i< 32;i++) { 00359 if (i%8) FF "%8x ",GS->TrgSum.L1Result[i]); 00360 else FF "\n%2d| %8x ",i,GS->TrgSum.L1Result[i]); 00361 } 00362 FF "\n\n"); 00363 00364 00365 PLINE 00366 char *L2SumHeader=(char*)&(GS->TrgSum.L2SumHeader); 00367 FF "\n%-20s0x%x (%d) bytes\tHeader: '%c%c'\n","TrgSum.L2Result:",GS->TrgSum.L2SumBytes,GS->TrgSum.L2SumBytes, 00368 L2SumHeader[0], 00369 L2SumHeader[1]); 00370 PLINE 00371 for(i=0;i< 32;i++) { 00372 if (i%8) FF "%8x ",GS->TrgSum.L2Result[i]); 00373 else FF "\n%2d| %8x ",i,GS->TrgSum.L2Result[i]); 00374 } 00375 FF "\n\n"); 00376 00377 PLINE 00378 FF "\n%-20s0x%x (%d) bytes\tHeader: '%c%c'\n","RAW Detector:",GS->RAW[0].RawDetBytes,GS->RAW[0].RawDetBytes,GS->RAW[0].RawDetHeader[0],GS->RAW[0].RawDetHeader[1]); 00379 PLINE 00380 FF "\n"); 00381 00382 PLINE 00383 FF "\n%-20s0x%x (%d) bytes\tHeader: '%c%c'\n","RAW.CTB:",GS->RAW[0].CTBdataBytes,GS->RAW[0].CTBdataBytes,GS->RAW[0].CTBdataHeader[0],GS->RAW[0].CTBdataHeader[1]); 00384 PLINE 00385 00386 for(i=0;i< 256;i++) { 00387 if (i%24) FF "%2x ",GS->RAW[0].CTB[i]); 00388 else FF "\n%3d| %2x ",i,GS->RAW[0].CTB[i]); 00389 } 00390 FF "\n\n"); 00391 00392 PLINE 00393 FF "\n%-20s0x%x (%d) bytes\tHeader: '%c%c'\n","RAW.MWCdataBytes:",GS->RAW[0].MWCdataBytes,GS->RAW[0].MWCdataBytes,GS->RAW[0].MWCdataHeader[0],GS->RAW[0].MWCdataHeader[1]); 00394 PLINE 00395 00396 for(i=0;i< 128;i++) { 00397 if (i%24) FF "%2x ",GS->RAW[0].MWC[i]); 00398 else FF "\n%3d| %2x ",i,GS->RAW[0].MWC[i]); 00399 } 00400 FF "\n\n"); 00401 00402 PLINE 00403 FF "\n%-20s0x%x (%d) bytes\tHeader: '%c%c'\n","RAW.MWCdata:",GS->RAW[0].EMCdataBytes,GS->RAW[0].EMCdataBytes,GS->RAW[0].EMCdataHeader[0],GS->RAW[0].EMCdataHeader[1]); 00404 PLINE 00405 00406 FF "\n"); 00407 00408 FF M1unsigned_long ,"RAW.EMCfiller",GS->RAW[0].EMCfiller); 00409 FF "\n\n\n\n"); 00410 } 00411 ----------------------------------------------------------------------*/ 00412 00413 int Bank_TRGD::swapHerb4bytes(unsigned long *data,int number) { 00414 return swapHerb4bytes((unsigned int*)data,number); 00415 } 00416 int Bank_TRGD::swapHerb4bytes(unsigned int *data,int number) { 00417 int i; 00418 char *hh,temp[4]; 00419 for(i=0;i<number;i++) { 00420 hh=(char*)(&(data[i])); 00421 temp[0]=hh[3]; temp[1]=hh[2]; temp[2]=hh[1]; temp[3]=hh[0]; 00422 data[i]=*((INT32*)temp); 00423 } 00424 return 3; 00425 } 00426 int Bank_TRGD::swapHerb2bytes(short unsigned int *data,int number) { 00427 int i; 00428 char *hh,temp[2]; 00429 for(i=0;i<number;i++) { 00430 hh=(char*)(&(data[i])); 00431 temp[0]=hh[1]; temp[1]=hh[0]; 00432 data[i]=*((INT16*)temp); 00433 } 00434 return 3; 00435 } 00436 00437 00438 00439 00440
1.5.9