Changeset 12295


Ignore:
Timestamp:
10/27/11 04:59:47 (13 years ago)
Author:
tbretz
Message:
Addec code for the rate scan tab display
File:
1 edited

Legend:

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

    r12289 r12295  
    430430    DimStampedInfo fDimFeedbackReference;
    431431
     432    DimStampedInfo fDimRateScan;
     433
    432434    map<string, DimInfo*> fServices;
    433435
     
    19971999        }
    19982000
     2001        const bool b = fBoardRatesEnabled->isChecked();
     2002
    19992003        valarray<double> dat(0., 1440);
    20002004
     
    20032007        {
    20042008            const int ihw = fPixelMap.index(i).hw()/9;
    2005             dat[i] = sdata.fPatchRate[ihw];
    2006 
    2007             // Was this meant for something?
    2008             //fRatesCanv->SetEnable(ihw, fFtuStatus[ihw/4]);
     2009            dat[i] = b ? sdata.fBoardRate[ihw/4] : sdata.fPatchRate[ihw];
    20092010        }
    20102011
     
    20142015
    20152016    int64_t fTimeStamp0;
     2017
     2018    void on_fBoardRatesEnabled_toggled(bool)
     2019    {
     2020        UpdateRatesCam(fTriggerRates);
     2021    }
    20162022
    20172023    void UpdateRatesGraphs(const FTM::DimTriggerRates &sdata)
     
    21582164            fGraphBoardRate[fRateBoard2->value()].Draw("PL");
    21592165        }
     2166
     2167        c->Modified();
     2168        c->Update();
    21602169#endif
    21612170    }
     
    26022611    }
    26032612
     2613    // ======================= Rate Scan ====================================
     2614
     2615    TGraph fGraphRateScan[201];
     2616
     2617    void UpdateRateScan(uint32_t th, const float *rates)
     2618    {
     2619#ifdef HAVE_ROOT
     2620        TCanvas *c = fRateScanCanv->GetCanvas();
     2621
     2622        TH1 *h = (TH1*)c->FindObject("Frame");
     2623
     2624        if (fGraphRateScan[0].GetN()==0 || th<=fGraphRateScan[0].GetX()[0])
     2625        {
     2626            for (int i=0; i<201; i++)
     2627                fGraphRateScan[i].Set(0);
     2628
     2629            h->SetBins(1, th-10, th+10);
     2630            h->SetMinimum(1);
     2631            h->SetMaximum(rates[0]*2);
     2632
     2633            c->SetGrid();
     2634            c->SetLogy();
     2635
     2636            for (int i=0; i<201; i++)
     2637                fGraphRateScan[i].SetPoint(fGraphRateScan[i].GetN(), th, rates[i]);
     2638
     2639            c->Modified();
     2640            c->Update();
     2641            return;
     2642        }
     2643
     2644        const double dac = h->GetXaxis()->GetXmin();
     2645        h->SetBins(h->GetNbinsX()+1, dac, th+10);
     2646
     2647        for (int i=0; i<201; i++)
     2648            fGraphRateScan[i].SetPoint(fGraphRateScan[i].GetN(), th, rates[i]);
     2649
     2650        c->Modified();
     2651        c->Update();
     2652#endif
     2653    }
     2654
     2655    void DisplayRateScan()
     2656    {
     2657#ifdef HAVE_ROOT
     2658        TCanvas *c = fRateScanCanv->GetCanvas();
     2659
     2660        while (c->FindObject("PatchRate"))
     2661            c->GetListOfPrimitives()->Remove(c->FindObject("PatchRate"));
     2662
     2663        while (c->FindObject("BoardRate"))
     2664            c->GetListOfPrimitives()->Remove(c->FindObject("BoardRate"));
     2665
     2666        c->cd();
     2667
     2668        if (fRateScanPatch1->value()>=0)
     2669        {
     2670            fGraphRateScan[fRateScanPatch1->value()+41].SetLineColor(kRed);
     2671            fGraphRateScan[fRateScanPatch1->value()+41].SetMarkerColor(kRed);
     2672            fGraphRateScan[fRateScanPatch1->value()+41].Draw("PL");
     2673        }
     2674        if (fRateScanPatch2->value()>=0)
     2675        {
     2676            fGraphRateScan[fRateScanPatch2->value()+41].SetLineColor(kGreen);
     2677            fGraphRateScan[fRateScanPatch2->value()+41].SetMarkerColor(kGreen);
     2678            fGraphRateScan[fRateScanPatch2->value()+41].Draw("PL");
     2679        }
     2680        if (fRateScanBoard1->value()>=0)
     2681        {
     2682            fGraphRateScan[fRateScanBoard1->value()+1].SetLineColor(kMagenta);
     2683            fGraphRateScan[fRateScanBoard1->value()+1].SetMarkerColor(kMagenta);
     2684            fGraphRateScan[fRateScanBoard1->value()+1].Draw("PL");
     2685        }
     2686        if (fRateScanBoard2->value()>=0)
     2687        {
     2688            fGraphRateScan[fRateScanBoard2->value()+1].SetLineColor(kCyan);
     2689            fGraphRateScan[fRateScanBoard2->value()+1].SetMarkerColor(kCyan);
     2690            fGraphRateScan[fRateScanBoard2->value()+1].Draw("PL");
     2691        }
     2692
     2693        c->Modified();
     2694        c->Update();
     2695#endif
     2696    }
     2697
     2698    void handleRateScan(const DimData &d)
     2699    {
     2700        if (!CheckSize(d, 204*sizeof(float)))
     2701            return;
     2702
     2703        UpdateRateScan(d.get<uint32_t>(), d.ptr<float>(12));
     2704    }
     2705
    26042706    // ========================== FSC =======================================
    26052707
     
    31933295        if (getInfo()==&fDimFeedbackDeviation)
    31943296            return PostInfoHandler(&FactGui::handleFeedbackDeviation);
     3297
     3298        if (getInfo()==&fDimRateScan)
     3299            return PostInfoHandler(&FactGui::handleRateScan);
    31953300
    31963301//        if (getInfo()==&fDimFadFiles)
     
    37603865        fDimFeedbackReference  ("FEEDBACK/REFERENCE",             (void*)NULL, 0, this),
    37613866        //-
     3867        fDimRateScan           ("RATE_SCAN/DATA",                 (void*)NULL, 0, this),
     3868        //-
    37623869        fEventData(0), fDrsCalibration(1440*1024*6),
    37633870        fTimeStamp0(0)
     
    39724079
    39734080        fGraphFeedbackCmd.Draw("LP");
     4081
     4082        // --------------------------------------------------------------------------
     4083
     4084        c = fRateScanCanv->GetCanvas();
     4085        //c->SetBit(TCanvas::kNoContextMenu);
     4086        c->SetBorderMode(0);
     4087        c->SetFrameBorderMode(0);
     4088        c->SetFillColor(kWhite);
     4089        c->SetRightMargin(0.03);
     4090        c->SetTopMargin(0.03);
     4091        c->SetGrid();
     4092        c->cd();
     4093
     4094        TH1F *h=new TH1F("Frame", "", 1, 0, 1);
     4095        h->SetDirectory(0);
     4096        h->SetBit(kCanDelete);
     4097        h->SetStats(kFALSE);
     4098        h->SetXTitle("Threshold [DAC]");
     4099        h->SetYTitle("Rate [Hz]");
     4100        h->GetXaxis()->CenterTitle();
     4101        h->GetYaxis()->CenterTitle();
     4102        h->GetXaxis()->SetLabelSize(0.025);
     4103        h->GetYaxis()->SetLabelSize(0.025);
     4104        h->GetYaxis()->SetTitleOffset(1.2);
     4105        h->Draw();
     4106
     4107        fGraphRateScan[0].SetName("CameraRate");
     4108        for (int i=0; i<40; i++)
     4109        {
     4110            fGraphRateScan[i+1].SetName("BoardRate");
     4111            fGraphRateScan[i+1].SetMarkerStyle(kFullDotMedium);
     4112        }
     4113        for (int i=0; i<160; i++)
     4114        {
     4115            fGraphRateScan[i+41].SetName("PatchRate");
     4116            fGraphRateScan[i+41].SetMarkerStyle(kFullDotMedium);
     4117        }
     4118
     4119        fGraphRateScan[0].SetLineColor(kBlue);
     4120        fGraphRateScan[0].SetMarkerColor(kBlue);
     4121        fGraphRateScan[0].SetMarkerStyle(kFullDotSmall);
     4122        fGraphRateScan[0].Draw("LP");
    39744123
    39754124        // --------------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.