diff --git a/src/classes/PTheory.cpp b/src/classes/PTheory.cpp index a9c1c05c..d1be50fd 100644 --- a/src/classes/PTheory.cpp +++ b/src/classes/PTheory.cpp @@ -471,16 +471,19 @@ Double_t PTheory::Func(Double_t t, const PDoubleVector& paramValues, const PDoub return SkewedGauss(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); case THEORY_STATIC_ZF_NK: - return StaticNKZF (t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + + return StaticNKZF(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); case THEORY_STATIC_TF_NK: - return StaticNKTF (t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + + return StaticNKTF(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); case THEORY_DYNAMIC_ZF_NK: - return DynamicNKZF (t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + + return DynamicNKZF(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); case THEORY_DYNAMIC_TF_NK: - return DynamicNKTF (t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + + return DynamicNKTF(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + + fAdd->Func(t, paramValues, funcValues); + case THEORY_F_MU_F: + return FmuF(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); case THEORY_POLYNOM: return Polynom(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + @@ -560,6 +563,8 @@ Double_t PTheory::Func(Double_t t, const PDoubleVector& paramValues, const PDoub return DynamicNKTF (t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues); case THEORY_MU_MINUS_EXP: return MuMinusExpTF(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues); + case THEORY_F_MU_F: + return FmuF(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues); case THEORY_POLYNOM: return Polynom(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues); case THEORY_USER_FCN: @@ -635,6 +640,8 @@ Double_t PTheory::Func(Double_t t, const PDoubleVector& paramValues, const PDoub return DynamicNKTF (t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); case THEORY_MU_MINUS_EXP: return MuMinusExpTF(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); + case THEORY_F_MU_F: + return FmuF(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); case THEORY_POLYNOM: return Polynom(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); case THEORY_USER_FCN: @@ -708,6 +715,8 @@ Double_t PTheory::Func(Double_t t, const PDoubleVector& paramValues, const PDoub return DynamicNKTF(t, paramValues, funcValues); case THEORY_MU_MINUS_EXP: return MuMinusExpTF(t, paramValues, funcValues); + case THEORY_F_MU_F: + return FmuF(t, paramValues, funcValues); case THEORY_POLYNOM: return Polynom(t, paramValues, funcValues); case THEORY_USER_FCN: @@ -2590,6 +2599,49 @@ Double_t PTheory::DynamicNKTF(Double_t t, const PDoubleVector& paramValues, cons return result; } +//-------------------------------------------------------------------------- +/** + *
F-\f$\mu\f-F polaritation function.
+ * For details see e.g. "Muon Spectroscopy - An Introduction", S. Blundell, etal.
+ *
+ * @param t time in \f$(\mu\mathrm{s})\f$, or x-axis value for non-muSR fit
+ * @param paramValues parameter values
+ * @param funcValues vector with the functions (i.e. functions of the parameters)
+
+ * @return Polarization value of this function
+ */
+Double_t PTheory::FmuF(Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const
+{
+ // expected paramters: w_d [0], [tshift [1]]
+
+ Double_t val[2];
+
+ assert(fParamNo.size() <= 2);
+
+ if (t < 0.0)
+ return 1.0;
+
+ // check if FUNCTIONS are used
+ for (UInt_t i=0; i