CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

GenericFunctions/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 
6 namespace Genfun {
7  class Parameter;
8  class ParameterSum;
9  class ParameterDifference;
10  class ParameterProduct;
11  class ParameterQuotient;
12  class ParameterNegation;
13  class ConstPlusParameter;
14  class ConstMinusParameter;
15  class ConstTimesParameter;
16  class ConstOverParameter;
17 
22  class AbsParameter {
23 
24  public:
25 
26  // Default Constructor
27  AbsParameter();
28 
29  // Copy constructor:
30  AbsParameter(const AbsParameter &);
31 
32  // Destructor
33  virtual ~AbsParameter();
34 
35  // Parameter value
36  virtual double getValue() const=0;
37 
38  // Every parameter must override this:
39  AbsParameter * clone() const;
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 
57 ConstTimesParameter operator * (double c, const AbsParameter &op2);
58 ConstPlusParameter operator + (double c, const AbsParameter &op2);
59 ConstMinusParameter operator - (double c, const AbsParameter &op2);
60 ConstOverParameter operator / (double c, const AbsParameter &op2);
61 
62 ConstTimesParameter operator * (const AbsParameter &op2, double c);
63 ConstPlusParameter operator + (const AbsParameter &op2, double c);
64 ConstPlusParameter operator - (const AbsParameter &op2, double c);
65 ConstTimesParameter operator / (const AbsParameter &op2, double c);
66 
67 
68 ParameterProduct operator * (const AbsParameter &op1, const AbsParameter &op2);
69 ParameterSum operator + (const AbsParameter &op1, const AbsParameter &op2);
70 ParameterDifference operator - (const AbsParameter &op1, const AbsParameter &op2);
71 ParameterQuotient operator / (const AbsParameter &op1, const AbsParameter &op2);
72 ParameterNegation operator - (const AbsParameter &op1);
73 
74 typedef const AbsParameter & GENPARAMETER;
75 
76 } // namespace Genfun
77 
78 // Poor man's covariant return type:
79 #define PARAMETER_OBJECT_DEF(classname) \
80 public: \
81  classname *clone() const; \
82 private: \
83  virtual AbsParameter* _clone() const;
84 
85 // Poor man's covariant return type:
86 #define PARAMETER_OBJECT_IMP(classname) \
87 classname *classname::clone () const { \
88  return (classname *) _clone(); \
89 } \
90 AbsParameter *classname::_clone () const { \
91  return new classname(*this); \
92 }
93 
94 
104 
105 #endif
Genfun::AbsParameter::parameter
virtual const Parameter * parameter() const
Definition: GenericFunctions/AbsParameter.hh:43
ParameterSum.hh
ConstOverParameter.hh
ConstPlusParameter.hh
Genfun::AbsParameter::getValue
virtual double getValue() const =0
Genfun::AbsParameter::clone
AbsParameter * clone() const
Definition: AbsParameter.cc:17
ParameterDifference.hh
ParameterNegation.hh
Genfun::operator*
FunctionProduct operator*(const AbsFunction &op1, const AbsFunction &op2)
Definition: AbsFunction.cc:63
Genfun::GENPARAMETER
const typedef AbsParameter & GENPARAMETER
Definition: CLHEP/GenericFunctions/AbsParameter.hh:74
Genfun::AbsParameter
Definition: CLHEP/GenericFunctions/AbsParameter.hh:22
ConstTimesParameter.hh
Genfun::operator+
FunctionSum operator+(const AbsFunction &op1, const AbsFunction &op2)
Definition: AbsFunction.cc:55
ParameterProduct.hh
Genfun::operator-
FunctionDifference operator-(const AbsFunction &op1, const AbsFunction &op2)
Definition: AbsFunction.cc:59
Genfun::AbsParameter::AbsParameter
AbsParameter()
Definition: AbsParameter.cc:8
Genfun::operator/
FunctionQuotient operator/(const AbsFunction &op1, const AbsFunction &op2)
Definition: AbsFunction.cc:67
Genfun::Parameter
Definition: CLHEP/GenericFunctions/Parameter.hh:35
Genfun::AbsParameter::~AbsParameter
virtual ~AbsParameter()
Definition: AbsParameter.cc:11
ConstMinusParameter.hh
ParameterQuotient.hh
Genfun::AbsParameter::parameter
virtual Parameter * parameter()
Definition: GenericFunctions/AbsParameter.hh:42
Genfun
Definition: CLHEP/GenericFunctions/Abs.hh:14