CLHEP 2.4.6.4
C++ Class Library for High Energy Physics
Loading...
Searching...
No Matches
F1D.hh
Go to the documentation of this file.
1// -*- C++ -*------------------------------------------------------
2//
3// This class is an adaptor from any function (double *f)(double x)
4// of one real variable, to generic functions. This allows one
5// to plot, differentiate, sum, compose, etc, any standard C or
6// C++ math function by converting it to a Generic Function.
7//
8// Joe Boudreau October 2012
9//-----------------------------------------------------
10#ifndef F1D_h
11#define F1D_h 1
12#include "CLHEP/GenericFunctions/AbsFunction.hh"
13namespace Genfun {
14
15 /**
16 * @author
17 * @ingroup genfun
18 */
19 class F1D : public AbsFunction {
20
21 typedef double (*FcnPtr)(double);
22
24
25 public:
26
27 // Constructor
28 F1D(FcnPtr fcn):p(fcn){};
29
30 // Destructor
31 virtual ~F1D(){};
32
33 // Copy constructor
34 F1D(const F1D &right):AbsFunction(),p(right.p){};
35
36 // Retreive function value
37 virtual double operator ()(double x) const {
38 return (*p)(x);
39 }
40
41 virtual double operator ()(const Argument & a) const override {return operator() (a[0]);}
42
43 private:
44
45 // It is illegal to assign a F1D
46 const F1D & operator=(const F1D &right);
47
48 // Data:
49 FcnPtr p;
50
51 };
53} // namespace Genfun
54#endif
#define FUNCTION_OBJECT_DEF(classname)
Definition: AbsFunction.hh:143
#define FUNCTION_OBJECT_IMP(classname)
Definition: AbsFunction.hh:149
F1D(FcnPtr fcn)
Definition: F1D.hh:28
virtual double operator()(double x) const
Definition: F1D.hh:37
virtual ~F1D()
Definition: F1D.hh:31
F1D(const F1D &right)
Definition: F1D.hh:34
#define double(obj)
Definition: excDblThrow.cc:32
Definition: Abs.hh:14