00001 #ifndef MTFITSETUP_H_
00002 #define MTFITSETUP_H_
00003 #include "C1DMTObjective.h"
00004 #include "Adaptors.h"
00005 template <typename tConfObject>
00006 void SetupMTFitParameters(const tConfObject &Configuration, C1DMTObjective &Objective)
00007 {
00008 if (Configuration.mode == "xy")
00009 {
00010 if (Configuration.mtfit == "phase")
00011 Objective.AppendFitParameters(&MTTensor::GetPhixy, &MTTensor::GetdPhixy, Configuration.phaseerror);
00012 if (Configuration.mtfit == "appres")
00013 Objective.AppendFitParameters(&MTTensor::GetRhoxy, &MTTensor::GetdRhoxy, Configuration.reserror);
00014 if (Configuration.mtfit == "resphase")
00015 {
00016 Objective.AppendFitParameters(&MTTensor::GetRhoxy, &MTTensor::GetdRhoxy, Configuration.reserror);
00017 Objective.AppendFitParameters(&MTTensor::GetPhixy, &MTTensor::GetdPhixy, Configuration.phaseerror);
00018 }
00019 }
00020 else
00021 {
00022 if (Configuration.mtfit == "phase")
00023 Objective.AppendFitParameters(&MTTensor::GetPhiyx, &MTTensor::GetdPhiyx, Configuration.phaseerror);
00024 if (Configuration.mtfit == "appres")
00025 Objective.AppendFitParameters(&MTTensor::GetRhoyx, &MTTensor::GetdRhoyx, Configuration.reserror);
00026 if (Configuration.mtfit == "resphase")
00027 {
00028 Objective.AppendFitParameters(&MTTensor::GetRhoyx, &MTTensor::GetdRhoyx, Configuration.reserror);
00029 Objective.AppendFitParameters(&MTTensor::GetPhiyx, &MTTensor::GetdPhiyx, Configuration.phaseerror);
00030 }
00031 }
00032 if (Configuration.mtfit == "berd")
00033 {
00034 Objective.AppendFitParameters(boost::bind(gplib::real(),boost::bind(&MTTensor::GetBerd,_1)),
00035 &MTTensor::GetdBerd, Configuration.tensorerror);
00036 Objective.AppendFitParameters(boost::bind(gplib::imag(),boost::bind(&MTTensor::GetBerd,_1)),
00037 &MTTensor::GetdBerd, Configuration.tensorerror);
00038 }
00039 if(Configuration.mtfit == "det")
00040 {
00041 Objective.AppendFitParameters(boost::bind(gplib::real(),boost::bind(&MTTensor::GetDet,_1)),
00042 &MTTensor::GetdDet, Configuration.tensorerror);
00043 Objective.AppendFitParameters(boost::bind(gplib::imag(),boost::bind(&MTTensor::GetDet,_1)),
00044 &MTTensor::GetdDet, Configuration.tensorerror);
00045 }
00046 if(Configuration.mtfit == "all")
00047 {
00048 Objective.AppendFitParameters(&MTTensor::GetRhoxx, &MTTensor::GetdRhoxx, Configuration.reserror);
00049 Objective.AppendFitParameters(&MTTensor::GetPhixx, &MTTensor::GetdPhixx, Configuration.phaseerror);
00050 Objective.AppendFitParameters(&MTTensor::GetRhoxy, &MTTensor::GetdRhoxy, Configuration.reserror);
00051 Objective.AppendFitParameters(&MTTensor::GetPhixy, &MTTensor::GetdPhixy, Configuration.phaseerror);
00052 Objective.AppendFitParameters(&MTTensor::GetRhoyx, &MTTensor::GetdRhoyx, Configuration.reserror);
00053 Objective.AppendFitParameters(&MTTensor::GetPhiyx, &MTTensor::GetdPhiyx, Configuration.phaseerror);
00054 Objective.AppendFitParameters(&MTTensor::GetRhoyy, &MTTensor::GetdRhoyy, Configuration.reserror);
00055 Objective.AppendFitParameters(&MTTensor::GetPhiyy, &MTTensor::GetdPhiyy, Configuration.phaseerror);
00056 }
00057 if(Configuration.mtfit == "allphase")
00058 {
00059 Objective.AppendFitParameters(&MTTensor::GetPhixx, &MTTensor::GetdPhixx, Configuration.phaseerror);
00060 Objective.AppendFitParameters(&MTTensor::GetPhixy, &MTTensor::GetdPhixy, Configuration.phaseerror);
00061 Objective.AppendFitParameters(&MTTensor::GetPhiyx, &MTTensor::GetdPhiyx, Configuration.phaseerror);
00062 Objective.AppendFitParameters(&MTTensor::GetPhiyy, &MTTensor::GetdPhiyy, Configuration.phaseerror);
00063 }
00064 if(Configuration.mtfit == "offdphase")
00065 {
00066 Objective.AppendFitParameters(&MTTensor::GetPhixy, &MTTensor::GetdPhixy, Configuration.phaseerror);
00067 Objective.AppendFitParameters(&MTTensor::GetPhiyx, &MTTensor::GetdPhiyx, Configuration.phaseerror);
00068 Objective.AppendFitParameters(&MTTensor::GetAlpha, &MTTensor::GetdZero, Configuration.phaseerror);
00069 }
00070 if(Configuration.mtfit == "ptensor")
00071 {
00072 Objective.AppendFitParameters(&MTTensor::GetPhi11, &MTTensor::GetdZero, Configuration.phaseerror);
00073 Objective.AppendFitParameters(&MTTensor::GetPhi12, &MTTensor::GetdZero, Configuration.phaseerror);
00074 Objective.AppendFitParameters(&MTTensor::GetPhi21, &MTTensor::GetdZero, Configuration.phaseerror);
00075 Objective.AppendFitParameters(&MTTensor::GetPhi22, &MTTensor::GetdZero, Configuration.phaseerror);
00076 }
00077 if(Configuration.mtfit == "ptellip")
00078 {
00079 Objective.AppendFitParameters(&MTTensor::GetPhiMax, &MTTensor::GetdZero, Configuration.phaseerror);
00080 Objective.AppendFitParameters(&MTTensor::GetPhiMin, &MTTensor::GetdZero, Configuration.phaseerror);
00081 Objective.AppendFitParameters(&MTTensor::GetAlpha_phi, &MTTensor::GetdZero, Configuration.phaseerror);
00082 Objective.AppendFitParameters(&MTTensor::GetBeta_phi, &MTTensor::GetdZero, Configuration.phaseerror);
00083 }
00084 }
00085
00086 #endif