printmu.cpp
Go to the documentation of this file.00001 #include <iostream>
00002 #include <fstream>
00003 #include "MTStation.h"
00004 #include "MTSampleGenerator.h"
00005 #include "Jacknife.h"
00006 #include <boost/function.hpp>
00007 #include "Util.h"
00008
00009 using namespace std;
00010 using namespace gplib;
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 void WriteParameterToFile(const MTStation &Data, const string &filename,
00021 boost::function<double (const MTTensor*)> f)
00022 {
00023
00024 const int errorcases = 10000;
00025 const double errorfloor = 0.02;
00026 double JackMean, JackErr;
00027 ofstream muoutfile(filename.c_str());
00028
00029 for (size_t i = 0; i < Data.GetMTData().size(); ++i)
00030 {
00031
00032 MTSampleGenerator Generator(f, Data.GetMTData().at(i), errorfloor);
00033 Jacknife<MTSampleGenerator> ErrEst(errorcases, Generator);
00034 ErrEst.CalcErrors(JackMean, JackErr);
00035
00036 muoutfile << 1. / Data.GetMTData().at(i).GetFrequency();
00037 muoutfile << " " << f(&Data.GetMTData().at(i)) << " " << sqrt(JackErr)
00038 << endl;
00039 }
00040 }
00041
00042 int main(int argc, char *argv[])
00043 {
00044 string infilename;
00045 MTStation Data;
00046
00047 if (argc == 2)
00048 {
00049 infilename = argv[1];
00050 }
00051 else
00052 {
00053 infilename = AskFilename("Infilename: ");
00054 }
00055
00056 Data.GetData(infilename);
00057
00058 WriteParameterToFile(Data, infilename + ".mu", &MTTensor::GetMu);
00059 WriteParameterToFile(Data, infilename + ".kappa", &MTTensor::GetKappa);
00060 WriteParameterToFile(Data, infilename + ".sigma", &MTTensor::GetSigma);
00061 WriteParameterToFile(Data, infilename + ".eta", &MTTensor::GetEta);
00062 WriteParameterToFile(Data, infilename + ".Q", &MTTensor::GetQ);
00063 WriteParameterToFile(Data, infilename + ".I1", &MTTensor::GetI1);
00064 WriteParameterToFile(Data, infilename + ".I2", &MTTensor::GetI2);
00065 WriteParameterToFile(Data, infilename + ".I3", &MTTensor::GetI3);
00066 WriteParameterToFile(Data, infilename + ".I4", &MTTensor::GetI4);
00067 WriteParameterToFile(Data, infilename + ".I5", &MTTensor::GetI5);
00068 WriteParameterToFile(Data, infilename + ".I6", &MTTensor::GetI6);
00069 WriteParameterToFile(Data, infilename + ".I7", &MTTensor::GetI7);
00070
00071 ofstream muoutfile((infilename + ".d2").c_str());
00072 for (size_t i = 0; i < Data.GetMTData().size(); ++i)
00073 {
00074 muoutfile << 1. / Data.GetMTData().at(i).GetFrequency();
00075 muoutfile << " " << 2 * Data.GetMTData().at(i).GetdBerd()
00076 / Data.GetMTData().at(i).GetD2() << endl;
00077 }
00078
00079 }
00080
00081