npstat is hosted by Hepforge, IPPP Durham
NPStat  5.10.0
AbsMultivariateFunctor.hh
Go to the documentation of this file.
1 #ifndef NPSTAT_ABSMULTIVARIATEFUNCTOR_HH_
2 #define NPSTAT_ABSMULTIVARIATEFUNCTOR_HH_
3 
4 /*!
5 // \file AbsMultivariateFunctor.hh
6 //
7 // \brief Interface definition for multidimensional functors
8 //
9 // Author: I. Volobouev
10 //
11 // May 2010
12 */
13 
14 namespace npstat {
15  /**
16  // Base class for a variety of multivariate functor-based calculations
17  */
19  {
20  inline virtual ~AbsMultivariateFunctor() {}
21 
22  /** Function value */
23  virtual double operator()(const double* point, unsigned dim) const = 0;
24 
25  /** Minimum expected dimensionality */
26  virtual unsigned minDim() const = 0;
27 
28  /**
29  // Maximum expected dimensionality
30  // (will typically be equal to the minimum)
31  */
32  inline virtual unsigned maxDim() const {return minDim();}
33  };
34 
35  /**
36  // Concrete multivariate functor class suitable for template instantiation
37  */
39  {
40  public:
42  : ref_(ref) {}
43  inline virtual ~MultivariateFunctorRef() {}
44 
45  inline virtual double operator()(const double* point, unsigned dim) const
46  {return ref_(point, dim);}
47 
48  inline virtual unsigned minDim() const
49  {return ref_.minDim();}
50 
51  inline virtual unsigned maxDim() const
52  {return ref_.maxDim();}
53 
54  private:
55  const AbsMultivariateFunctor& ref_;
56  };
57 }
58 
59 #endif // NPSTAT_ABSMULTIVARIATEFUNCTOR_HH_
Definition: AbsMultivariateFunctor.hh:39
virtual unsigned maxDim() const
Definition: AbsMultivariateFunctor.hh:51
virtual double operator()(const double *point, unsigned dim) const
Definition: AbsMultivariateFunctor.hh:45
virtual unsigned minDim() const
Definition: AbsMultivariateFunctor.hh:48
Definition: AbsArrayProjector.hh:14
Definition: AbsMultivariateFunctor.hh:19
virtual double operator()(const double *point, unsigned dim) const =0
virtual unsigned maxDim() const
Definition: AbsMultivariateFunctor.hh:32
virtual unsigned minDim() const =0