1 #ifndef NPSTAT_MULTIVARIATEFUNCTORSCANNER_HH_
2 #define NPSTAT_MULTIVARIATEFUNCTORSCANNER_HH_
26 template<
class IndexMapper>
41 const std::vector<IndexMapper>& maps)
42 : fcn_(fcn), mapping_(maps), buf_(fcn.minDim()), dim_(fcn.minDim())
44 if (!(dim_ && dim_ == maps.size()))
throw std::invalid_argument(
45 "In npstat::MultivariateFunctorScanner constructor: "
46 "incompatible arguments");
47 if (dim_ != fcn.
maxDim())
throw std::invalid_argument(
48 "In npstat::MultivariateFunctorScanner constructor: "
49 "functors of variable dimensionality are not supported");
54 const unsigned* index,
const unsigned indexLen)
const
56 if (dim_ != indexLen)
throw std::invalid_argument(
57 "In npstat::MultivariateFunctorScanner::operator(): "
58 "incompatible input point dimensionality");
61 for (
unsigned i=0; i<dim_; ++i)
62 x[i] = mapping_[i](index[i]);
70 const std::vector<IndexMapper>& mapping_;
71 mutable std::vector<double> buf_;
Interface definition for multidimensional functors.
Definition: MultivariateFunctorScanner.hh:28
double operator()(const unsigned *index, const unsigned indexLen) const
Definition: MultivariateFunctorScanner.hh:53
MultivariateFunctorScanner(const AbsMultivariateFunctor &fcn, const std::vector< IndexMapper > &maps)
Definition: MultivariateFunctorScanner.hh:40
Definition: AbsArrayProjector.hh:14
Definition: AbsMultivariateFunctor.hh:19
virtual unsigned maxDim() const
Definition: AbsMultivariateFunctor.hh:32