1 #include <DatabaseUtils/DAQConfig/DCMHardwareConfig.h> 2 #include <DatabaseUtils/DAQConfig/ConfigDataTree.h> 3 #include <DatabaseUtils/DAQConfig/DBColumnParams.h> 4 #include <DatabaseUtils/DAQConfig/GlobalNameSpec.h> 5 #include <DatabaseUtils/DAQConfig/NamedConfigUtils.h> 6 #include <DatabaseUtils/DAQConfig/SubsystemNameSpec.h> 27 const std::string& dcmName,
bool loadDataImmediately) :
28 _dcmName(dcmName), _subsystemConfigIdList(subsystemConfigIdList),
29 _hasValidData(false), _primarySubsystemConfigId(-1)
31 if (loadDataImmediately) {
loadData();}
43 const std::string& dcmName,
bool loadDataImmediately) :
48 if (loadDataImmediately) {
loadData();}
60 const std::string& dcmName,
bool loadDataImmediately) :
65 if (loadDataImmediately) {
loadData();}
77 const std::string& dcmName,
bool loadDataImmediately) :
90 if (loadDataImmediately) {
loadData();}
116 for (uint16_t fdx = LOW_FEB_ID; fdx <=
HIGH_FEB_ID; ++fdx) {
117 int64_t sixtyFourBitOne = 1;
123 for (
int ipix = 0; ipix < 32; ++ipix) {
124 if ((pixelMask & (1 << ipix)) != 0) {
151 std::vector<int64_t>& idList)
174 std::vector<int64_t>& idList)
176 int64_t subsystemConfigId;
182 HARDWARE_CONFIG_TYPE,
257 std::vector<std::string> dataColumnsOfInterest;
258 dataColumnsOfInterest.push_back(
"fpgaMode");
259 dataColumnsOfInterest.push_back(
"microSliceDT");
262 dcmSystemParamDataSet(
"NovaDatabase/tables/DAQConfig/DCMSystemParameters.xml",
263 subsystemConfigIdList, cfgSelector,
264 dataColumnsOfInterest);
269 if (! dcmSystemParamDataSet.
getTrueValue(
"microSliceDT",
284 std::vector<std::string> dataColumnsOfInterest;
285 dataColumnsOfInterest.push_back(
"location");
286 dataColumnsOfInterest.push_back(
"forceProgramming");
289 dcmFirmwareDataSet(
"NovaDatabase/tables/DAQConfig/DCMFPGAFirmwareLocations.xml",
290 subsystemConfigIdList, cfgSelector,
291 dataColumnsOfInterest);
312 std::vector<std::string> dataColumnsOfInterest;
313 dataColumnsOfInterest.push_back(
"location");
314 dataColumnsOfInterest.push_back(
"forceProgramming");
317 febFirmwareDataSet(
"NovaDatabase/tables/DAQConfig/FEBFPGAFirmwareLocations.xml",
318 subsystemConfigIdList, cfgSelector,
319 dataColumnsOfInterest);
340 std::vector<std::string> dataColumnsOfInterest;
341 dataColumnsOfInterest.push_back(
"mask");
344 febEnableMaskDataSet(
"NovaDatabase/tables/DAQConfig/FEBEnableMasks.xml",
345 subsystemConfigIdList, cfgSelector,
346 dataColumnsOfInterest);
359 std::vector<std::string> dataColumnsOfInterest;
360 dataColumnsOfInterest.push_back(
"readTimeout");
361 dataColumnsOfInterest.push_back(
"useMemoryMappedBuffer");
364 dcmDataDevDataSet(
"NovaDatabase/tables/DAQConfig/DCMDataDevParameters.xml",
365 subsystemConfigIdList, cfgSelector,
366 dataColumnsOfInterest);
373 "useMemoryMappedBuffer",
388 std::vector<std::string> dataColumnsOfInterest;
389 dataColumnsOfInterest.push_back(
"enable");
390 dataColumnsOfInterest.push_back(
"port");
391 dataColumnsOfInterest.push_back(
"tduFirmwareVersion");
392 dataColumnsOfInterest.push_back(
"historyEnable");
395 timingSystemDataSet(
"NovaDatabase/tables/DAQConfig/TimingSystemSettings.xml",
396 subsystemConfigIdList, cfgSelector,
397 dataColumnsOfInterest);
408 "tduFirmwareVersion",
428 std::vector<std::string> dataColumnsOfInterest;
429 dataColumnsOfInterest.push_back(
"linkTimeout");
430 dataColumnsOfInterest.push_back(
"doReset");
431 dataColumnsOfInterest.push_back(
"nanoSliceVersion");
434 dcmParamDataSet(
"NovaDatabase/tables/DAQConfig/DCMFPGAParameters.xml",
435 subsystemConfigIdList, cfgSelector,
436 dataColumnsOfInterest);
460 std::vector<std::string> dataColumnsOfInterest;
461 dataColumnsOfInterest.push_back(
"numberOfHwConfigAttempts");
464 dcmParamDataSet(
"NovaDatabase/tables/DAQConfig/DCMApplicationParameters.xml",
465 subsystemConfigIdList, cfgSelector,
466 dataColumnsOfInterest);
468 "numberOfHwConfigAttempts",
481 std::vector<std::string> dataColumnsOfInterest;
482 dataColumnsOfInterest.push_back(
"mask");
485 pixelEnableDataSet(
"NovaDatabase/tables/DAQConfig/PixelEnableMasks.xml",
486 subsystemConfigIdList, cfgSelector,
487 dataColumnsOfInterest);
489 for (uint16_t fdx = LOW_FEB_ID; fdx <=
HIGH_FEB_ID; ++fdx) {
510 std::vector<std::string> dataColumnsOfInterest;
511 dataColumnsOfInterest.push_back(
"spare");
512 dataColumnsOfInterest.push_back(
"vtsel");
513 dataColumnsOfInterest.push_back(
"refsel");
514 dataColumnsOfInterest.push_back(
"isel");
515 dataColumnsOfInterest.push_back(
"bwsel");
516 dataColumnsOfInterest.push_back(
"gsel");
517 dataColumnsOfInterest.push_back(
"tfsel");
518 dataColumnsOfInterest.push_back(
"mux2to1");
519 dataColumnsOfInterest.push_back(
"mux8to1");
520 dataColumnsOfInterest.push_back(
"qInjPixelMask");
523 pixelEnableDataSet(
"NovaDatabase/tables/DAQConfig/ASICRegisterSettings.xml",
524 subsystemConfigIdList, cfgSelector,
525 dataColumnsOfInterest);
527 for (uint16_t fdx = LOW_FEB_ID; fdx <=
HIGH_FEB_ID; ++fdx) {
528 int16_t asicSpareValue;
534 int16_t asicVtSelValue;
540 int16_t asicRefSelValue;
546 int16_t asicISelValue;
552 int16_t asicBWSelValue;
558 int16_t asicGSelValue;
564 int16_t asicTfSelValue;
570 int16_t asicMux2to1Value;
576 int16_t asicMux8to1Value;
582 int32_t asicQInjPixelMask;
585 asicQInjPixelMask)) {
614 std::vector<std::string> dataColumnsOfInterest;
615 dataColumnsOfInterest.push_back(
"pointsPerPixel");
618 dsoDataRegulatorDataSet(
"NovaDatabase/tables/DAQConfig/DSODataRegulatorSettings.xml",
619 subsystemConfigIdList, cfgSelector,
620 dataColumnsOfInterest);
622 for (uint16_t fdx = LOW_FEB_ID; fdx <=
HIGH_FEB_ID; ++fdx) {
624 if (! dsoDataRegulatorDataSet.
625 getEffectiveValueFor2Keys(dcmName, fdx,
626 "pointsPerPixel", value)) {
644 std::vector<std::string> dataColumnsOfInterest;
645 dataColumnsOfInterest.push_back(
"pulserEnable");
646 dataColumnsOfInterest.push_back(
"pulserPeriod");
647 dataColumnsOfInterest.push_back(
"pulserWidth");
650 febPulserDataSet(
"NovaDatabase/tables/DAQConfig/FEBPulserParameters.xml",
651 subsystemConfigIdList, cfgSelector,
652 dataColumnsOfInterest);
654 for (uint16_t fdx = LOW_FEB_ID; fdx <=
HIGH_FEB_ID; ++fdx) {
655 int16_t pulserEnable;
661 int32_t pulserPeriod;
693 std::vector<std::string> dataColumnsOfInterest;
694 dataColumnsOfInterest.push_back(
"offsetValue");
697 pixelOffsetDataSet(
"NovaDatabase/tables/DAQConfig/PixelOffsets.xml",
698 subsystemConfigIdList, cfgSelector,
699 dataColumnsOfInterest);
701 for (uint16_t fdx = LOW_FEB_ID; fdx <=
HIGH_FEB_ID; ++fdx) {
702 boost::shared_ptr<std::vector<int16_t> >
703 offsetList(
new std::vector<int16_t>());
704 for (uint16_t pdx = LOW_PIXEL_ID; pdx <=
HIGH_PIXEL_ID; ++pdx) {
706 if (! pixelOffsetDataSet.
707 getEffectiveValueFor3Keys(dcmName, fdx, pdx,
708 "offsetValue", value)) {
711 offsetList->push_back(value);
729 std::vector<std::string> dataColumnsOfInterest;
730 dataColumnsOfInterest.push_back(
"threshold");
733 pixelThresholdDataSet(
"NovaDatabase/tables/DAQConfig/PixelThresholds.xml",
734 subsystemConfigIdList, cfgSelector,
735 dataColumnsOfInterest);
737 for (uint16_t fdx = LOW_FEB_ID; fdx <=
HIGH_FEB_ID; ++fdx) {
738 boost::shared_ptr<std::vector<int16_t> >
739 thresholdList(
new std::vector<int16_t>());
740 for (uint16_t pdx = LOW_PIXEL_ID; pdx <=
HIGH_PIXEL_ID; ++pdx) {
742 if (! pixelThresholdDataSet.
743 getEffectiveValueFor3Keys(dcmName, fdx, pdx,
744 "threshold", value)) {
747 thresholdList->push_back(value);
bool _fetchPixelOffsets(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
bool getEffectiveValueFor2Keys(const U &primarySelectionValue, const V &secondarySelectionValue, const std::string &dataColumnName, T &resultValue)
DCMHardwareConfig(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName, bool loadDataImmediately=true)
bool _fetchDCMFPGAParams(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
const uint16_t HIGH_FEB_ID
void addSelectionColumn(std::string columnName)
bool _fetchDCMFirmwareLocations(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
static bool getConfigIdAncestry(const IDSpec &idSpec, std::vector< int64_t > &idList, const std::string &tableFile=DEFAULT_GLOBAL_NAMES_TABLE_FILE)
bool _fetchNamedConfigList(const SubsystemNameSpec &nameSpec, std::vector< int64_t > &idList)
static const uint16_t LOW_PIXEL_ID
std::vector< int32_t > _pixelEnableList
bool _fetchDSODataRegulatorValues(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
std::vector< boost::shared_ptr< std::vector< int16_t > > > _pixelOffsetArray
bool _fetchPixelEnableMasks(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
const uint16_t HIGH_PIXEL_ID
int32_t _nanoSliceVersion
int32_t _forceFEBFirmwareProgramming
int16_t _timingHistoryEnable
static bool getSubsystemConfigIdAncestry(const SubsystemNameSpec &subsystemNameSpec, std::vector< int64_t > &idList, const std::string &subsystemNamesTableFile=DEFAULT_SUBSYSTEM_NAMES_TABLE_FILE)
static const uint16_t HIGH_FEB_ID
int32_t _microsliceTimeLength
std::vector< dbutils::daqconfig::FEBPulserParameterSet > _pulserParameterList
bool getTrueValue(const std::string &dataColumnName, T &resultValue)
const XML_Char int const XML_Char * value
bool getEffectiveValueFor1Key(const U &primarySelectionValue, const std::string &dataColumnName, T &resultValue)
int16_t _timingSystemEnable
std::string _febFirmwareLocation
bool _fetchAllData(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
std::vector< int16_t > _dsoPointsPerPixelList
static const std::string PIXELID_COLUMN_NAME
int32_t _forceDCMFirmwareProgramming
bool _fetchFEBEnableMasks(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
bool _fetchFEBPulserValues(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
int16_t _timingSystemPort
static bool getSubsystemConfigIdFromGlobalName(const GlobalNameSpec &globalNameSpec, const std::string &subsystemName, const std::string &subsystemConfigType, int64_t &subsystemConfigId, const std::string &globalNamesTableFile=DEFAULT_GLOBAL_NAMES_TABLE_FILE, const std::string &subsystemNamesTableFile=DEFAULT_SUBSYSTEM_NAMES_TABLE_FILE)
int64_t _primarySubsystemConfigId
static const uint16_t LOW_FEB_ID
bool _fetchPixelThresholds(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
int16_t _numberOfHwConfigAttempts
const uint16_t LOW_FEB_ID
static const std::string DCMID_COLUMN_NAME
std::vector< boost::shared_ptr< std::vector< int16_t > > > _pixelThresholdArray
const uint16_t LOW_PIXEL_ID
std::vector< int64_t > _subsystemConfigIdList
int32_t _useMemoryMappedBuffer
bool _fetchASICRegisterValues(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
bool _fetchDCMApplicationParams(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
static const std::string FEBID_COLUMN_NAME
std::vector< dbutils::daqconfig::ASICRegisterValueSet > _asicRegisterValueList
static const uint16_t HIGH_PIXEL_ID
bool _fetchDCMDataDevValues(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
int getEnabledPixelCount()
bool _fetchTimingSystemValues(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
int32_t _tduFirmwareVersion
bool _fetchFEBFirmwareLocations(const std::vector< int64_t > &subsystemConfigIdList, const std::string &dcmName)
bool _fetchDCMSystemParams(const std::vector< int64_t > &subsystemConfigIdList)
static bool getSubsystemConfigIdAncestryFromGlobalId(const IDSpec &globalConfigId, const std::string &subsystemName, const std::string &subsystemConfigType, std::vector< int64_t > &idList, const std::string &globalNamesTableFile=DEFAULT_GLOBAL_NAMES_TABLE_FILE, const std::string &subsystemNamesTableFile=DEFAULT_SUBSYSTEM_NAMES_TABLE_FILE)
std::string _dcmFirmwareLocation