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 MTSampleGenerator::MTSampleGenerator(boost::function<double (const MTTensor*)> f, 
00007         const MTTensor &Z, const double errorlevel):
00008 generator(static_cast<unsigned int>(std::time(0))),
00009 Zxxr_dist(Z.GetZxx().real(),max(Z.GetdZxx(),Z.GetZxx().real()*errorlevel)), 
00010 Zxxi_dist(Z.GetZxx().imag(),max(Z.GetdZxx(),Z.GetZxx().imag()*errorlevel)),
00011 Zxyr_dist(Z.GetZxy().real(),max(Z.GetdZxy(),Z.GetZxy().real()*errorlevel)), 
00012 Zxyi_dist(Z.GetZxy().imag(),max(Z.GetdZxy(),Z.GetZxy().imag()*errorlevel)),
00013 Zyxr_dist(Z.GetZyx().real(),max(Z.GetdZyx(),Z.GetZyx().real()*errorlevel)), 
00014 Zyxi_dist(Z.GetZyx().imag(),max(Z.GetdZyx(),Z.GetZyx().imag()*errorlevel)),
00015 Zyyr_dist(Z.GetZyy().real(),max(Z.GetdZyy(),Z.GetZyy().real()*errorlevel)), 
00016 Zyyi_dist(Z.GetZyy().imag(),max(Z.GetdZyy(),Z.GetZyy().imag()*errorlevel)),
00017 Zxxr(generator, Zxxr_dist),
00018 Zxxi(generator, Zxxi_dist),
00019 Zxyr(generator, Zxyr_dist),
00020 Zxyi(generator, Zxyi_dist),
00021 Zyxr(generator, Zyxr_dist),
00022 Zyxi(generator, Zyxi_dist),
00023 Zyyr(generator, Zyyr_dist),
00024 Zyyi(generator, Zyyi_dist),
00025 func(f),
00026 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<double>(Zxyr(),Zxyi()),
00037                                         std::complex<double>(Zyxr(),Zyxi()),std::complex<double>(Zyyr(),Zyyi()),Data.GetFrequency());
00038         return func(&Point);
00039 }

Generated on Fri Jul 4 15:30:20 2008 for GPLIB++ by  doxygen 1.5.5