00001 #include <iostream>
00002 #include <string>
00003 #include "MTStationList.h"
00004 #include "PTensorMTStation.h"
00005 #include "Adaptors.h"
00006 #include "Jacknife.h"
00007 #include "MTSampleGenerator.h"
00008
00009 using namespace std;
00010
00011
00012 int main(int argc, char* argv[])
00013 {
00014 MTStationList MTSites;
00015 string infilename;
00016 string version = "$Id: mtt2ptensor.cpp 1572 2007-12-17 18:20:43Z mmoorkamp $";
00017 cout << endl << endl;
00018 cout << "Program " << version << endl;
00019 cout << " Convert MT data files in .mtt .j .edi format to .ptensor format" << endl;
00020 cout << " This is needed in conjunction with the program ptselect " << endl;
00021 cout << " to select similar sites." << endl;
00022 cout << endl << endl;
00023
00024 if (argc == 2)
00025 {
00026 infilename = argv[1];
00027 }
00028 else
00029 {
00030 cout << "Input Filename: ";
00031 cin >> infilename;
00032 }
00033 MTSites.GetData(infilename);
00034 const unsigned int nsites = MTSites.GetList().size();
00035 const unsigned int ntestcases = 10000;
00036 for (unsigned int i = 0; i < nsites; ++i)
00037 {
00038 cout << "Writing site " << MTSites.GetList().at(i).GetName();
00039 PTensorMTStation PTData;
00040 const unsigned int nfreq = MTSites.at(i).GetMTData().size();
00041 for (unsigned j = 0; j < nfreq; ++j)
00042 {
00043 double JackMean, Phi11Var, Phi12Var, Phi21Var, Phi22Var;
00044 Jacknife<MTSampleGenerator>(ntestcases,MTSampleGenerator(&MTTensor::GetPhi11,MTSites.at(i).at(j))).CalcErrors(JackMean,Phi11Var);
00045 Jacknife<MTSampleGenerator>(ntestcases,MTSampleGenerator(&MTTensor::GetPhi21,MTSites.at(i).at(j))).CalcErrors(JackMean,Phi12Var);
00046 Jacknife<MTSampleGenerator>(ntestcases,MTSampleGenerator(&MTTensor::GetPhi12,MTSites.at(i).at(j))).CalcErrors(JackMean,Phi21Var);
00047 Jacknife<MTSampleGenerator>(ntestcases,MTSampleGenerator(&MTTensor::GetPhi22,MTSites.at(i).at(j))).CalcErrors(JackMean,Phi22Var);
00048
00049
00050 PTData.GetTensor().push_back(PTensorMTData(MTSites.at(i).at(j).GetFrequency(),
00051 MTSites.at(i).at(j).GetPhi11(),MTSites.at(i).at(j).GetPhi12(),
00052 MTSites.at(i).at(j).GetPhi21(),MTSites.at(i).at(j).GetPhi22(),
00053 sqrt(Phi11Var),sqrt(Phi12Var),sqrt(Phi21Var),sqrt(Phi22Var)));
00054 PTData.WriteData(MTSites.GetList().at(i).GetName());
00055 }
00056 cout << " ... done" <<endl;
00057 }
00058 }