45 #define THEORY_UNDEFINED -1 46 #define THEORY_CONST 0 47 #define THEORY_ASYMMETRY 1 48 #define THEORY_SIMPLE_EXP 2 49 #define THEORY_GENERAL_EXP 3 50 #define THEORY_SIMPLE_GAUSS 4 51 #define THEORY_STATIC_GAUSS_KT 5 52 #define THEORY_STATIC_GAUSS_KT_LF 6 53 #define THEORY_DYNAMIC_GAUSS_KT_LF 7 54 #define THEORY_STATIC_LORENTZ_KT 8 55 #define THEORY_STATIC_LORENTZ_KT_LF 9 56 #define THEORY_DYNAMIC_LORENTZ_KT_LF 10 57 #define THEORY_COMBI_LGKT 11 58 #define THEORY_STR_KT 12 59 #define THEORY_SPIN_GLASS 13 60 #define THEORY_RANDOM_ANISOTROPIC_HYPERFINE 14 61 #define THEORY_ABRAGAM 15 62 #define THEORY_TF_COS 16 63 #define THEORY_INTERNAL_FIELD 17 64 #define THEORY_INTERNAL_FIELD_KORNILOV 18 65 #define THEORY_INTERNAL_FIELD_LARKIN 19 66 #define THEORY_BESSEL 20 67 #define THEORY_INTERNAL_BESSEL 21 68 #define THEORY_SKEWED_GAUSS 22 69 #define THEORY_STATIC_ZF_NK 23 70 #define THEORY_STATIC_TF_NK 24 71 #define THEORY_DYNAMIC_ZF_NK 25 72 #define THEORY_DYNAMIC_TF_NK 26 73 #define THEORY_MU_MINUS_EXP 27 74 #define THEORY_POLYNOM 28 75 #define THEORY_USER_FCN 29 79 #define THEORY_PARAM_CONST 1 // const 80 #define THEORY_PARAM_ASYMMETRY 1 // asymmetry 81 #define THEORY_PARAM_SIMPLE_EXP 1 // damping (tshift) 82 #define THEORY_PARAM_GENERAL_EXP 2 // damping, exponents (tshift) 83 #define THEORY_PARAM_SIMPLE_GAUSS 1 // damping (tshift) 84 #define THEORY_PARAM_STATIC_GAUSS_KT 1 // damping (tshift) 85 #define THEORY_PARAM_STATIC_GAUSS_KT_LF 2 // frequency, damping (tshift) 86 #define THEORY_PARAM_DYNAMIC_GAUSS_KT_LF 3 // frequency, damping, hop-rate (tshift) 87 #define THEORY_PARAM_STATIC_LORENTZ_KT 1 // damping (tshift) 88 #define THEORY_PARAM_STATIC_LORENTZ_KT_LF 2 // frequency, damping (tshift) 89 #define THEORY_PARAM_DYNAMIC_LORENTZ_KT_LF 3 // frequency, damping, hop-rate (tshift) 90 #define THEORY_PARAM_COMBI_LGKT 2 // Lorentz rate, Gauss rate (tshift) 91 #define THEORY_PARAM_STR_KT 2 // rate, exponent (tshift) 92 #define THEORY_PARAM_SPIN_GLASS 3 // rate, hop-rate, order parameter (tshift) 93 #define THEORY_PARAM_RANDOM_ANISOTROPIC_HYPERFINE 2 // frequency, rate (tshift) 94 #define THEORY_PARAM_ABRAGAM 2 // rate, hop-rate (tshift) 95 #define THEORY_PARAM_TF_COS 2 // phase, frequency (tshift) 96 #define THEORY_PARAM_INTERNAL_FIELD 5 // fraction, phase, frequency, TF damping, damping (tshift) 97 #define THEORY_PARAM_INTERNAL_FIELD_KORNILOV 5 // fraction, frequency, TF damping, damping, beta (tshift) 98 #define THEORY_PARAM_INTERNAL_FIELD_LARKIN 4 // fraction, frequency, TF damping, damping (tshift) 99 #define THEORY_PARAM_BESSEL 2 // phase, frequency (tshift) 100 #define THEORY_PARAM_INTERNAL_BESSEL 5 // fraction, phase, frequency, TF damping, LF damping (tshift) 101 #define THEORY_PARAM_SKEWED_GAUSS 4 // phase, frequency, rate minus, rate plus (tshift) 102 #define THEORY_PARAM_STATIC_ZF_NK 2 // damping D0, R_b=DGbG/D0 (tshift) 103 #define THEORY_PARAM_STATIC_TF_NK 4 // phase, frequency, damping D0, R_b=DGbG/D0 (tshift) 104 #define THEORY_PARAM_DYNAMIC_ZF_NK 3 // damping D0, R_b=DGbG/D0, nu_c (tshift) 105 #define THEORY_PARAM_DYNAMIC_TF_NK 5 // phase, frequency, damping D0, R_b=DGbG/D0, nu_c (tshift) 106 #define THEORY_PARAM_MU_MINUS_EXP 6 // N0, tau, A, damping, phase, frequency (tshift) 109 #define THEORY_MAX 30 112 #define THEORY_MAX_PARAM 10 115 #define DEG_TO_RAD 0.0174532925199432955 117 #define TWO_PI 6.28318530717958623 142 "const",
"c",
"",
""},
145 "asymmetry",
"a",
"",
""},
148 "simplExpo",
"se",
"(rate)",
"(rate tshift)"},
151 "generExpo",
"ge",
"(rate exponent)",
"(rate exponent tshift)"},
154 "simpleGss",
"sg",
"(rate)",
"(rate tshift)"},
157 "statGssKt",
"stg",
"(rate)",
"(rate tshift)"},
160 "statGssKTLF",
"sgktlf",
"(frequency damping)",
"(frequency damping tshift)"},
163 "dynGssKTLF",
"dgktlf",
"(frequency damping hopping-rate)",
"(frequency damping hopping-rate tshift)"},
166 "statExpKT",
"sekt",
"(rate)",
"(rate tshift)"},
169 "statExpKTLF",
"sektlf",
"(frequency damping)",
"(frequency damping tshift)"},
172 "dynExpKTLF",
"dektlf",
"(frequency damping hopping-rate)",
"(frequency damping hopping-rate tshift)"},
175 "combiLGKT",
"lgkt",
"(lorentzRate gaussRate)",
"(lorentzRate gaussRate tshift)"},
178 "strKT",
"skt",
"(rate beta)",
"(rate beta tshift)"},
181 "spinGlass",
"spg",
"(rate hopprate order)",
"(rate hopprate order tshift)"},
184 "rdAnisoHf",
"rahf",
"(frequency rate)",
"(frequency rate tshift)"},
187 "abragam",
"ab",
"(rate hopprate)",
"(rate hopprate tshift)"},
190 "TFieldCos",
"tf",
"(phase frequency)",
"(phase frequency tshift)"},
193 "internFld",
"if",
"(fraction phase frequency Trate Lrate)",
"(fraction phase frequency Trate Lrate tshift)"},
196 "internFldGK",
"ifgk",
"(fraction frequency sigma lambda beta)",
"(fraction frequency sigma lambda beta tshift)"},
199 "internFldLL",
"ifll",
"(fraction frequency sigma lambda beta)",
"(fraction frequency sigma lambda beta tshift)"},
202 "bessel",
"b",
"(phase frequency)",
"(phase frequency tshift)"},
205 "internBsl",
"ib",
"(fraction phase frequency Trate Lrate)",
"(fraction phase frequency Trate Lrate tshift)"},
208 "skewedGss",
"skg",
"(phase frequency rate_m rate_p)",
"(phase frequency rate_m rate_p tshift)"},
211 "staticNKZF",
"snkzf",
"(damping_D0 R_b)",
"(damping_D0 R_b tshift)"},
214 "staticNKTF",
"snktf",
"(phase frequency damping_D0 R_b)",
"(phase frequency damping_D0 R_b tshift)"},
217 "dynamicNKZF",
"dnkzf",
"(damping_D0 R_b nu_c)",
"(damping_D0 R_b nu_c tshift)"},
220 "dynamicNKTF",
"dnktf",
"(phase frequency damping_D0 R_b nu_c)",
"(phase frequency damping_D0 R_b nu_c tshift)"},
223 "muMinusExpTF",
"mmsetf",
"(N0 tau A lambda phase nu)",
"(N0 tau A lambda phase nu tshift)"},
226 "polynom",
"p",
"(tshift p0 p1 ... pn)",
"(tshift p0 p1 ... pn)"},
229 "userFcn",
"u",
"",
""}
312 #endif // _PTHEORY_H_ virtual Double_t StaticGaussKTLF(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
PUserFcnBase * fUserFcn
pointer to the user function object
PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent=false)
virtual Double_t DynamicNKZF(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_GENERAL_EXP
virtual Double_t StaticGaussKT(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual Double_t StrKT(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_PARAM_STATIC_TF_NK
#define THEORY_PARAM_COMBI_LGKT
virtual void MakeCleanAndTidyTheoryBlock(PMsrLines *fullTheoryBlock)
#define THEORY_INTERNAL_FIELD_KORNILOV
virtual Double_t Polynom(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual Int_t SearchDataBase(TString name)
virtual Double_t SkewedGauss(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual void MakeCleanAndTidyPolynom(UInt_t i, PMsrLines *fullTheoryBlock)
virtual Double_t Bessel(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual Double_t DynamicLorentzKTLF(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
struct theo_data_base PTheoDataBase
#define THEORY_PARAM_STATIC_LORENTZ_KT_LF
#define THEORY_PARAM_DYNAMIC_ZF_NK
#define THEORY_STATIC_GAUSS_KT
Bool_t fTable
table flag, indicating if the function is generate from a table
TString fComment
comment added in the msr-file theory block to help the used
#define THEORY_PARAM_INTERNAL_FIELD_KORNILOV
PTheory * fMul
pointers to the add-sub-function or the multiply-sub-function
virtual Double_t MuMinusExpTF(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_STATIC_LORENTZ_KT
TString fUserFcnClassName
name of the user function class for within root
#define THEORY_DYNAMIC_GAUSS_KT_LF
#define THEORY_SIMPLE_GAUSS
#define THEORY_PARAM_STATIC_GAUSS_KT
PDoubleVector fUserParam
vector holding the resolved user function parameters, i.e. map and function resolved.
virtual Double_t InternalField(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
UInt_t fNoOfParam
number of parameters for the given function
virtual Double_t Func(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual Double_t StaticNKTF(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_PARAM_DYNAMIC_LORENTZ_KT_LF
virtual Double_t UserFcn(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
std::vector< Double_t > PDoubleVector
virtual Int_t GetUserFcnIdx(UInt_t lineNo) const
#define THEORY_PARAM_INTERNAL_FIELD_LARKIN
#define THEORY_STATIC_TF_NK
virtual Double_t TFCos(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
TString fName
name of the function as written into the msr-file
#define THEORY_PARAM_DYNAMIC_TF_NK
#define THEORY_PARAM_INTERNAL_FIELD
virtual void CalculateGaussLFIntegral(const Double_t *val) const
virtual void CalculateLorentzLFIntegral(const Double_t *val) const
#define THEORY_PARAM_STATIC_LORENTZ_KT
#define THEORY_PARAM_DYNAMIC_GAUSS_KT_LF
Int_t fUserFcnIdx
index of the user function within the theory tree
#define THEORY_PARAM_STATIC_GAUSS_KT_LF
#define THEORY_STATIC_ZF_NK
TString fUserFcnSharedLibName
name of the shared lib to which the user function belongs
virtual Double_t GetDynKTLFValue(const Double_t t) const
#define THEORY_DYNAMIC_ZF_NK
#define THEORY_PARAM_TF_COS
virtual Double_t SimpleGauss(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
PDoubleVector fDynLFFuncValue
needed for LF. Keeps the dynamic LF KT function values
virtual Double_t DynamicGaussKTLF(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_MU_MINUS_EXP
#define THEORY_RANDOM_ANISOTROPIC_HYPERFINE
virtual Double_t StaticLorentzKTLF(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_COMBI_LGKT
std::vector< PMsrLineStructure > PMsrLines
#define THEORY_PARAM_STR_KT
virtual Double_t GetLFIntegralValue(const Double_t t) const
virtual Double_t StaticNKZF(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual void MakeCleanAndTidyUserFcn(UInt_t i, PMsrLines *fullTheoryBlock)
PMsrHandler * fMsrInfo
pointer to the msr-file handler
virtual Double_t InternalFieldLL(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
TString fAbbrev
abbreviation of the function name
#define THEORY_STATIC_LORENTZ_KT_LF
#define THEORY_PARAM_SIMPLE_EXP
virtual Double_t GeneralExp(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_PARAM_ABRAGAM
virtual Double_t SimpleExp(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual void CalculateDynKTLF(const Double_t *val, Int_t tag) const
Double_t fSamplingTime
needed for LF. Keeps the sampling time of the non-analytic integral
virtual Double_t DynamicNKTF(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual Double_t Asymmetry(const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_PARAM_GENERAL_EXP
#define THEORY_PARAM_SIMPLE_GAUSS
#define THEORY_DYNAMIC_LORENTZ_KT_LF
virtual Double_t Abragam(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual Double_t InternalBessel(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
Bool_t fValid
flag to tell if the theory is valid
virtual Double_t RandomAnisotropicHyperfine(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual Double_t CombiLGKT(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
virtual Double_t InternalFieldGK(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
static PTheoDataBase fgTheoDataBase[THEORY_MAX]
#define THEORY_STATIC_GAUSS_KT_LF
#define THEORY_INTERNAL_FIELD
UInt_t fNoOfParam
number of parameters for this function
PDoubleVector fLFIntegral
needed for LF. Keeps the non-analytic integral values
#define THEORY_SPIN_GLASS
#define THEORY_PARAM_STATIC_ZF_NK
#define THEORY_SKEWED_GAUSS
#define THEORY_INTERNAL_FIELD_LARKIN
#define THEORY_PARAM_MU_MINUS_EXP
#define THEORY_INTERNAL_BESSEL
std::vector< UInt_t > fParamNo
holds the parameter numbers for the theory (including maps and functions, see constructor desciption)...
Double_t fPrevParam[THEORY_MAX_PARAM]
needed for LF. Keeps the previous fitting parameters
virtual Double_t SpinGlass(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_PARAM_CONST
virtual Double_t Constant(const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_PARAM_RANDOM_ANISOTROPIC_HYPERFINE
#define THEORY_DYNAMIC_TF_NK
#define THEORY_SIMPLE_EXP
virtual void CleanUp(PTheory *theo)
#define THEORY_PARAM_SPIN_GLASS
#define THEORY_PARAM_ASYMMETRY
Double_t fDynLFdt
needed for LF. Keeps the time step for the dynamic LF calculation, used in the integral equation appr...
virtual Double_t StaticLorentzKT(Double_t t, const PDoubleVector ¶mValues, const PDoubleVector &funcValues) const
#define THEORY_PARAM_SKEWED_GAUSS
TString fCommentTimeShift
comment added in the msr-file theory block if there is a time shift
#define THEORY_PARAM_INTERNAL_BESSEL
#define THEORY_PARAM_BESSEL