CLHEP VERSION Reference Documentation
CLHEP Home Page CLHEP Documentation CLHEP Bug Reports |
00001 // -*- C++ -*- 00002 // $Id: FunctionConvolution.hh,v 1.2 2003/09/06 14:04:13 boudreau Exp $ 00003 //------------------------------FunctionConvolution-------------------------// 00004 // // 00005 // FunctionConvolution: output of the Convolve[f,g] operation // 00006 // // 00007 // Petar Maksimovic, Joe Boudreau, November 1999 // 00008 // // 00009 // Warning! This is not a very good convolution algorithm! Does anybody // 00010 // out there really know how to perform a reasonable numerical convolution // 00011 // ? Wanna help the Generic Functions Project? // 00012 // // 00013 //--------------------------------------------------------------------------// 00014 00015 #ifndef FunctionConvolution_h 00016 #define FunctionConvolution_h 1 00017 #include "CLHEP/GenericFunctions/AbsFunction.hh" 00018 00019 namespace Genfun { 00020 00025 class FunctionConvolution : public AbsFunction { 00026 00027 FUNCTION_OBJECT_DEF(FunctionConvolution) 00028 00029 public: 00030 00031 // Constructor 00032 FunctionConvolution(const AbsFunction *arg1, const AbsFunction *arg2, double x0, double x1); 00033 00034 // Copy Constructor 00035 FunctionConvolution(const FunctionConvolution &right); 00036 00037 // Destructor 00038 virtual ~FunctionConvolution(); 00039 00040 // Retrieve function value 00041 virtual double operator ()(double argument) const; 00042 virtual double operator ()(const Argument & a) const {return operator() (a[0]);} 00043 00044 private: 00045 00046 // It is illegal to assign a convolution 00047 const FunctionConvolution & operator=(const FunctionConvolution &right); 00048 00049 // Input functions to convolution 00050 const AbsFunction *_arg1; 00051 const AbsFunction *_arg2; 00052 double _x0; 00053 double _x1; 00054 00055 }; 00056 } // namespace Genfun 00057 #endif