yoda is hosted by Hepforge, IPPP Durham
YODA - Yet more Objects for Data Analysis 2.1.0
YODA::ScatterND< N > Class Template Reference

A generic data type which is just a collection of n-dim data points with errors. More...

#include <Scatter.h>

Inheritance diagram for YODA::ScatterND< N >:
YODA::AnalysisObject YODA::Scatter

Public Types

using NdVal = Utils::ndarray< double, N >
 
using NdValPair = Utils::ndarray< std::pair< double, double >, N >
 
using Point = PointND< N >
 
using Points = std::vector< Point >
 
using Ptr = std::shared_ptr< ScatterND >
 
- Public Types inherited from YODA::AnalysisObject
typedef std::map< std::string, std::string > Annotations
 Collection type for annotations, as a string-string map.
 

Public Member Functions

size_t dim () const noexcept
 Dimension of this data object.
 
Constructors
 ScatterND (const std::string &path="", const std::string &title="")
 Empty constructor.
 
 ScatterND (const Points &points, const std::string &path="", const std::string &title="")
 Constructor from a set of points.
 
 ScatterND (Points &&points, const std::string &path="", const std::string &title="")
 Constructor from a set of rvalue points.
 
template<typename ValRange = std::initializer_list<ValList>, typename = std::enable_if_t<isIterable<ValRange, containedType<ValRange>>>>
 ScatterND (ValRange &&positions, const std::string &path="", const std::string &title="")
 Constructor from a vector of position values with no errors.
 
template<typename ValRange = std::initializer_list<ValList>, typename = std::enable_if_t<isIterable<ValRange, containedType<ValRange>>>>
 ScatterND (ValRange &&positions, ValRange &&errors, const std::string &path="", const std::string &title="")
 Constructor from vectors of values for positions and a single set of symmetric errors.
 
template<typename ValRange = std::initializer_list<ValList>, typename PairRange = std::initializer_list<PairList>, typename = enableIfNestedArrayWithPair<ValRange,PairRange>>
 ScatterND (ValRange &&positions, PairRange &&errors, const std::string &path="", const std::string &title="")
 Constructor from vectors of values for positions and a single set of symmetric errors.
 
 ScatterND (const ScatterND< N > &s, const std::string &path="")
 Copy constructor with optional new path.
 
 ScatterND (ScatterND< N > &&s, const std::string &path="")
 Move constructor with optional new path.
 
ScatterND< N > & operator= (const ScatterND< N > &s)
 Assignment operator.
 
ScatterND< N > & operator= (ScatterND< N > &&s)
 Move operator.
 
ScatterND< N > clone () const
 Make a copy on the stack.
 
ScatterND< N > * newclone () const
 Make a copy on the heap, via 'new'.
 
Modifiers
void reset ()
 Clear all points.
 
void scale (const NdVal &scales)
 Scaling.
 
void scale (const std::vector< double > &scales)
 
void scale (const size_t i, double factor)
 Scale value and error along direction i.
 
void scaleVal (const size_t i, double factor)
 Scale value along direction i.
 
void scaleErr (const size_t i, double factor)
 Scale error along direction i.
 
Point accessors
size_t numPoints () const
 Number of points in the scatter.
 
Pointspoints ()
 Get the collection of points.
 
const Pointspoints () const
 Get the collection of points (const version)
 
PointND< N > & point (size_t index)
 Get a reference to the point with index index.
 
const PointND< N > & point (size_t index) const
 Get the point with index index (const version)
 
MPI (de-)serialisation
size_t lengthContent (bool fixed_length=false) const noexcept
 Length of serialized content vector for MPI reduce operations.
 
std::vector< double > serializeContent (bool fixed_length=false) const noexcept
 Content serialisation for MPI reduce operations.
 
void deserializeContent (const std::vector< double > &data)
 Content deserialisation for MPI reduce operations.
 
Combining sets of scatter points
ScatterND< N > & combineWith (const ScatterND< N > &other)
 
ScatterND< N > & combineWith (ScatterND< N > &&other)
 
ScatterND< N > & combineWith (const std::vector< ScatterND< N > > &others)
 
ScatterND< N > & combineWith (std::vector< ScatterND< N > > &&others)
 
Coordinate accessors
ValVec vals (const size_t i) const
 Get the coordinate vector along axis i.
 
ValVec mins (const size_t i) const
 Get the lowest value vector along axis i.
 
ValVec maxs (const size_t i) const
 Get the positive error vector along axis i.
 
double min (const size_t i) const
 Get the smallest central value along axis i.
 
double max (const size_t i) const
 Get the largest central value along axis i.
 
PairVec errs (const size_t i) const
 Get the error pairs along axis i.
 
ValVec errAvgs (const size_t i) const
 Get the average error along axis i.
 
ValVec xVals () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
ValVec yVals () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
ValVec zVals () const
 Axis-specific alias.
 
ValVec xMins () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
ValVec yMins () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
ValVec zMins () const
 Axis-specific alias.
 
ValVec xMaxs () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
ValVec yMaxs () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
ValVec zMaxs () const
 Axis-specific alias.
 
double xMin () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
double yMin () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
double zMin () const
 Axis-specific alias.
 
double xMax () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
double yMax () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
double zMax () const
 Axis-specific alias.
 
PairVec xErrs () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
PairVec yErrs () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
PairVec zErrs () const
 Axis-specific alias.
 
ValVec xErrAvgs () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
ValVec yErrAvgs () const
 Axis-specific alias.
 
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
ValVec zErrAvgs () const
 Axis-specific alias.
 
Utilities
std::vector< Pairedges (const size_t i) const
 
- Public Member Functions inherited from YODA::AnalysisObject
 AnalysisObject ()
 Default constructor.
 
 AnalysisObject (const std::string &type, const std::string &path, const std::string &title="")
 Constructor giving a type, a path and an optional title.
 
 AnalysisObject (const std::string &type, const std::string &path, const AnalysisObject &ao, const std::string &title="")
 Constructor giving a type, a path, another AO to copy annotation from, and an optional title.
 
virtual ~AnalysisObject ()
 Default destructor.
 
virtual AnalysisObjectoperator= (const AnalysisObject &ao) noexcept
 Default copy assignment operator.
 
std::vector< std::string > annotations () const
 
bool hasAnnotation (const std::string &name) const
 Check if an annotation is defined.
 
const std::string & annotation (const std::string &name) const
 Get an annotation by name (as a string)
 
const std::string & annotation (const std::string &name, const std::string &defaultreturn) const
 Get an annotation by name (as a string) with a default in case the annotation is not found.
 
template<typename T >
const T annotation (const std::string &name) const
 Get an annotation by name (copied to another type)
 
template<typename T >
const T annotation (const std::string &name, const T &defaultreturn) const
 Get an annotation by name (copied to another type) with a default in case the annotation is not found.
 
template<typename T >
void setAnnotation (const std::string &name, const T &value)
 Add or set an annotation by name (templated for remaining types)
 
void setAnnotations (const Annotations &anns)
 Set all annotations at once.
 
template<typename T >
void addAnnotation (const std::string &name, const T &value)
 Add or set an annotation by name.
 
void rmAnnotation (const std::string &name)
 Delete an annotation by name.
 
void clearAnnotations ()
 Delete an annotation by name.
 
const std::string title () const
 Get the AO title.
 
void setTitle (const std::string &title)
 Set the AO title.
 
const std::string path () const
 Get the AO path.
 
void setPath (const std::string &path)
 
const std::string name () const
 
virtual std::string type () const
 Get name of the analysis object type.
 
virtual AnalysisObjectmkInert (const std::string &path="", const std::string &source="") const noexcept
 Return an inert version of the analysis object (e.g. scatter, estimate)
 
size_t lengthMeta (const bool skipPath=true, const bool skipTitle=true) const noexcept
 Length of serialized meta-data vector for MPI reduce operations.
 
std::vector< std::string > serializeMeta (const bool skipPath=true, const bool skipTitle=true) const noexcept
 Meta-data serialisation for MPI reduce operations.
 
virtual void deserializeMeta (const std::vector< std::string > &data, const bool resetPath=false, const bool resetTitle=false)
 Mate-data deserialisation for MPI reduce operations.
 
- Public Member Functions inherited from YODA::Scatter
virtual ~Scatter ()
 Virtual destructor for inheritance.
 
virtual void rmPoints (std::vector< size_t > indices)
 Safely remove the points with indices indices.
 

Protected Types

using Pair = std::pair< double, double >
 
using ValVec = std::vector< double >
 
using PairVec = std::vector< Pair >
 
using ValList = std::initializer_list< double >
 
using PairList = std::initializer_list< Pair >
 
template<typename Arr >
using containedType = std::decay_t< decltype(*std::declval< Arr >().begin())>
 
template<typename Arr >
using containsPair = typename std::is_same< containedType< Arr >, Pair >
 
template<typename T , typename U >
using enableIfNestedArrayWithPair = std::enable_if_t<(isIterable< T, U, containedType< T >, containedType< U > > &&containsPair< containedType< U > >::value)>
 
template<typename... Args>
using isAllVals = std::is_same< double, std::common_type_t< Args..., double > >
 
template<typename... Args>
using isHalfValsHalfPairs = HalfValsHalfPairs< std::tuple< Args... >, std::make_index_sequence< N > >
 

Point inserters/removers

ScatterND< N > & addPoint (const PointND< N > &pt)
 Insert a new point.
 
ScatterND< N > & addPoint (PointND< N > &&pt)
 Insert a new rvalue point.
 
template<typename ValRange = ValList, typename = std::enable_if_t<isIterable<ValRange>>>
ScatterND< N > & addPoint (ValRange &&pos)
 Insert a new point from a position array (of N elements)
 
template<typename ValRange = ValList, typename = std::enable_if_t<isIterable<ValRange>>>
ScatterND< N > & addPoint (ValRange &&pos, ValRange &&err)
 Insert a new point from position and symmetric error arrays (of N elements)
 
template<typename ValRange = ValList, typename = std::enable_if_t<isIterable<ValRange>>>
ScatterND< N > & addPoint (ValRange &&pos, ValRange &&errdn, ValRange &&errup)
 Insert a new point from position and asymmetric error arrays (of N elements)
 
template<typename ValRange = ValList, typename PairRange = PairList>
auto addPoint (ValRange &&pos, PairRange &&err) -> std::enable_if_t<(isIterable< ValRange, PairRange > &&containsPair< PairRange >::value), ScatterND< N > > &
 Insert a new point from a position and error-pair array.
 
template<typename... Args>
auto addPoint (Args &&... args) -> std::enable_if_t<(sizeof...(Args)==2 *N||sizeof...(Args)==3 *N), ScatterND< N > > &
 
ScatterND< N > & addPoints (Points pts)
 Insert a collection of new points.
 
void rmPoint (size_t index)
 Remove the point with index index.
 
template<typename... Args, size_t... Is>
auto addPoint_aux (std::tuple< Args... > &&t, std::index_sequence< Is... >) -> std::enable_if_t<(isAllVals< Args... >::value), ScatterND< N > > &
 
template<typename... Args, size_t... Is>
auto addPoint_aux (std::tuple< Args... > &&t, std::index_sequence< Is... >) -> std::enable_if_t<(sizeof...(Args)==2 *N &&isHalfValsHalfPairs< Args... >::value), ScatterND< N > > &
 

Detailed Description

template<size_t N>
class YODA::ScatterND< N >

A generic data type which is just a collection of n-dim data points with errors.

Definition at line 153 of file Scatter.h.

Member Typedef Documentation

◆ containedType

template<size_t N>
template<typename Arr >
using YODA::ScatterND< N >::containedType = std::decay_t<decltype(*std::declval<Arr>().begin())>
protected

Definition at line 165 of file Scatter.h.

◆ containsPair

template<size_t N>
template<typename Arr >
using YODA::ScatterND< N >::containsPair = typename std::is_same<containedType<Arr>, Pair>
protected

Definition at line 169 of file Scatter.h.

◆ enableIfNestedArrayWithPair

template<size_t N>
template<typename T , typename U >
using YODA::ScatterND< N >::enableIfNestedArrayWithPair = std::enable_if_t<(isIterable<T,U,containedType<T>,containedType<U> > && containsPair<containedType<U> >::value)>
protected

Definition at line 174 of file Scatter.h.

◆ isAllVals

template<size_t N>
template<typename... Args>
using YODA::ScatterND< N >::isAllVals = std::is_same<double, std::common_type_t<Args..., double> >
protected

Definition at line 179 of file Scatter.h.

◆ isHalfValsHalfPairs

template<size_t N>
template<typename... Args>
using YODA::ScatterND< N >::isHalfValsHalfPairs = HalfValsHalfPairs<std::tuple<Args...>, std::make_index_sequence<N> >
protected

Definition at line 185 of file Scatter.h.

◆ NdVal

template<size_t N>
using YODA::ScatterND< N >::NdVal = Utils::ndarray<double, N>

Definition at line 190 of file Scatter.h.

◆ NdValPair

template<size_t N>
using YODA::ScatterND< N >::NdValPair = Utils::ndarray<std::pair<double,double>, N>

Definition at line 191 of file Scatter.h.

◆ Pair

template<size_t N>
using YODA::ScatterND< N >::Pair = std::pair<double,double>
protected

Definition at line 157 of file Scatter.h.

◆ PairList

template<size_t N>
using YODA::ScatterND< N >::PairList = std::initializer_list<Pair>
protected

Definition at line 161 of file Scatter.h.

◆ PairVec

template<size_t N>
using YODA::ScatterND< N >::PairVec = std::vector<Pair>
protected

Definition at line 159 of file Scatter.h.

◆ Point

template<size_t N>
using YODA::ScatterND< N >::Point = PointND<N>

Definition at line 192 of file Scatter.h.

◆ Points

template<size_t N>
using YODA::ScatterND< N >::Points = std::vector<Point>

Definition at line 193 of file Scatter.h.

◆ Ptr

template<size_t N>
using YODA::ScatterND< N >::Ptr = std::shared_ptr<ScatterND>

Definition at line 194 of file Scatter.h.

◆ ValList

template<size_t N>
using YODA::ScatterND< N >::ValList = std::initializer_list<double>
protected

Definition at line 160 of file Scatter.h.

◆ ValVec

template<size_t N>
using YODA::ScatterND< N >::ValVec = std::vector<double>
protected

Definition at line 158 of file Scatter.h.

Constructor & Destructor Documentation

◆ ScatterND() [1/8]

template<size_t N>
YODA::ScatterND< N >::ScatterND ( const std::string &  path = "",
const std::string &  title = "" 
)
inline

Empty constructor.

Definition at line 202 of file Scatter.h.

203 : AnalysisObject("Scatter"+std::to_string(N)+"D", path, title) { }
const std::string title() const
Get the AO title.
const std::string path() const
Get the AO path.
AnalysisObject()
Default constructor.

◆ ScatterND() [2/8]

template<size_t N>
YODA::ScatterND< N >::ScatterND ( const Points points,
const std::string &  path = "",
const std::string &  title = "" 
)
inline

Constructor from a set of points.

Definition at line 206 of file Scatter.h.

208 : AnalysisObject("Scatter"+std::to_string(N)+"D", path, title),
209 _points(points) { }
Points & points()
Get the collection of points.
Definition Scatter.h:349

◆ ScatterND() [3/8]

template<size_t N>
YODA::ScatterND< N >::ScatterND ( Points &&  points,
const std::string &  path = "",
const std::string &  title = "" 
)
inline

Constructor from a set of rvalue points.

Definition at line 212 of file Scatter.h.

214 : AnalysisObject("Scatter"+std::to_string(N)+"D", path, title),
215 _points(std::move(points)) { }

◆ ScatterND() [4/8]

template<size_t N>
template<typename ValRange = std::initializer_list<ValList>, typename = std::enable_if_t<isIterable<ValRange, containedType<ValRange>>>>
YODA::ScatterND< N >::ScatterND ( ValRange &&  positions,
const std::string &  path = "",
const std::string &  title = "" 
)
inline

Constructor from a vector of position values with no errors.

Definition at line 220 of file Scatter.h.

221 : AnalysisObject("Scatter"+std::to_string(N)+"D", path, title) {
222 for (size_t i = 0; i < positions.size(); ++i) {
223 addPoint(PointND<N>(std::forward<containedType<ValRange>>(positions[i])));
224 }
225 }
ScatterND< N > & addPoint(const PointND< N > &pt)
Insert a new point.
Definition Scatter.h:378

References YODA::ScatterND< N >::addPoint().

◆ ScatterND() [5/8]

template<size_t N>
template<typename ValRange = std::initializer_list<ValList>, typename = std::enable_if_t<isIterable<ValRange, containedType<ValRange>>>>
YODA::ScatterND< N >::ScatterND ( ValRange &&  positions,
ValRange &&  errors,
const std::string &  path = "",
const std::string &  title = "" 
)
inline

Constructor from vectors of values for positions and a single set of symmetric errors.

Definition at line 230 of file Scatter.h.

231 : AnalysisObject("Scatter"+std::to_string(N)+"D", path, title) {
232 if (positions.size() != errors.size()) throw RangeError("Number of errors doesn't match number of positions");
233 for (size_t i = 0; i < positions.size(); ++i) {
234 addPoint(PointND<N>(std::forward<containedType<ValRange>>(positions[i]),
235 std::forward<containedType<ValRange>>(errors[i])));
236 }
237 }

References YODA::ScatterND< N >::addPoint().

◆ ScatterND() [6/8]

template<size_t N>
template<typename ValRange = std::initializer_list<ValList>, typename PairRange = std::initializer_list<PairList>, typename = enableIfNestedArrayWithPair<ValRange,PairRange>>
YODA::ScatterND< N >::ScatterND ( ValRange &&  positions,
PairRange &&  errors,
const std::string &  path = "",
const std::string &  title = "" 
)
inline

Constructor from vectors of values for positions and a single set of symmetric errors.

Definition at line 243 of file Scatter.h.

244 : AnalysisObject("Scatter"+std::to_string(N)+"D", path, title) {
245 if (positions.size() != errors.size()) throw RangeError("Number of error pairs doesn't match number of positions");
246 for (size_t i = 0; i < positions.size(); ++i) {
247 addPoint(PointND<N>(std::forward<containedType<ValRange>>(positions[i]),
248 std::forward<containedType<PairRange>>(errors[i])));
249 }
250 }

References YODA::ScatterND< N >::addPoint().

◆ ScatterND() [7/8]

template<size_t N>
YODA::ScatterND< N >::ScatterND ( const ScatterND< N > &  s,
const std::string &  path = "" 
)
inline

Copy constructor with optional new path.

Definition at line 253 of file Scatter.h.

254 : AnalysisObject("Scatter"+std::to_string(N)+"D", (path != "")? path : s.path(), s, s.title()),
255 _points(s._points) { }

◆ ScatterND() [8/8]

template<size_t N>
YODA::ScatterND< N >::ScatterND ( ScatterND< N > &&  s,
const std::string &  path = "" 
)
inline

Move constructor with optional new path.

Definition at line 258 of file Scatter.h.

259 : AnalysisObject("Scatter"+std::to_string(N)+"D", (path != "")? path : s.path(), s, s.title()),
260 _points(std::move(s._points)) {
261 }

Member Function Documentation

◆ addPoint() [1/7]

template<size_t N>
template<typename... Args>
auto YODA::ScatterND< N >::addPoint ( Args &&...  args) -> std::enable_if_t<(sizeof...(Args) == 2*N || sizeof...(Args) == 3*N), ScatterND<N>>&
inline

Insert a new point from a parameter pack

The deduction guide on the parameter pack asks that its length be 2N or 3N for dimension N.

If accepted, the parameter pack is then forwarded as a tuple to the helper method addPoint_aux, which is overloaded to deal with the following three cases:

Case 1: position and symmetric errors: Scatter1D::addPoint(x, ex); Scatter2D::addPoint(x,y, ex,ey); ... Case 2: position and asymmetric errors: Scatter1D::addPoint(x, exdn,exup); Scatter2D::addPoint(x,y, exdn,eydn, exup,eyup); ... Case 3: position and error pairs Scatter1D::addPoint(x, make_pair(exdn,exup)); Scatter2D::addPoint(x,y, make_pair(exdn,eydn), make_pair(exup,eyup)); ...

Definition at line 445 of file Scatter.h.

446 {
447 return addPoint_aux(std::make_tuple(std::forward<Args>(args)...), std::make_index_sequence<N>{});
448 }
auto addPoint_aux(std::tuple< Args... > &&t, std::index_sequence< Is... >) -> std::enable_if_t<(isAllVals< Args... >::value), ScatterND< N > > &
Definition Scatter.h:468

References YODA::ScatterND< N >::addPoint_aux().

◆ addPoint() [2/7]

◆ addPoint() [3/7]

template<size_t N>
ScatterND< N > & YODA::ScatterND< N >::addPoint ( PointND< N > &&  pt)
inline

Insert a new rvalue point.

Definition at line 384 of file Scatter.h.

384 {
385 _points.push_back(std::move(pt));
386 return *this;
387 }

◆ addPoint() [4/7]

template<size_t N>
template<typename ValRange = ValList, typename = std::enable_if_t<isIterable<ValRange>>>
ScatterND< N > & YODA::ScatterND< N >::addPoint ( ValRange &&  pos)
inline

Insert a new point from a position array (of N elements)

Definition at line 392 of file Scatter.h.

392 {
393 _points.push_back(PointND<N>(std::forward<ValRange>(pos)));
394 return *this;
395 }

◆ addPoint() [5/7]

template<size_t N>
template<typename ValRange = ValList, typename PairRange = PairList>
auto YODA::ScatterND< N >::addPoint ( ValRange &&  pos,
PairRange &&  err 
) -> std::enable_if_t<(isIterable<ValRange,PairRange> && containsPair<PairRange>::value), ScatterND<N>>&
inline

Insert a new point from a position and error-pair array.

Definition at line 417 of file Scatter.h.

418 {
419 _points.push_back(PointND<N>(pos, err));
420 return *this;
421 }

◆ addPoint() [6/7]

template<size_t N>
template<typename ValRange = ValList, typename = std::enable_if_t<isIterable<ValRange>>>
ScatterND< N > & YODA::ScatterND< N >::addPoint ( ValRange &&  pos,
ValRange &&  err 
)
inline

Insert a new point from position and symmetric error arrays (of N elements)

Definition at line 400 of file Scatter.h.

400 {
401 _points.push_back(PointND<N>(std::forward<ValRange>(pos), std::forward<ValRange>(err)));
402 return *this;
403 }

◆ addPoint() [7/7]

template<size_t N>
template<typename ValRange = ValList, typename = std::enable_if_t<isIterable<ValRange>>>
ScatterND< N > & YODA::ScatterND< N >::addPoint ( ValRange &&  pos,
ValRange &&  errdn,
ValRange &&  errup 
)
inline

Insert a new point from position and asymmetric error arrays (of N elements)

Definition at line 408 of file Scatter.h.

408 {
409 _points.push_back(PointND<N>(std::forward<ValRange>(pos),
410 std::forward<ValRange>(errdn),
411 std::forward<ValRange>(errup)));
412 return *this;
413 }

◆ addPoint_aux() [1/2]

template<size_t N>
template<typename... Args, size_t... Is>
auto YODA::ScatterND< N >::addPoint_aux ( std::tuple< Args... > &&  t,
std::index_sequence< Is... >   
) -> std::enable_if_t<(isAllVals<Args...>::value), ScatterND<N>>&
inlineprotected

Helper method to deal with parameter pack that has been forwarded as a tuple from addPoints.

The deduction guide on the parameter pack asks that all arguments can be cast to double, thereby covering the following two cases:

Case 1: position and symmetric errors: Scatter1D::addPoint(x, ex); Scatter2D::addPoint(x,y, ex,ey); ... Case 2: position and asymmetric errors: Scatter1D::addPoint(x, exdn,exup); Scatter2D::addPoint(x,y, exdn,eydn, exup,eyup); ...

Definition at line 468 of file Scatter.h.

469 {
470 if constexpr(sizeof...(Args) == 2*N) { // Case 1: symmetric errors
471 _points.push_back(
472 PointND<N>( ValVec{ static_cast<double>(std::get<Is>(t))...},
473 PairVec{{static_cast<double>(std::get<N+Is>(t)),
474 static_cast<double>(std::get<N+Is>(t))}...} ));
475 }
476 else { // Case 2: asymmetric errors
477 _points.push_back(PointND<N>( ValVec{ static_cast<double>(std::get<Is>(t))...},
478 PairVec{{static_cast<double>(std::get<N+2*Is>(t)),
479 static_cast<double>(std::get<N+2*Is+1>(t))}...} ));
480 }
481 return *this;
482 }
std::vector< Pair > PairVec
Definition Scatter.h:159
std::vector< double > ValVec
Definition Scatter.h:158

Referenced by YODA::ScatterND< N >::addPoint().

◆ addPoint_aux() [2/2]

template<size_t N>
template<typename... Args, size_t... Is>
auto YODA::ScatterND< N >::addPoint_aux ( std::tuple< Args... > &&  t,
std::index_sequence< Is... >   
) -> std::enable_if_t<(sizeof...(Args) == 2*N && isHalfValsHalfPairs<Args...>::value), ScatterND<N>>&
inlineprotected

Helper method to deal with parameter pack that has been forwarded as a tuple from addPoints.

The deduction guide on the parameter pack asks that its length be 2N for dimension N, that the first half of the arguments can be cast to double, and that the second half can be cast to Pair, thereby covering the following case:

Case 3: position and error pairs Scatter1D::addPoint(x, make_pair(exdn,exup)); Scatter2D::addPoint(x,y, make_pair(exdn,eydn), make_pair(exup,eyup)); ...

Definition at line 499 of file Scatter.h.

500 {
501 _points.push_back(PointND<N>( ValVec{ static_cast<double>(std::get<Is>(t))...},
502 PairVec{ static_cast<Pair>(std::get<N+Is>(t))...} ));
503 return *this;
504 }
std::pair< double, double > Pair
Definition Scatter.h:157

◆ addPoints()

template<size_t N>
ScatterND< N > & YODA::ScatterND< N >::addPoints ( Points  pts)
inline

Insert a collection of new points.

Definition at line 510 of file Scatter.h.

510 {
511 for (const PointND<N>& pt : pts) addPoint(pt);
512 return *this;
513 }

References YODA::ScatterND< N >::addPoint().

Referenced by YODA::ScatterND< N >::combineWith(), and YODA::ScatterND< N >::combineWith().

◆ clone()

template<size_t N>
ScatterND< N > YODA::ScatterND< N >::clone ( ) const
inline

Make a copy on the stack.

Definition at line 283 of file Scatter.h.

283 {
284 return ScatterND<N>(*this);
285 }

Referenced by YODA::WriterYODA1::writeScatter1D(), YODA::WriterYODA1::writeScatter2D(), and YODA::WriterYODA1::writeScatter3D().

◆ combineWith() [1/4]

template<size_t N>
ScatterND< N > & YODA::ScatterND< N >::combineWith ( const ScatterND< N > &  other)
inline
Todo:
Better name?

Definition at line 567 of file Scatter.h.

567 {
568 addPoints(other.points());
569 return *this;
570 }
ScatterND< N > & addPoints(Points pts)
Insert a collection of new points.
Definition Scatter.h:510

References YODA::ScatterND< N >::addPoints(), and YODA::ScatterND< N >::points().

Referenced by YODA::combine(), YODA::combine(), YODA::combine(), YODA::combine(), YODA::ScatterND< N >::combineWith(), and YODA::ScatterND< N >::combineWith().

◆ combineWith() [2/4]

template<size_t N>
ScatterND< N > & YODA::ScatterND< N >::combineWith ( const std::vector< ScatterND< N > > &  others)
inline
Todo:
Better name?

Definition at line 579 of file Scatter.h.

579 {
580 for (const ScatterND<N>& s : others) combineWith(s);
581 return *this;
582 }
ScatterND< N > & combineWith(const ScatterND< N > &other)
Definition Scatter.h:567

References YODA::ScatterND< N >::combineWith().

◆ combineWith() [3/4]

template<size_t N>
ScatterND< N > & YODA::ScatterND< N >::combineWith ( ScatterND< N > &&  other)
inline
Todo:
Better name?

Definition at line 573 of file Scatter.h.

573 {
574 addPoints(std::move(other._points));
575 return *this;
576 }

References YODA::ScatterND< N >::addPoints().

◆ combineWith() [4/4]

template<size_t N>
ScatterND< N > & YODA::ScatterND< N >::combineWith ( std::vector< ScatterND< N > > &&  others)
inline
Todo:
Better name?

Definition at line 585 of file Scatter.h.

585 {
586 for (ScatterND<N>&& s : others) combineWith(std::move(s));
587 return *this;
588 }

References YODA::ScatterND< N >::combineWith().

◆ deserializeContent()

template<size_t N>
void YODA::ScatterND< N >::deserializeContent ( const std::vector< double > &  data)
inlinevirtual

Content deserialisation for MPI reduce operations.

Implements YODA::AnalysisObject.

Definition at line 544 of file Scatter.h.

544 {
545
546 if (data.size() % Point::DataSize::value)
547 throw UserError("Length of serialized data should be a multiple of "+std::to_string(Point::DataSize::value)+"!");
548
549 const size_t nPoints = data.size()/Point::DataSize::value;
550 const auto itr = data.cbegin();
551 reset();
552 for (size_t i = 0; i < nPoints; ++i) {
553 addPoint(Point());
554 auto first = itr + i*Point::DataSize::value;
555 auto last = first + Point::DataSize::value;
556 point(i)._deserializeContent(std::vector<double>{first, last});
557 }
558
559 }
PointND< N > & point(size_t index)
Get a reference to the point with index index.
Definition Scatter.h:361
PointND< N > Point
Definition Scatter.h:192
void reset()
Clear all points.
Definition Scatter.h:301

References YODA::ScatterND< N >::addPoint(), YODA::ScatterND< N >::point(), and YODA::ScatterND< N >::reset().

◆ dim()

template<size_t N>
size_t YODA::ScatterND< N >::dim ( ) const
inlinevirtualnoexcept

Dimension of this data object.

Implements YODA::AnalysisObject.

Definition at line 295 of file Scatter.h.

295{ return N; }

◆ edges()

template<size_t N>
std::vector< Pair > YODA::ScatterND< N >::edges ( const size_t  i) const
inline

Definition at line 765 of file Scatter.h.

765 {
766 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
767 std::vector<Pair> rtn;
768 rtn.resize(numPoints());
769 size_t j = 0;
770 for (const Point& p : points()) {
771 rtn[j++] = std::make_pair(p.min(i), p.max(i));
772 }
773 std::sort(rtn.begin(), rtn.end());
774 rtn.erase(std::unique(rtn.begin(), rtn.end()), rtn.end());
775 return rtn;
776 }
size_t numPoints() const
Number of points in the scatter.
Definition Scatter.h:343

References YODA::ScatterND< N >::numPoints(), and YODA::ScatterND< N >::points().

◆ errAvgs()

template<size_t N>
ValVec YODA::ScatterND< N >::errAvgs ( const size_t  i) const
inline

Get the average error along axis i.

Definition at line 650 of file Scatter.h.

650 {
651 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
652 ValVec rtn; rtn.reserve(_points.size());
653 for (const auto& pt : _points) {
654 rtn.push_back( pt.errAvg(i) );
655 }
656 return rtn;
657 }

Referenced by YODA::ScatterND< N >::xErrAvgs(), YODA::ScatterND< N >::yErrAvgs(), and YODA::ScatterND< N >::zErrAvgs().

◆ errs()

template<size_t N>
PairVec YODA::ScatterND< N >::errs ( const size_t  i) const
inline

Get the error pairs along axis i.

Definition at line 640 of file Scatter.h.

640 {
641 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
642 PairVec rtn; rtn.reserve(_points.size());
643 for (const auto& pt : _points) {
644 rtn.push_back( pt.errs(i) );
645 }
646 return rtn;
647 }

Referenced by YODA::ScatterND< N >::xErrs(), YODA::ScatterND< N >::yErrs(), and YODA::ScatterND< N >::zErrs().

◆ lengthContent()

template<size_t N>
size_t YODA::ScatterND< N >::lengthContent ( bool  fixed_length = false) const
inlinevirtualnoexcept

Length of serialized content vector for MPI reduce operations.

Implements YODA::AnalysisObject.

Definition at line 524 of file Scatter.h.

524 {
525 if (fixed_length) return 0;
526 return numPoints() * Point::DataSize::value;
527 }

References YODA::ScatterND< N >::numPoints().

Referenced by YODA::ScatterND< N >::serializeContent().

◆ max()

template<size_t N>
double YODA::ScatterND< N >::max ( const size_t  i) const
inline

Get the largest central value along axis i.

Definition at line 633 of file Scatter.h.

633 {
634 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
635 const ValVec cvals = vals(i);
636 return *std::max_element(cvals.begin(), cvals.end());
637 }
ValVec vals(const size_t i) const
Get the coordinate vector along axis i.
Definition Scatter.h:596

References YODA::ScatterND< N >::vals().

Referenced by YODA::ScatterND< N >::xMax(), YODA::ScatterND< N >::yMax(), and YODA::ScatterND< N >::zMax().

◆ maxs()

template<size_t N>
ValVec YODA::ScatterND< N >::maxs ( const size_t  i) const
inline

Get the positive error vector along axis i.

Definition at line 616 of file Scatter.h.

616 {
617 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
618 ValVec rtn; rtn.reserve(_points.size());
619 for (const auto& pt : _points) {
620 rtn.push_back( pt.max(i) );
621 }
622 return rtn;
623 }

Referenced by YODA::ScatterND< N >::xMaxs(), YODA::ScatterND< N >::yMaxs(), and YODA::ScatterND< N >::zMaxs().

◆ min()

template<size_t N>
double YODA::ScatterND< N >::min ( const size_t  i) const
inline

Get the smallest central value along axis i.

Definition at line 626 of file Scatter.h.

626 {
627 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
628 const ValVec cvals = vals(i);
629 return *std::min_element(cvals.begin(), cvals.end());
630 }

References YODA::ScatterND< N >::vals().

Referenced by YODA::ScatterND< N >::xMin(), YODA::ScatterND< N >::yMin(), and YODA::ScatterND< N >::zMin().

◆ mins()

template<size_t N>
ValVec YODA::ScatterND< N >::mins ( const size_t  i) const
inline

Get the lowest value vector along axis i.

Definition at line 606 of file Scatter.h.

606 {
607 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
608 ValVec rtn; rtn.reserve(_points.size());
609 for (const auto& pt : _points) {
610 rtn.push_back( pt.min(i) );
611 }
612 return rtn;
613 }

Referenced by YODA::ScatterND< N >::xMins(), YODA::ScatterND< N >::yMins(), and YODA::ScatterND< N >::zMins().

◆ newclone()

template<size_t N>
ScatterND< N > * YODA::ScatterND< N >::newclone ( ) const
inlinevirtual

Make a copy on the heap, via 'new'.

Implements YODA::AnalysisObject.

Definition at line 288 of file Scatter.h.

288 {
289 return new ScatterND<N>(*this);
290 }

◆ numPoints()

template<size_t N>
size_t YODA::ScatterND< N >::numPoints ( ) const
inlinevirtual

Number of points in the scatter.

Implements YODA::Scatter.

Definition at line 343 of file Scatter.h.

343 {
344 return _points.size();
345 }

Referenced by YODA::ScatterND< N >::edges(), YODA::ScatterND< N >::lengthContent(), and YODA::ScatterND< N >::serializeContent().

◆ operator=() [1/2]

template<size_t N>
ScatterND< N > & YODA::ScatterND< N >::operator= ( const ScatterND< N > &  s)
inline

Assignment operator.

Definition at line 265 of file Scatter.h.

265 {
266 if (this != &s) {
268 _points = s._points;
269 }
270 return *this;
271 }
virtual AnalysisObject & operator=(const AnalysisObject &ao) noexcept
Default copy assignment operator.

References YODA::AnalysisObject::operator=().

◆ operator=() [2/2]

template<size_t N>
ScatterND< N > & YODA::ScatterND< N >::operator= ( ScatterND< N > &&  s)
inline

Move operator.

Definition at line 274 of file Scatter.h.

274 {
275 if (this != &s) {
277 _points = std::move(s._points);
278 }
279 return *this;
280 }

References YODA::AnalysisObject::operator=().

◆ point() [1/2]

template<size_t N>
PointND< N > & YODA::ScatterND< N >::point ( size_t  index)
inline

Get a reference to the point with index index.

Definition at line 361 of file Scatter.h.

361 {
362 return _points.at(index);
363 }

Referenced by YODA::ScatterND< N >::deserializeContent(), YODA::DbnStorage< DbnN, AxisT >::mkScatter(), and YODA::ScatterND< N >::serializeContent().

◆ point() [2/2]

template<size_t N>
const PointND< N > & YODA::ScatterND< N >::point ( size_t  index) const
inline

Get the point with index index (const version)

Definition at line 367 of file Scatter.h.

367 {
368 return _points.at(index);
369 }

◆ points() [1/2]

template<size_t N>
Points & YODA::ScatterND< N >::points ( )
inline

◆ points() [2/2]

template<size_t N>
const Points & YODA::ScatterND< N >::points ( ) const
inline

Get the collection of points (const version)

Definition at line 355 of file Scatter.h.

355 {
356 return _points;
357 }

◆ reset()

template<size_t N>
void YODA::ScatterND< N >::reset ( )
inlinevirtual

Clear all points.

Implements YODA::AnalysisObject.

Definition at line 301 of file Scatter.h.

301 {
302 _points.clear();
303 }

Referenced by YODA::ScatterND< N >::deserializeContent().

◆ rmPoint()

template<size_t N>
void YODA::ScatterND< N >::rmPoint ( size_t  index)
inlinevirtual

Remove the point with index index.

Implements YODA::Scatter.

Definition at line 515 of file Scatter.h.

515 {
516 _points.erase(_points.begin()+index);
517 }

◆ scale() [1/3]

template<size_t N>
void YODA::ScatterND< N >::scale ( const NdVal scales)
inline

Scaling.

Definition at line 306 of file Scatter.h.

306 {
307 for (PointND<N>& p : _points) p.scale(scales);
308 }
void scale(const NdVal &scales)
Scaling.
Definition Scatter.h:306

◆ scale() [2/3]

template<size_t N>
void YODA::ScatterND< N >::scale ( const size_t  i,
double  factor 
)
inline

Scale value and error along direction i.

Definition at line 316 of file Scatter.h.

316 {
317 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
318 for (PointND<N>& p : _points) p.scale(i, factor);
319 }

◆ scale() [3/3]

template<size_t N>
void YODA::ScatterND< N >::scale ( const std::vector< double > &  scales)
inline

Definition at line 310 of file Scatter.h.

310 {
311 if (scales.size() != N) throw RangeError("Expected " + std::to_string(N) + " scale factors");
312 for (PointND<N>& p : _points) p.scale(scales);
313 }

◆ scaleErr()

template<size_t N>
void YODA::ScatterND< N >::scaleErr ( const size_t  i,
double  factor 
)
inline

Scale error along direction i.

Definition at line 328 of file Scatter.h.

328 {
329 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
330 for (PointND<N>& p : _points) p.scaleErr(i, factor);
331 }
void scaleErr(const size_t i, double factor)
Scale error along direction i.
Definition Scatter.h:328

◆ scaleVal()

template<size_t N>
void YODA::ScatterND< N >::scaleVal ( const size_t  i,
double  factor 
)
inline

Scale value along direction i.

Definition at line 322 of file Scatter.h.

322 {
323 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
324 for (PointND<N>& p : _points) p.scaleVal(i, factor);
325 }
void scaleVal(const size_t i, double factor)
Scale value along direction i.
Definition Scatter.h:322

◆ serializeContent()

template<size_t N>
std::vector< double > YODA::ScatterND< N >::serializeContent ( bool  fixed_length = false) const
inlinevirtualnoexcept

Content serialisation for MPI reduce operations.

Implements YODA::AnalysisObject.

Definition at line 529 of file Scatter.h.

529 {
530
531 if (fixed_length) return { }; // cannot guarantee fixed length
532
533 std::vector<double> rtn;
534 rtn.reserve(lengthContent());
535 for (size_t i = 0; i < numPoints(); ++i) {
536 std::vector<double> pdata = point(i)._serializeContent();
537 rtn.insert(std::end(rtn),
538 std::make_move_iterator(std::begin(pdata)),
539 std::make_move_iterator(std::end(pdata)));
540 }
541 return rtn;
542 }
size_t lengthContent(bool fixed_length=false) const noexcept
Length of serialized content vector for MPI reduce operations.
Definition Scatter.h:524

References YODA::ScatterND< N >::lengthContent(), YODA::ScatterND< N >::numPoints(), and YODA::ScatterND< N >::point().

◆ vals()

template<size_t N>
ValVec YODA::ScatterND< N >::vals ( const size_t  i) const
inline

Get the coordinate vector along axis i.

Definition at line 596 of file Scatter.h.

596 {
597 if (i >= N) throw RangeError("Invalid axis int, must be in range 0..dim-1");
598 ValVec rtn; rtn.reserve(_points.size());
599 for (const auto& pt : _points) {
600 rtn.push_back( pt.val(i) );
601 }
602 return rtn;
603 }

Referenced by YODA::ScatterND< N >::max(), YODA::ScatterND< N >::min(), YODA::ScatterND< N >::xVals(), YODA::ScatterND< N >::yVals(), and YODA::ScatterND< N >::zVals().

◆ xErrAvgs()

template<size_t N>
ValVec YODA::ScatterND< N >::xErrAvgs ( ) const
inline

Axis-specific alias.

Definition at line 726 of file Scatter.h.

726{ return errAvgs(0); }
ValVec errAvgs(const size_t i) const
Get the average error along axis i.
Definition Scatter.h:650

References YODA::ScatterND< N >::errAvgs().

◆ xErrs()

template<size_t N>
PairVec YODA::ScatterND< N >::xErrs ( ) const
inline

Axis-specific alias.

Definition at line 715 of file Scatter.h.

715{ return errs(0); }
PairVec errs(const size_t i) const
Get the error pairs along axis i.
Definition Scatter.h:640

References YODA::ScatterND< N >::errs().

◆ xMax()

template<size_t N>
double YODA::ScatterND< N >::xMax ( ) const
inline

Axis-specific alias.

Definition at line 704 of file Scatter.h.

704{ return max(0); }
double max(const size_t i) const
Get the largest central value along axis i.
Definition Scatter.h:633

References YODA::ScatterND< N >::max().

◆ xMaxs()

template<size_t N>
ValVec YODA::ScatterND< N >::xMaxs ( ) const
inline

Axis-specific alias.

Definition at line 682 of file Scatter.h.

682{ return maxs(0); }
ValVec maxs(const size_t i) const
Get the positive error vector along axis i.
Definition Scatter.h:616

References YODA::ScatterND< N >::maxs().

◆ xMin()

template<size_t N>
double YODA::ScatterND< N >::xMin ( ) const
inline

Axis-specific alias.

Definition at line 693 of file Scatter.h.

693{ return min(0); }
double min(const size_t i) const
Get the smallest central value along axis i.
Definition Scatter.h:626

References YODA::ScatterND< N >::min().

◆ xMins()

template<size_t N>
ValVec YODA::ScatterND< N >::xMins ( ) const
inline

Axis-specific alias.

Definition at line 671 of file Scatter.h.

671{ return mins(0); }
ValVec mins(const size_t i) const
Get the lowest value vector along axis i.
Definition Scatter.h:606

References YODA::ScatterND< N >::mins().

◆ xVals()

template<size_t N>
ValVec YODA::ScatterND< N >::xVals ( ) const
inline

Axis-specific alias.

Definition at line 660 of file Scatter.h.

660{ return vals(0); }

References YODA::ScatterND< N >::vals().

◆ yErrAvgs()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
ValVec YODA::ScatterND< N >::yErrAvgs ( ) const
inline

Axis-specific alias.

Definition at line 730 of file Scatter.h.

730{ return errAvgs(1); }

References YODA::ScatterND< N >::errAvgs().

◆ yErrs()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
PairVec YODA::ScatterND< N >::yErrs ( ) const
inline

Axis-specific alias.

Definition at line 719 of file Scatter.h.

719{ return errs(1); }

References YODA::ScatterND< N >::errs().

◆ yMax()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
double YODA::ScatterND< N >::yMax ( ) const
inline

Axis-specific alias.

Definition at line 708 of file Scatter.h.

708{ return max(1); }

References YODA::ScatterND< N >::max().

◆ yMaxs()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
ValVec YODA::ScatterND< N >::yMaxs ( ) const
inline

Axis-specific alias.

Definition at line 686 of file Scatter.h.

686{ return maxs(1); }

References YODA::ScatterND< N >::maxs().

◆ yMin()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
double YODA::ScatterND< N >::yMin ( ) const
inline

Axis-specific alias.

Definition at line 697 of file Scatter.h.

697{ return min(1); }

References YODA::ScatterND< N >::min().

◆ yMins()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
ValVec YODA::ScatterND< N >::yMins ( ) const
inline

Axis-specific alias.

Definition at line 675 of file Scatter.h.

675{ return mins(1); }

References YODA::ScatterND< N >::mins().

◆ yVals()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 2)>>
ValVec YODA::ScatterND< N >::yVals ( ) const
inline

Axis-specific alias.

Definition at line 664 of file Scatter.h.

664{ return vals(1); }

References YODA::ScatterND< N >::vals().

◆ zErrAvgs()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
ValVec YODA::ScatterND< N >::zErrAvgs ( ) const
inline

Axis-specific alias.

Definition at line 734 of file Scatter.h.

734{ return errAvgs(2); }

References YODA::ScatterND< N >::errAvgs().

◆ zErrs()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
PairVec YODA::ScatterND< N >::zErrs ( ) const
inline

Axis-specific alias.

Definition at line 723 of file Scatter.h.

723{ return errs(2); }

References YODA::ScatterND< N >::errs().

◆ zMax()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
double YODA::ScatterND< N >::zMax ( ) const
inline

Axis-specific alias.

Definition at line 712 of file Scatter.h.

712{ return max(2); }

References YODA::ScatterND< N >::max().

◆ zMaxs()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
ValVec YODA::ScatterND< N >::zMaxs ( ) const
inline

Axis-specific alias.

Definition at line 690 of file Scatter.h.

690{ return maxs(2); }

References YODA::ScatterND< N >::maxs().

◆ zMin()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
double YODA::ScatterND< N >::zMin ( ) const
inline

Axis-specific alias.

Definition at line 701 of file Scatter.h.

701{ return min(2); }

References YODA::ScatterND< N >::min().

◆ zMins()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
ValVec YODA::ScatterND< N >::zMins ( ) const
inline

Axis-specific alias.

Definition at line 679 of file Scatter.h.

679{ return mins(2); }

References YODA::ScatterND< N >::mins().

◆ zVals()

template<size_t N>
template<size_t axisN = N, typename = std::enable_if_t<(axisN >= 3)>>
ValVec YODA::ScatterND< N >::zVals ( ) const
inline

Axis-specific alias.

Definition at line 668 of file Scatter.h.

668{ return vals(2); }

References YODA::ScatterND< N >::vals().


The documentation for this class was generated from the following file: