00001 #include "otsdaq-components/DetectorConfiguration/FSSRDACsConfiguration.h" 00002 #include "otsdaq-core/ConfigurationInterface/ConfigurationTree.h" 00003 00004 #include <iostream> 00005 00006 using namespace ots; 00007 00008 //============================================================================== 00009 FSSRDACsConfiguration::FSSRDACsConfiguration(void) 00010 { 00012 //WARNING: the names and the order MUST match the ones in the enum // 00014 //FSSRDACsConfigurationInfo.xml 00015 //<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 00016 //<ROOT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ConfigurationInfo.xsd"> 00017 // <CONFIGURATION Name="FSSRDACsConfiguration"> 00018 // <VIEW Name="FSSR_DACS_CONFIGURATION" Type="File,Database,DatabaseTest"> 00019 // <COLUMN Name="ROCName" StorageName="ROC_NAME" DataType="VARCHAR2" /> 00020 // <COLUMN Name="PulserData" StorageName="PULSER_DATA" DataType="NUMBER" /> 00021 // <COLUMN Name="PulserControl" StorageName="PULSER_CONTROL" DataType="NUMBER" /> 00022 // <COLUMN Name="IntegratorVbn" StorageName="INTEGRATOR_VBN" DataType="NUMBER" /> 00023 // <COLUMN Name="ShaperVbp2" StorageName="SHAPER_VBP2" DataType="NUMBER" /> 00024 // <COLUMN Name="ShaperVbp1" StorageName="SHAPER_VBP1" DataType="NUMBER" /> 00025 // <COLUMN Name="BLRestorer" StorageName="BL_RESTORER" DataType="NUMBER" /> 00026 // <COLUMN Name="VTn" StorageName="VTN" DataType="NUMBER" /> 00027 // <COLUMN Name="VTp0" StorageName="VTP0" DataType="NUMBER" /> 00028 // <COLUMN Name="VTp1" StorageName="VTP1" DataType="NUMBER" /> 00029 // <COLUMN Name="VTp2" StorageName="VTP2" DataType="NUMBER" /> 00030 // <COLUMN Name="VTp3" StorageName="VTP3" DataType="NUMBER" /> 00031 // <COLUMN Name="VTp4" StorageName="VTP4" DataType="NUMBER" /> 00032 // <COLUMN Name="VTp5" StorageName="VTP5" DataType="NUMBER" /> 00033 // <COLUMN Name="VTp6" StorageName="VTP6" DataType="NUMBER" /> 00034 // <COLUMN Name="VTp7" StorageName="VTP7" DataType="NUMBER" /> 00035 // <COLUMN Name="ActiveLines" StorageName="ACTIVE_LINES" DataType="NUMBER" /> 00036 // <COLUMN Name="SendData" StorageName="SEND_DATA" DataType="NUMBER" /> 00037 // <COLUMN Name="RejectHits" StorageName="REJECT_HITS" DataType="NUMBER" /> 00038 // <COLUMN Name="DigContrReg" StorageNanameToROCDACsMap_me="DIG_CONTR_REG" DataType="NUMBER" /> 00039 // <COLUMN Name="AqBCO" StorageName="AQ_BCO" DataType="NUMBER" /> 00040 // </VIEW> 00041 // </CONFIGURATION> 00042 //</ROOT> 00043 00044 //FIXME We need a FSSRDefinitions class and use it to get the registers addresses 00045 dacNameToDACAddress_["PulserData" ] = 1; 00046 dacNameToDACAddress_["PulserControl"] = 2; 00047 dacNameToDACAddress_["IntegratorVbn"] = 3; 00048 dacNameToDACAddress_["ShaperVbp2" ] = 4; 00049 dacNameToDACAddress_["ShaperVbp1" ] = 5; 00050 dacNameToDACAddress_["BLRestorer" ] = 6; 00051 dacNameToDACAddress_["VTn" ] = 7; 00052 dacNameToDACAddress_["VTp0" ] = 8; 00053 dacNameToDACAddress_["VTp1" ] = 9; 00054 dacNameToDACAddress_["VTp2" ] = 10; 00055 dacNameToDACAddress_["VTp3" ] = 11; 00056 dacNameToDACAddress_["VTp4" ] = 12; 00057 dacNameToDACAddress_["VTp5" ] = 13; 00058 dacNameToDACAddress_["VTp6" ] = 14; 00059 dacNameToDACAddress_["VTp7" ] = 15; 00060 dacNameToDACAddress_["ActiveLines" ] = 16; 00061 dacNameToDACAddress_["SendData" ] = 19; 00062 dacNameToDACAddress_["RejectHits" ] = 20; 00063 dacNameToDACAddress_["DigContrReg" ] = 27; 00064 dacNameToDACAddress_["AqBCO" ] = 30; 00065 } 00066 00067 //============================================================================== 00068 FSSRDACsConfiguration::~FSSRDACsConfiguration(void) 00069 {} 00070 00071 //============================================================================== 00072 const ROCDACs FSSRDACsConfiguration::getROCDACs(const ConfigurationTree& dacsConfiguration) 00073 { 00074 ROCDACs rocDACs; 00075 for(auto& it: dacNameToDACAddress_) 00076 { 00077 rocDACs.setDAC(it.first, it.second, dacsConfiguration.getNode(it.first).getValue<unsigned int>()); 00078 // __COUT__ << "DAC. Name: " << it.first << " addr: " << it.second << " val: " << dacsConfiguration.getNode(it.first).getValue<unsigned int>() << " size: " << rocDACs.getDACList().size()<< std::endl; 00079 } 00080 //__COUT__ << "Size: " << rocDACs.getDACList().size()<< std::endl; 00081 return rocDACs; 00082 }