Changeset 13163


Ignore:
Timestamp:
03/22/12 10:19:09 (13 years ago)
Author:
tbretz
Message:
Replaces all 416 by kNumChannels; send the correct command to set the correct offset for all channels individually in current control.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/feedback.cc

    r13138 r13163  
    165165        vector<float> vec(2*BIAS::kNumChannels);
    166166        for (int i=0; i<BIAS::kNumChannels; i++)
    167             vec[i+416] = diff;
     167            vec[i+BIAS::kNumChannels] = diff;
    168168
    169169        avg = 0;
     
    185185                const double Im = double(fCurrentsAvg[i])/fCursorCur;
    186186                const double I  = Im>fCalibration[i] ? Im-fCalibration[i] : 0;
    187                 vec[i+416] += R * I*conv;
     187                vec[i+BIAS::kNumChannels] += R * I*conv;
    188188                if (fCalibration[i]>0)
    189189                {
     
    194194            avg /= num;
    195195
    196             fCurrentsAvg.assign(416, 0);
     196            fCurrentsAvg.assign(BIAS::kNumChannels, 0);
    197197            fCursorCur = 0;
    198198        }
     
    215215        Info(msg);
    216216
    217         DimClient::sendCommandNB((char*)"BIAS_CONTROL/SET_GAPD_REFERENCE_OFFSET",
    218                                  (void*)&diff, sizeof(float));
     217        DimClient::sendCommandNB("BIAS_CONTROL/SET_ALL_CHANNELS_OFFSET",
     218                                 vec.data()+BIAS::kNumChannels, BIAS::kNumChannels*sizeof(float));
    219219
    220220        fCursorTemp++;
     
    223223    int AverageCurrents()
    224224    {
    225         if (fBiasA.getSize()!=416*sizeof(int16_t))
     225        if (fBiasA.getSize()!=BIAS::kNumChannels*sizeof(int16_t))
    226226            return -1;
    227227
     
    234234        const int16_t *ptr = static_cast<int16_t*>(fBiasA.getData());
    235235
    236         for (int i=0; i<416; i++)
     236        for (int i=0; i<BIAS::kNumChannels; i++)
    237237        {
    238238            fCurrentsAvg[i] += ptr[i];
     
    260260            return;
    261261
    262         fCalibration.resize(416*2);
    263         for (int i=0; i<416; i++)
    264         {
    265             fCalibration[i]     = double(fCurrentsAvg[i])/fCursorCur;
    266             fCalibration[i+416] = sqrt(double(fCurrentsRms[i])/fCursorCur-fCalibration[i]*fCalibration[i]);
     262        fCalibration.resize(BIAS::kNumChannels*2);
     263        for (int i=0; i<BIAS::kNumChannels; i++)
     264        {
     265            fCalibration[i]                    = double(fCurrentsAvg[i])/fCursorCur;
     266            fCalibration[i+BIAS::kNumChannels] = sqrt(double(fCurrentsRms[i])/fCursorCur-fCalibration[i]*fCalibration[i]);
    267267        }
    268268
     
    476476
    477477        for (int i=0; i<BIAS::kNumChannels; i++)
    478             vec[i+416] = avg[i]<5*2.5 ? 0 : correction[i];
     478            vec[i+BIAS::kNumChannels] = avg[i]<5*2.5 ? 0 : correction[i];
    479479
    480480        fDimDeviation.setQuality(fControlType);
     
    486486        Info("Sending new relative offset to biasctrl.");
    487487
    488         DimClient::sendCommandNB((char*)"BIAS_CONTROL/ADD_REFERENCE_VOLTAGES",
    489                                  (void*)(vec.data()+416), 416*sizeof(float));
     488        DimClient::sendCommandNB("BIAS_CONTROL/ADD_REFERENCE_VOLTAGES",
     489                                 vec.data()+BIAS::kNumChannels, BIAS::kNumChannels*sizeof(float));
    490490    }
    491491
     
    569569        // ----- Calculate average currents -----
    570570
    571         vector<float> A(416);
    572         for (int i=0; i<416; i++)
     571        vector<float> A(BIAS::kNumChannels);
     572        for (int i=0; i<BIAS::kNumChannels; i++)
    573573            A[i] = double(fCurrentsAvg[i]) / fCursorCur;
    574574
    575         fCurrentsAvg.assign(416, 0);
     575        fCurrentsAvg.assign(BIAS::kNumChannels, 0);
    576576        fCursorCur = 0;
    577577
     
    618618        Info("Sending new global relative offset to biasctrl.");
    619619
    620         DimClient::sendCommandNB((char*)"BIAS_CONTROL/ADD_REFERENCE_VOLTAGES",
    621                                  (void*)(vec.data()+nch), nch*sizeof(float));
     620        DimClient::sendCommandNB("BIAS_CONTROL/ADD_REFERENCE_VOLTAGES",
     621                                 vec.data()+BIAS::kNumChannels, BIAS::kNumChannels*sizeof(float));
    622622    }
    623623
     
    719719                Out() << setw(2) << k << "|" << setw(2) << j*4 << "|";
    720720                for (int i=0; i<4; i++)
    721                     Out() << Tools::Form(" %6.1f+-%4.1f", fCalibration[k*32+j*4+i], fCalibration[k*32+j*4+i+416]);
     721                    Out() << Tools::Form(" %6.1f+-%4.1f", fCalibration[k*32+j*4+i], fCalibration[k*32+j*4+i+BIAS::kNumChannels]);
    722722                Out() << endl;
    723723            }
     
    766766        fStartTime = Time();
    767767
    768         fSP = valarray<double>(0., 416);
     768        fSP = valarray<double>(0., BIAS::kNumChannels);
    769769
    770770        vector<float> vec(2*BIAS::kNumChannels);
     
    776776        fPV[2].resize(0);
    777777
    778         fCurrentsAvg.assign(416, 0);
    779         fCurrentsRms.assign(416, 0);
     778        fCurrentsAvg.assign(BIAS::kNumChannels, 0);
     779        fCurrentsRms.assign(BIAS::kNumChannels, 0);
    780780
    781781        if (fKp==0 && fKi==0 && fKd==0)
     
    924924        fCursorTemp =  0;
    925925        fCursorTemp = 0;
    926         fCurrentsAvg.assign(416, 0);
    927         fCurrentsRms.assign(416, 0);
     926        fCurrentsAvg.assign(BIAS::kNumChannels, 0);
     927        fCurrentsRms.assign(BIAS::kNumChannels, 0);
    928928        fCalibration.resize(0);
    929929        fStartTime = Time();
     
    10721072                        "|Avg[dac]:Average offset (5000uA/4096dac)"
    10731073                        "|Rms[dac]:Rms of offset (5000uA/4096dac)"),
    1074         fSP(416),
     1074        fSP(BIAS::kNumChannels),
    10751075        fKp(0), fKi(0), fKd(0), fT(-1),
    10761076        fCurrentRequestInterval(0),
Note: See TracChangeset for help on using the changeset viewer.