openModeller
Version 1.4.0
|
00001 00002 #include <models/AverageModel.hh> 00003 #include <Model.hh> 00004 00005 #include <vector> 00006 using std::vector; 00007 00008 AverageModelImpl::AverageModelImpl() : 00009 ModelImpl(), 00010 _models(), 00011 _size( Scalar(0.0) ) 00012 { } 00013 00014 AverageModelImpl::~AverageModelImpl() 00015 { } 00016 00017 void 00018 AverageModelImpl::setNormalization( const SamplerPtr& samp ) const 00019 { 00020 if ( _models.size() > 0 ) { 00021 _models[0]->setNormalization( samp ); 00022 } 00023 } 00024 00025 void 00026 AverageModelImpl::setNormalization( const EnvironmentPtr& env ) const 00027 { 00028 if ( _models.size() > 0 ) { 00029 _models[0]->setNormalization( env ); 00030 } 00031 } 00032 00033 Scalar 00034 AverageModelImpl::getValue( const Sample& x ) const 00035 { 00036 if ( _size == Scalar(0.0) ) 00037 return Scalar(0.0); 00038 00039 Scalar total = 0.0; 00040 00041 vector<Model>::const_iterator amodel; 00042 00043 for ( amodel = _models.begin(); 00044 amodel != _models.end(); 00045 ++amodel ) { 00046 total += (*amodel)->getValue( x ); 00047 } 00048 00049 return total / _size; 00050 00051 } 00052 00053 void 00054 AverageModelImpl::addModel( Model model ) 00055 { 00056 _models.push_back( model ); 00057 _size += Scalar( 1.0 ); 00058 }