// // To compile: gcc -o comp_TMB_MPC comp_TMB_MPC.c // To compile: gcc -o Bin/comp_TMB_MPC comp_TMB_MPC.c // // This program expects the input file name as run[xyzxyz].dat // and xyzxyz will be the input to run this program. // // #include #include #include #include /* sleep function */ #include /* Usual interrupt handler stuff */ #include main(){ int nMatched, nHalfMatched, nNotMatched; int itmp, tmbid, tmbbuf[4]; int impc, mpcid, mpcbuf[6]; int tmbMu00, tmbMu01, tmbMu10, tmbMu11; int bxn, winnerbit; int mpcMu00, mpcMu01, mpcMu10, mpcMu11, mpcMu20, mpcMu21; FILE *fptmb,*fpmpc; char tmpFile[50]; char mpcFile[50]; scanf("%s",tmpFile); scanf("%s",mpcFile); fptmb=fopen(tmpFile,"r"); nMatched = 0; nHalfMatched = 0; nNotMatched = 0; itmp=1; while(itmp>0){ itmp=fscanf(fptmb,"%d %04x %04x %04x %04x %04x %04x\n",&tmbid,&tmbbuf[0], &tmbbuf[1],&tmbbuf[2],&tmbbuf[3],&bxn,&winnerbit); tmbMu00 = tmbbuf[0]; tmbMu01 = tmbbuf[1]; tmbMu10 = tmbbuf[2]; tmbMu11 = tmbbuf[3]; impc=1; fpmpc=fopen(mpcFile,"r"); while(impc>0){ impc=fscanf(fpmpc,"%d %04x %04x %04x %04x %04x %04x\n",&mpcid,&mpcbuf[5], &mpcbuf[4],&mpcbuf[3],&mpcbuf[2],&mpcbuf[1],&mpcbuf[0]); mpcMu00 = mpcbuf[5]; mpcMu01 = mpcbuf[4]; mpcMu10 = mpcbuf[3]; mpcMu11 = mpcbuf[2]; mpcMu20 = mpcbuf[1]; mpcMu21 = mpcbuf[0]; if ( (tmbMu00 == mpcMu00) && (tmbMu01 == mpcMu01) ) { if ( (tmbMu10 == mpcMu10) && (tmbMu11 == mpcMu11) ){ printf("TMB LCT: %d and MPC LCT: %d complete matche \n", tmbid, mpcid); nMatched++; impc = -1; } else if ( (tmbMu10 == mpcMu20) && (tmbMu11 == mpcMu21) ){ printf("TMB LCT: %d and MPC LCT: %d complete matche \n", tmbid, mpcid); nMatched++; impc = -1; } else { if ( ( ( (tmbMu10>>11) & 0x0F ) == 0x0000) || ( ( tmbMu11 & 0x0FFF) == 0x0000) || ( ( tmbMu10 & 0x0FFF) == 0x0000)){ printf("TMB LCT: %d and MPC LCT: %d 1 MU complete match \n", tmbid, mpcid); nMatched++; impc = -1; } else { printf("TMB LCT: %d and MPC LCT: %d half match \n",tmbid, mpcid); nHalfMatched++; impc = -1; } } } if ( impc > 0 ) { if ( (tmbMu00 == mpcMu10) && (tmbMu01 == mpcMu11) ) { if ( (tmbMu10 == mpcMu00) && (tmbMu11 == mpcMu01) ){ printf("TMB LCT: %d and MPC LCT: %d complete matche in reverse order\n",tmbid, mpcid); nMatched++; impc = -1; } else if ( (tmbMu10 == mpcMu20) && (tmbMu11 == mpcMu21) ){ printf("TMB LCT: %d and MPC LCT: %d complete matche in reverse order\n",tmbid, mpcid); nMatched++; impc = -1; } else { if ( ( ( (tmbMu10>>11) & 0x0F ) == 0x0000) || ( ( tmbMu11 & 0x0FFF) == 0x0000) || ( ( tmbMu10 & 0x0FFF) == 0x0000)){ printf("TMB LCT: %d and MPC LCT: %d 1 MU complete match in reverse order\n",tmbid, mpcid); nMatched++; impc = -1; } else { printf("TMB LCT: %d and MPC LCT: %d half match in reverse order\n",tmbid, mpcid); nHalfMatched++; impc = -1; } } } } if(impc>0){ if ( ( (tmbMu00 == mpcMu20) && (tmbMu01 == mpcMu21) ) || ( (tmbMu10 == mpcMu20) && (tmbMu11 == mpcMu21) ) ){ printf("TMB LCT: %d and MPC LCT: %d 1 MU complete match as 3rd MU\n",tmbid, mpcid); nMatched++; impc = -1; } } } fclose(fpmpc); } printf("Complete Matches: %d Half Matches: %d Total TMB LCT's: %d \n",nMatched, nHalfMatched, tmbid); fclose(fptmb); }