openModeller  Version 1.4.0
AverageModel.cpp
Go to the documentation of this file.
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 }