Changeset 11855 for trunk/FACT++/gui


Ignore:
Timestamp:
08/09/11 13:54:35 (13 years ago)
Author:
tbretz
Message:
Finalized the BIAS display.
Location:
trunk/FACT++/gui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/gui/FactGui.h

    r11854 r11855  
    356356
    357357
     358struct PixelMapEntry
     359{
     360    int index;
     361    int cbpx;
     362    int gapd;
     363    int hv_board;
     364    int hv_channel;
     365
     366    int crate() const { return cbpx/1000; }
     367    int board() const { return (cbpx/100)%10; }
     368    int patch() const { return (cbpx/10)%10; }
     369    int pixel() const { return cbpx%10; }
     370    int group() const { return pixel()>4; }
     371    int hv() const    { return hv_channel+hv_board*32; }
     372};
     373
     374class PixelMap : public vector<PixelMapEntry>
     375{
     376public:
     377    static const PixelMapEntry empty;
     378
     379    PixelMap() : vector<PixelMapEntry>(1440)
     380    {
     381    }
     382
     383    const PixelMapEntry &index(int idx) const
     384    {
     385        for (vector<PixelMapEntry>::const_iterator it=begin(); it!=end(); it++)
     386            if (it->index==idx)
     387                return *it;
     388        cerr << "PixelMap: index " << idx << " not found" << endl;
     389        return empty;
     390    }
     391
     392    const PixelMapEntry &cbpx(int c) const
     393    {
     394        for (vector<PixelMapEntry>::const_iterator it=begin(); it!=end(); it++)
     395            if (it->cbpx==c)
     396                return *it;
     397        cerr << "PixelMap: cbpx " << c << " not found" << endl;
     398        return empty;
     399    }
     400
     401    const PixelMapEntry &cbpx(int c, int b, int p, int px) const
     402    {
     403        return cbpx(px + p*9 + b*36 + c*360);
     404    }
     405
     406    const PixelMapEntry &hv(int board, int channel) const
     407    {
     408        for (vector<PixelMapEntry>::const_iterator it=begin(); it!=end(); it++)
     409            if (it->hv_board==board && it->hv_channel==channel)
     410                return *it;
     411        cerr << "PixelMap: hv " << board << "/" << channel << " not found" << endl;
     412        return empty;
     413    }
     414
     415    const PixelMapEntry &hv(int idx) const
     416    {
     417        return hv(idx/32, idx%32);
     418    }
     419};
     420
     421const PixelMapEntry PixelMap::empty = { 0, 0, 0, 0, 0 };
     422
     423
    358424class FactGui : public MainWindow, public DimNetwork
    359425{
     
    373439    valarray<int8_t> fFtuStatus;
    374440
     441    PixelMap fPixelMap;
     442
    375443    vector<int>  fPixelMapHW; // Software -> Hardware
    376444    vector<int>  fPatchMapHW; // Software -> Hardware
     
    378446
    379447    bool fInChoosePatchTH;   // FIXME. Find a better solution
    380     bool fInChoosePatchBias; // FIXME. Find a better solution
     448    bool fInChooseBiasHv;    // FIXME. Find a better solution
     449    bool fInChooseBiasCam;   // FIXME. Find a better solution
    381450
    382451    DimStampedInfo fDimDNS;
     
    420489    DimStampedInfo fDimFscHumidity;
    421490
    422     //DimStampedInfo fDimBiasVolt;
     491    DimStampedInfo fDimBiasVolt;
    423492    DimStampedInfo fDimBiasCurrent;
    424493
     
    652721        if (fServices.find(service)!=fServices.end())
    653722        {
    654             cout << "ERROR - We are already subscribed to " << service << endl;
     723            cerr << "ERROR - We are already subscribed to " << service << endl;
    655724            return;
    656725        }
     
    666735        {
    667736            if (!allow_unsubscribed)
    668                 cout << "ERROR - We are not subscribed to " << service << endl;
     737                cerr << "ERROR - We are not subscribed to " << service << endl;
    669738            return;
    670739        }
     
    908977        {
    909978            if (print)
    910                 cout << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << sz << endl;
     979                cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << sz << endl;
    911980            return false;
    912981        }
     
    10101079        if (d.size()<20)
    10111080        {
    1012             cout << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected>=20" << endl;
     1081            cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected>=20" << endl;
    10131082            return;
    10141083        }
     
    14931562        if (d.size()<sizeof(EVENT))
    14941563        {
    1495             cout << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected>=" << sizeof(EVENT) << endl;
     1564            cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected>=" << sizeof(EVENT) << endl;
    14961565            return;
    14971566        }
     
    14991568        if (d.size()!=sizeof(EVENT)+dat.Roi*4*1440)
    15001569        {
    1501             cout << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << dat.Roi*4*1440+sizeof(EVENT) << " [roi=" << dat.Roi << "]" << endl;
     1570            cerr << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << dat.Roi*4*1440+sizeof(EVENT) << " [roi=" << dat.Roi << "]" << endl;
    15021571            return;
    15031572        }
     
    19392008    void UpdateRatesCam(const FTM::DimTriggerRates &sdata)
    19402009    {
    1941 #ifdef HAVE_ROOT
    19422010        if (fThresholdIdx->value()>=0)
    19432011        {
     
    19602028        }
    19612029
    1962 //        TCanvas *c = fRatesCanv->GetCanvas();
    1963 //        Camera *cam = (Camera*)c->FindObject("Camera");
    1964 
    19652030        fRatesCanv->SetData(dat);
    1966 
    1967 //        c->Modified();
    1968 //        c->Update();
    1969 #endif
    19702031    }
    19712032
     
    21142175        }
    21152176#endif
    2116     }
    2117 
    2118     void on_fRatePatch1_valueChanged(int)
    2119     {
    2120         DisplayRates();
    2121     }
    2122 
    2123     void on_fRatePatch2_valueChanged(int)
    2124     {
    2125         DisplayRates();
    2126     }
    2127 
    2128     void on_fRateBoard1_valueChanged(int)
    2129     {
    2130         DisplayRates();
    2131     }
    2132 
    2133     void on_fRateBoard2_valueChanged(int)
    2134     {
    2135         DisplayRates();
    21362177    }
    21372178
     
    24522493    // ========================== FSC =======================================
    24532494
    2454     vector<int16_t> fVecBias;
     2495    vector<int16_t> fVecBiasVolt;
     2496    vector<int16_t> fVecBiasCurrent;
    24552497
    24562498    void handleBiasVolt(const DimData &d)
     
    24612503        const int16_t *ptr = d.ptr<int16_t>();
    24622504
    2463         fVecBias.assign(ptr, ptr+416);
    2464         // FIXME: Update displayed value
     2505        fVecBiasVolt.assign(ptr, ptr+416);
     2506
     2507        UpdateBiasValues();
    24652508    }
    24662509
     
    24712514
    24722515        const int16_t *ptr = d.ptr<int16_t>();
     2516
     2517        fVecBiasCurrent.assign(ptr, ptr+416);
    24732518
    24742519        valarray<double> dat(0., 1440);
     
    24772522        for (int i=0; i<1440; i++)
    24782523        {
    2479             const int ihw = fPatchHW[i];
     2524            const PixelMapEntry &entry = fPixelMap.index(i);
    24802525
    24812526            // FIXME: Display Overcurrent
    2482             dat[i] = abs(ptr[ihw])*5000./4096;
    2483 
    2484             fBiasCam->SetEnable(i, uint16_t(ptr[ihw])!=0x8000);
     2527            dat[i] = abs(ptr[entry.hv()])*5000./4096;
     2528
     2529            fBiasCam->SetEnable(i, uint16_t(ptr[entry.hv()])!=0x8000);
    24852530        }
    24862531
    24872532        fBiasCam->SetData(dat);
     2533
     2534        UpdateBiasValues();
    24882535    }
    24892536
     
    29242971            return PostInfoHandler(&FactGui::handleFscHumidity);
    29252972
    2926 //        if (getInfo()==&fDimBiasVolt)
    2927 //            return PostInfoHandler(&FactGui::handleBiasVolt);
     2973        if (getInfo()==&fDimBiasVolt)
     2974            return PostInfoHandler(&FactGui::handleBiasVolt);
    29282975
    29292976        if (getInfo()==&fDimBiasCurrent)
     
    30953142    }
    30963143
     3144    /*
    30973145    void ChoosePatchBias(Camera &cam, int isw)
    30983146    {
    30993147        cam.Reset();
    31003148
    3101         fBiasPixel->setValue(isw);
     3149        fBiasChannel->setValue(isw);
    31023150
    31033151        const int ihw = isw<0 ? 0 : fPatchMapHW[isw];
     
    31273175            // FIXME: Mapping
    31283176            fBiasVoltDac->setValue(fVecBias[ihw]);
    3129             fBiasVolt->setValue(fVecBias[ihw]*90/4096);
     3177            fBiasVolt->setValue(fVecBias[ihw]*90./4096);
    31303178        }
    31313179
     
    31363184            if (fPatchHW[i]==ihw)
    31373185                cam.SetBold(i);
    3138     }
     3186    }*/
    31393187
    31403188    void slot_ChoosePixelThreshold(int isw)
     
    31443192        const bool on = fFtmStaticData.IsEnabled(ihw);
    31453193        fPixelEnable->setChecked(on);
    3146     }
    3147 
    3148     void slot_ChoosePixelBias(int isw)
    3149     {
    3150         fBiasPixel->setValue(isw);
    3151         //const uint16_t ihw = fPixelMapHW[isw];
    3152         //const bool on = fFtmStaticData.IsEnabled(ihw);
    3153         //fPixelEnable->setChecked(on);
    31543194    }
    31553195
     
    32073247    }
    32083248
    3209     void UpdateBiasIdx()
    3210     {
    3211         if (fInChoosePatchBias)
    3212             return;
    3213 
    3214         const int crate = fBiasCrate->value();
    3215         const int board = fBiasBoard->value();
    3216         const int patch = fBiasPatch->value();
    3217 
    3218         const int ihw = patch + board*4 + crate*40;
    3219 
    3220         int isw = 0;
    3221         for (; isw<160; isw++)
    3222             if (ihw==fPatchMapHW[isw])
    3223                 break;
    3224 
    3225         on_fBiasPixel_valueChanged(isw);
    3226     }
    3227 
    32283249    void on_fPixelIdx_valueChanged(int isw)
    32293250    {
     
    32423263    }
    32433264
    3244     void on_fBiasPixel_valueChanged(int isw)
    3245     {
    3246         const int  ihw = fPixelMapHW[isw];
    3247 
    3248         int ii = 0;
    3249         for (; ii<160; ii++)
    3250             if (fPatchHW[isw]==fPatchMapHW[ii])
    3251                 break;
    3252 
    3253         fBiasCam->SetWhite(isw);
    3254         ChoosePatchBias(*fRatesCanv, ii);
    3255 
    3256         const bool on  = fFtmStaticData.IsEnabled(ihw);
    3257         fPixelEnable->setChecked(on);
    3258     }
    3259 
     3265    // ------------------- Bias display ---------------------
     3266
     3267    void UpdateBiasValues()
     3268    {
     3269        const int b = fBiasHvBoard->value();
     3270        const int c = fBiasHvChannel->value();
     3271
     3272        const int ihw = b*32+c;
     3273
     3274        if (fVecBiasVolt.size()>0)
     3275        {
     3276            fBiasVoltDac->setValue(fVecBiasVolt[ihw]);
     3277            fBiasVolt->setValue(fVecBiasVolt[ihw]*90./4096);
     3278        }
     3279
     3280        if (fVecBiasCurrent.size()>0)
     3281            fBiasCurrent->setValue(fVecBiasCurrent[ihw]*5000./4096);
     3282    }
     3283
     3284    void UpdateBiasCam(const PixelMapEntry &entry)
     3285    {
     3286        fInChooseBiasCam = true;
     3287
     3288        fBiasCamCrate->setValue(entry.crate());
     3289        fBiasCamBoard->setValue(entry.board());
     3290        fBiasCamPatch->setValue(entry.patch());
     3291        fBiasCamPixel->setValue(entry.pixel());
     3292
     3293        fInChooseBiasCam = false;
     3294    }
     3295
     3296    void UpdateBiasHv(const PixelMapEntry &entry)
     3297    {
     3298        fInChooseBiasHv = true;
     3299
     3300        fBiasHvBoard->setValue(entry.hv_board);
     3301        fBiasHvChannel->setValue(entry.hv_channel);
     3302
     3303        fInChooseBiasHv = false;
     3304    }
     3305
     3306    void BiasHvChannelChanged()
     3307    {
     3308        if (fInChooseBiasHv)
     3309            return;
     3310
     3311        const int b  = fBiasHvBoard->value();
     3312        const int ch = fBiasHvChannel->value();
     3313
     3314        const PixelMapEntry &entry = fPixelMap.hv(b, ch);
     3315        fBiasCam->SetWhite(entry.index);
     3316        fBiasCam->updateGL();
     3317        // FIXME: mark patch in camera
     3318        UpdateBiasCam(entry);
     3319        UpdateBiasValues();
     3320    }
     3321
     3322    void BiasCamChannelChanged()
     3323    {
     3324        if (fInChooseBiasCam)
     3325            return;
     3326
     3327        const int crate = fBiasCamCrate->value();
     3328        const int board = fBiasCamBoard->value();
     3329        const int patch = fBiasCamPatch->value();
     3330        const int pixel = fBiasCamPixel->value();
     3331
     3332        const PixelMapEntry &entry = fPixelMap.cbpx(crate, board, patch, pixel);
     3333        fBiasCam->SetWhite(entry.index);
     3334        fBiasCam->updateGL();
     3335        // FIXME: mark patch in camera
     3336        UpdateBiasHv(entry);
     3337        UpdateBiasValues();
     3338    }
     3339
     3340    void slot_ChooseBiasChannel(int isw)
     3341    {
     3342        const PixelMapEntry &entry = fPixelMap.index(isw);
     3343
     3344        UpdateBiasHv(entry);
     3345        UpdateBiasCam(entry);
     3346        UpdateBiasValues();
     3347    }
     3348
     3349    // ------------------------------------------------------
    32603350
    32613351    void on_fPixelEnable_stateChanged(int b)
     
    33443434public:
    33453435    FactGui(Configuration &conf) :
    3346         fFtuStatus(40),
     3436        fFtuStatus(40), 
    33473437        fPixelMapHW(1440), fPatchMapHW(160), fPatchHW(1440),
    3348         fInChoosePatchTH(false), fInChoosePatchBias(false),
     3438        fInChoosePatchTH(false),
     3439        fInChooseBiasHv(false), fInChooseBiasCam(false),
    33493440        fDimDNS("DIS_DNS/VERSION_NUMBER", 1, int(0), this),
    33503441        //-
     
    33873478        fDimFscHumidity        ("FSC_CONTROL/HUMIDITY",           (void*)NULL, 0, this),
    33883479        //-
    3389         //fDimBiasVolt           ("BIAS_CONTROL/VOLTAGE",           (void*)NULL, 0, this),
     3480        fDimBiasVolt           ("BIAS_CONTROL/VOLTAGE",           (void*)NULL, 0, this),
    33903481        fDimBiasCurrent        ("BIAS_CONTROL/CURRENT",           (void*)NULL, 0, this),
    33913482        //-
    33923483        fEventData(0), fDrsCalibration(1440*1024*6),
    33933484        fTimeStamp0(0)
    3394 
    33953485    {
    33963486        fClockCondFreq->addItem("--- Hz",  QVariant(-1));
     
    34483538        // --------------------------------------------------------------------------
    34493539
     3540        ifstream fin0("FACTmapV5.txt");
     3541
     3542        int l = 0;
     3543
     3544        string buf;
     3545        while (getline(fin0, buf, '\n'))
     3546        {
     3547            if (l>1439)
     3548                break;
     3549
     3550            buf = Tools::Trim(buf);
     3551            if (buf[0]=='#')
     3552                continue;
     3553
     3554            stringstream str(buf);
     3555
     3556            int   idummy;
     3557            float fdummy;
     3558
     3559            PixelMapEntry entry;
     3560
     3561            str >> entry.index;
     3562            str >> entry.cbpx;
     3563            str >> idummy;
     3564            str >> idummy;
     3565            str >> entry.gapd;
     3566            str >> fdummy;
     3567            str >> entry.hv_board;
     3568            str >> entry.hv_channel;
     3569            str >> fdummy;
     3570            str >> fdummy;
     3571            str >> fdummy;
     3572
     3573            fPixelMap[l++] = entry;
     3574        }
     3575
     3576        if (l!=1440)
     3577        {
     3578            cerr << "ERROR - Problems reading FACTmapV5.txt" << endl;
     3579            exit(-1);
     3580        }
     3581
     3582        // --------------------------------------------------------------------------
     3583
    34503584        ifstream fin1("Trigger-Patches.txt");
    34513585
    3452         int l = 0;
    3453 
    3454         string buf;
     3586        l = 0;
    34553587        while (getline(fin1, buf, '\n'))
    34563588        {
     
    36083740        // --------------------------------------------------------------------------
    36093741
     3742        fBiasCam->SetMin(fBiasMin->value());
     3743        fBiasCam->SetMax(fBiasMax->value());
     3744        fBiasCam->updateGL();
     3745
     3746        // --------------------------------------------------------------------------
     3747
    36103748        fRatesCanv->SetMin(fRatesMin->value());
    36113749        fRatesCanv->SetMax(fRatesMax->value());
     
    36573795                this, SLOT(slot_ChoosePixelThreshold(int)));
    36583796        connect(fBiasCam, SIGNAL(signalCurrentPixel(int)),
    3659                 this, SLOT(slot_ChoosePixelBias(int)));
     3797                this, SLOT(slot_ChooseBiasChannel(int)));
    36603798        connect(fFtmRateCanv, SIGNAL(     RootEventProcessed(TObject*, unsigned int, TCanvas*)),
    36613799                this,         SLOT  (slot_RootEventProcessed(TObject*, unsigned int, TCanvas*)));
  • trunk/FACT++/gui/design.ui

    r11854 r11855  
    30083008                     </property>
    30093009                     <property name="maximum">
    3010                       <number>4</number>
     3010                      <number>3</number>
    30113011                     </property>
    30123012                    </widget>
     
    33503350                  <widget class="QLabel" name="label_202">
    33513351                   <property name="text">
    3352                     <string>Pixel</string>
     3352                    <string>Bias supply</string>
     3353                   </property>
     3354                   <property name="alignment">
     3355                    <set>Qt::AlignCenter</set>
    33533356                   </property>
    33543357                  </widget>
    33553358                 </item>
    33563359                 <item>
    3357                   <layout class="QHBoxLayout" name="horizontalLayout_43">
     3360                  <layout class="QGridLayout" name="gridLayout_87">
    33583361                   <property name="topMargin">
    33593362                    <number>0</number>
    33603363                   </property>
    3361                    <item>
    3362                     <widget class="QSpinBox" name="fBiasPixel">
     3364                   <item row="1" column="0">
     3365                    <widget class="QSpinBox" name="fBiasHvBoard">
    33633366                     <property name="alignment">
    33643367                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
    33653368                     </property>
    33663369                     <property name="maximum">
    3367                       <number>1439</number>
     3370                      <number>9</number>
    33683371                     </property>
    33693372                    </widget>
    33703373                   </item>
    3371                    <item>
    3372                     <widget class="QCheckBox" name="fPixelEnable_2">
    3373                      <property name="enabled">
    3374                       <bool>false</bool>
    3375                      </property>
    3376                      <property name="maximumSize">
    3377                       <size>
    3378                        <width>20</width>
    3379                        <height>16777215</height>
    3380                       </size>
    3381                      </property>
     3374                   <item row="0" column="0">
     3375                    <widget class="QLabel" name="label_229">
    33823376                     <property name="text">
    3383                       <string/>
     3377                      <string>Board</string>
    33843378                     </property>
    33853379                    </widget>
    33863380                   </item>
    3387                   </layout>
    3388                  </item>
    3389                  <item>
    3390                   <layout class="QHBoxLayout" name="horizontalLayout_44">
    3391                    <property name="topMargin">
    3392                     <number>0</number>
    3393                    </property>
    3394                    <item>
    3395                     <widget class="QPushButton" name="fPixelEnableAll_2">
    3396                      <property name="enabled">
    3397                       <bool>false</bool>
    3398                      </property>
     3381                   <item row="0" column="1">
     3382                    <widget class="QLabel" name="label_230">
    33993383                     <property name="text">
    3400                       <string>Enable all</string>
     3384                      <string>Channel</string>
    34013385                     </property>
    34023386                    </widget>
    34033387                   </item>
    3404                    <item>
    3405                     <widget class="QPushButton" name="fPixelDisableAll_2">
    3406                      <property name="enabled">
     3388                   <item row="1" column="1">
     3389                    <widget class="QSpinBox" name="fBiasHvChannel">
     3390                     <property name="alignment">
     3391                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3392                     </property>
     3393                     <property name="readOnly">
    34073394                      <bool>false</bool>
    34083395                     </property>
    3409                      <property name="text">
    3410                       <string>Disable all</string>
    3411                      </property>
    3412                     </widget>
    3413                    </item>
    3414                   </layout>
    3415                  </item>
    3416                  <item>
    3417                   <layout class="QHBoxLayout" name="horizontalLayout_45">
    3418                    <property name="topMargin">
    3419                     <number>0</number>
    3420                    </property>
    3421                    <item>
    3422                     <widget class="QPushButton" name="fPixelDisableOthers_2">
    3423                      <property name="enabled">
    3424                       <bool>false</bool>
    3425                      </property>
    3426                      <property name="text">
    3427                       <string>Disable others</string>
     3396                     <property name="buttonSymbols">
     3397                      <enum>QAbstractSpinBox::UpDownArrows</enum>
     3398                     </property>
     3399                     <property name="maximum">
     3400                      <number>31</number>
    34283401                     </property>
    34293402                    </widget>
     
    34503423                  <widget class="QLabel" name="label_206">
    34513424                   <property name="text">
    3452                     <string>Patch</string>
     3425                    <string>Camera</string>
     3426                   </property>
     3427                   <property name="alignment">
     3428                    <set>Qt::AlignCenter</set>
    34533429                   </property>
    34543430                  </widget>
    3455                  </item>
    3456                  <item>
    3457                   <widget class="QSpinBox" name="fBiasPatch">
    3458                    <property name="alignment">
    3459                     <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
    3460                    </property>
    3461                    <property name="readOnly">
    3462                     <bool>false</bool>
    3463                    </property>
    3464                    <property name="specialValueText">
    3465                     <string>all</string>
    3466                    </property>
    3467                    <property name="minimum">
    3468                     <number>-1</number>
    3469                    </property>
    3470                    <property name="maximum">
    3471                     <number>159</number>
    3472                    </property>
    3473                    <property name="value">
    3474                     <number>0</number>
    3475                    </property>
    3476                   </widget>
    3477                  </item>
    3478                  <item>
    3479                   <layout class="QHBoxLayout" name="horizontalLayout_46">
    3480                    <property name="topMargin">
    3481                     <number>0</number>
    3482                    </property>
    3483                    <item>
    3484                     <widget class="QPushButton" name="fThresholdDisableOthers_2">
    3485                      <property name="enabled">
    3486                       <bool>false</bool>
    3487                      </property>
    3488                      <property name="text">
    3489                       <string>Disable others</string>
    3490                      </property>
    3491                     </widget>
    3492                    </item>
    3493                   </layout>
    3494                  </item>
    3495                  <item>
    3496                   <spacer name="verticalSpacer_62">
    3497                    <property name="orientation">
    3498                     <enum>Qt::Vertical</enum>
    3499                    </property>
    3500                    <property name="sizeType">
    3501                     <enum>QSizePolicy::Fixed</enum>
    3502                    </property>
    3503                    <property name="sizeHint" stdset="0">
    3504                     <size>
    3505                      <width>20</width>
    3506                      <height>5</height>
    3507                     </size>
    3508                    </property>
    3509                   </spacer>
    35103431                 </item>
    35113432                 <item>
     
    35153436                   </property>
    35163437                   <item row="1" column="0">
    3517                     <widget class="QSpinBox" name="fBiasCrate">
     3438                    <widget class="QSpinBox" name="fBiasCamCrate">
    35183439                     <property name="alignment">
    35193440                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     
    35253446                   </item>
    35263447                   <item row="1" column="1">
    3527                     <widget class="QSpinBox" name="fBiasBoard">
     3448                    <widget class="QSpinBox" name="fBiasCamBoard">
    35283449                     <property name="alignment">
    35293450                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     
    35313452                     <property name="maximum">
    35323453                      <number>9</number>
    3533                      </property>
    3534                     </widget>
    3535                    </item>
    3536                    <item row="1" column="3">
    3537                     <widget class="QSpinBox" name="fBiasPatch_2">
    3538                      <property name="alignment">
    3539                       <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
    3540                      </property>
    3541                      <property name="maximum">
    3542                       <number>4</number>
    3543                      </property>
    3544                     </widget>
    3545                    </item>
    3546                    <item row="0" column="3">
    3547                     <widget class="QLabel" name="label_222">
    3548                      <property name="text">
    3549                       <string>Patch</string>
    35503454                     </property>
    35513455                    </widget>
     
    35623466                     <property name="text">
    35633467                      <string>Board</string>
     3468                     </property>
     3469                    </widget>
     3470                   </item>
     3471                   <item row="2" column="0">
     3472                    <widget class="QLabel" name="label_222">
     3473                     <property name="text">
     3474                      <string>Patch</string>
     3475                     </property>
     3476                    </widget>
     3477                   </item>
     3478                   <item row="3" column="0">
     3479                    <widget class="QSpinBox" name="fBiasCamPatch">
     3480                     <property name="alignment">
     3481                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3482                     </property>
     3483                     <property name="maximum">
     3484                      <number>3</number>
     3485                     </property>
     3486                    </widget>
     3487                   </item>
     3488                   <item row="2" column="1">
     3489                    <widget class="QLabel" name="label_231">
     3490                     <property name="text">
     3491                      <string>Pixel</string>
     3492                     </property>
     3493                    </widget>
     3494                   </item>
     3495                   <item row="3" column="1">
     3496                    <widget class="QSpinBox" name="fBiasCamPixel">
     3497                     <property name="alignment">
     3498                      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
     3499                     </property>
     3500                     <property name="readOnly">
     3501                      <bool>false</bool>
     3502                     </property>
     3503                     <property name="buttonSymbols">
     3504                      <enum>QAbstractSpinBox::UpDownArrows</enum>
     3505                     </property>
     3506                     <property name="maximum">
     3507                      <number>8</number>
     3508                     </property>
     3509                     <property name="singleStep">
     3510                      <number>1</number>
    35643511                     </property>
    35653512                    </widget>
     
    36383585                 </item>
    36393586                 <item>
     3587                  <widget class="QCheckBox" name="fBiasApplyGlobal">
     3588                   <property name="text">
     3589                    <string>Apply globally</string>
     3590                   </property>
     3591                  </widget>
     3592                 </item>
     3593                 <item>
    36403594                  <spacer name="verticalSpacer_64">
    36413595                   <property name="orientation">
     
    36723626                   </property>
    36733627                   <property name="suffix">
    3674                     <string> mA</string>
     3628                    <string> µA</string>
    36753629                   </property>
    36763630                   <property name="maximum">
     
    37373691                   </property>
    37383692                   <property name="suffix">
    3739                     <string> Hz</string>
     3693                    <string> µA</string>
    37403694                   </property>
    37413695                   <property name="minimum">
     
    37433697                   </property>
    37443698                   <property name="maximum">
    3745                     <number>2147483647</number>
     3699                    <number>5000</number>
     3700                   </property>
     3701                   <property name="value">
     3702                    <number>0</number>
    37463703                   </property>
    37473704                  </widget>
     
    37753732                   </property>
    37763733                   <property name="suffix">
    3777                     <string> Hz</string>
     3734                    <string> µA</string>
    37783735                   </property>
    37793736                   <property name="minimum">
     
    37813738                   </property>
    37823739                   <property name="maximum">
    3783                     <number>2147483647</number>
     3740                    <number>5000</number>
    37843741                   </property>
    37853742                   <property name="value">
    3786                     <number>1000</number>
     3743                    <number>5000</number>
    37873744                   </property>
    37883745                  </widget>
     
    1493014887   <hints>
    1493114888    <hint type="sourcelabel">
    14932      <x>1141</x>
    14933      <y>772</y>
     14889     <x>1191</x>
     14890     <y>774</y>
    1493414891    </hint>
    1493514892    <hint type="destinationlabel">
     
    1494614903   <hints>
    1494714904    <hint type="sourcelabel">
    14948      <x>1176</x>
    14949      <y>772</y>
     14905     <x>1226</x>
     14906     <y>774</y>
    1495014907    </hint>
    1495114908    <hint type="destinationlabel">
     
    1496214919   <hints>
    1496314920    <hint type="sourcelabel">
    14964      <x>1130</x>
     14921     <x>1180</x>
    1496514922     <y>109</y>
    1496614923    </hint>
     
    1497814935   <hints>
    1497914936    <hint type="sourcelabel">
    14980      <x>1165</x>
     14937     <x>1215</x>
    1498114938     <y>109</y>
    1498214939    </hint>
     
    1502614983   <hints>
    1502714984    <hint type="sourcelabel">
    15028      <x>1130</x>
     14985     <x>1180</x>
    1502914986     <y>105</y>
    1503014987    </hint>
     
    1504214999   <hints>
    1504315000    <hint type="sourcelabel">
    15044      <x>1165</x>
     15001     <x>1215</x>
    1504515002     <y>105</y>
    1504615003    </hint>
     
    1521815175   <hints>
    1521915176    <hint type="sourcelabel">
    15220      <x>1130</x>
    15221      <y>442</y>
     15177     <x>1180</x>
     15178     <y>443</y>
    1522215179    </hint>
    1522315180    <hint type="destinationlabel">
     
    1523415191   <hints>
    1523515192    <hint type="sourcelabel">
    15236      <x>1165</x>
    15237      <y>442</y>
     15193     <x>1215</x>
     15194     <y>443</y>
    1523815195    </hint>
    1523915196    <hint type="destinationlabel">
     
    1525015207   <hints>
    1525115208    <hint type="sourcelabel">
    15252      <x>1086</x>
    15253      <y>423</y>
     15209     <x>1215</x>
     15210     <y>438</y>
    1525415211    </hint>
    1525515212    <hint type="destinationlabel">
Note: See TracChangeset for help on using the changeset viewer.