Changeset 11511 for trunk/FACT++/src


Ignore:
Timestamp:
07/21/11 12:11:30 (13 years ago)
Author:
tbretz
Message:
Updated to latest version of event builder.
Location:
trunk/FACT++/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/EventBuilder.c

    r11443 r11511  
    11
    22
    3 #define PX8   99  //simulator does not create double-length roi for pixel 8 
    4                   //for real data, set PX8 = 8 ==> ask for double roi=TM
    53
    64
     
    8078 int gi_memStat = +1 ;
    8179
    82  uint32_t gi_myRun = 9876789 ;
    83  uint32_t actrun ;
     80 uint32_t gi_myRun = 0 ;
     81 uint32_t actrun   =       0 ;
    8482
    8583
     
    364362   }
    365363
    366    mBuffer[i].fEvent->PCTime[0] = g_actTime ;
    367    mBuffer[i].fEvent->PCTime[1] = g_actUsec ;
     364   mBuffer[i].fEvent->PCUsec = g_actUsec ;
     365   mBuffer[i].fEvent->PCTime =
    368366   mBuffer[i].pcTime  = g_actTime ;
    369367   mBuffer[i].nRoi    = nRoi ;
     
    410408      runCtrl[evFree].actEvt = 0;
    411409      runCtrl[evFree].maxEvt = 999999999 ; //max number events allowed
     410      runCtrl[evFree].firstUsec=g_actUsec ;
     411      runCtrl[evFree].firstTime=
    412412      runCtrl[evFree].lastTime=g_actTime ;
    413413      runCtrl[evFree].closeTime=g_actTime + 3600*24 ; //max time allowed
     
    652652      gettimeofday( tv, NULL);
    653653      g_actTime = tsec = atv.tv_sec ;
    654       g_actUsec = tusec= atv.tv_usec ;
     654      g_actUsec = tusec= atv.tv_usec ; 
    655655
    656656      if (rd[i].sockStat <0 ) {         //try to connect if not yet done
     
    683683             debugStream(i,&rd[i].rBuf->B[ rd[i].bufPos],jrd) ;
    684684             memcpy(&rd[i].xBuf->B[ rd[i].bufPos], &rd[i].rBuf->B[ rd[i].bufPos], jrd) ;
    685  snprintf(str,MXSTR,"read sock %3d bytes %5d , %5d",i,jrd,rd[i].bufLen);
     685 snprintf(str,MXSTR,"read sock %3d bytes %5d len %5d first %d %d",i,jrd,rd[i].bufLen,
     686 rd[i].rBuf->B[ rd[i].bufPos  ],
     687 rd[i].rBuf->B[ rd[i].bufPos  +1] );
    686688 factOut(kDebug,301, str ) ;
    687689          }
     
    803805             roi  = mBuffer[evID].nRoi ;
    804806
    805              pixS = boardId*36 -1 ;   //
    806              tmS  = boardId*4  -1 ;   //
    807807             src  = head_len/2 ;
    808                 for ( px=0; px<9; px++ ) {            //different sort in FAD board.....
    809              for ( drs=0; drs<4; drs++ ) {
    810                    pixH= ntohs(rd[i].rBuf->S[src++]) ;
    811                    pixC= ntohs(rd[i].rBuf->S[src++]) ;
    812                    pixR= ntohs(rd[i].rBuf->S[src++]) ;
    813 
     808             for ( px=0; px<9; px++ ) {            //different sort in FAD board.....
     809                for ( drs=0; drs<4; drs++ ) {
     810                   pixH= ntohs(rd[i].rBuf->S[src++]) ;   // ID
     811                   pixC= ntohs(rd[i].rBuf->S[src++]) ;   // start-cell
     812                   pixR= ntohs(rd[i].rBuf->S[src++]) ;   // roi
     813//here we should check if pixH is correct ....
     814
     815                   pixS = boardId*36 + drs*9 + px ;
    814816                   src++  ;
    815                    pixS++ ; //pixS = pixH2S[pixH] ;
    816                    if ( ( px < PX8 && pixR == roi )
    817                      || ( px ==PX8 && pixR == 2*roi )
    818                      || ( px ==PX8 && pixR == roi && roi > 512 ) ) {
    819                        // correct roi
     817
     818                   if ( ( px != 8 && pixR == roi )
     819                     || ( px == 8 && pixR >= roi ) ) {   //we have a reasonable roi
     820                     
    820821                      mBuffer[evID].fEvent->StartPix[pixS] =pixC;
    821822                      dest= pixS * roi ;
     
    823824                           &mBuffer[evID].fEvent->Adc_Data[dest],
    824825                           &rd[i].rBuf->S[src],  roi * 2) ;
    825                       src+= roi ;
    826                       if ( px==PX8 ) {
    827                          tmS++; // tmS = tmH2S[pixH]
    828                          dest= tmS * roi + NPIX* roi ;
    829                          if ( roi <=512 ) {
    830                             mBuffer[evID].fEvent->StartTM[tmS] =(pixC+roi)%1024 ;
     826                      src+= pixR ;
     827
     828                      if ( px==8 ) {
     829                         if ( pixR > roi) {          //and we have additional TM info
     830                            tmS =boardId*4 + drs ;
     831                            dest= tmS * roi + NPIX* roi ;
     832                            int srcT= src - roi ;
     833                            mBuffer[evID].fEvent->StartTM[tmS] = (pixC+pixR-roi)%1024 ;
    831834                            memcpy(
    832835                              &mBuffer[evID].fEvent->Adc_Data[dest],
    833                               &rd[i].rBuf->S[src],  roi * 2) ;
    834                             src+=roi ;
     836                              &rd[i].rBuf->S[srcT],  roi * 2) ;
    835837                         } else {
    836                              mBuffer[evID].fEvent->StartTM[tmS] = -1 ;
     838                            mBuffer[evID].fEvent->StartTM[tmS] = -1 ;
    837839                         }
    838840                      }
     
    13971399              actRun.Version =  1 ;
    13981400              actRun.RunType = -1 ;
     1401
     1402              actRun.RunTime = runCtrl[j].firstTime ;
     1403              actRun.RunUsec = runCtrl[j].firstTime ;
    13991404              actRun.NBoard  = NBOARDS ;
    14001405              actRun.NPix    = NPIX ;
  • trunk/FACT++/src/FAD.h

    r11343 r11511  
    120120
    121121  uint32_t SoftTrig ;       // SoftTrigger Info (TBD)
    122   uint32_t PCTime ;         // when did event start to arrive at PC
     122  uint32_t PCTime ;         // epoch
     123  uint32_t PCUsec ;         // micro-seconds
    123124
    124125  uint32_t BoardTime[NBOARDS];//
     
    142143  uint32_t Version ;
    143144  uint32_t RunType ;
     145  uint32_t RunTime ;  //unix epoch for first event
     146  uint32_t RunUsec ;  //microseconds
    144147  uint16_t NBoard  ;
    145148  uint16_t NPix ;
     
    173176//---------------------------------------------------------------
    174177
    175 #define MAX_RUN   256
     178#define MAX_RUN     8
    176179#define MAX_EVT   32768  //don't worry, for events is MAX_RUN*MAX_EVT
    177180
     
    180183typedef struct {
    181184  uint32_t runId ;       //run number
     185  uint32_t firstTime ;   //epoch of first event received
     186  uint32_t firstUsec ;   //epoch of first event received
    182187  uint32_t lastTime ;    //time when last event written so far
    183188  uint32_t closeTime ;   //time when run should be closed
    184189  uint32_t maxEvt ;      //maximum number of events to write
    185190  uint32_t actEvt ;      //actual number of events written so far
    186   uint32_t lastEvt ;     //last event of this run read so far
     191   int32_t lastEvt ;     //last event of this run read so far
    187192  uint32_t nextEvt ;     //next event number to be written
    188193  uint32_t waitEvt ;     //event that would be ready to be written
Note: See TracChangeset for help on using the changeset viewer.