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

AbsParameter.hh

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 // $Id: AbsParameter.hh,v 1.2 2003/09/06 14:04:13 boudreau Exp $
00003 #ifndef _AbsParameter_h_
00004 #define _AbsParameter_h_
00005 
00006 namespace Genfun {
00007   class Parameter;
00008   class ParameterSum;
00009   class ParameterDifference;
00010   class ParameterProduct;
00011   class ParameterQuotient;
00012   class ParameterNegation;
00013   class ConstPlusParameter;
00014   class ConstMinusParameter;
00015   class ConstTimesParameter;
00016   class ConstOverParameter;
00017 
00022   class AbsParameter {
00023     
00024   public:
00025     
00026     // Default Constructor
00027     AbsParameter();
00028     
00029     // Copy constructor:
00030     AbsParameter(const AbsParameter &);
00031 
00032     // Destructor
00033     virtual ~AbsParameter();
00034   
00035     // Parameter value
00036     virtual double getValue()  const=0;   
00037 
00038     // Every parameter must override this:
00039     AbsParameter * clone() const;
00040 
00041     // Extra lingual type information:
00042     virtual Parameter *parameter() {return 0;}
00043     virtual const Parameter *parameter() const {return 0;}
00044 
00045   private:
00046 
00047     // Cannot assign an AbsParameter:
00048     AbsParameter & operator= (const AbsParameter &);
00049 
00050     virtual AbsParameter *_clone() const=0;
00051 
00052   };
00053 
00054 // Now for some additional operations:
00055 
00056 
00057 ConstTimesParameter               operator * (double c, const AbsParameter &op2);
00058 ConstPlusParameter                operator + (double c, const AbsParameter &op2);
00059 ConstMinusParameter               operator - (double c, const AbsParameter &op2);
00060 ConstOverParameter                operator / (double c, const AbsParameter &op2);
00061 
00062 ConstTimesParameter               operator * (const AbsParameter &op2, double c);
00063 ConstPlusParameter                operator + (const AbsParameter &op2, double c);
00064 ConstPlusParameter                operator - (const AbsParameter &op2, double c);
00065 ConstTimesParameter               operator / (const AbsParameter &op2, double c);
00066 
00067 
00068 ParameterProduct                  operator * (const AbsParameter &op1, const AbsParameter &op2);
00069 ParameterSum                      operator + (const AbsParameter &op1, const AbsParameter &op2);
00070 ParameterDifference               operator - (const AbsParameter &op1, const AbsParameter &op2);
00071 ParameterQuotient                 operator / (const AbsParameter &op1, const AbsParameter &op2);
00072 ParameterNegation                 operator - (const AbsParameter &op1);
00073 
00074 typedef const AbsParameter & GENPARAMETER;
00075 
00076 } // namespace Genfun   
00077 
00078 // Poor man's covariant return type:
00079 #define PARAMETER_OBJECT_DEF(classname)              \
00080 public:                                              \
00081   classname *clone() const;                          \
00082 private:                                             \
00083   virtual AbsParameter* _clone() const;
00084 
00085 // Poor man's covariant return type:  
00086 #define PARAMETER_OBJECT_IMP(classname)              \
00087 classname *classname::clone () const {               \
00088   return (classname *) _clone();                     \
00089 }                                                    \
00090 AbsParameter *classname::_clone () const {           \
00091   return new classname(*this);                       \
00092 }
00093 
00094 
00095 #include "CLHEP/GenericFunctions/ParameterProduct.hh"
00096 #include "CLHEP/GenericFunctions/ParameterSum.hh"
00097 #include "CLHEP/GenericFunctions/ParameterDifference.hh"
00098 #include "CLHEP/GenericFunctions/ParameterQuotient.hh"
00099 #include "CLHEP/GenericFunctions/ParameterNegation.hh"
00100 #include "CLHEP/GenericFunctions/ConstPlusParameter.hh"
00101 #include "CLHEP/GenericFunctions/ConstMinusParameter.hh"
00102 #include "CLHEP/GenericFunctions/ConstTimesParameter.hh"
00103 #include "CLHEP/GenericFunctions/ConstOverParameter.hh"
00104 
00105 #endif

Generated on 15 Nov 2012 for CLHEP by  doxygen 1.4.7