CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Functions
Vector3DBase.h File Reference
#include "DataFormats/GeometryVector/interface/VectorTag.h"
#include "DataFormats/GeometryVector/interface/PV3DBase.h"

Go to the source code of this file.

Classes

class  Vector3DBase< T, FrameTag >
 

Functions

template<class T , class U , class FrameTag >
PreciseFloatType< T, U >::Type operator* (const Vector3DBase< T, FrameTag > &v1, const Vector3DBase< U, FrameTag > &v2)
 scalar product of vectors of possibly different precision More...
 
template<class T , class FrameTag , class Scalar >
Vector3DBase< T, FrameTag > operator* (const Vector3DBase< T, FrameTag > &v, const Scalar &s)
 
template<class T , class FrameTag , class Scalar >
Vector3DBase< T, FrameTag > operator* (const Scalar &s, const Vector3DBase< T, FrameTag > &v)
 Same as operator*( Vector, Scalar) More...
 
template<class T , class U , class FrameTag >
Vector3DBase< typename
PreciseFloatType< T, U >::Type,
FrameTag > 
operator+ (const Vector3DBase< T, FrameTag > &v1, const Vector3DBase< U, FrameTag > &v2)
 vector sum and subtraction of vectors of possibly different precision More...
 
template<class T , class U , class FrameTag >
Vector3DBase< typename
PreciseFloatType< T, U >::Type,
FrameTag > 
operator- (const Vector3DBase< T, FrameTag > &v1, const Vector3DBase< U, FrameTag > &v2)
 
template<class T , class FrameTag , class Scalar >
Vector3DBase< T, FrameTag > operator/ (const Vector3DBase< T, FrameTag > &v, const Scalar &s)
 

Function Documentation

template<class T , class U , class FrameTag >
PreciseFloatType<T,U>::Type operator* ( const Vector3DBase< T, FrameTag > &  v1,
const Vector3DBase< U, FrameTag > &  v2 
)
inline

scalar product of vectors of possibly different precision

Definition at line 144 of file Vector3DBase.h.

References PV3DBase< T, VectorTag, FrameTag >::basicVector().

144  {
145  return v1.basicVector() * v2.basicVector();
146 }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
template<class T , class FrameTag , class Scalar >
Vector3DBase<T, FrameTag> operator* ( const Vector3DBase< T, FrameTag > &  v,
const Scalar &  s 
)
inline

Multiplication by scalar, does not change the precision of the vector. The return type is the same as the type of the vector argument.

Definition at line 153 of file Vector3DBase.h.

References PV3DBase< T, VectorTag, FrameTag >::basicVector(), and alignCSCRings::s.

153  {
154  return Vector3DBase<T, FrameTag>( v.basicVector() * s);
155 }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
template<class T , class FrameTag , class Scalar >
Vector3DBase<T, FrameTag> operator* ( const Scalar &  s,
const Vector3DBase< T, FrameTag > &  v 
)
inline

Same as operator*( Vector, Scalar)

Definition at line 160 of file Vector3DBase.h.

References PV3DBase< T, VectorTag, FrameTag >::basicVector(), and alignCSCRings::s.

160  {
161  return Vector3DBase<T, FrameTag>( v.basicVector() * s);
162 }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
template<class T , class U , class FrameTag >
Vector3DBase<typename PreciseFloatType<T,U>::Type, FrameTag> operator+ ( const Vector3DBase< T, FrameTag > &  v1,
const Vector3DBase< U, FrameTag > &  v2 
)
inline

vector sum and subtraction of vectors of possibly different precision

Definition at line 129 of file Vector3DBase.h.

References PV3DBase< T, VectorTag, FrameTag >::basicVector().

129  {
131  return RT(v1.basicVector() + v2.basicVector());
132 }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
template<class T , class U , class FrameTag >
Vector3DBase<typename PreciseFloatType<T,U>::Type, FrameTag> operator- ( const Vector3DBase< T, FrameTag > &  v1,
const Vector3DBase< U, FrameTag > &  v2 
)
inline

Definition at line 136 of file Vector3DBase.h.

References PV3DBase< T, VectorTag, FrameTag >::basicVector().

136  {
138  return RT(v1.basicVector() - v2.basicVector());
139 }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56
template<class T , class FrameTag , class Scalar >
Vector3DBase<T, FrameTag> operator/ ( const Vector3DBase< T, FrameTag > &  v,
const Scalar &  s 
)
inline

Division by scalar, does not change the precision of the vector. The return type is the same as the type of the vector argument.

Definition at line 169 of file Vector3DBase.h.

References PV3DBase< T, VectorTag, FrameTag >::basicVector(), and alignCSCRings::s.

169  {
170  return Vector3DBase<T, FrameTag>( v.basicVector() / s);
171 }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:56