00001 #ifndef MULTI1DRECOBJECTIVE_H_
00002 #define MULTI1DRECOBJECTIVE_H_
00003
00004 #include "PlottableObjective.h"
00005 #include <vector>
00006 #include "C1DRecObjective.h"
00007 #include "AbsVelRecObjective.h"
00008 #include <boost/shared_ptr.hpp>
00009
00010
00011 class Multi1DRecObjective : public PlottableObjective
00012 {
00013 private:
00014 std::vector<boost::shared_ptr<C1DRecObjective> > Objectives;
00015 public:
00016
00017 virtual Multi1DRecObjective *clone() const
00018 {
00019 return new Multi1DRecObjective(*this);
00020 }
00021 void SetTimeWindow(const double start, const double end);
00022 void SetPoisson(const double ratio);
00023 void AddRecFunction(boost::shared_ptr<const SeismicDataComp> TheRecData, const int myshift,
00024 const double myomega, const double mysigma, const double myc,
00025 const double myslowness, const RecCalc::trfmethod method,
00026 const double errorlevel);
00027 void AddAbsVelFunction(boost::shared_ptr<const SeismicDataComp> TheRecData, SurfaceWaveData &AbsVel,
00028 const int myshift, const double myomega, const double mysigma,
00029 const double myc, const double myslowness,
00030 const RecCalc::trfmethod method, const double errorlevel,
00031 const double absvelweight, const double recweight);
00032 virtual void PreParallel(const ttranscribed &member);
00033 virtual double PostParallel(const ttranscribed &member);
00034 virtual void SafeParallel(const ttranscribed &member);
00035 virtual void WriteData(const std::string &filename);
00036
00037 void WriteModel(const std::string &filename);
00038
00039 void WritePlot(const std::string &filename);
00040 Multi1DRecObjective(const Multi1DRecObjective &Old);
00041 Multi1DRecObjective& operator=(const Multi1DRecObjective& source);
00042 Multi1DRecObjective();
00043 virtual ~Multi1DRecObjective();
00044 };
00045
00046 #endif