00001 #include "ModuleConfiguration.h" 00002 #include <string> 00003 #include <algorithm> 00004 #include "Sct/SctParameters.h" 00005 #include "Sct/LogicErrors.h" 00006 00007 using std::string; 00008 using namespace Sct; 00009 00010 namespace SctData { 00011 00012 ModuleConfiguration::ModuleConfiguration() throw() { 00013 //Initialize ABCDModule 00014 std::fill_n((char*)&configuration, sizeof(configuration), 0); 00015 00016 for (unsigned int i=0; i<Sct::nChipModule; ++i) { 00017 shared_ptr<ChipConfiguration> chipConfig (new ChipConfiguration(configuration.chip[i])); 00018 chipConfigs.push_back(chipConfig); 00019 } 00020 } 00021 00022 ModuleConfiguration::~ModuleConfiguration() throw() { 00023 } 00024 00025 ModuleConfiguration::ModuleConfiguration(const ModuleConfiguration& config) throw() { 00026 this->configuration = config.configuration; 00027 00028 for (unsigned int i=0; i<Sct::nChipModule; ++i) { 00029 shared_ptr<ChipConfiguration> chipConfig (new ChipConfiguration(configuration.chip[i])); 00030 chipConfigs.push_back(chipConfig); 00031 } 00032 } 00033 00034 ModuleConfiguration& ModuleConfiguration::operator=(const ModuleConfiguration& config) throw() { 00035 this->configuration = config.configuration; 00036 return *this; 00037 } 00038 00039 bool ModuleConfiguration::channelIsMasked(const unsigned int ichannel) const throw(){ 00040 return getChipConfiguration(ichannel/nChannelChip).isMasked(ichannel%nChannelChip); 00041 } 00042 00043 00044 string ModuleConfiguration::getClassName() const throw() { 00045 return string("SctData::ModuleConfiguration"); 00046 } 00047 00048 ChipConfiguration& ModuleConfiguration::getChipConfiguration(const unsigned int chip) { 00049 if (!chipConfigs[chip].get()) throw Sct::IllegalStateError("ChipConfiguration does not exist!", __FILE__, __LINE__); 00050 return *chipConfigs[chip]; 00051 } 00052 00053 const ChipConfiguration& ModuleConfiguration::getChipConfiguration(const unsigned int chip) const { 00054 if (!chipConfigs[chip].get()) throw Sct::IllegalStateError("ChipConfiguration does not exist!", __FILE__, __LINE__); 00055 return *chipConfigs[chip]; 00056 } 00057 00058 const ABCDModule& ModuleConfiguration::getABCDModule() const { 00059 return configuration; 00060 } 00061 00062 ABCDModule& ModuleConfiguration::getABCDModule() { 00063 return configuration; 00064 } 00065 00066 } 00067