MTSampleGenerator.cpp

Go to the documentation of this file.
00001 #include "MTSampleGenerator.h"
00002 #include <algorithm>
00003 #include <ctime>
00004 
00005 using namespace std;
00006 namespace gplib
00007   {
00008 
00009     MTSampleGenerator::MTSampleGenerator(boost::function<
00010         double(const MTTensor*)> f, const MTTensor &Z, const double errorlevel) :
00011       generator(static_cast<unsigned int> (std::time(0))), Zxxr_dist(
00012           Z.GetZxx().real(), max(Z.GetdZxx(), Z.GetZxx().real() * errorlevel)),
00013           Zxxi_dist(Z.GetZxx().imag(), max(Z.GetdZxx(), Z.GetZxx().imag()
00014               * errorlevel)), Zxyr_dist(Z.GetZxy().real(), max(Z.GetdZxy(),
00015               Z.GetZxy().real() * errorlevel)), Zxyi_dist(Z.GetZxy().imag(),
00016               max(Z.GetdZxy(), Z.GetZxy().imag() * errorlevel)), Zyxr_dist(
00017               Z.GetZyx().real(), max(Z.GetdZyx(), Z.GetZyx().real()
00018                   * errorlevel)), Zyxi_dist(Z.GetZyx().imag(), max(Z.GetdZyx(),
00019               Z.GetZyx().imag() * errorlevel)), Zyyr_dist(Z.GetZyy().real(),
00020               max(Z.GetdZyy(), Z.GetZyy().real() * errorlevel)), Zyyi_dist(
00021               Z.GetZyy().imag(), max(Z.GetdZyy(), Z.GetZyy().imag()
00022                   * errorlevel)), Zxxr(generator, Zxxr_dist), Zxxi(generator,
00023               Zxxi_dist), Zxyr(generator, Zxyr_dist),
00024           Zxyi(generator, Zxyi_dist), Zyxr(generator, Zyxr_dist), Zyxi(
00025               generator, Zyxi_dist), Zyyr(generator, Zyyr_dist), Zyyi(
00026               generator, Zyyi_dist), func(f), Data(Z)
00027       {
00028       }
00029 
00030     MTSampleGenerator::~MTSampleGenerator()
00031       {
00032       }
00033 
00034     double MTSampleGenerator::operator()()
00035       {
00036         MTTensor Point(std::complex<double>(Zxxr(), Zxxi()), std::complex<
00037             double>(Zxyr(), Zxyi()), std::complex<double>(Zyxr(), Zyxi()),
00038             std::complex<double>(Zyyr(), Zyyi()), Data.GetFrequency());
00039         return func(&Point);
00040       }
00041   }

Generated on Tue May 4 16:52:14 2010 for GPLIB++ by  doxygen 1.5.8