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