Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RVec.hxx File Reference
#include <Rtypes.h>
#include <TError.h>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <limits>
#include <memory>
#include <new>
#include <numeric>
#include <sstream>
#include <stdexcept>
#include <string>
#include <tuple>
#include <type_traits>
#include <utility>
#include <vector>
Include dependency graph for RVec.hxx:
This graph shows which files directly or indirectly include this file:

Classes

struct  ROOT::Internal::VecOps::IsRVec< typename >
 
struct  ROOT::Internal::VecOps::IsRVec< ROOT::VecOps::RVec< T > >
 
class  ROOT::VecOps::RVec< T >
 A "std::vector"-like collection of values implementing handy operation to analyse them. More...
 
class  ROOT::Detail::VecOps::RVecImpl< T >
 This class consists of common code factored out of the SmallVector class to reduce code duplication based on the SmallVector 'N' template parameter. More...
 
struct  ROOT::Internal::VecOps::RVecInlineStorageSize< T >
 The size of the inline storage of an RVec. More...
 
class  ROOT::VecOps::RVecN< T, N >
 
struct  ROOT::Internal::VecOps::SmallVectorAlignmentAndSize< T >
 Used to figure out the offset of the first element of an RVec. More...
 
class  ROOT::Internal::VecOps::SmallVectorBase
 This is all the stuff common to all SmallVectors. More...
 
struct  ROOT::Internal::VecOps::SmallVectorStorage< T, N >
 Storage for the SmallVector elements. More...
 
struct  ROOT::Internal::VecOps::SmallVectorStorage< T, 0 >
 We need the storage to be properly aligned even for small-size of 0 so that the pointer math in SmallVectorTemplateCommon::getFirstEl() is well-defined. More...
 
class  ROOT::Internal::VecOps::SmallVectorTemplateBase< T, bool >
 SmallVectorTemplateBase<TriviallyCopyable = false> - This is where we put method implementations that are designed to work with non-trivial T's. More...
 
class  ROOT::Internal::VecOps::SmallVectorTemplateBase< T, true >
 SmallVectorTemplateBase<TriviallyCopyable = true> - This is where we put method implementations that are designed to work with trivially copyable T's. More...
 
class  ROOT::Internal::VecOps::SmallVectorTemplateCommon< T >
 This is the part of SmallVectorTemplateBase which does not depend on whether the type T is a POD. More...
 

Namespaces

namespace  ROOT
 tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tbb::task_arena without forward declaring tbb::interface7
 
namespace  ROOT::Detail
 Special implementation of ROOT::RRangeCast for TCollection, including a check that the cast target type inherits from TObject and a new constructor that takes the TCollection by pointer.
 
namespace  ROOT::Detail::VecOps
 
namespace  ROOT::Internal
 
namespace  ROOT::Internal::VecOps
 
namespace  ROOT::VecOps
 

Macros

#define _VECOPS_USE_EXTERN_TEMPLATES   true
 
#define R__RVEC_NODISCARD
 

Typedefs

template<typename T >
using ROOT::Internal::VecOps::RVec = ROOT::VecOps::RVec< T >
 
using ROOT::RVecB = ROOT::VecOps::RVec< bool >
 
using ROOT::RVecC = ROOT::VecOps::RVec< char >
 
using ROOT::RVecD = ROOT::VecOps::RVec< double >
 
using ROOT::RVecF = ROOT::VecOps::RVec< float >
 
using ROOT::RVecI = ROOT::VecOps::RVec< int >
 
using ROOT::RVecL = ROOT::VecOps::RVec< long int >
 
using ROOT::RVecLL = ROOT::VecOps::RVec< long long int >
 
using ROOT::RVecU = ROOT::VecOps::RVec< unsigned int >
 
using ROOT::RVecUL = ROOT::VecOps::RVec< unsigned long int >
 
using ROOT::RVecULL = ROOT::VecOps::RVec< unsigned long long int >
 

Functions

constexpr bool ROOT::Internal::VecOps::All (const bool *vals, std::size_t size)
 
template<typename T >
auto ROOT::VecOps::All (const RVec< T > &v) -> decltype(v[0]==false)
 Return true if all of the elements equate to true, return false otherwise.
 
template<typename T0 , typename T1 = T0, typename T2 = T0, typename T3 = T0, typename T4 = T0, typename T5 = T0, typename Common_t = std::common_type_t<T0, T1>>
Common_t ROOT::VecOps::Angle (T0 x1, T1 y1, T2 z1, T3 x2, T4 y2, T5 z2)
 Return the angle between two three-vectors given the quantities x coordinate (x), y coordinate (y), z coordinate (y).
 
template<typename T >
auto ROOT::VecOps::Any (const RVec< T > &v) -> decltype(v[0]==true)
 Return true if any of the elements equates to true, return false otherwise.
 
template<typename T >
std::size_t ROOT::VecOps::ArgMax (const RVec< T > &v)
 Get the index of the greatest element of an RVec In case of multiple occurrences of the maximum values, the index corresponding to the first occurrence is returned.
 
template<typename T >
std::size_t ROOT::VecOps::ArgMin (const RVec< T > &v)
 Get the index of the smallest element of an RVec In case of multiple occurrences of the minimum values, the index corresponding to the first occurrence is returned.
 
template<typename T >
RVec< typename RVec< T >::size_type > ROOT::VecOps::Argsort (const RVec< T > &v)
 Return an RVec of indices that sort the input RVec.
 
template<typename T , typename Compare >
RVec< typename RVec< T >::size_type > ROOT::VecOps::Argsort (const RVec< T > &v, Compare &&c)
 Return an RVec of indices that sort the input RVec based on a comparison function.
 
template<typename T , unsigned N>
size_t ROOT::VecOps::CapacityInBytes (const RVecN< T, N > &X)
 
template<typename T >
RVec< RVec< typename RVec< T >::size_type > > ROOT::VecOps::Combinations (const RVec< T > &v, const typename RVec< T >::size_type n)
 Return the indices that represent all unique combinations of the elements of a given RVec.
 
template<typename T1 , typename T2 >
RVec< RVec< typename RVec< T1 >::size_type > > ROOT::VecOps::Combinations (const RVec< T1 > &v1, const RVec< T2 > &v2)
 Return the indices that represent all combinations of the elements of two RVecs.
 
RVec< RVec< std::size_t > > ROOT::VecOps::Combinations (const std::size_t size1, const std::size_t size2)
 Return the indices that represent all combinations of the elements of two RVecs.
 
template<typename T0 , typename T1 , typename Common_t = typename std::common_type<T0, T1>::type>
RVec< Common_t > ROOT::VecOps::Concatenate (const RVec< T0 > &v0, const RVec< T1 > &v1)
 Return the concatenation of two RVecs.
 
template<typename T , typename... Args_t>
RVec< T > ROOT::VecOps::Construct (const RVec< Args_t > &... args)
 Build an RVec of objects starting from RVecs of input to their constructors.
 
template<typename T0 , typename T1 = T0, typename Common_t = typename std::common_type_t<T0, T1>>
RVec< Common_t > ROOT::VecOps::DeltaPhi (const RVec< T0 > &v1, const RVec< T1 > &v2, const Common_t c=M_PI)
 Return the angle difference \(\Delta \phi\) in radians of two vectors.
 
template<typename T0 , typename T1 = T0, typename Common_t = typename std::common_type_t<T0, T1>>
RVec< Common_t > ROOT::VecOps::DeltaPhi (const RVec< T0 > &v1, T1 v2, const Common_t c=M_PI)
 Return the angle difference \(\Delta \phi\) in radians of a vector and a scalar.
 
template<typename T0 , typename T1 = T0, typename Common_t = typename std::common_type_t<T0, T1>>
RVec< Common_t > ROOT::VecOps::DeltaPhi (T0 v1, const RVec< T1 > &v2, const Common_t c=M_PI)
 Return the angle difference \(\Delta \phi\) in radians of a scalar and a vector.
 
template<typename T0 , typename T1 = T0, typename Common_t = std::common_type_t<T0, T1>>
Common_t ROOT::VecOps::DeltaPhi (T0 v1, T1 v2, const Common_t c=M_PI)
 Return the angle difference \(\Delta \phi\) of two scalars.
 
template<typename T0 , typename T1 = T0, typename T2 = T0, typename T3 = T0, typename Common_t = std::common_type_t<T0, T1, T2, T3>>
RVec< Common_t > ROOT::VecOps::DeltaR (const RVec< T0 > &eta1, const RVec< T1 > &eta2, const RVec< T2 > &phi1, const RVec< T3 > &phi2, const Common_t c=M_PI)
 Return the distance on the \(\eta\)- \(\phi\) plane ( \(\Delta R\)) from the collections eta1, eta2, phi1 and phi2.
 
template<typename T0 , typename T1 = T0, typename T2 = T0, typename T3 = T0, typename Common_t = std::common_type_t<T0, T1, T2, T3>>
Common_t ROOT::VecOps::DeltaR (T0 eta1, T1 eta2, T2 phi1, T3 phi2, const Common_t c=M_PI)
 Return the distance on the \(\eta\)- \(\phi\) plane ( \(\Delta R\)) from the scalars eta1, eta2, phi1 and phi2.
 
template<typename T0 , typename T1 = T0, typename T2 = T0, typename T3 = T0, typename Common_t = std::common_type_t<T0, T1, T2, T3>>
RVec< Common_t > ROOT::VecOps::DeltaR2 (const RVec< T0 > &eta1, const RVec< T1 > &eta2, const RVec< T2 > &phi1, const RVec< T3 > &phi2, const Common_t c=M_PI)
 Return the square of the distance on the \(\eta\)- \(\phi\) plane ( \(\Delta R\)) from the collections eta1, eta2, phi1 and phi2.
 
template<typename T , typename V >
auto ROOT::VecOps::Dot (const RVec< T > &v0, const RVec< V > &v1) -> decltype(v0[0] *v1[0])
 Inner product.
 
template<typename T >
RVec< T > ROOT::VecOps::Drop (const RVec< T > &v, RVec< typename RVec< T >::size_type > idxs)
 Return a copy of the container without the elements at the specified indices.
 
template<typename T >
RVec< typename RVec< T >::size_type > ROOT::VecOps::Enumerate (const RVec< T > &v)
 For any Rvec v produce another RVec with entries starting from 0, and incrementing by 1 until a N = v.size() is reached.
 
template<typename T , typename F >
RVec< T > ROOT::VecOps::Filter (const RVec< T > &v, F &&f)
 Create a new collection with the elements passing the filter expressed by the predicate.
 
template<typename... T>
std::size_t ROOT::Internal::VecOps::GetVectorsSize (const std::string &id, const RVec< T > &... vs)
 
template<typename T >
RVec< T > ROOT::VecOps::Intersect (const RVec< T > &v1, const RVec< T > &v2, bool v2_is_sorted=false)
 Return the intersection of elements of two RVecs.
 
template<typename T0 , typename T1 = T0, typename T2 = T0, typename T3 = T0, typename Common_t = std::common_type_t<T0, T1, T2, T3>>
Common_t ROOT::VecOps::InvariantMass (const RVec< T0 > &pt, const RVec< T1 > &eta, const RVec< T2 > &phi, const RVec< T3 > &mass)
 Return the invariant mass of multiple particles given the collections of the quantities transverse momentum (pt), rapidity (eta), azimuth (phi) and mass.
 
template<typename T0 , typename T1 = T0, typename T2 = T0, typename T3 = T0, typename T4 = T0, typename T5 = T0, typename T6 = T0, typename T7 = T0, typename Common_t = std::common_type_t<T0, T1, T2, T3, T4, T5, T6, T7>>
RVec< Common_t > ROOT::VecOps::InvariantMasses (const RVec< T0 > &pt1, const RVec< T1 > &eta1, const RVec< T2 > &phi1, const RVec< T3 > &mass1, const RVec< T4 > &pt2, const RVec< T5 > &eta2, const RVec< T6 > &phi2, const RVec< T7 > &mass2)
 Return the invariant mass of two particles given the collections of the quantities transverse momentum (pt), rapidity (eta), azimuth (phi) and mass.
 
template<typename T0 , typename T1 = T0, typename T2 = T0, typename T3 = T0, typename T4 = T0, typename T5 = T0, typename T6 = T0, typename T7 = T0, typename Common_t = std::common_type_t<T0, T1, T2, T3, T4, T5, T6, T7>>
RVec< Common_t > ROOT::VecOps::InvariantMasses_PxPyPzM (const RVec< T0 > &px1, const RVec< T1 > &py1, const RVec< T2 > &pz1, const RVec< T3 > &mass1, const RVec< T4 > &px2, const RVec< T5 > &py2, const RVec< T6 > &pz2, const RVec< T7 > &mass2)
 Return the invariant mass of two particles given the collections of the quantities x coordinate (px), y coordinate (py), z coordinate (pz) and mass.
 
template<typename T0 , typename T1 = T0, typename T2 = T0, typename T3 = T0, typename T4 = T0, typename T5 = T0, typename T6 = T0, typename T7 = T0, typename Common_t = std::common_type_t<T0, T1, T2, T3, T4, T5, T6, T7>>
Common_t ROOT::VecOps::InvariantMasses_PxPyPzM (const T0 &x1, const T1 &y1, const T2 &z1, const T3 &mass1, const T4 &x2, const T5 &y2, const T6 &z2, const T7 &mass2)
 Return the invariant mass of two particles given x coordinate (px), y coordinate (py), z coordinate (pz) and mass.
 
template<typename T >
bool ROOT::Detail::VecOps::IsAdopting (const ROOT::VecOps::RVec< T > &v)
 
template<typename T >
bool ROOT::Detail::VecOps::IsSmall (const ROOT::VecOps::RVec< T > &v)
 
template<typename... Args>
auto ROOT::VecOps::Map (Args &&... args)
 Create new collection applying a callable to the elements of the input collection.
 
template<typename Tuple_t , std::size_t... Is>
auto ROOT::Internal::VecOps::MapFromTuple (Tuple_t &&t, std::index_sequence< Is... >) -> decltype(MapImpl(std::get< std::tuple_size< Tuple_t >::value - 1 >(t), std::get< Is >(t)...))
 
template<typename F , typename... RVecs>
auto ROOT::Internal::VecOps::MapImpl (F &&f, RVecs &&... vs) -> RVec< decltype(f(vs[0]...))>
 
template<typename T >
ROOT::VecOps::Max (const RVec< T > &v)
 Get the greatest element of an RVec.
 
template<typename T >
double ROOT::VecOps::Mean (const RVec< T > &v)
 Get the mean of the elements of an RVec.
 
template<typename T , typename R = T>
R ROOT::VecOps::Mean (const RVec< T > &v, const R zero)
 Get the mean of the elements of an RVec with custom initial value.
 
template<typename T >
ROOT::VecOps::Min (const RVec< T > &v)
 Get the smallest element of an RVec.
 
uint64_t ROOT::Internal::VecOps::NextPowerOf2 (uint64_t A)
 Return the next power of two (in 64-bits) that is strictly greater than A.
 
template<typename T >
RVec< typename RVec< T >::size_type > ROOT::VecOps::Nonzero (const RVec< T > &v)
 Return the indices of the elements which are not zero.
 
template<class T >
std::ostream & ROOT::VecOps::operator<< (std::ostream &os, const RVec< T > &v)
 Print a RVec at the prompt:
 
template<typename T >
ROOT::VecOps::Product (const RVec< T > &v, const T init=T(1))
 Return the product of the elements of the RVec.
 
RVec< long long intROOT::VecOps::Range (long long int begin, long long int end, long long int stride)
 Allows for negative begin, end, and/or stride.
 
RVec< std::size_t > ROOT::VecOps::Range (std::size_t begin, std::size_t end)
 Produce RVec with entries equal to begin, begin+1, ..., end-1.
 
RVec< std::size_t > ROOT::VecOps::Range (std::size_t length)
 Produce RVec with entries starting from 0, and incrementing by 1 until a user-specified N is reached.
 
template<typename T >
void ROOT::Internal::VecOps::ResetView (RVec< T > &v, T *addr, std::size_t sz)
 An unsafe function to reset the buffer for which this RVec is acting as a view.
 
template<typename T >
RVec< T > ROOT::VecOps::Reverse (const RVec< T > &v)
 Return copy of reversed vector.
 
template<typename T >
RVec< T > ROOT::VecOps::Sort (const RVec< T > &v)
 Return copy of RVec with elements sorted in ascending order.
 
template<typename T , typename Compare >
RVec< T > ROOT::VecOps::Sort (const RVec< T > &v, Compare &&c)
 Return copy of RVec with elements sorted based on a comparison operator.
 
template<typename T >
RVec< typename RVec< T >::size_type > ROOT::VecOps::StableArgsort (const RVec< T > &v)
 Return an RVec of indices that sort the input RVec while keeping the order of equal elements.
 
template<typename T , typename Compare >
RVec< typename RVec< T >::size_type > ROOT::VecOps::StableArgsort (const RVec< T > &v, Compare &&c)
 Return an RVec of indices that sort the input RVec based on a comparison function while keeping the order of equal elements.
 
template<typename T >
RVec< T > ROOT::VecOps::StableSort (const RVec< T > &v)
 Return copy of RVec with elements sorted in ascending order while keeping the order of equal elements.
 
template<typename T , typename Compare >
RVec< T > ROOT::VecOps::StableSort (const RVec< T > &v, Compare &&c)
 Return copy of RVec with elements sorted based on a comparison operator while keeping the order of equal elements.
 
template<typename T >
double ROOT::VecOps::StdDev (const RVec< T > &v)
 Get the standard deviation of the elements of an RVec.
 
std::size_t ROOT::VecOps::Sum (const RVec< bool > &v, std::size_t zero=0ul)
 
template<typename T >
ROOT::VecOps::Sum (const RVec< T > &v, const T zero=T(0))
 Sum elements of an RVec.
 
template<typename T >
void ROOT::VecOps::swap (RVec< T > &lhs, RVec< T > &rhs)
 
template<typename T >
RVec< T > ROOT::VecOps::Take (const RVec< T > &v, const int n)
 Return first n elements of an RVec if n > 0 and last n elements if n < 0.
 
template<typename T >
RVec< T > ROOT::VecOps::Take (const RVec< T > &v, const int n, const T default_val)
 Return first n elements of an RVec if n > 0 and last n elements if n < 0.
 
template<typename T >
RVec< T > ROOT::VecOps::Take (const RVec< T > &v, const RVec< typename RVec< T >::size_type > &i)
 Return elements of a vector at given indices.
 
template<typename T >
RVec< T > ROOT::VecOps::Take (const RVec< T > &v, const RVec< typename RVec< T >::size_type > &i, const T default_val)
 Take version that defaults to (user-specified) output value if some index is out of range.
 
template<typename ForwardIt >
void ROOT::Internal::VecOps::UninitializedValueConstruct (ForwardIt first, ForwardIt last)
 
template<typename T >
double ROOT::VecOps::Var (const RVec< T > &v)
 Get the variance of the elements of an RVec.
 
template<typename T , bool TriviallyCopyable>
 ROOT::Internal::VecOps::void (off) SmallVectorTemplateBase< T
 
template<typename T >
RVec< T > ROOT::VecOps::Where (const RVec< int > &c, const RVec< T > &v1, const RVec< T > &v2)
 Return the elements of v1 if the condition c is true and v2 if the condition c is false.
 
template<typename T >
RVec< T > ROOT::VecOps::Where (const RVec< int > &c, const RVec< T > &v1, typename RVec< T >::value_type v2)
 Return the elements of v1 if the condition c is true and sets the value v2 if the condition c is false.
 
template<typename T >
RVec< T > ROOT::VecOps::Where (const RVec< int > &c, T v1, T v2)
 Return a vector with the value v2 if the condition c is false and sets the value v1 if the condition c is true.
 
template<typename T >
RVec< T > ROOT::VecOps::Where (const RVec< int > &c, typename RVec< T >::value_type v1, const RVec< T > &v2)
 Return the elements of v2 if the condition c is false and sets the value v1 if the condition c is true.
 

RVec Unary Arithmetic Operators

template<typename T >
RVec< T > ROOT::VecOps::operator! (const RVec< T > &v)
 
template<typename T >
RVec< T > ROOT::VecOps::operator+ (const RVec< T > &v)
 
template<typename T >
RVec< T > ROOT::VecOps::operator- (const RVec< T > &v)
 
template<typename T >
RVec< T > ROOT::VecOps::operator~ (const RVec< T > &v)
 
#define RVEC_UNARY_OPERATOR(OP)
 

RVec Binary Arithmetic Operators

#define ERROR_MESSAGE(OP)    "Cannot call operator " #OP " on vectors of different sizes."
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator% (const RVec< T0 > &v, const T1 &y) -> RVec< decltype(v[0] % y)>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator% (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< decltype(v0[0] % v1[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator% (const T0 &x, const RVec< T1 > &v) -> RVec< decltype(x % v[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator& (const RVec< T0 > &v, const T1 &y) -> RVec< decltype(v[0] &y)>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator& (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< decltype(v0[0] &v1[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator& (const T0 &x, const RVec< T1 > &v) -> RVec< decltype(x &v[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator* (const RVec< T0 > &v, const T1 &y) -> RVec< decltype(v[0] *y)>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator* (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< decltype(v0[0] *v1[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator* (const T0 &x, const RVec< T1 > &v) -> RVec< decltype(x *v[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator+ (const RVec< T0 > &v, const T1 &y) -> RVec< decltype(v[0]+y)>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator+ (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< decltype(v0[0]+v1[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator+ (const T0 &x, const RVec< T1 > &v) -> RVec< decltype(x+v[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator- (const RVec< T0 > &v, const T1 &y) -> RVec< decltype(v[0] - y)>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator- (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< decltype(v0[0] - v1[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator- (const T0 &x, const RVec< T1 > &v) -> RVec< decltype(x - v[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator/ (const RVec< T0 > &v, const T1 &y) -> RVec< decltype(v[0]/y)>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator/ (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< decltype(v0[0]/v1[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator/ (const T0 &x, const RVec< T1 > &v) -> RVec< decltype(x/v[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator^ (const RVec< T0 > &v, const T1 &y) -> RVec< decltype(v[0] ^ y)>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator^ (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< decltype(v0[0] ^ v1[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator^ (const T0 &x, const RVec< T1 > &v) -> RVec< decltype(x ^ v[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator| (const RVec< T0 > &v, const T1 &y) -> RVec< decltype(v[0]|y)>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator| (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< decltype(v0[0]|v1[0])>
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator| (const T0 &x, const RVec< T1 > &v) -> RVec< decltype(x|v[0])>
 
#define RVEC_BINARY_OPERATOR(OP)
 

RVec Assignment Arithmetic Operators

template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator%= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator%= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator&= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator&= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator*= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator*= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator+= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator+= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator-= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator-= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator/= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator/= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator<<= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator<<= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator>>= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator>>= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator^= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator^= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator|= (RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< T0 > & ROOT::VecOps::operator|= (RVec< T0 > &v0, const RVec< T1 > &v1)
 
#define RVEC_ASSIGNMENT_OPERATOR(OP)
 

RVec Comparison and Logical Operators

template<typename T0 , typename T1 >
auto ROOT::VecOps::operator!= (const RVec< T0 > &v, const T1 &y) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator!= (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator!= (const T0 &x, const RVec< T1 > &v) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator&& (const RVec< T0 > &v, const T1 &y) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator&& (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator&& (const T0 &x, const RVec< T1 > &v) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator< (const RVec< T0 > &v, const T1 &y) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator< (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator< (const T0 &x, const RVec< T1 > &v) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator<= (const RVec< T0 > &v, const T1 &y) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator<= (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator<= (const T0 &x, const RVec< T1 > &v) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator== (const RVec< T0 > &v, const T1 &y) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator== (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator== (const T0 &x, const RVec< T1 > &v) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator> (const RVec< T0 > &v, const T1 &y) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator> (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator> (const T0 &x, const RVec< T1 > &v) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator>= (const RVec< T0 > &v, const T1 &y) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator>= (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator>= (const T0 &x, const RVec< T1 > &v) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator|| (const RVec< T0 > &v, const T1 &y) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator|| (const RVec< T0 > &v0, const RVec< T1 > &v1) -> RVec< int >
 
template<typename T0 , typename T1 >
auto ROOT::VecOps::operator|| (const T0 &x, const RVec< T1 > &v) -> RVec< int >
 
#define RVEC_LOGICAL_OPERATOR(OP)
 

RVec Standard Mathematical Functions

template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::abs (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::acos (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::acosh (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::asin (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::asinh (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::atan (const RVec< T > &v)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::atan2 (const RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::atan2 (const RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::atan2 (const T0 &x, const RVec< T1 > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::atanh (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::cbrt (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::ceil (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::cos (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::cosh (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::erf (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::erfc (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::exp (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::exp2 (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::expm1 (const RVec< T > &v)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::fdim (const RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::fdim (const RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::fdim (const T0 &x, const RVec< T1 > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::floor (const RVec< T > &v)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::fmod (const RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::fmod (const RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::fmod (const T0 &x, const RVec< T1 > &v)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::hypot (const RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::hypot (const RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::hypot (const T0 &x, const RVec< T1 > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::lgamma (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::llround (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::log (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::log10 (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::log1p (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::log2 (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::lround (const RVec< T > &v)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::pow (const RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::pow (const RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::pow (const T0 &x, const RVec< T1 > &v)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::remainder (const RVec< T0 > &v, const T1 &y)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::remainder (const RVec< T0 > &v0, const RVec< T1 > &v1)
 
template<typename T0 , typename T1 >
RVec< PromoteTypes< T0, T1 > > ROOT::VecOps::remainder (const T0 &x, const RVec< T1 > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::round (const RVec< T > &v)
 
#define RVEC_BINARY_FUNCTION(NAME, FUNC)
 
#define RVEC_STD_BINARY_FUNCTION(F)   RVEC_BINARY_FUNCTION(F, std::F)
 
#define RVEC_STD_UNARY_FUNCTION(F)   RVEC_UNARY_FUNCTION(F, std::F)
 
#define RVEC_UNARY_FUNCTION(NAME, FUNC)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::sin (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::sinh (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::sqrt (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::tan (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::tanh (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::tgamma (const RVec< T > &v)
 
template<typename T >
RVec< PromoteType< T > > ROOT::VecOps::trunc (const RVec< T > &v)
 

Macro Definition Documentation

◆ _VECOPS_USE_EXTERN_TEMPLATES

#define _VECOPS_USE_EXTERN_TEMPLATES   true

Definition at line 32 of file RVec.hxx.

◆ R__RVEC_NODISCARD

#define R__RVEC_NODISCARD

Definition at line 19 of file RVec.hxx.