CMS 3D CMS Logo

Classes | Namespaces | Typedefs | Functions
sseBasic2DVector.h File Reference
#include "DataFormats/GeometryVector/interface/Phi.h"
#include "DataFormats/GeometryVector/interface/PreciseFloatType.h"
#include "DataFormats/GeometryVector/interface/CoordinateSets.h"
#include "DataFormats/Math/interface/SSEVec.h"
#include <cmath>
#include <iosfwd>

Go to the source code of this file.

Classes

class  Basic2DVector< T >
 

Namespaces

 geometryDetails
 

Typedefs

typedef Basic2DVector< double > Basic2DVectorD
 
typedef Basic2DVector< float > Basic2DVectorF
 

Functions

template<class T >
T operator* (const Basic2DVector< T > &v1, const Basic2DVector< T > &v2)
 
template<class T , class U >
PreciseFloatType< T, U >::Type operator* (const Basic2DVector< T > &v1, const Basic2DVector< U > &v2)
 scalar product of vectors of different precision More...
 
template<class T >
Basic2DVector< Toperator* (const Basic2DVector< T > &v, T t)
 
template<class T >
Basic2DVector< Toperator* (T t, const Basic2DVector< T > &v)
 Same as operator*( Vector, Scalar) More...
 
template<class T , class Scalar >
Basic2DVector< Toperator* (const Basic2DVector< T > &v, const Scalar &s)
 
template<class T , class Scalar >
Basic2DVector< Toperator* (const Scalar &s, const Basic2DVector< T > &v)
 Same as operator*( Vector, Scalar) More...
 
template<class T >
Basic2DVector< Toperator+ (const Basic2DVector< T > &a, const Basic2DVector< T > &b)
 vector sum and subtraction of vectors of possibly different precision More...
 
template<class T , class U >
Basic2DVector< typename PreciseFloatType< T, U >::Type > operator+ (const Basic2DVector< T > &a, const Basic2DVector< U > &b)
 
template<class T >
Basic2DVector< Toperator- (const Basic2DVector< T > &a, const Basic2DVector< T > &b)
 
template<class T , class U >
Basic2DVector< typename PreciseFloatType< T, U >::Type > operator- (const Basic2DVector< T > &a, const Basic2DVector< U > &b)
 
template<class T >
Basic2DVector< Toperator/ (const Basic2DVector< T > &v, T t)
 
template<class T , class Scalar >
Basic2DVector< Toperator/ (const Basic2DVector< T > &v, const Scalar &s)
 
template<class T >
std::ostream & operator<< (std::ostream &s, const Basic2DVector< T > &v)
 simple text output to standard streams More...
 
std::ostream & geometryDetails::print2D (std::ostream &s, double x, double y)
 

Typedef Documentation

typedef Basic2DVector<double> Basic2DVectorD

Definition at line 259 of file sseBasic2DVector.h.

typedef Basic2DVector<float> Basic2DVectorF

Definition at line 258 of file sseBasic2DVector.h.

Function Documentation

template<class T >
T operator* ( const Basic2DVector< T > &  v1,
const Basic2DVector< T > &  v2 
)
inline

Definition at line 202 of file sseBasic2DVector.h.

References Basic2DVector< T >::dot().

202  {
203  return v1.dot(v2);
204 }
T dot(const Basic2DVector &lh) const
Scalar product, or "dot" product, with a vector of same type.
template<class T , class U >
PreciseFloatType<T,U>::Type operator* ( const Basic2DVector< T > &  v1,
const Basic2DVector< U > &  v2 
)
inline

scalar product of vectors of different precision

Definition at line 208 of file sseBasic2DVector.h.

References Basic2DVector< T >::dot().

209  {
210  return v1.dot(v2);
211 }
T dot(const Basic2DVector &lh) const
Scalar product, or "dot" product, with a vector of same type.
template<class T >
Basic2DVector<T> operator* ( const Basic2DVector< T > &  v,
T  t 
)
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 218 of file sseBasic2DVector.h.

References lumiQTWidget::t, and Basic2DVector< T >::v.

218  {
219  return v.v*t;
220 }
template<class T >
Basic2DVector<T> operator* ( T  t,
const Basic2DVector< T > &  v 
)
inline

Same as operator*( Vector, Scalar)

Definition at line 224 of file sseBasic2DVector.h.

References lumiQTWidget::t, and Basic2DVector< T >::v.

224  {
225  return v.v*t;
226 }
template<class T , class Scalar >
Basic2DVector<T> operator* ( const Basic2DVector< T > &  v,
const Scalar &  s 
)
inline

Definition at line 231 of file sseBasic2DVector.h.

References alignCSCRings::s, and lumiQTWidget::t.

231  {
232  T t = static_cast<T>(s);
233  return v*t;
234 }
long double T
template<class T , class Scalar >
Basic2DVector<T> operator* ( const Scalar &  s,
const Basic2DVector< T > &  v 
)
inline

Same as operator*( Vector, Scalar)

Definition at line 238 of file sseBasic2DVector.h.

References alignCSCRings::s, and lumiQTWidget::t.

238  {
239  T t = static_cast<T>(s);
240  return v*t;
241 }
long double T
template<class T >
Basic2DVector<T> operator+ ( const Basic2DVector< T > &  a,
const Basic2DVector< T > &  b 
)
inline

vector sum and subtraction of vectors of possibly different precision

Definition at line 174 of file sseBasic2DVector.h.

References Basic2DVector< T >::v.

174  {
175  return a.v+b.v;
176 }
template<class T , class U >
Basic2DVector<typename PreciseFloatType<T,U>::Type> operator+ ( const Basic2DVector< T > &  a,
const Basic2DVector< U > &  b 
)
inline

Definition at line 185 of file sseBasic2DVector.h.

185  {
187  return RT(a) + RT(b);
188 }
template<class T >
Basic2DVector<T> operator- ( const Basic2DVector< T > &  a,
const Basic2DVector< T > &  b 
)
inline

Definition at line 179 of file sseBasic2DVector.h.

References Basic2DVector< T >::v.

179  {
180  return a.v-b.v;
181 }
template<class T , class U >
Basic2DVector<typename PreciseFloatType<T,U>::Type> operator- ( const Basic2DVector< T > &  a,
const Basic2DVector< U > &  b 
)
inline

Definition at line 192 of file sseBasic2DVector.h.

192  {
194  return RT(a)-RT(b);
195 }
template<class T >
Basic2DVector<T> operator/ ( const Basic2DVector< T > &  v,
T  t 
)
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 247 of file sseBasic2DVector.h.

References lumiQTWidget::t, and Basic2DVector< T >::v.

247  {
248  return v.v/t;
249 }
template<class T , class Scalar >
Basic2DVector<T> operator/ ( const Basic2DVector< T > &  v,
const Scalar &  s 
)
inline

Definition at line 252 of file sseBasic2DVector.h.

References alignCSCRings::s, and lumiQTWidget::t.

252  {
253  // T t = static_cast<T>(Scalar(1)/s); return v*t;
254  T t = static_cast<T>(s);
255  return v/t;
256 }
long double T
template<class T >
std::ostream& operator<< ( std::ostream &  s,
const Basic2DVector< T > &  v 
)
inline

simple text output to standard streams

Definition at line 166 of file sseBasic2DVector.h.

References geometryDetails::print2D(), alignCSCRings::s, and Basic2DVector< T >::v.

166  {
167  return geometryDetails::print2D(s, v.x(),v.y());
168 }
std::ostream & print2D(std::ostream &s, double x, double y)
Definition: print.cc:8
T y() const
Cartesian y coordinate.
T x() const
Cartesian x coordinate.