CLHEP 2.0.4.7 Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
00001 // -*- C++ -*- 00002 // $Id: AbsFunction.cc,v 1.3 2003/09/06 14:04:14 boudreau Exp $ 00003 #include "CLHEP/GenericFunctions/AbsFunction.hh" 00004 #include "CLHEP/GenericFunctions/ConstTimesFunction.hh" 00005 #include "CLHEP/GenericFunctions/ConstOverFunction.hh" 00006 #include "CLHEP/GenericFunctions/ConstPlusFunction.hh" 00007 #include "CLHEP/GenericFunctions/ConstMinusFunction.hh" 00008 #include "CLHEP/GenericFunctions/FunctionSum.hh" 00009 #include "CLHEP/GenericFunctions/FunctionDifference.hh" 00010 #include "CLHEP/GenericFunctions/FunctionProduct.hh" 00011 #include "CLHEP/GenericFunctions/FunctionQuotient.hh" 00012 #include "CLHEP/GenericFunctions/FunctionConvolution.hh" 00013 #include "CLHEP/GenericFunctions/FunctionNegation.hh" 00014 #include "CLHEP/GenericFunctions/FunctionDirectProduct.hh" 00015 #include "CLHEP/GenericFunctions/FixedConstant.hh" 00016 #include "CLHEP/GenericFunctions/FloatingConstant.hh" 00017 #include "CLHEP/GenericFunctions/FunctionNumDeriv.hh" 00018 #include "CLHEP/GenericFunctions/Variable.hh" 00019 #include "CLHEP/GenericFunctions/FunctionNoop.hh" 00020 #include <assert.h> 00021 namespace Genfun { 00022 AbsFunction::AbsFunction() { 00023 } 00024 00025 AbsFunction::~AbsFunction() { 00026 } 00027 00028 AbsFunction *AbsFunction::clone() const { 00029 return _clone(); 00030 } 00031 00032 00033 FunctionComposition AbsFunction::operator () (const AbsFunction &function) const { 00034 return FunctionComposition(this, &function); 00035 } 00036 00037 Derivative AbsFunction::partial(unsigned int index) const { 00038 FunctionNumDeriv fPrime(this,index); 00039 return Derivative(&fPrime); 00040 } 00041 00042 00043 Derivative AbsFunction::derivative(const Variable &v) const { 00044 return partial(v.index()); 00045 } 00046 00047 Derivative AbsFunction::prime() const { 00048 assert(dimensionality()==1); 00049 return partial(0); 00050 } 00051 00052 FunctionSum operator + (const AbsFunction & a, const AbsFunction & b) { 00053 return FunctionSum(&a,&b); 00054 } 00055 00056 FunctionDifference operator - (const AbsFunction & a, const AbsFunction & b) { 00057 return FunctionDifference(&a,&b); 00058 } 00059 00060 FunctionProduct operator * (const AbsFunction & a, const AbsFunction & b) { 00061 return FunctionProduct(&a,&b); 00062 } 00063 00064 FunctionQuotient operator / (const AbsFunction & a, const AbsFunction & b) { 00065 return FunctionQuotient(&a,&b); 00066 } 00067 00068 FunctionConvolution convolve (const AbsFunction & a, const AbsFunction & b, double x0, double x1) { 00069 return FunctionConvolution(&a,&b, x0, x1); 00070 } 00071 00072 FunctionNegation operator - (const AbsFunction & a) { 00073 return FunctionNegation(&a); 00074 } 00075 00076 unsigned int AbsFunction::dimensionality() const { 00077 return 1; 00078 } 00079 00080 FunctionDirectProduct operator % (const AbsFunction & a, const AbsFunction & b) { 00081 return FunctionDirectProduct(&a,&b); 00082 } 00083 00084 ConstTimesFunction operator * (const AbsFunction &op2, double c) { 00085 return ConstTimesFunction(c, &op2); 00086 } 00087 00088 ConstPlusFunction operator + (const AbsFunction &op2, double c) { 00089 return ConstPlusFunction(c,&op2); 00090 } 00091 00092 ConstPlusFunction operator - (const AbsFunction &op2, double c) { 00093 return ConstPlusFunction(-c, &op2); 00094 } 00095 00096 ConstTimesFunction operator / (const AbsFunction &op2, double c) { 00097 return ConstTimesFunction(1/c,&op2); 00098 } 00099 00100 00101 ConstTimesFunction operator * (double c, const AbsFunction &op2) { 00102 return ConstTimesFunction(c,&op2); 00103 } 00104 00105 ConstPlusFunction operator + (double c, const AbsFunction &op2) { 00106 return ConstPlusFunction(c,&op2); 00107 } 00108 00109 ConstMinusFunction operator - (double c, const AbsFunction &op2) { 00110 return ConstMinusFunction(c,&op2); 00111 } 00112 00113 ConstOverFunction operator / (double c, const AbsFunction &op2) { 00114 return ConstOverFunction(c,&op2); 00115 } 00116 00117 00118 FunctionTimesParameter operator * (const AbsFunction &f, const AbsParameter & p) { 00119 return FunctionTimesParameter(&p, &f); 00120 } 00121 00122 FunctionPlusParameter operator + (const AbsFunction &f, const AbsParameter & p) { 00123 return FunctionPlusParameter(&p, &f); 00124 } 00125 00126 FunctionPlusParameter operator - (const AbsFunction &f, const AbsParameter & p) { 00127 GENPARAMETER MinusP = -p; 00128 return FunctionPlusParameter(&MinusP, &f); 00129 00130 } 00131 00132 FunctionTimesParameter operator / (const AbsFunction &f, const AbsParameter & p) { 00133 GENPARAMETER oneOverP = 1.0/p; 00134 return FunctionTimesParameter(&oneOverP, &f); 00135 } 00136 00137 FunctionTimesParameter operator * (const AbsParameter & p, const AbsFunction &f) { 00138 return FunctionTimesParameter(&p, &f); 00139 } 00140 00141 FunctionPlusParameter operator + (const AbsParameter & p, const AbsFunction &f) { 00142 return FunctionPlusParameter(&p, &f); 00143 } 00144 00145 FunctionPlusParameter operator - (const AbsParameter & p, const AbsFunction &f) { 00146 GENFUNCTION MinusF = -f; 00147 return FunctionPlusParameter(&p, &MinusF); 00148 } 00149 00150 FunctionTimesParameter operator / (const AbsParameter & p, const AbsFunction &f) { 00151 GENFUNCTION oneOverF = 1.0/f; 00152 return FunctionTimesParameter(&p, &oneOverF); 00153 } 00154 } // namespace Genfun