Changeset 11200 for trunk/FACT++/src


Ignore:
Timestamp:
06/27/11 16:59:40 (13 years ago)
Author:
tbretz
Message:
Restructured the FAD gui; made widgets for run-number and ROI active.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/FACT++/src/EventBuilderWrapper.h

    r11199 r11200  
    720720    uint32_t fNumEvts[2];
    721721
    722     DimDescribedService fDimFiles;
    723722    DimDescribedService fDimRuns;
    724723    DimDescribedService fDimEvents;
    725 //    DimDescribedService fDimCurrentEvent;
    726724    DimDescribedService fDimEventData;
    727725    DimDescribedService fDimFwVersion;
     726    DimDescribedService fDimRunNumber;
    728727    DimDescribedService fDimStatus;
    729728    DimDescribedService fDimDNA;
     
    741740    EventBuilderWrapper(MessageImp &imp) : fMsg(imp),
    742741        fFileFormat(kRaw), fMaxRun(0),
    743         fDimFiles       ("FAD_CONTROL/FILES",            "X:1", ""),
    744         fDimRuns        ("FAD_CONTROL/RUNS",             "I:1", ""),
     742        fDimRuns        ("FAD_CONTROL/RUNS",             "I:3", ""),
    745743        fDimEvents      ("FAD_CONTROL/EVENTS",           "I:2", ""),
    746 //        fDimCurrentEvent("FAD_CONTROL/CURRENT_EVENT",    "I:1", ""),
    747744        fDimEventData   ("FAD_CONTROL/EVENT_DATA",       "S:1;I:1;S:1;I:2;S:1;S", ""),
    748         fDimFwVersion   ("FAD_CONTROL/FIRMWARE_VERSION", "F:43", ""),
     745        fDimFwVersion   ("FAD_CONTROL/FIRMWARE_VERSION", "F:42", ""),
     746        fDimRunNumber   ("FAD_CONTROL/RUN_NUMBER",       "I:42", ""),
    749747        fDimStatus      ("FAD_CONTROL/STATUS",           "S:42", ""),
    750748        fDimDNA         ("FAD_CONTROL/DNA",              "X:40", ""),
     
    759757        memset(fNumEvts, 0, sizeof(fNumEvts));
    760758
    761         fDimRuns.Update(uint32_t(0));
    762 //        fDimCurrentEvent.Update(uint32_t(0));
    763759        fDimEvents.Update(fNumEvts);
    764760
     
    944940    // -------------- Mapped event builder callbacks ------------------
    945941
     942    void UpdateRuns()
     943    {
     944        uint32_t values[3] =
     945        {
     946            static_cast<uint32_t>(fFiles.size()),
     947            0xffffffff,
     948            0
     949        };
     950
     951        for (vector<DataFileImp*>::const_iterator it=fFiles.begin();
     952             it!=fFiles.end(); it++)
     953        {
     954            const DataFileImp *file = *it;
     955
     956            if (file->GetRunId()<values[1])
     957                values[1] = file->GetRunId();
     958
     959            if (file->GetRunId()>values[2])
     960                values[2] = file->GetRunId();
     961        }
     962
     963        fDimRuns.Update(values);
     964    }
     965
    946966    vector<DataFileImp*> fFiles;
    947967
     
    970990        fFiles.push_back(file);
    971991
    972         if (runid>fMaxRun)
    973         {
    974             fMaxRun = runid;
    975             fNumEvts[kCurrent] = 0;
    976 
    977             fDimRuns.Update(fMaxRun);
    978             fDimEvents.Update(fNumEvts);
    979 //            fDimCurrentEvent.Update(uint32_t(0));
    980         }
    981 
    982         fDimFiles.Update(fFiles.size());
     992        UpdateRuns();
     993
     994        fNumEvts[kCurrent] = 0;
     995        fDimEvents.Update(fNumEvts);
     996        // fDimCurrentEvent.Update(uint32_t(0));
    983997
    984998        return reinterpret_cast<FileHandle_t>(file);
     
    10371051        fFiles.erase(it);
    10381052
    1039         fDimFiles.Update(fFiles.size());
     1053        UpdateRuns();
    10401054
    10411055        const bool rc = file->Close(tail);
     
    13601374
    13611375    template<typename T>
    1362     pair<bool,boost::array<T, 43>> Compare(const FAD::EventHeader *h, const T *t, const uint64_t mask=~0, const uint8_t shift=0)
     1376    boost::array<T, 42> Compare(const FAD::EventHeader *h, const T *t)
    13631377    {
    13641378        const int offset = reinterpret_cast<const char *>(t) - reinterpret_cast<const char *>(h);
     
    13681382        const T *max = NULL;
    13691383
    1370         boost::array<T, 43> vec;
     1384        boost::array<T, 42> vec;
    13711385
    13721386        bool rc = true;
     
    13761390            const T *ref = reinterpret_cast<const T*>(base+offset);
    13771391
    1378             vec[i+3] = (*ref&mask)>>shift;
     1392            vec[i] = *ref;
    13791393
    13801394            if (gi_NumConnect[i]!=7)
    13811395            {
    1382                 vec[i+3] = -1;
     1396                vec[i] = 0;
    13831397                continue;
    13841398            }
     
    13971411                max = val;
    13981412
    1399             if ((*val&mask)!=(*ref&mask))
     1413            if (*val!=*ref)
    14001414                rc = false;
    14011415        }
    14021416
    1403         if (!val)
    1404             return make_pair(false, vec);
    1405 
    1406         vec[0] = (*min&mask)>>shift;
    1407         vec[1] = (*val&mask)>>shift;
    1408         vec[2] = (*max&mask)>>shift;
    1409 
    1410         return make_pair(rc, vec);
     1417        vec[40] = val ? *min : 0xffffffff;
     1418        vec[41] = val ? *max : 0;
     1419
     1420        return vec;
    14111421    }
    14121422
     
    14531463
    14541464    template<typename T, size_t N>
    1455     void Update(DimDescribedService &svc, const pair<bool,boost::array<T, N>> &data)
    1456     {
    1457         svc.setQuality(data.first);
    1458         svc.setData(const_cast<T*>(data.second.data()), sizeof(T)*N);
     1465    void Update(DimDescribedService &svc, const boost::array<T, N> &data, int n=N)
     1466    {
     1467//        svc.setQuality(vec[40]<=vec[41]);
     1468        svc.setData(const_cast<T*>(data.data()), sizeof(T)*n);
    14591469        svc.updateService();
    14601470    }
     
    14921502        if (old.fVersion != h.fVersion || changed)
    14931503        {
    1494             const pair<bool, boost::array<uint16_t,43>> ver = Compare(&h, &h.fVersion);
    1495 
    1496             pair<bool, boost::array<float,43>> data;
    1497             data.first = ver.first;
    1498 
    1499             for (int i=0; i<43; i++)
     1504            const boost::array<uint16_t,42> ver = Compare(&h, &h.fVersion);
     1505
     1506            boost::array<float,42> data;
     1507            for (int i=0; i<42; i++)
    15001508            {
    15011509                ostringstream str;
    1502                 str << (ver.second[i]>>8) << '.' << (ver.second[i]&0xff);
    1503                 data.second[i] = atof(str.str().c_str());
     1510                str << (ver[i]>>8) << '.' << (ver[i]&0xff);
     1511                data[i] = atof(str.str().c_str());
    15041512            }
    15051513            Update(fDimFwVersion, data);
     1514        }
     1515
     1516        if (old.fRunNumber != h.fRunNumber || changed)
     1517        {
     1518            const boost::array<uint32_t,42> run = Compare(&h, &h.fRunNumber);
     1519            fDimRunNumber.Update(run);
    15061520        }
    15071521
     
    15141528         uint16_t fNumTriggersToGenerate;
    15151529         uint16_t fTriggerGeneratorPrescaler;
    1516          uint64_t fDNA; // Xilinx DNA
    15171530         uint32_t fTimeStamp;
    15181531         uint32_t fRunNumber;
     
    15231536        if (old.fTriggerType != h.fTriggerType || changed)
    15241537        {
    1525             const pair<bool, boost::array<uint16_t,43>> typ = Compare(&h, &h.fTriggerType);
    1526             Print("Typ", typ);
    1527         }
    1528 
    1529         if (old.fRunNumber != h.fRunNumber || changed)
    1530         {
    1531             const pair<bool, boost::array<uint32_t,43>> run = Compare(&h, &h.fRunNumber);
    1532             Print("Run", run);
     1538            const boost::array<uint16_t,42> typ = Compare(&h, &h.fTriggerType);
     1539            //Print("Typ", typ);
    15331540        }
    15341541
    15351542        if (old.fDNA != h.fDNA || changed)
    15361543        {
    1537             const pair<bool, boost::array<uint64_t,43>> dna = Compare(&h, &h.fDNA);
    1538             fDimDNA.setData(const_cast<uint64_t*>(dna.second.data())+3, 40*sizeof(uint64_t));
    1539             fDimDNA.updateService();
     1544            const boost::array<uint64_t,42> dna = Compare(&h, &h.fDNA);
     1545            Update(fDimDNA, dna, 40);
    15401546        }
    15411547
     
    15431549        {
    15441550            const boost::array<uint16_t,42> sts = CompareBits(&h, &h.fStatus);
    1545             fDimStatus.setData(const_cast<uint16_t*>(sts.data()), 42*sizeof(uint16_t));
    1546             fDimStatus.updateService();
    1547         }
     1551            Update(fDimStatus, sts);
     1552        }
    15481553    }
    15491554};
Note: See TracChangeset for help on using the changeset viewer.