1 // -*- C++ -*-
2 // $Id: Power.hh,v 1.2 2003/09/06 14:04:13 boudreau Exp $
3 //----------------------Power-----------------------------------------------//
4 //                                                                          //
5 //  Class Power                                                             //
6 //  Joe Boudreau, Petar Maksimovic, Nov. 1999                               //
7 //                                                                          //
8 //  Power(x) returns x^n                                                    //
9 //--------------------------------------------------------------------------//
10 #ifndef Power_h
11 #define Power_h 1
12 #include "CLHEP/GenericFunctions/AbsFunction.hh"
13 namespace Genfun {
14 
15   /**
16    * @author
17    * @ingroup genfun
18    */
19   class Power : public AbsFunction  {
20 
21     FUNCTION_OBJECT_DEF(Power)
22 
23       public:
24 
25     // Constructor
26     Power(double n);
27     Power(int n);
28     Power(unsigned int n);
29 
30     // Copy constructor
31     Power(const Power &right);
32 
33     // Destructor
34     virtual ~Power();
35 
36     // Retrieve function value
37 
38     virtual double operator ()(double argument) const override;
operator ()(const Argument & a) const39     virtual double operator ()(const Argument & a) const override {return operator() (a[0]);}
40 
41     // Derivative.
42     Derivative partial (unsigned int) const override;
43 
44     // Does this function have an analytic derivative?
hasAnalyticDerivative() const45     virtual bool hasAnalyticDerivative() const override {return true;}
46 
47   private:
48 
49     // It is illegal to assign a fixed constant
50     const Power & operator=(const Power &right);
51 
52     double _doublePower; // power (as a double)
53     int    _intPower;    // power (as an integer)
54     bool   _asInteger;   // flag:  object constructed with integer argument
55 
56   };
57 } // namespace Genfun
58 #endif
59