musrfit  1.9.2
PTheory.h
Go to the documentation of this file.
1 /***************************************************************************
2 
3  PTheory.h
4 
5  Author: Andreas Suter
6  e-mail: andreas.suter@psi.ch
7 
8 ***************************************************************************/
9 
10 /***************************************************************************
11  * Copyright (C) 2007-2023 by Andreas Suter *
12  * andreas.suter@psi.ch *
13  * *
14  * This program is free software; you can redistribute it and/or modify *
15  * it under the terms of the GNU General Public License as published by *
16  * the Free Software Foundation; either version 2 of the License, or *
17  * (at your option) any later version. *
18  * *
19  * This program is distributed in the hope that it will be useful, *
20  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
21  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
22  * GNU General Public License for more details. *
23  * *
24  * You should have received a copy of the GNU General Public License *
25  * along with this program; if not, write to the *
26  * Free Software Foundation, Inc., *
27  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
28  ***************************************************************************/
29 
30 #ifndef _PTHEORY_H_
31 #define _PTHEORY_H_
32 
33 #include <TSystem.h>
34 #include <TString.h>
35 
36 #include "PMusr.h"
37 #include "PMsrHandler.h"
38 #include "PUserFcnBase.h"
39 
40 // --------------------------------------------------------
41 // function handling tags
42 // --------------------------------------------------------
43 
44 // function tags
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
76 
77 // function parameter tags, i.e. how many parameters has a specific function
78 // if there is a comment with a (tshift), the number of parameters is increased by one
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)
107 
108 // number of available user functions
109 #define THEORY_MAX 30
110 
111 // maximal number of parameters. Needed in the contents of LF
112 #define THEORY_MAX_PARAM 10
113 
114 // deg -> rad factor
115 #define DEG_TO_RAD 0.0174532925199432955
116 // 2 pi
117 #define TWO_PI 6.28318530717958623
118 
119 class PTheory;
120 
121 //--------------------------------------------------------------------------------------
125 typedef struct theo_data_base {
126  UInt_t fType;
127  UInt_t fNoOfParam;
128  Bool_t fTable;
129  TString fName;
130  TString fAbbrev;
131  TString fComment;
133 } PTheoDataBase;
134 
135 //--------------------------------------------------------------------------------------
140 
142  "const", "c", "", ""},
143 
145  "asymmetry", "a", "", ""},
146 
148  "simplExpo", "se", "(rate)", "(rate tshift)"},
149 
151  "generExpo", "ge", "(rate exponent)", "(rate exponent tshift)"},
152 
154  "simpleGss", "sg", "(rate)", "(rate tshift)"},
155 
157  "statGssKt", "stg", "(rate)", "(rate tshift)"},
158 
160  "statGssKTLF", "sgktlf", "(frequency damping)", "(frequency damping tshift)"},
161 
163  "dynGssKTLF", "dgktlf", "(frequency damping hopping-rate)", "(frequency damping hopping-rate tshift)"},
164 
166  "statExpKT", "sekt", "(rate)", "(rate tshift)"},
167 
169  "statExpKTLF", "sektlf", "(frequency damping)", "(frequency damping tshift)"},
170 
172  "dynExpKTLF", "dektlf", "(frequency damping hopping-rate)", "(frequency damping hopping-rate tshift)"},
173 
175  "combiLGKT", "lgkt", "(lorentzRate gaussRate)", "(lorentzRate gaussRate tshift)"},
176 
178  "strKT", "skt", "(rate beta)", "(rate beta tshift)"},
179 
181  "spinGlass", "spg", "(rate hopprate order)", "(rate hopprate order tshift)"},
182 
184  "rdAnisoHf", "rahf", "(frequency rate)", "(frequency rate tshift)"},
185 
187  "abragam", "ab", "(rate hopprate)", "(rate hopprate tshift)"},
188 
190  "TFieldCos", "tf", "(phase frequency)", "(phase frequency tshift)"},
191 
193  "internFld", "if", "(fraction phase frequency Trate Lrate)", "(fraction phase frequency Trate Lrate tshift)"},
194 
196  "internFldGK", "ifgk", "(fraction frequency sigma lambda beta)", "(fraction frequency sigma lambda beta tshift)"},
197 
199  "internFldLL", "ifll", "(fraction frequency sigma lambda beta)", "(fraction frequency sigma lambda beta tshift)"},
200 
202  "bessel", "b", "(phase frequency)", "(phase frequency tshift)"},
203 
205  "internBsl", "ib", "(fraction phase frequency Trate Lrate)", "(fraction phase frequency Trate Lrate tshift)"},
206 
208  "skewedGss", "skg", "(phase frequency rate_m rate_p)", "(phase frequency rate_m rate_p tshift)"},
209 
211  "staticNKZF", "snkzf", "(damping_D0 R_b)", "(damping_D0 R_b tshift)"},
212 
214  "staticNKTF", "snktf", "(phase frequency damping_D0 R_b)", "(phase frequency damping_D0 R_b tshift)"},
215 
217  "dynamicNKZF", "dnkzf", "(damping_D0 R_b nu_c)", "(damping_D0 R_b nu_c tshift)"},
218 
220  "dynamicNKTF", "dnktf", "(phase frequency damping_D0 R_b nu_c)", "(phase frequency damping_D0 R_b nu_c tshift)"},
221 
223  "muMinusExpTF", "mmsetf", "(N0 tau A lambda phase nu)", "(N0 tau A lambda phase nu tshift)"},
224 
225  {THEORY_POLYNOM, 0, false,
226  "polynom", "p", "(tshift p0 p1 ... pn)", "(tshift p0 p1 ... pn)"},
227 
228  {THEORY_USER_FCN, 0, false,
229  "userFcn", "u", "", ""}
230 };
231 
232 //--------------------------------------------------------------------------------------
236 class PTheory
237 {
238  public:
239  PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent = false);
240  virtual ~PTheory();
241 
242  virtual Bool_t IsValid();
243  virtual Double_t Func(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
244 
245  private:
246  virtual void CleanUp(PTheory *theo);
247  virtual Int_t SearchDataBase(TString name);
248  virtual Int_t GetUserFcnIdx(UInt_t lineNo) const;
249  virtual void MakeCleanAndTidyTheoryBlock(PMsrLines* fullTheoryBlock);
250  virtual void MakeCleanAndTidyPolynom(UInt_t i, PMsrLines* fullTheoryBlock);
251  virtual void MakeCleanAndTidyUserFcn(UInt_t i, PMsrLines* fullTheoryBlock);
252 
253  virtual Double_t Constant(const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
254  virtual Double_t Asymmetry(const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
255  virtual Double_t SimpleExp(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
256  virtual Double_t GeneralExp(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
257  virtual Double_t SimpleGauss(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
258  virtual Double_t StaticGaussKT(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
259  virtual Double_t StaticGaussKTLF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
260  virtual Double_t DynamicGaussKTLF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
261  virtual Double_t StaticLorentzKT(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
262  virtual Double_t StaticLorentzKTLF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
263  virtual Double_t DynamicLorentzKTLF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
264  virtual Double_t CombiLGKT(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
265  virtual Double_t StrKT(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
266  virtual Double_t SpinGlass(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
267  virtual Double_t RandomAnisotropicHyperfine(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
268  virtual Double_t Abragam(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
269  virtual Double_t TFCos(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
270  virtual Double_t InternalField(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
271  virtual Double_t InternalFieldGK(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
272  virtual Double_t InternalFieldLL(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
273  virtual Double_t Bessel(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
274  virtual Double_t InternalBessel(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
275  virtual Double_t SkewedGauss(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
276  virtual Double_t StaticNKZF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
277  virtual Double_t StaticNKTF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
278  virtual Double_t DynamicNKZF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
279  virtual Double_t DynamicNKTF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
280  virtual Double_t MuMinusExpTF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
281  virtual Double_t Polynom(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
282  virtual Double_t UserFcn(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const;
283 
284  virtual void CalculateGaussLFIntegral(const Double_t *val) const;
285  virtual void CalculateLorentzLFIntegral(const Double_t *val) const;
286  virtual Double_t GetLFIntegralValue(const Double_t t) const;
287  virtual void CalculateDynKTLF(const Double_t *val, Int_t tag) const;
288  virtual Double_t GetDynKTLFValue(const Double_t t) const;
289 
290  // variables
291  Bool_t fValid;
292  UInt_t fType;
293  std::vector<UInt_t> fParamNo;
294  UInt_t fNoOfParam;
296 
297  Int_t fUserFcnIdx;
302 
304 
305  mutable Double_t fSamplingTime;
306  mutable Double_t fPrevParam[THEORY_MAX_PARAM];
308  mutable Double_t fDynLFdt;
310 };
311 
312 #endif // _PTHEORY_H_
virtual Double_t StaticGaussKTLF(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1214
PUserFcnBase * fUserFcn
pointer to the user function object
Definition: PTheory.h:300
PTheory(PMsrHandler *msrInfo, UInt_t runNo, const Bool_t hasParent=false)
Definition: PTheory.cpp:93
virtual Double_t DynamicNKZF(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2363
#define THEORY_GENERAL_EXP
Definition: PTheory.h:49
#define THEORY_CONST
Definition: PTheory.h:46
virtual Double_t StaticGaussKT(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1172
virtual Double_t StrKT(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1697
#define THEORY_PARAM_STATIC_TF_NK
Definition: PTheory.h:103
#define THEORY_PARAM_COMBI_LGKT
Definition: PTheory.h:90
#define THEORY_BESSEL
Definition: PTheory.h:66
UInt_t fType
function tag
Definition: PTheory.h:292
virtual void MakeCleanAndTidyTheoryBlock(PMsrLines *fullTheoryBlock)
Definition: PTheory.cpp:794
#define THEORY_INTERNAL_FIELD_KORNILOV
Definition: PTheory.h:64
virtual Double_t Polynom(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2478
virtual Int_t SearchDataBase(TString name)
Definition: PTheory.cpp:739
virtual Double_t SkewedGauss(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2163
virtual void MakeCleanAndTidyPolynom(UInt_t i, PMsrLines *fullTheoryBlock)
Definition: PTheory.cpp:885
virtual Double_t Bessel(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2073
virtual Double_t DynamicLorentzKTLF(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1541
struct theo_data_base PTheoDataBase
#define THEORY_ABRAGAM
Definition: PTheory.h:61
#define THEORY_PARAM_STATIC_LORENTZ_KT_LF
Definition: PTheory.h:88
#define THEORY_TF_COS
Definition: PTheory.h:62
#define THEORY_PARAM_DYNAMIC_ZF_NK
Definition: PTheory.h:104
#define THEORY_STATIC_GAUSS_KT
Definition: PTheory.h:51
Bool_t fTable
table flag, indicating if the function is generate from a table
Definition: PTheory.h:128
TString fComment
comment added in the msr-file theory block to help the used
Definition: PTheory.h:131
#define THEORY_ASYMMETRY
Definition: PTheory.h:47
#define THEORY_PARAM_INTERNAL_FIELD_KORNILOV
Definition: PTheory.h:97
PTheory * fMul
pointers to the add-sub-function or the multiply-sub-function
Definition: PTheory.h:295
virtual Double_t MuMinusExpTF(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2873
#define THEORY_STATIC_LORENTZ_KT
Definition: PTheory.h:54
TString fUserFcnClassName
name of the user function class for within root
Definition: PTheory.h:298
#define THEORY_MAX_PARAM
Definition: PTheory.h:112
#define THEORY_DYNAMIC_GAUSS_KT_LF
Definition: PTheory.h:53
#define THEORY_SIMPLE_GAUSS
Definition: PTheory.h:50
#define THEORY_PARAM_STATIC_GAUSS_KT
Definition: PTheory.h:84
#define THEORY_MAX
Definition: PTheory.h:109
PDoubleVector fUserParam
vector holding the resolved user function parameters, i.e. map and function resolved.
Definition: PTheory.h:301
virtual Double_t InternalField(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1927
#define THEORY_POLYNOM
Definition: PTheory.h:74
UInt_t fType
function tag
Definition: PTheory.h:126
#define THEORY_STR_KT
Definition: PTheory.h:58
UInt_t fNoOfParam
number of parameters for the given function
Definition: PTheory.h:294
virtual Double_t Func(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:390
virtual Double_t StaticNKTF(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2307
#define THEORY_PARAM_DYNAMIC_LORENTZ_KT_LF
Definition: PTheory.h:89
virtual Double_t UserFcn(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2515
std::vector< Double_t > PDoubleVector
Definition: PMusr.h:196
virtual Int_t GetUserFcnIdx(UInt_t lineNo) const
Definition: PTheory.cpp:765
#define THEORY_PARAM_INTERNAL_FIELD_LARKIN
Definition: PTheory.h:98
#define THEORY_STATIC_TF_NK
Definition: PTheory.h:70
virtual Double_t TFCos(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1886
TString fName
name of the function as written into the msr-file
Definition: PTheory.h:129
#define THEORY_PARAM_DYNAMIC_TF_NK
Definition: PTheory.h:105
#define THEORY_PARAM_INTERNAL_FIELD
Definition: PTheory.h:96
virtual void CalculateGaussLFIntegral(const Double_t *val) const
Definition: PTheory.cpp:2542
virtual void CalculateLorentzLFIntegral(const Double_t *val) const
Definition: PTheory.cpp:2612
#define THEORY_PARAM_STATIC_LORENTZ_KT
Definition: PTheory.h:87
#define THEORY_PARAM_DYNAMIC_GAUSS_KT_LF
Definition: PTheory.h:86
Int_t fUserFcnIdx
index of the user function within the theory tree
Definition: PTheory.h:297
PTheory * fAdd
Definition: PTheory.h:295
#define THEORY_PARAM_STATIC_GAUSS_KT_LF
Definition: PTheory.h:85
#define THEORY_STATIC_ZF_NK
Definition: PTheory.h:69
TString fUserFcnSharedLibName
name of the shared lib to which the user function belongs
Definition: PTheory.h:299
virtual Double_t GetDynKTLFValue(const Double_t t) const
Definition: PTheory.cpp:2843
#define THEORY_DYNAMIC_ZF_NK
Definition: PTheory.h:71
#define THEORY_PARAM_TF_COS
Definition: PTheory.h:95
virtual Double_t SimpleGauss(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1132
PDoubleVector fDynLFFuncValue
needed for LF. Keeps the dynamic LF KT function values
Definition: PTheory.h:309
virtual Double_t DynamicGaussKTLF(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1303
#define THEORY_MU_MINUS_EXP
Definition: PTheory.h:73
#define THEORY_RANDOM_ANISOTROPIC_HYPERFINE
Definition: PTheory.h:60
virtual Double_t StaticLorentzKTLF(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1444
#define THEORY_USER_FCN
Definition: PTheory.h:75
#define THEORY_COMBI_LGKT
Definition: PTheory.h:57
std::vector< PMsrLineStructure > PMsrLines
Definition: PMusr.h:539
#define THEORY_PARAM_STR_KT
Definition: PTheory.h:91
virtual Double_t GetLFIntegralValue(const Double_t t) const
Definition: PTheory.cpp:2682
virtual Double_t StaticNKZF(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2252
virtual void MakeCleanAndTidyUserFcn(UInt_t i, PMsrLines *fullTheoryBlock)
Definition: PTheory.cpp:942
PMsrHandler * fMsrInfo
pointer to the msr-file handler
Definition: PTheory.h:303
virtual Double_t InternalFieldLL(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2021
TString fAbbrev
abbreviation of the function name
Definition: PTheory.h:130
#define THEORY_STATIC_LORENTZ_KT_LF
Definition: PTheory.h:55
virtual ~PTheory()
Definition: PTheory.cpp:332
#define THEORY_PARAM_SIMPLE_EXP
Definition: PTheory.h:81
virtual Bool_t IsValid()
Definition: PTheory.cpp:361
virtual Double_t GeneralExp(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1084
#define THEORY_PARAM_ABRAGAM
Definition: PTheory.h:94
virtual Double_t SimpleExp(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1044
virtual void CalculateDynKTLF(const Double_t *val, Int_t tag) const
Definition: PTheory.cpp:2709
Double_t fSamplingTime
needed for LF. Keeps the sampling time of the non-analytic integral
Definition: PTheory.h:305
virtual Double_t DynamicNKTF(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2424
virtual Double_t Asymmetry(const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1014
#define THEORY_PARAM_GENERAL_EXP
Definition: PTheory.h:82
#define THEORY_PARAM_SIMPLE_GAUSS
Definition: PTheory.h:83
#define THEORY_DYNAMIC_LORENTZ_KT_LF
Definition: PTheory.h:56
virtual Double_t Abragam(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1842
virtual Double_t InternalBessel(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:2114
Bool_t fValid
flag to tell if the theory is valid
Definition: PTheory.h:291
virtual Double_t RandomAnisotropicHyperfine(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1797
virtual Double_t CombiLGKT(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1651
virtual Double_t InternalFieldGK(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1969
static PTheoDataBase fgTheoDataBase[THEORY_MAX]
Definition: PTheory.h:139
#define THEORY_STATIC_GAUSS_KT_LF
Definition: PTheory.h:52
#define THEORY_INTERNAL_FIELD
Definition: PTheory.h:63
UInt_t fNoOfParam
number of parameters for this function
Definition: PTheory.h:127
PDoubleVector fLFIntegral
needed for LF. Keeps the non-analytic integral values
Definition: PTheory.h:307
#define THEORY_SPIN_GLASS
Definition: PTheory.h:59
#define THEORY_PARAM_STATIC_ZF_NK
Definition: PTheory.h:102
#define THEORY_SKEWED_GAUSS
Definition: PTheory.h:68
#define THEORY_INTERNAL_FIELD_LARKIN
Definition: PTheory.h:65
#define THEORY_PARAM_MU_MINUS_EXP
Definition: PTheory.h:106
#define THEORY_INTERNAL_BESSEL
Definition: PTheory.h:67
std::vector< UInt_t > fParamNo
holds the parameter numbers for the theory (including maps and functions, see constructor desciption)...
Definition: PTheory.h:293
Double_t fPrevParam[THEORY_MAX_PARAM]
needed for LF. Keeps the previous fitting parameters
Definition: PTheory.h:306
virtual Double_t SpinGlass(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1746
#define THEORY_PARAM_CONST
Definition: PTheory.h:79
virtual Double_t Constant(const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:986
#define THEORY_PARAM_RANDOM_ANISOTROPIC_HYPERFINE
Definition: PTheory.h:93
#define THEORY_DYNAMIC_TF_NK
Definition: PTheory.h:72
#define THEORY_SIMPLE_EXP
Definition: PTheory.h:48
virtual void CleanUp(PTheory *theo)
Definition: PTheory.cpp:716
#define THEORY_PARAM_SPIN_GLASS
Definition: PTheory.h:92
#define THEORY_PARAM_ASYMMETRY
Definition: PTheory.h:80
Double_t fDynLFdt
needed for LF. Keeps the time step for the dynamic LF calculation, used in the integral equation appr...
Definition: PTheory.h:308
virtual Double_t StaticLorentzKT(Double_t t, const PDoubleVector &paramValues, const PDoubleVector &funcValues) const
Definition: PTheory.cpp:1401
#define THEORY_PARAM_SKEWED_GAUSS
Definition: PTheory.h:101
TString fCommentTimeShift
comment added in the msr-file theory block if there is a time shift
Definition: PTheory.h:132
#define THEORY_PARAM_INTERNAL_BESSEL
Definition: PTheory.h:100
#define THEORY_PARAM_BESSEL
Definition: PTheory.h:99