Ignore:
Timestamp:
06/23/11 09:29:42 (13 years ago)
Author:
tbretz
Message:
Debugged the ADC plot with some fixes when sending the Dim data; set new values for the clock conditioner; added some preliminary checks for identities in the FAD headers
File:
1 edited

Legend:

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

    r11117 r11127  
    387387    DimStampedInfo fDimFadEvents;
    388388    DimStampedInfo fDimFadCurrentEvent;
     389    DimStampedInfo fDimFadEventData;
    389390    DimStampedInfo fDimFadConnections;
    390391
     
    960961    }
    961962
     963    struct DimEventData
     964    {
     965        uint16_t Roi ;            // #slices per pixel (same for all pixels and tmarks)
     966        uint32_t EventNum ;       // EventNumber as from FTM
     967        uint16_t TriggerType ;    // Trigger Type from FTM
     968
     969        uint32_t PCTime ;         // when did event start to arrive at PC
     970        uint32_t BoardTime;       //
     971
     972        int16_t StartPix;         // First Channel per Pixel (Pixels sorted according Software ID)  ; -1 if not filled
     973        int16_t StartTM;          // First Channel for TimeMark (sorted Hardware ID) ; -1 if not filled
     974
     975        uint16_t Adc_Data[];     // final length defined by malloc ....
     976
     977    } __attribute__((__packed__));;
     978
     979    void handleFadEventData(const DimData &d)
     980    {
     981        if (d.size()==0)
     982            return;
     983
     984#ifdef HAVE_ROOT
     985        const DimEventData &dat = d.ref<DimEventData>();
     986
     987        if (d.size()<sizeof(DimEventData))
     988        {
     989            cout << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << sizeof(DimEventData) << endl;
     990            return;
     991        }
     992
     993        if (d.size()!=dat.Roi*2+sizeof(DimEventData))
     994        {
     995            cout << "Size mismatch in " << d.name << ": Found=" << d.size() << " Expected=" << dat.Roi*2+sizeof(DimEventData) << endl;
     996            return;
     997        }
     998
     999        TCanvas *c = fAdcDataCanv->GetCanvas();
     1000
     1001        TH1 *h = dynamic_cast<TH1*>(c->FindObject("EventData"));
     1002        if (h && h->GetNbinsX()!=dat.Roi)
     1003        {
     1004            delete h;
     1005            h = 0;
     1006        }
     1007
     1008        if (!h)
     1009        {
     1010            c->cd();
     1011
     1012            TH1D hist("EventData", "", dat.Roi, -0.5, dat.Roi-0.5);
     1013            hist.SetStats(kFALSE);
     1014            //hist->SetBit(TH1::kNoTitle);
     1015            hist.SetMarkerStyle(kFullDotMedium);
     1016            hist.SetYTitle("Voltage [mV]");
     1017            hist.GetXaxis()->CenterTitle();
     1018            hist.GetYaxis()->CenterTitle();
     1019            hist.SetMinimum(-1025);
     1020            hist.SetMaximum(1025);
     1021            h = hist.DrawCopy("P");
     1022            h->SetDirectory(0);
     1023
     1024        }
     1025
     1026        ostringstream str;
     1027        str << "ADC Pipeline (start=" << dat.StartTM << ")";
     1028        h->SetXTitle(str.str().c_str());
     1029
     1030        //str.str("");
     1031        //str << "Crate=" << crate << " Board=" << board << " Channel=" << channel << " [" << d.time() << "]" << endl;
     1032        //hist->SetTitle(str.str().c_str());
     1033
     1034        for (int i=0; i<dat.Roi; i++)
     1035            h->SetBinContent(i+1, dat.Adc_Data[i]-1024);
     1036
     1037        c->Modified();
     1038        c->Update();
     1039#endif
     1040    }
     1041
    9621042    void handleFadConnections(const DimData &d)
    9631043    {
    964         if (!CheckSize(d, 40))
     1044        if (!CheckSize(d, 41))
    9651045            return;
    9661046
     
    9761056            }
    9771057        }
    978     }
    979 
    980     /*
    981      TCanvas *c = fAdcDataCanv->GetCanvas();
    982 
    983      TH1D *hist = c->FindObject("Hist");
    984      if (hist && hist->GetNbinsX()!=...)
    985      {
    986          delete hist;
    987          hist = 0;
    988 
    989      }
    990      if (!hist)
    991      {
    992          hist = new TH1D("Hist", "", n, -0.5, n-0.5);
    993          hist->SetStats(kFALSE);
    994          hist->SetDirectory(0);
    995          //hist->SetBit(TH1::kNoTitle);
    996          hist->SetBit(kCanDelete);
    997          hist->SetMarkerStyle(kFullDotMedium);
    998          hist->SetYTitle("Voltage [mV]");
    999          hist->GetXaxis()->CenterTitle();
    1000          hist->GetYaxis()->CenterTitle();
    1001          hist->SetMinimum(-1025);
    1002          hist->SetMaximum(1025);
    1003          hist->Draw("P");
    1004      }
    1005 
    1006      ostringstream str;
    1007      str << "ADC Pipeline (start=" << startbin << ")";
    1008      hist->SetXTitle(str.str().c_str());
    1009 
    1010      str.str("");
    1011      str << "Crate=" << crate << " Board=" << board << " Channel=" << channel << " [" << d.time() << "]" << endl;
    1012      hist->SetTitle(str.str().c_str());
    1013 
    1014      for (int i=0; i<n; i++)
    1015         hist->SetBinContent(i+1, value[i]-1024);
    1016 
    1017      c->Modified();
    1018      c->Update();
    1019      */
     1058
     1059        SetLedColor(fFadLEDEventBuilder, ptr[40]==0?kLedRed:kLedGreen, d.time);
     1060    }
    10201061
    10211062    // ===================== FTM ============================================
     
    10771118            return;
    10781119
    1079         const double avgrate = sdata.fTimeStamp>0 ? double(sdata.fTriggerCounter)/sdata.fTimeStamp*1000000 : 1;
     1120//        const double avgrate = sdata.fTimeStamp>0 ? double(sdata.fTriggerCounter)/sdata.fTimeStamp*1000000 : 1;
    10801121
    10811122        const double t1 = h->GetXaxis()->GetXmax();
     
    18001841            return PostInfoHandler(&FactGui::handleFadCurrentEvent);
    18011842
     1843        if (getInfo()==&fDimFadEventData)
     1844            return PostInfoHandler(&FactGui::handleFadEventData);
     1845
    18021846/*
    18031847        if (getInfo()==&fDimFadSetup)
     
    22232267        fDimFadEvents        ("FAD_CONTROL/EVENTS",          (void*)NULL, 0, this),
    22242268        fDimFadCurrentEvent  ("FAD_CONTROL/CURRENT_EVENT",   (void*)NULL, 0, this),
     2269        fDimFadEventData     ("FAD_CONTROL/EVENT_DATA",      (void*)NULL, 0, this),
    22252270        fDimFadConnections   ("FAD_CONTROL/CONNECTIONS",     (void*)NULL, 0, this)
    22262271    {
    2227         fClockCondFreq->addItem("-/-", QVariant(-1));
    2228         fClockCondFreq->addItem("700 MHz", QVariant(700));
     2272        fClockCondFreq->addItem("--- Hz", QVariant(-1));
     2273        fClockCondFreq->addItem("800 MHz", QVariant(800));
    22292274        fClockCondFreq->addItem("1 GHz",   QVariant(1000));
    22302275        fClockCondFreq->addItem("2 GHz",   QVariant(2000));
    2231         fClockCondFreq->addItem("2 GHz (*)",   QVariant(2001));
    22322276        fClockCondFreq->addItem("3 GHz",   QVariant(3000));
    22332277        fClockCondFreq->addItem("4 GHz",   QVariant(4000));
Note: See TracChangeset for help on using the changeset viewer.