Changeset 10750


Ignore:
Timestamp:
May 19, 2011, 8:55:18 AM (9 years ago)
Author:
tbretz
Message:
Added FAD control widgets; added graphs for all rates delivered by FTM.
File:
1 edited

Legend:

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

    r10733 r10750  
    1414#include "CheckBoxDelegate.h"
    1515
     16#include "src/Dim.h"
    1617#include "src/Converter.h"
    1718#include "src/HeadersFTM.h"
     19#include "src/HeadersFAD.h"
    1820#include "src/DimNetwork.h"
    1921#include "src/tools.h"
     
    143145    void SetEnable(int idx, bool b) { fEnable[idx]=b; }
    144146    void Toggle(int idx) { fEnable[idx]=!fEnable[idx]; }
     147    double GetData(int idx) const { return fData[idx]; }
    145148
    146149    const char *GetName() const { return "Camera"; }
     
    341344    DimStampedInfo fDimFtmDynamicData;
    342345    DimStampedInfo fDimFtmCounter;
     346
     347    DimStampedInfo fDimFadPassport;
     348    DimStampedInfo fDimFadTemperatures;
     349    DimStampedInfo fDimFadSetup;
    343350
    344351    map<string, DimInfo*> fServices;
     
    849856    }
    850857
     858    // ===================== FAD ============================================
     859
     860    void handleFadPassport(const DimData &d)
     861    {
     862        if (d.size()==0)
     863            return;
     864
     865        if (d.size()!=sizeof(FAD::DimPassport))
     866        {
     867            cout << "Size mismatch: " << d.size() << " " << sizeof(FAD::DimPassport) << endl;
     868            return;
     869        }
     870
     871        const FAD::DimPassport &sdata = *reinterpret_cast<const FAD::DimPassport*>(d.ptr());
     872
     873        stringstream str1;
     874        str1 << hex << "0x" << setfill('0') << setw(16) << sdata.fDNA;
     875
     876        fFadVersion->setValue(sdata.fVersion);
     877        fFadBoardId->setValue(sdata.fBoardId);
     878        fFadDNA->setText(str1.str().c_str());
     879    }
     880
     881    void handleFadTemperatures(const DimData &d)
     882    {
     883        if (d.size()==0)
     884            return;
     885
     886        if (d.size()!=sizeof(FAD::DimTemperatures))
     887        {
     888            cout << "Size mismatch: " << d.size() << " " << sizeof(FAD::DimTemperatures) << endl;
     889            return;
     890        }
     891
     892        const FAD::DimTemperatures &sdata = *reinterpret_cast<const FAD::DimTemperatures*>(d.ptr());
     893
     894        fFadTemp0->setValue(sdata.fTempDrs[0]);
     895        fFadTemp1->setValue(sdata.fTempDrs[1]);
     896        fFadTemp2->setValue(sdata.fTempDrs[2]);
     897        fFadTemp3->setValue(sdata.fTempDrs[3]);
     898    }
     899
     900    void handleFadSetup(const DimData &d)
     901    {
     902        if (d.size()==0)
     903            return;
     904
     905        if (d.size()!=sizeof(FAD::DimSetup))
     906        {
     907            cout << "Size mismatch: " << d.size() << " " << sizeof(FAD::DimSetup) << endl;
     908            return;
     909        }
     910
     911
     912    }
     913
    851914    // ===================== FTM ============================================
    852915
     
    904967        const double t0 = h->GetXaxis()->GetXmin();
    905968
    906         h->SetBins(h->GetNbinsX()+1, t0, t0+sdata.fTriggerCounter+1);
     969        h->SetBins(h->GetNbinsX()+1, t0, t0+sdata.fTimeStamp+1);
    907970        fGraphFtmRate.SetPoint(fGraphFtmRate.GetN(),
    908                                t0+sdata.fTriggerCounter, rate);
     971                               t0+sdata.fTimeStamp, rate);
    909972
    910973        if (t1-t0>60)
     
    9451008
    9461009    int64_t fTriggerCounter0;
     1010    int64_t fTimeStamp0;
    9471011
    9481012    void handleFtmDynamicData(const DimData &d)
     
    9921056        // ----------------------------------------------
    9931057
     1058        if (fTimeStamp0<0)
     1059        {
     1060            fTimeStamp0 = sdata.fTimeStamp;
     1061            return;
     1062        }
     1063
     1064        TCanvas *c = fFtmRateCanv->GetCanvas();
     1065
     1066        TH1 *h = (TH1*)c->FindObject("TimeFrame");
     1067
     1068        const double tdiff = sdata.fTimeStamp-fTimeStamp0;
     1069        fTimeStamp0 = sdata.fTimeStamp;
     1070
     1071        if (tdiff<0)
     1072        {
     1073            for (int i=0; i<160; i++)
     1074                fGraphPatchRate[i].Set(0);
     1075            for (int i=0; i<40; i++)
     1076                fGraphBoardRate[i].Set(0);
     1077
     1078            return;
     1079        }
     1080
     1081        const double t1 = h->GetXaxis()->GetXmax();
     1082        const double t0 = h->GetXaxis()->GetXmin();
     1083
     1084        for (int i=0; i<160; i++)
     1085            fGraphPatchRate[i].SetPoint(fGraphPatchRate[i].GetN(),
     1086                                       t0+sdata.fTimeStamp, float(sdata.fRatePatch[i])/fFtmStaticData.fPrescaling[i]/1000);
     1087        for (int i=0; i<40; i++)
     1088            fGraphBoardRate[i].SetPoint(fGraphBoardRate[i].GetN(),
     1089                                       t0+sdata.fTimeStamp, float(sdata.fRateBoard[i])/fFtmStaticData.fPrescaling[i]/1000);
     1090
     1091        c->Modified();
     1092        c->Update();
     1093
     1094        // ----------------------------------------------
     1095
     1096        if (fThresholdIdx->value()>=0)
     1097            fPatchRate->setValue(sdata.fRatePatch[fThresholdIdx->value()]);
     1098
    9941099        valarray<double> dat(0., 1440);
    9951100
     
    9971102            dat[i] = sdata.fRatePatch[fPatch[i]];
    9981103
    999         TCanvas *c = fRatesCanv->GetCanvas();
     1104        c = fRatesCanv->GetCanvas();
    10001105        Camera *cam = (Camera*)c->FindObject("Camera");
    10011106
     
    10051110        c->Update();
    10061111#endif
     1112    }
     1113
     1114    void DisplayRates()
     1115    {
     1116#ifdef HAVE_ROOT
     1117        TCanvas *c = fFtmRateCanv->GetCanvas();
     1118
     1119        while (c->FindObject("PatchRate"))
     1120            c->GetListOfPrimitives()->Remove(c->FindObject("PatchRate"));
     1121
     1122        while (c->FindObject("BoardRate"))
     1123            c->GetListOfPrimitives()->Remove(c->FindObject("BoardRate"));
     1124
     1125        if (fRatePatch1->value()>=0)
     1126            fGraphPatchRate[fRatePatch1->value()].Draw("PL");
     1127        if (fRatePatch2->value()>=0)
     1128            fGraphPatchRate[fRatePatch2->value()].Draw("PL");
     1129        if (fRateBoard1->value()>=0)
     1130            fGraphBoardRate[fRateBoard1->value()].Draw("PL");
     1131        if (fRateBoard2->value()>=0)
     1132            fGraphBoardRate[fRateBoard2->value()].Draw("PL");
     1133#endif
     1134    }
     1135
     1136    void on_fRatePatch1_valueChanged(int idx)
     1137    {
     1138        DisplayRates();
     1139    }
     1140
     1141    void on_fRatePatch2_valueChanged(int idx)
     1142    {
     1143        DisplayRates();
     1144    }
     1145
     1146    void on_fRateBoard1_valueChanged(int idx)
     1147    {
     1148        DisplayRates();
     1149    }
     1150
     1151    void on_fRateBoard2_valueChanged(int idx)
     1152    {
     1153        DisplayRates();
    10071154    }
    10081155
     
    10961243        fEnableExt1->setChecked(sdata.HasExt1());
    10971244        fEnableExt2->setChecked(sdata.HasExt2());
    1098         fEnableTimeMarker->setChecked(sdata.HasTimeMarker());
     1245        fEnableClockCond->setChecked(sdata.HasClockConditioner());
    10991246
    11001247        for (int i=0; i<40; i++)
     
    11201267
    11211268        const int patch1 = fThresholdIdx->value();
    1122         fThresholdVal->setValue(sdata.fThreshold[patch1<0?0:patch1]);
     1269        if (patch1>=0)
     1270            fThresholdVal->setValue(sdata.fThreshold[patch1]);
    11231271
    11241272        fPrescalingVal->setValue(sdata.fPrescaling[0]);
     
    12491397            fStatusFADLabel->setToolTip(s.comment.c_str());
    12501398
    1251             if (s.index<FTM::kDisconnected) // No Dim connection
     1399            bool enable = false;
     1400
     1401            if (s.index<FAD::kDisconnected) // No Dim connection
    12521402                SetLedColor(fStatusFADLed, kLedGray, time);
    1253             if (s.index==FTM::kDisconnected) // Dim connection / FTM disconnected
     1403            if (s.index==FAD::kDisconnected) // Dim connection / FTM disconnected
    12541404                SetLedColor(fStatusFADLed, kLedYellow, time);
    1255             if (s.index==FTM::kConnected) // Dim connection / FTM connected
     1405            if (s.index==FAD::kConnected) // Dim connection / FTM connected
     1406            {
    12561407                SetLedColor(fStatusFADLed, kLedGreen, time);
     1408                enable = true;
     1409            }
     1410
     1411            fFadWidget->setEnabled(enable);
    12571412        }
    12581413
     
    14761631            return PostInfoHandler(&FactGui::handleLoggerStats);
    14771632
     1633        if (getInfo()==&fDimFadTemperatures)
     1634            return PostInfoHandler(&FactGui::handleFadTemperatures);
     1635
     1636        if (getInfo()==&fDimFadSetup)
     1637            return PostInfoHandler(&FactGui::handleFadSetup);
     1638
    14781639        if (getInfo()==&fDimLoggerFilenameNight)
    14791640            return PostInfoHandler(&FactGui::handleLoggerFilenameNight);
     
    15741735
    15751736        fThresholdIdx->setValue(idx);
    1576         fThresholdVal->setValue(fFtmStaticData.fThreshold[idx<0?0:idx]);
    1577 
     1737
     1738        //fThresholdVal->setEnabled(idx>=0);
     1739        //fThresholdVolt->setEnabled(idx>=0);
     1740        fPatchRate->setEnabled(idx>=0);
    15781741        if (idx<0)
    15791742            return;
     1743
     1744        fThresholdVal->setValue(fFtmStaticData.fThreshold[idx]);
     1745        fPatchRate->setValue(cam.GetData(idx));
    15801746
    15811747        for (unsigned int i=0; i<fPatch.size(); i++)
     
    16341800                const int idx = cam->GetIdx(xx, yy);
    16351801
    1636                 cam->Toggle(idx);
     1802                //cam->Toggle(idx);
     1803
     1804                Dim::SendCommand("FTM_CONTROL/TOGGLE_PIXEL", uint16_t(idx));
    16371805            }
    16381806            return;
     
    16991867    TGraph fGraphFtmTemp[4];
    17001868    TGraph fGraphFtmRate;
     1869    TGraph fGraphPatchRate[160];
     1870    TGraph fGraphBoardRate[40];
    17011871
    17021872    map<int, int> fPatch;
     
    17231893        h.GetYaxis()->SetTitleOffset(1.2);
    17241894//        h.GetYaxis()->SetTitleSize(1.2);
    1725         h.DrawCopy();
     1895        h.DrawCopy()->SetDirectory(0);
    17261896    }
    17271897#endif
     
    17431913        fDimFtmStaticData    ("FTM_CONTROL/STATIC_DATA",     (void*)NULL, 0, this),
    17441914        fDimFtmDynamicData   ("FTM_CONTROL/DYNAMIC_DATA",    (void*)NULL, 0, this),
    1745         fDimFtmCounter       ("FTM_CONTROL/COUNTER",         (void*)NULL, 0, this)
     1915        fDimFtmCounter       ("FTM_CONTROL/COUNTER",         (void*)NULL, 0, this),
     1916        fDimFadPassport      ("FAD_CONTROL/PASSPORT",        (void*)NULL, 0, this),
     1917        fDimFadTemperatures  ("FAD_CONTROL/TEMPERATURES",    (void*)NULL, 0, this),
     1918        fDimFadSetup         ("FAD_CONTROL/SETUP",           (void*)NULL, 0, this)
    17461919    {
    17471920        fTriggerWidget->setEnabled(false);
    17481921        fFtuWidget->setEnabled(false);
    17491922        fRatesWidget->setEnabled(false);
     1923        fFadWidget->setEnabled(false);
    17501924        fLoggerWidget->setEnabled(false);
    17511925
     
    17821956        // --------------------------------------------------------------------------
    17831957#ifdef HAVE_ROOT
     1958
     1959        for (int i=0; i<160; i++)
     1960            fGraphPatchRate[i].SetName("PatchRate");
     1961        for (int i=0; i<40; i++)
     1962            fGraphBoardRate[i].SetName("BoardRate");
    17841963        /*
    17851964        TCanvas *c = fFtmTempCanv->GetCanvas();
Note: See TracChangeset for help on using the changeset viewer.