--- /dev/null
+//--------------------------------------------------------------------------
+//
+//
+// Copyright Information: See EvtGen/COPYRIGHT
+//
+// Environment:
+// This software is part of the EvtGen package developed jointly
+// for the BaBar and CLEO collaborations. If you use all or part
+// of it, please give an appropriate acknowledgement.
+//
+// Module: EvtItgAbsFunction.hh
+//
+// Description:
+// Abstraction of a generic function for use in integration methods elsewhere
+// in this package. (Stolen and modified from the BaBar IntegrationUtils package
+// - author: Phil Strother).
+//
+// Modification history:
+//
+// Jane Tinslay March 21, 2001 Module adapted for use in
+// EvtGen
+//
+//------------------------------------------------------------------------
+
+#ifndef EVTITGABSFUNCTION_HH
+#define EVTITGABSFUNCTION_HH
+
+//-------------
+// C Headers --
+//-------------
+extern "C" {
+}
+
+class EvtItgAbsFunction {
+
+public:
+
+ // Constructors
+
+ EvtItgAbsFunction(double lowerRange, double upperRange);
+
+ // Destructor
+ virtual ~EvtItgAbsFunction( );
+
+ virtual double value( double x) const;
+
+ virtual double operator()(double x) const;
+
+ // Selectors (const)
+
+ inline double upperRange() const {return _upperRange;}
+ inline double lowerRange() const {return _lowerRange;}
+ inline void getRange(double &lower,double &upper) const { lower = _lowerRange; upper = _upperRange; }
+ virtual void setCoeff(int, int, double)=0;
+ virtual double getCoeff(int, int)=0;
+
+protected:
+
+ virtual double myFunction(double x) const=0;
+ void setRange(double x1,double x2) { _lowerRange=x1; _upperRange=x2; };
+
+private:
+
+ double _upperRange;
+ double _lowerRange;
+
+ EvtItgAbsFunction( const EvtItgAbsFunction& ); // Copy Constructor
+ EvtItgAbsFunction& operator= ( const EvtItgAbsFunction& ); // Assignment op
+
+};
+
+#endif // EVTITGABSFUNCTION_HH