CMS 3D CMS Logo

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

Go to the source code of this file.

Classes

class  Vector2DBase< T, FrameTag >
 

Macros

#define GeometryVector_Vector2DBase_h
 

Functions

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

Macro Definition Documentation

#define GeometryVector_Vector2DBase_h

Function Documentation

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

scalar product of vectors of possibly different precision

Definition at line 111 of file Vector2DBase.h.

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

111  {
112  return v1.basicVector() * v2.basicVector();
113 }
const BasicVectorType & basicVector() const
Definition: PV2DBase.h:38
template<class T , class FrameTag , class Scalar >
Vector2DBase<T, FrameTag> operator* ( const Vector2DBase< 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 120 of file Vector2DBase.h.

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

120  {
121  return Vector2DBase<T, FrameTag>( v.basicVector() * s);
122 }
const BasicVectorType & basicVector() const
Definition: PV2DBase.h:38
template<class T , class FrameTag , class Scalar >
Vector2DBase<T, FrameTag> operator* ( const Scalar &  s,
const Vector2DBase< T, FrameTag > &  v 
)
inline

Same as operator*( Vector, Scalar)

Definition at line 127 of file Vector2DBase.h.

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

127  {
128  return Vector2DBase<T, FrameTag>( v.basicVector() * s);
129 }
const BasicVectorType & basicVector() const
Definition: PV2DBase.h:38
template<class T , class U , class FrameTag >
Vector2DBase<typename PreciseFloatType<T,U>::Type, FrameTag> operator+ ( const Vector2DBase< T, FrameTag > &  v1,
const Vector2DBase< U, FrameTag > &  v2 
)
inline

vector sum and subtraction of vectors of possibly different precision

Definition at line 96 of file Vector2DBase.h.

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

96  {
98  return RT(v1.basicVector() + v2.basicVector());
99 }
const BasicVectorType & basicVector() const
Definition: PV2DBase.h:38
template<class T , class U , class FrameTag >
Vector2DBase<typename PreciseFloatType<T,U>::Type, FrameTag> operator- ( const Vector2DBase< T, FrameTag > &  v1,
const Vector2DBase< U, FrameTag > &  v2 
)
inline

Definition at line 103 of file Vector2DBase.h.

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

103  {
105  return RT(v1.basicVector() - v2.basicVector());
106 }
const BasicVectorType & basicVector() const
Definition: PV2DBase.h:38
template<class T , class FrameTag , class Scalar >
Vector2DBase<T, FrameTag> operator/ ( const Vector2DBase< 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 136 of file Vector2DBase.h.

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

136  {
137  return Vector2DBase<T, FrameTag>( v.basicVector() / s);
138 }
const BasicVectorType & basicVector() const
Definition: PV2DBase.h:38