CLHEP 2.4.7.1
C++ Class Library for High Energy Physics
AbsParameter.hh
Go to the documentation of this file.
1// -*- C++ -*-
2// $Id: AbsParameter.hh,v 1.2 2003/09/06 14:04:13 boudreau Exp $
3#ifndef _AbsParameter_h_
4#define _AbsParameter_h_
5
6namespace Genfun {
7 class Parameter;
8 class ParameterSum;
10 class ParameterProduct;
17
23
24 public:
25
26 // Default Constructor
28
29 // Copy constructor:
31
32 // Destructor
33 virtual ~AbsParameter();
34
35 // Parameter value
36 virtual double getValue() const=0;
37
38 // Every parameter must override this:
40
41 // Extra lingual type information:
42 virtual Parameter *parameter() {return 0;}
43 virtual const Parameter *parameter() const {return 0;}
44
45 private:
46
47 // Cannot assign an AbsParameter:
48 AbsParameter & operator= (const AbsParameter &);
49
50 virtual AbsParameter *_clone() const=0;
51
52 };
53
54// Now for some additional operations:
55
56
61
66
67
73
74typedef const AbsParameter & GENPARAMETER;
75
76} // namespace Genfun
77
78// Poor man's covariant return type:
79#define PARAMETER_OBJECT_DEF(classname) \
80public: \
81 classname *clone() const; \
82private: \
83 virtual AbsParameter* _clone() const;
84
85// Poor man's covariant return type:
86#define PARAMETER_OBJECT_IMP(classname) \
87classname *classname::clone () const { \
88 return (classname *) _clone(); \
89} \
90AbsParameter *classname::_clone () const { \
91 return new classname(*this); \
92}
93
94
104
105#endif
virtual double getValue() const =0
virtual const Parameter * parameter() const
AbsParameter(const AbsParameter &)
AbsParameter * clone() const
virtual Parameter * parameter()
Definition Abs.hh:14
FunctionQuotient operator/(const AbsFunction &op1, const AbsFunction &op2)
FunctionSum operator+(const AbsFunction &op1, const AbsFunction &op2)
FunctionProduct operator*(const AbsFunction &op1, const AbsFunction &op2)
const AbsParameter & GENPARAMETER
FunctionDifference operator-(const AbsFunction &op1, const AbsFunction &op2)