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