CLHEP VERSION 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.4 2007/01/21 20:20:41 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 "CLHEP/GenericFunctions/ParameterComposition.hh"
00021 #include <assert.h>
00022 namespace Genfun {
00023 AbsFunction::AbsFunction() {
00024 }
00025 
00026 AbsFunction::~AbsFunction() {
00027 }
00028 
00029 AbsFunction::AbsFunction(const AbsFunction &) {
00030 }
00031 
00032 FunctionComposition AbsFunction::operator () (const AbsFunction &function) const {
00033   return FunctionComposition(this, &function);
00034 }
00035 
00036 ParameterComposition AbsFunction::operator() (const AbsParameter &p) const {
00037   return ParameterComposition(this, &p);
00038 }
00039 
00040 Derivative AbsFunction::partial(unsigned int index) const {
00041   FunctionNumDeriv fPrime(this,index);
00042   return Derivative(&fPrime);
00043 }
00044 
00045 
00046 Derivative AbsFunction::derivative(const Variable &v) const {
00047   return partial(v.index());
00048 }
00049 
00050 Derivative AbsFunction::prime() const {
00051   assert(dimensionality()==1);
00052   return partial(0);
00053 }
00054 
00055 FunctionSum operator + (const AbsFunction & a, const AbsFunction & b) {
00056   return FunctionSum(&a,&b);
00057 }
00058 
00059 FunctionDifference operator - (const AbsFunction & a, const AbsFunction & b) {
00060   return FunctionDifference(&a,&b);
00061 }
00062 
00063 FunctionProduct operator * (const AbsFunction & a, const AbsFunction & b) {
00064   return FunctionProduct(&a,&b);
00065 }
00066 
00067 FunctionQuotient operator / (const AbsFunction & a, const AbsFunction & b) {
00068   return FunctionQuotient(&a,&b);
00069 }
00070 
00071 FunctionConvolution convolve (const AbsFunction & a, const AbsFunction & b, double x0, double x1) {
00072   return FunctionConvolution(&a,&b, x0, x1);
00073 }
00074 
00075 FunctionNegation operator - (const AbsFunction & a) {
00076   return FunctionNegation(&a);
00077 }
00078 
00079 unsigned int AbsFunction::dimensionality() const {
00080   return 1;
00081 }
00082 
00083 FunctionDirectProduct operator % (const AbsFunction & a, const AbsFunction & b) {
00084   return FunctionDirectProduct(&a,&b);
00085 }
00086 
00087 ConstTimesFunction operator * (const AbsFunction &op2, double c) {
00088   return ConstTimesFunction(c, &op2);
00089 }
00090 
00091 ConstPlusFunction  operator + (const AbsFunction &op2, double c) {
00092   return ConstPlusFunction(c,&op2);
00093 }
00094 
00095 ConstPlusFunction  operator - (const AbsFunction &op2, double c) {
00096   return ConstPlusFunction(-c, &op2);
00097 }
00098 
00099 ConstTimesFunction operator / (const AbsFunction &op2, double c) {
00100   return ConstTimesFunction(1/c,&op2);
00101 }
00102 
00103 
00104 ConstTimesFunction           operator * (double c, const AbsFunction &op2) {
00105   return ConstTimesFunction(c,&op2);
00106 }
00107 
00108 ConstPlusFunction               operator + (double c, const AbsFunction &op2) {
00109   return ConstPlusFunction(c,&op2);
00110 }
00111 
00112 ConstMinusFunction        operator - (double c, const AbsFunction &op2) {
00113   return ConstMinusFunction(c,&op2);
00114 }
00115 
00116 ConstOverFunction          operator / (double c, const AbsFunction &op2) {
00117   return ConstOverFunction(c,&op2);
00118 }
00119 
00120 
00121 FunctionTimesParameter operator * (const AbsFunction &f, const AbsParameter & p) {
00122   return FunctionTimesParameter(&p, &f);
00123 }
00124 
00125 FunctionPlusParameter operator + (const AbsFunction &f, const AbsParameter & p) {
00126   return FunctionPlusParameter(&p, &f);
00127 }
00128 
00129 FunctionPlusParameter operator - (const AbsFunction &f, const AbsParameter & p) {
00130   GENPARAMETER MinusP = -p;
00131   return FunctionPlusParameter(&MinusP, &f);
00132   
00133 }
00134 
00135 FunctionTimesParameter operator / (const AbsFunction &f, const AbsParameter & p) {
00136   GENPARAMETER oneOverP = 1.0/p;
00137   return FunctionTimesParameter(&oneOverP, &f);
00138 }
00139 
00140 FunctionTimesParameter operator * (const AbsParameter & p, const AbsFunction &f) {
00141   return FunctionTimesParameter(&p, &f);
00142 }
00143 
00144 FunctionPlusParameter operator + (const AbsParameter & p, const AbsFunction &f) {
00145   return FunctionPlusParameter(&p, &f);
00146 }
00147 
00148 FunctionPlusParameter operator - (const AbsParameter & p, const AbsFunction &f) {
00149   GENFUNCTION MinusF = -f;
00150   return FunctionPlusParameter(&p, &MinusF);
00151 }
00152 
00153 FunctionTimesParameter operator / (const AbsParameter & p, const AbsFunction &f) {
00154   GENFUNCTION oneOverF = 1.0/f;
00155   return FunctionTimesParameter(&p, &oneOverF);
00156 }
00157 } // namespace Genfun

Generated on 15 Nov 2012 for CLHEP by  doxygen 1.4.7