CLHEP 2.0.4.7 Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
00001 // -*- C++ -*- 00002 // $Id: FunctionQuotient.cc,v 1.3 2003/09/06 14:04:14 boudreau Exp $ 00003 #include "CLHEP/GenericFunctions/FunctionQuotient.hh" 00004 #include <assert.h> 00005 00006 namespace Genfun { 00007 FUNCTION_OBJECT_IMP(FunctionQuotient) 00008 00009 FunctionQuotient::FunctionQuotient(const AbsFunction *arg1, const AbsFunction *arg2): 00010 _arg1(arg1->clone()), 00011 _arg2(arg2->clone()) 00012 { 00013 if (arg1->dimensionality()!=arg2->dimensionality()) { 00014 std::cout 00015 << "Warning: dimension mismatch in function quotient" 00016 << std::endl; 00017 assert(0); 00018 } 00019 } 00020 00021 FunctionQuotient::FunctionQuotient( const FunctionQuotient & right) : 00022 _arg1(right._arg1->clone()), 00023 _arg2(right._arg2->clone()) 00024 {} 00025 FunctionQuotient::~FunctionQuotient() 00026 { 00027 delete _arg1; 00028 delete _arg2; 00029 } 00030 00031 unsigned int FunctionQuotient::dimensionality() const { 00032 return _arg1->dimensionality(); 00033 } 00034 00035 00036 double FunctionQuotient::operator ()(double x) const 00037 { 00038 return (*_arg1)(x)/(*_arg2)(x); 00039 } 00040 00041 double FunctionQuotient::operator ()(const Argument & x) const 00042 { 00043 return (*_arg1)(x)/(*_arg2)(x); 00044 } 00045 00046 00047 Derivative FunctionQuotient::partial(unsigned int index) const { 00048 const AbsFunction & fPrime = 00049 ((_arg1->partial(index))*(*_arg2)-(*_arg1)*(_arg2->partial(index))) / 00050 (*_arg2)/ (*_arg2); 00051 return Derivative(&fPrime); 00052 } 00053 00054 } // namespace Genfun