00001 //-------------------------------------------------------------------------- 00002 // 00003 // 00004 // Copyright Information: See EvtGen/COPYRIGHT 00005 // 00006 // Environment: 00007 // This software is part of the EvtGen package developed jointly 00008 // for the BaBar and CLEO collaborations. If you use all or part 00009 // of it, please give an appropriate acknowledgement. 00010 // 00011 // Module: EvtItgAbsFunction.hh 00012 // 00013 // Description: 00014 // Abstraction of a generic function for use in integration methods elsewhere 00015 // in this package. (Stolen and modified from the BaBar IntegrationUtils package 00016 // - author: Phil Strother). 00017 // 00018 // Modification history: 00019 // 00020 // Jane Tinslay March 21, 2001 Module adapted for use in 00021 // EvtGen 00022 // 00023 //------------------------------------------------------------------------ 00024 00025 #ifndef EVTITGABSFUNCTION_HH 00026 #define EVTITGABSFUNCTION_HH 00027 00028 //------------- 00029 // C Headers -- 00030 //------------- 00031 extern "C" { 00032 } 00033 00034 class EvtItgAbsFunction { 00035 00036 public: 00037 00038 // Constructors 00039 00040 EvtItgAbsFunction(double lowerRange, double upperRange); 00041 00042 // Destructor 00043 virtual ~EvtItgAbsFunction( ); 00044 00045 virtual double value( double x) const; 00046 00047 virtual double operator()(double x) const; 00048 00049 // Selectors (const) 00050 00051 inline double upperRange() const {return _upperRange;} 00052 inline double lowerRange() const {return _lowerRange;} 00053 inline void getRange(double &lower,double &upper) const { lower = _lowerRange; upper = _upperRange; } 00054 virtual void setCoeff(int, int, double)=0; 00055 virtual double getCoeff(int, int)=0; 00056 00057 protected: 00058 00059 virtual double myFunction(double x) const=0; 00060 void setRange(double x1,double x2) { _lowerRange=x1; _upperRange=x2; }; 00061 00062 private: 00063 00064 double _upperRange; 00065 double _lowerRange; 00066 00067 EvtItgAbsFunction( const EvtItgAbsFunction& ); // Copy Constructor 00068 EvtItgAbsFunction& operator= ( const EvtItgAbsFunction& ); // Assignment op 00069 00070 }; 00071 00072 #endif // EVTITGABSFUNCTION_HH