Ticket #4385: ExpDecayOsc.h

File ExpDecayOsc.h, 2.9 KB (added by Anders Markvardsen, 9 years ago)
Line 
1#ifndef MANTID_CURVEFITTING_Muon_ExpDecayOsc_H_
2#define MANTID_CURVEFITTING_Muon_ExpDecayOsc_H_
3
4//----------------------------------------------------------------------
5// Includes
6//----------------------------------------------------------------------
7#include "MantidAPI/IPeakFunction.h"
8//#include "MantidAPI/IFunctionWithLocation.h"
9namespace Mantid
10{
11  namespace CurveFitting
12  {
13    /**
14    Provide lorentzian peak shape function interface to IPeakFunction.
15    I.e. the function: Height*( HWHM^2/((x-PeakCentre)^2+HWHM^2) ).
16
17
18    LorentzianTest parameters:
19    <UL>
20    <LI> Height - height of peak (default 0.0)</LI>
21    <LI> PeakCentre - centre of peak (default 0.0)</LI>
22    <LI> HWHM - half-width half-maximum (default 1.0)</LI>
23    </UL>
24
25    @author Anders Markvardsen, ISIS, RAL
26    @date 27/10/2009
27
28    Copyright &copy; 2007-8 ISIS Rutherford Appleton Laboratory & NScD Oak Ridge National Laboratory
29
30    This file is part of Mantid.
31
32    Mantid is free software; you can redistribute it and/or modify
33    it under the terms of the GNU General Public License as published by
34    the Free Software Foundation; either version 3 of the License, or
35    (at your option) any later version.
36
37    Mantid is distributed in the hope that it will be useful,
38    but WITHOUT ANY WARRANTY; without even the implied warranty of
39    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
40    GNU General Public License for more details.
41
42    You should have received a copy of the GNU General Public License
43    along with this program.  If not, see <http://www.gnu.org/licenses/>.
44
45    File change history is stored at: <https://svn.mantidproject.org/mantid/trunk/Code/Mantid>
46    Code Documentation is available at: <http://doxygen.mantidproject.org>
47    */
48    class DLLExport Muon_ExpDecayOsc : public API::IPeakFunction
49    {
50    public:
51      /// Destructor
52      virtual ~Muon_ExpDecayOsc() {};
53
54
55      /// overwrite IPeakFunction base class methods
56
57      virtual double centre()const {return getParameter("lambda");}
58      virtual double height()const {return getParameter("A");}
59      virtual double width()const {return 1/getParameter("frequency");}
60      virtual void setCentre(const double c) {setParameter("lambda",c);}
61      virtual void setHeight(const double h) {setParameter("A",h);}
62      virtual void setWidth(const double w) {setParameter("frequency",1/w);}
63
64
65      /// Here specify name of function as it will appear
66      std::string name()const{return "Muon_ExpDecayOsc";}
67    protected:
68      virtual void functionLocal(double* out, const double* xValues, const int& nData)const;
69      virtual void functionDerivLocal(API::Jacobian* out, const double* xValues, const int& nData);
70      /// overwrite IFunction base class method, which declare function parameters
71      virtual void init();
72
73    };
74
75  } // namespace CurveFitting
76} // namespace Mantid
77
78#endif /*MANTID_CURVEFITTING_Muon_ExpDecayOsc_H_*/