Ignore:
Timestamp:
03/02/11 13:35:50 (14 years ago)
Author:
ogrimm
Message:
Implemented new FAD data format
File:
1 edited

Legend:

Unmodified
Added
Removed
  • fact/FADctrl/FADBoard.cc

    r10187 r10212  
    2020  Continue = true;
    2121  CommOK = false;
    22   ACalibTime = -1;
     22  ACalib.Time = -1;
    2323  Status.Update.tv_sec = -1;
    2424  Port = ServerPort;
     
    166166  case init:
    167167        // Invalidate current calibration
    168         ACalibTime = -1;
     168        ACalib.Time = -1;
    169169
    170170        // Save initial board status, set all ROIs to 1024 and set DAC values
     
    203203                for (unsigned int j=0; j<NChannels; j++) {
    204204                  for (unsigned int k=0; k<NBins; k++) {
    205                         Baseline[i][j][k] = Sum[i][j][k] / m->NumEventsRequested;
     205                        ACalib.Baseline[i][j][k] = Sum[i][j][k] / m->NumEventsRequested;
    206206                  }
    207207                }
     
    237237                for (unsigned int j=0; j<NChannels; j++) {
    238238                  for (unsigned int k=0; k<NBins; k++) {
    239                         Gain[i][j][k] = (Sum[i][j][k] / m->NumEventsRequested) - Baseline[i][j][k];
     239                        ACalib.Gain[i][j][k] = (Sum[i][j][k] / m->NumEventsRequested) - ACalib.Baseline[i][j][k];
    240240                  }
    241241                }
     
    260260          for (unsigned int Chan=0; Chan<NChannels; Chan++) {
    261261                for (int i=0; i<Status.ROI[Chip][Chan]; i++) {
    262                   Sum[Chip][Chan][i] = Data[Chip][Chan][i] - Baseline[Chip][Chan][(i-Status.TriggerCell[Chip]) % NBins];
     262                  Sum[Chip][Chan][i] = Data[Chip][Chan][i] - ACalib.Baseline[Chip][Chan][(i-Status.TriggerCell[Chip]) % NBins];
    263263                }
    264264          }
     
    271271                for (unsigned int j=0; j<NChannels; j++) {
    272272                  for (unsigned int k=0; k<NBins; k++) {
    273                         SecondaryBaseline[i][j][k] = Sum[i][j][k] / (double) m->NumEventsRequested;
     273                        ACalib.Secondary[i][j][k] = Sum[i][j][k] / (double) m->NumEventsRequested;
    274274                  }
    275275                }
     
    290290
    291291          // Store calibration time and temperature
    292           ACalibTime = time(NULL);
    293           ACalibTemp = 0;
    294           for (unsigned int i=0; i<NTemp; i++) ACalibTemp += Status.Temp[i] / NTemp;
     292          ACalib.DNA = Status.DNA;
     293          ACalib.Frequency = Status.Frequency;
     294          ACalib.Time = time(NULL);
     295          ACalib.Temp = 0;
     296          for (unsigned int i=0; i<NTemp; i++) ACalib.Temp += Status.Temp[i] / NTemp;
    295297         
    296298          // Inform event thread that calibration is finished
     
    415417          gettimeofday(&Status.Update, NULL);
    416418
    417           // Extract ID and type information
    418           Status.BoardID = ntohl(Header->board_id);
     419          // Extract board and trigger information
     420          Status.BoardID = ntohl(Header->board_id);       
    419421          Status.FirmwareRevision = ntohl(Header->version_no);
     422          Status.BoardTime = ntohl(Header->time);
     423          Status.EventCounter = ntohl(Header->fad_evt_counter);
    420424          Status.TriggerID = ntohl(Header->trigger_id);
    421425          Status.TriggerType = ntohs(Header->trigger_type);
     426          Status.TriggerCRC = ntohs(Header->trigger_crc);
     427          Status.DNA = Header->DNA;
     428
     429          // Extract frequency related information
     430          Status.Frequency = ntohl(Header->REFCLK_frequency)/1.0e6;
     431          Status.PhaseShift = ntohs(Header->adc_clock_phase_shift);
     432          for (unsigned int i=0; i<NChips; i++) {
     433                if ((Header->PLLLCK & (1<<i)) != 0) Status.Lock[i] = true;
     434                else Status.Lock[i] = false;
     435          }
    422436
    423437          // Extract temperatures (MSB indicates if temperature is positive or negative)
Note: See TracChangeset for help on using the changeset viewer.