CLHEP 2.0.4.7 Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

AbsFunction.cc

Go to the documentation of this file.
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

Generated on Thu Jul 1 22:02:30 2010 for CLHEP by  doxygen 1.4.7