00001 #ifndef PhysicsTools_MVAComputer_Spline_h
00002 #define PhysicsTools_MVAComputer_Spline_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 namespace PhysicsTools {
00016
00026 class Spline {
00027 public:
00028 Spline();
00029 Spline(const Spline &orig);
00030
00032 Spline(unsigned int n, const double *vals);
00033 ~Spline();
00034
00035 Spline &operator = (const Spline &orig);
00036
00038 void set(unsigned int n, const double *vals);
00039
00041 double eval(double x) const;
00042
00044 double integral(double x) const;
00045
00047 double getArea() const { return area; }
00048
00050 inline unsigned int numberOfEntries() const { return n + 1; }
00051
00052 private:
00054 struct Segment {
00055 double coeffs[4];
00056 double area;
00057
00058 double eval(double x) const;
00059 double integral(double x) const;
00060 };
00061
00062 unsigned int n;
00063 Segment *segments;
00064 double area;
00065 };
00066
00067 }
00068
00069 #endif // PhysicsTools_MVAComputer_Spline_h