00001 #include "MTTensor.h"
00002 #include <fstream>
00003 #include <iostream>
00004 #include <complex>
00005 #include "MTSampleGenerator.h"
00006 #include "Jacknife.h"
00007
00008 using namespace std;
00009 int main()
00010 {
00011 const complex<double> xx(1.405,2.23);
00012 const complex<double> xy(5.33,2.5);
00013 const complex<double> yx(-7.45,-4.23);
00014 const complex<double> yy(-1.45,-3.29);
00015 const MTTensor TestData(xx,xy,yx,yy);
00016 const size_t ntestcases = 100000;
00017
00018 cerr << TestData.GetPhi11() << " " << TestData.GetPhi12() << " " << TestData.GetPhi21() << " " << TestData.GetPhi22() << endl;
00019 cerr << TestData.GetPhiMax() << " " << TestData.GetPhiMin() << " " << TestData.GetAlpha_phi() << " " << TestData.GetBeta_phi() << endl;
00020 cerr << TestData.GetPhixy() << endl;
00021 cerr << "Det Phi: " << TestData.GetdetPhi() << endl;
00022
00023 const double maxnoise = 0.5;
00024 const double minnoise = 0.01;
00025 const double noisestep = 0.01;
00026 for (double noiselevel = minnoise; noiselevel <= maxnoise; noiselevel += noisestep)
00027 {
00028 MTTensor DistData(TestData);
00029 DistData.SetErrors(abs(TestData.GetZxx())*noiselevel,abs(TestData.GetZxy())*noiselevel,
00030 abs(TestData.GetZyx())*noiselevel,abs(TestData.GetZyy())*noiselevel);
00031 MTSampleGenerator Generator(&MTTensor::GetdetPhi,DistData);
00032 Jacknife<MTSampleGenerator> ErrEst(ntestcases,Generator);
00033 double currmean;
00034 double currvar;
00035 ErrEst.CalcErrors(currmean,currvar);
00036
00037 cout << noiselevel << " " << currmean -TestData.GetdetPhi() << " " << sqrt(currvar)/TestData.GetdetPhi() << endl;
00038 }
00039 }