Ticket #4956: Muon_Abragam.h

File Muon_Abragam.h, 3.0 KB (added by Karl Palmen, 9 years ago)
Line 
1#ifndef MANTID_CURVEFITTING_Muon_Abragam_H_
2#define MANTID_CURVEFITTING_Muon_Abragam_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_Abragam : public API::IPeakFunction
49    {
50    public:
51      /// Destructor
52      virtual ~Muon_Abragam() {};
53
54
55    /// overwrite IPeakFunction base class methods
56        //  virtual double A0()const {return getParameter("Initial Asym");}
57        // virtual double s()const {return getParameter("Sigma");}
58
59      virtual double centre()const {return 1;}
60      virtual double height()const {return getParameter("A");}
61      virtual double width()const {return 2*3.1415927/getParameter("omiga");}
62      virtual void setCentre(const double c) {}
63      virtual void setHeight(const double h) {setParameter("A",h);}
64      virtual void setWidth(const double w) {setParameter("omiga",2.0*3.1415927/w);}
65
66
67      /// Here specify name of function as it will appear
68      std::string name()const{return "Muon_Abragam";}
69    protected:
70      virtual void functionLocal(double* out, const double* xValues, const int& nData)const;
71      virtual void functionDerivLocal(API::Jacobian* out, const double* xValues, const int& nData);
72      /// overwrite IFunction base class method, which declare function parameters
73      virtual void init();
74
75    };
76
77  } // namespace CurveFitting
78} // namespace Mantid
79
80#endif /*MANTID_CURVEFITTING_Muon_Abragam_H_*/