Changeset 11731 for trunk/FACT++/src


Ignore:
Timestamp:
07/31/11 12:03:01 (13 years ago)
Author:
tbretz
Message:
Removed DimTriggerCounter; added DimTreiggerRates
Location:
trunk/FACT++/src
Files:
2 edited

Legend:

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

    r11708 r11731  
    147147    } __attribute__((__packed__));
    148148
     149    /*
    149150    struct DimTriggerCounter
    150151    {
     
    158159        }
    159160    } __attribute__((__packed__));
    160 
     161    */
    161162
    162163    struct StaticDataBoard
     
    535536        uint16_t fRateOverflow[40];
    536537
     538        uint16_t fPrescaling[40];
     539
    537540        uint16_t fCrcError[40];
    538541
    539542        uint16_t fState;
    540543
    541         DimDynamicData(const Header &h, const DynamicData &d) :
     544        DimDynamicData(const Header &h, const DynamicData &d, const StaticData &s) :
    542545            fTimeStamp(h.fTimeStamp),
    543546            fOnTimeCounter(d.fOnTimeCounter),
     
    554557                for (int j=0; j<4; j++)
    555558                    fRatePatch[i*4+j] = d[i].fRatePatch[j];
     559
     560                fPrescaling[i] = s[i].fPrescaling;
     561            }
     562        }
     563
     564    } __attribute__((__packed__));
     565
     566    struct DimTriggerRates
     567    {
     568        uint64_t fTimeStamp;
     569        uint64_t fOnTimeCounter;
     570        uint32_t fTriggerCounter;
     571        float    fTriggerRate;
     572        float    fBoardRate[40];
     573        float    fPatchRate[160];
     574
     575        DimTriggerRates(const Header &h, const DynamicData &d, const StaticData &s, float rate) :
     576            fTimeStamp(h.fTimeStamp), fOnTimeCounter(d.fOnTimeCounter),
     577            fTriggerCounter(h.fTriggerCounter), fTriggerRate(rate)
     578        {
     579            for (int i=0; i<40; i++)
     580            {
     581                if ((d[i].fOverflow>>4)&1)
     582                    fBoardRate[i] = float(UINT32_MAX+1)*2/s[i].fPrescaling;
     583                else
     584                    fBoardRate[i] = float(d[i].fRateTotal)*2/s[i].fPrescaling;
     585
     586                // FIXME: Include fCrcError in calculation
     587                //fRateOverflow[i] = d[i].fOverflow;
     588                for (int j=0; j<4; j++)
     589                    if ((d[i].fOverflow>>j)&1)
     590                        fPatchRate[i*4+j] = float(UINT32_MAX+1)*2/s[i].fPrescaling;
     591                    else
     592                        fPatchRate[i*4+j] = float(d[i].fRatePatch[j])*2/s[i].fPrescaling;
    556593            }
    557594        }
  • trunk/FACT++/src/ftmctrl.cc

    r11662 r11731  
    11351135
    11361136    DimDescribedService fDimPassport;
    1137     DimDescribedService fDimTriggerCounter;
     1137    DimDescribedService fDimTriggerRates;
    11381138    DimDescribedService fDimError;
    11391139    DimDescribedService fDimFtuList;
     
    11421142    DimDescribedService fDimCounter;
    11431143
     1144    uint64_t fTimeStamp;
     1145    uint32_t fTriggerCounter;
     1146
    11441147    void UpdateFirstHeader()
    11451148    {
     
    11501153    }
    11511154
     1155    /*
    11521156    void UpdateHeader()
    11531157    {
     
    11591163        const FTM::DimTriggerCounter data(fHeader);
    11601164        fDimTriggerCounter.Update(data);
    1161     }
     1165    }*/
    11621166
    11631167    void UpdateFtuList()
     
    11811185        ConnectionFTM::UpdateDynamicData();
    11821186
    1183         const FTM::DimDynamicData data(fHeader, fDynamicData);
     1187        const FTM::DimDynamicData data(fHeader, fDynamicData, fStaticData);
    11841188        fDimDynamicData.Update(data);
     1189
     1190        float rate = -1;
     1191        if (fHeader.fTimeStamp>=fTimeStamp && fHeader.fTriggerCounter>=fTriggerCounter)
     1192        {
     1193            const uint64_t tdiff = fHeader.fTimeStamp     -fTimeStamp;
     1194            const uint32_t cdiff = fHeader.fTriggerCounter-fTriggerCounter;
     1195
     1196            rate = tdiff==0 ? 0 : 1000000*float(cdiff)/tdiff;
     1197        }
     1198
     1199        fTimeStamp      = fHeader.fTimeStamp;
     1200        fTriggerCounter = fHeader.fTriggerCounter;
     1201
     1202        const FTM::DimTriggerRates rates(fHeader, fDynamicData, fStaticData, rate);
     1203        fDimTriggerRates.Update(rates);
    11851204    }
    11861205
     
    12141233        ConnectionFTM(ioservice, imp),
    12151234        fDimPassport      ("FTM_CONTROL/PASSPORT",        "X:1;S:1", ""),
    1216         fDimTriggerCounter("FTM_CONTROL/TRIGGER_COUNTER", "X:1;I:1", ""),
     1235        fDimTriggerRates  ("FTM_CONTROL/TRIGGER_RATES",   "X:2;I:1;F:1;F:40;F:160", ""),
    12171236        fDimError         ("FTM_CONTROL/ERROR",           "X:1;S:1;S:28", ""),
    12181237        fDimFtuList       ("FTM_CONTROL/FTU_LIST",        "X:1;X:1;S:1;C:4;X:40;C:40;C:40",  ""),
    12191238        fDimStaticData    ("FTM_CONTROL/STATIC_DATA",     "X:1;S:1;S:1;X:1;S:1;S:3;S:1;S:1;S:1;S:1;S:1;S:1;I:1;I:8;S:90;S:160;S:40;S:40", ""),
    1220         fDimDynamicData   ("FTM_CONTROL/DYNAMIC_DATA",    "X:1;X:1;F:4;I:160;I:40;S:40;S:40;S:1", ""),
    1221         fDimCounter       ("FTM_CONTROL/COUNTER",         "I:6", "")
     1239        fDimDynamicData   ("FTM_CONTROL/DYNAMIC_DATA",    "X:1;X:1;F:4;I:160;I:40;S:40;S:40;S:40;S:1", ""),
     1240        fDimCounter       ("FTM_CONTROL/COUNTER",         "I:6", ""),
     1241        fTimeStamp(UINT64_MAX),
     1242        fTriggerCounter(UINT32_MAX)
    12221243    {
    12231244    }
Note: See TracChangeset for help on using the changeset viewer.