npstat is hosted by Hepforge, IPPP Durham
NPStat  5.10.0
AbsPolyFilter1D.hh
Go to the documentation of this file.
1 #ifndef NPSTAT_ABSPOLYFILTER1D_HH_
2 #define NPSTAT_ABSPOLYFILTER1D_HH_
3 
4 /*!
5 // \file AbsPolyFilter1D.hh
6 //
7 // \brief Interface definition for 1-d smoothers useable with cross-validation
8 //
9 // Author: I. Volobouev
10 //
11 // September 2010
12 */
13 
14 #include <vector>
15 #include <cassert>
16 
17 namespace npstat {
18  /**
19  // Base class for LOrPE, etc. smoothers which can be later used with
20  // cross-validation algorithms. These algorithms usually work according
21  // to the "leaving-one-out" method, in which the contribution of one
22  // point into the density estimate must be subtracted. Therefore, this
23  // contribution must be known to begin with, and this is precisely the
24  // info this class is intended to convey.
25  */
27  {
28  inline virtual ~AbsPolyFilter1D() {}
29 
30  /** Length of the data array */
31  virtual unsigned dataLen() const = 0;
32 
33  /**
34  // Contribution of a single point into the density estimate
35  // at that point (not normalized). This is needed for various
36  // leaving-one-out cross-validation procedures.
37  */
38  virtual double selfContribution(unsigned index) const = 0;
39  };
40 
42  {
43  public:
44  inline ContribConstant1D(const double contrib, const unsigned n)
45  : selfContrib_(contrib), len_(n) {}
46 
47  inline virtual ~ContribConstant1D() {}
48 
49  virtual unsigned dataLen() const {return len_;}
50  virtual double selfContribution(unsigned /* index */) const
51  {return selfContrib_;}
52 
53  private:
54  double selfContrib_;
55  unsigned len_;
56  };
57 
59  {
60  public:
61  inline ContribVector1D(const double* contrib, unsigned len)
62  : selfContrib_(contrib, contrib+len) {assert(contrib);}
63 
64  inline virtual ~ContribVector1D() {}
65 
66  virtual unsigned dataLen() const {return selfContrib_.size();}
67  virtual double selfContribution(const unsigned index) const
68  {return selfContrib_.at(index);}
69 
70  private:
71  std::vector<double> selfContrib_;
72  };
73 }
74 
75 #endif // NPSTAT_ABSPOLYFILTER1D_HH_
Definition: AbsPolyFilter1D.hh:42
virtual double selfContribution(unsigned) const
Definition: AbsPolyFilter1D.hh:50
virtual unsigned dataLen() const
Definition: AbsPolyFilter1D.hh:49
Definition: AbsPolyFilter1D.hh:59
virtual unsigned dataLen() const
Definition: AbsPolyFilter1D.hh:66
virtual double selfContribution(const unsigned index) const
Definition: AbsPolyFilter1D.hh:67
Definition: AbsArrayProjector.hh:14
Definition: AbsPolyFilter1D.hh:27
virtual double selfContribution(unsigned index) const =0
virtual unsigned dataLen() const =0