Changeset 11731 for trunk/FACT++/src
- Timestamp:
- 07/31/11 12:03:01 (13 years ago)
- Location:
- trunk/FACT++/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/FACT++/src/HeadersFTM.h
r11708 r11731 147 147 } __attribute__((__packed__)); 148 148 149 /* 149 150 struct DimTriggerCounter 150 151 { … … 158 159 } 159 160 } __attribute__((__packed__)); 160 161 */ 161 162 162 163 struct StaticDataBoard … … 535 536 uint16_t fRateOverflow[40]; 536 537 538 uint16_t fPrescaling[40]; 539 537 540 uint16_t fCrcError[40]; 538 541 539 542 uint16_t fState; 540 543 541 DimDynamicData(const Header &h, const DynamicData &d ) :544 DimDynamicData(const Header &h, const DynamicData &d, const StaticData &s) : 542 545 fTimeStamp(h.fTimeStamp), 543 546 fOnTimeCounter(d.fOnTimeCounter), … … 554 557 for (int j=0; j<4; j++) 555 558 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; 556 593 } 557 594 } -
trunk/FACT++/src/ftmctrl.cc
r11662 r11731 1135 1135 1136 1136 DimDescribedService fDimPassport; 1137 DimDescribedService fDimTrigger Counter;1137 DimDescribedService fDimTriggerRates; 1138 1138 DimDescribedService fDimError; 1139 1139 DimDescribedService fDimFtuList; … … 1142 1142 DimDescribedService fDimCounter; 1143 1143 1144 uint64_t fTimeStamp; 1145 uint32_t fTriggerCounter; 1146 1144 1147 void UpdateFirstHeader() 1145 1148 { … … 1150 1153 } 1151 1154 1155 /* 1152 1156 void UpdateHeader() 1153 1157 { … … 1159 1163 const FTM::DimTriggerCounter data(fHeader); 1160 1164 fDimTriggerCounter.Update(data); 1161 } 1165 }*/ 1162 1166 1163 1167 void UpdateFtuList() … … 1181 1185 ConnectionFTM::UpdateDynamicData(); 1182 1186 1183 const FTM::DimDynamicData data(fHeader, fDynamicData );1187 const FTM::DimDynamicData data(fHeader, fDynamicData, fStaticData); 1184 1188 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); 1185 1204 } 1186 1205 … … 1214 1233 ConnectionFTM(ioservice, imp), 1215 1234 fDimPassport ("FTM_CONTROL/PASSPORT", "X:1;S:1", ""), 1216 fDimTrigger Counter("FTM_CONTROL/TRIGGER_COUNTER", "X:1;I:1", ""),1235 fDimTriggerRates ("FTM_CONTROL/TRIGGER_RATES", "X:2;I:1;F:1;F:40;F:160", ""), 1217 1236 fDimError ("FTM_CONTROL/ERROR", "X:1;S:1;S:28", ""), 1218 1237 fDimFtuList ("FTM_CONTROL/FTU_LIST", "X:1;X:1;S:1;C:4;X:40;C:40;C:40", ""), 1219 1238 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) 1222 1243 { 1223 1244 }
Note:
See TracChangeset
for help on using the changeset viewer.