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

FunctionProduct.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 // $Id: FunctionProduct.cc,v 1.3 2003/09/06 14:04:14 boudreau Exp $
00003 #include "CLHEP/GenericFunctions/FunctionProduct.hh"
00004 #include <assert.h>
00005 
00006 namespace Genfun {
00007 FUNCTION_OBJECT_IMP(FunctionProduct)
00008 
00009 FunctionProduct::FunctionProduct(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 product"
00016       << std::endl;
00017     assert(0);
00018   }
00019 }
00020 
00021 FunctionProduct::FunctionProduct(const FunctionProduct & right) :
00022   _arg1(right._arg1->clone()),
00023   _arg2(right._arg2->clone())
00024 {
00025 }
00026 
00027 FunctionProduct::~FunctionProduct()
00028 {
00029   delete _arg1;
00030   delete _arg2;
00031 }
00032 
00033 
00034 unsigned int FunctionProduct::dimensionality() const {
00035   return _arg1->dimensionality();
00036 }
00037 
00038 double FunctionProduct::operator ()(double x) const
00039 {
00040   return (*_arg1)(x)*(*_arg2)(x);
00041 }
00042 
00043 double FunctionProduct::operator ()(const Argument & x) const
00044 {
00045   return (*_arg1)(x)*(*_arg2)(x);
00046 }
00047 
00048 Derivative FunctionProduct::partial(unsigned int index) const {
00049   const AbsFunction & fPrime = 
00050     (*_arg1)*(_arg2->partial(index)) + (_arg1->partial(index))*(*_arg2);
00051   return Derivative(&fPrime);
00052 }
00053 
00054 } // namespace Genfun

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