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
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