diff --git a/ChangeLog b/ChangeLog index 4bbe7137..7c19f899 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ changes since 0.17.0 =================================== +NEW 2016-04-22 Added the theory function muMinusExpTF for mu minus fits NEW 2016-02-23 It is now possible to export the averaged data/Fourier changes since 0.16.0 diff --git a/src/classes/PTheory.cpp b/src/classes/PTheory.cpp index 30c0003c..3c093b3a 100644 --- a/src/classes/PTheory.cpp +++ b/src/classes/PTheory.cpp @@ -507,6 +507,10 @@ Double_t PTheory::Func(register Double_t t, const PDoubleVector& paramValues, co return Polynom(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); break; + case THEORY_MU_MINUS_EXP: + return MuMinusExpTF(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + + fAdd->Func(t, paramValues, funcValues); + break; case THEORY_USER_FCN: return UserFcn(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); @@ -599,6 +603,9 @@ Double_t PTheory::Func(register Double_t t, const PDoubleVector& paramValues, co case THEORY_DYNAMIC_TF_NK: return DynamicNKTF (t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues); break; + case THEORY_MU_MINUS_EXP: + return MuMinusExpTF(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues); + break; case THEORY_POLYNOM: return Polynom(t, paramValues, funcValues) * fMul->Func(t, paramValues, funcValues); break; @@ -695,6 +702,9 @@ Double_t PTheory::Func(register Double_t t, const PDoubleVector& paramValues, co case THEORY_DYNAMIC_TF_NK: return DynamicNKTF (t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); break; + case THEORY_MU_MINUS_EXP: + return MuMinusExpTF(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); + break; case THEORY_POLYNOM: return Polynom(t, paramValues, funcValues) + fAdd->Func(t, paramValues, funcValues); break; @@ -789,6 +799,9 @@ Double_t PTheory::Func(register Double_t t, const PDoubleVector& paramValues, co case THEORY_DYNAMIC_TF_NK: return DynamicNKTF(t, paramValues, funcValues); break; + case THEORY_MU_MINUS_EXP: + return MuMinusExpTF(t, paramValues, funcValues); + break; case THEORY_POLYNOM: return Polynom(t, paramValues, funcValues); break; @@ -2942,6 +2955,46 @@ Double_t PTheory::GetDynKTLFValue(const Double_t t) const return fDynLFFuncValue[idx]+df; } +//-------------------------------------------------------------------------- +/** + *
theory function: MuMinusExpTF
+ *
+ * \f[ = N_0 \exp(-t/tau) [1 + A \exp(-\lambda t) \cos(2\pi\nu t + \phi)] \f]
+ *
+ * meaning of paramValues: \f$t_{\rm shift}\f$, \f$N_0\f$, \f$\tau\f$, \f$A\f$, \f$\lambda\f$, \f$\phi\f$, \f$\nu\f$
+ *
+ * return: function value
+ *
+ * \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)
+ */
+Double_t PTheory::MuMinusExpTF(register Double_t t, const PDoubleVector& paramValues, const PDoubleVector& funcValues) const
+{
+ // expected parameters: N0 tau A lambda phase frequency [tshift]
+
+ Double_t val[7];
+
+ assert(fParamNo.size() <= 7);
+
+ // check if FUNCTIONS are used
+ for (UInt_t i=0; i