Ignore:
Timestamp:
07/19/12 15:33:14 (12 years ago)
Author:
ogrimm
Message:
Added modified calibration procedure for FADctrl for new FAD-based stand-alone oscilloscope.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • fact/FADctrl/FADBoard.cc

    r14174 r14278  
    205205        }
    206206
     207        if (m->ModifiedCalibration) ModifiedCalibCount = 0;
     208
    207209        if (m->Mode == m->dynrange) {
    208210          // No amplitude calibration allowed!
     
    275277        // Determine gain if integration finished
    276278        if (Count < m->NumEventsRequested) break;
     279
     280        // Check for modified calibration procedure, then repeat gain calibration
     281        if (m->ModifiedCalibration) {
     282          if (ModifiedCalibCount == 0) {
     283                DACCmd[1] = htons(65000);
     284                DACCmd[3] = htons(0);
     285                DACCmd[5] = htons(0);
     286          }
     287          else if (ModifiedCalibCount == 1) {
     288                for (unsigned int i=0; i<NChips; i++) {
     289                  for (unsigned int j=0; j<NChannels; j++) {
     290                    if (i*NChannels+j >= 12) continue;
     291                        for (unsigned int k=0; k<NBins; k++) {
     292                          ACalib.Gain[i][j][k] = (Sum[i][j][k] / m->NumEventsRequested) - ACalib.Baseline[i][j][k];
     293                        }
     294                  }
     295                }
     296
     297                DACCmd[1] = htons(0);
     298                DACCmd[3] = htons(50000);
     299                DACCmd[5] = htons(0);
     300          }
     301          else if (ModifiedCalibCount == 2) {
     302                for (unsigned int i=0; i<NChips; i++) {
     303                  for (unsigned int j=0; j<NChannels; j++) {
     304                    if (i*NChannels+j < 12 || i*NChannels+j >= 24) continue;
     305                        for (unsigned int k=0; k<NBins; k++) {
     306                          ACalib.Gain[i][j][k] = (Sum[i][j][k] / m->NumEventsRequested) - ACalib.Baseline[i][j][k];
     307                        }
     308                  }
     309                }
     310
     311                DACCmd[1] = htons(4000);
     312                DACCmd[3] = htons(0);
     313                DACCmd[5] = htons(0);
     314          }
     315          else {
     316                for (unsigned int i=0; i<NChips; i++) {
     317                  for (unsigned int j=0; j<NChannels; j++) {
     318                    if (i*NChannels+j < 24) continue;
     319                        for (unsigned int k=0; k<NBins; k++) {
     320                          ACalib.Gain[i][j][k] = (Sum[i][j][k] / m->NumEventsRequested) - ACalib.Baseline[i][j][k];
     321                        }
     322                  }
     323                }
     324                DACCmd[1] = htons(0);
     325                DACCmd[3] = htons(0);
     326                DACCmd[5] = htons(0);
     327                State = secondary;
     328          }
     329          Send(DACCmd, sizeof(DACCmd));
     330
     331          ModifiedCalibCount++;
     332
     333          memset(Sum, 0, sizeof(Sum));
     334          Count = 0;
     335          break;
     336        }
    277337       
    278338        for (unsigned int i=0; i<NChips; i++) {
Note: See TracChangeset for help on using the changeset viewer.