CMS 3D CMS Logo

List of all members | Public Types | Public Member Functions
Vector3DBase< T, FrameTag > Class Template Reference

#include <Vector3DBase.h>

Inheritance diagram for Vector3DBase< T, FrameTag >:
PV3DBase< T, VectorTag, FrameTag >

Public Types

typedef PV3DBase< T, VectorTag, FrameTag > BaseClass
 
typedef BaseClass::BasicVectorType BasicVectorType
 
typedef BaseClass::Cylindrical Cylindrical
 
typedef BaseClass::Polar Polar
 
typedef BaseClass::Spherical Spherical
 
typedef Vector3DBase< T, FrameTag > VectorType
 
- Public Types inherited from PV3DBase< T, VectorTag, FrameTag >
typedef Basic3DVector< TBasicVectorType
 
typedef BasicVectorType::Cylindrical Cylindrical
 
typedef BasicVectorType::MathVector MathVector
 
typedef BasicVectorType::Polar Polar
 
typedef T ScalarType
 
typedef BasicVectorType::Spherical Spherical
 

Public Member Functions

template<class U >
Vector3DBase< typename PreciseFloatType< T, U >::Type, FrameTag > cross (const Vector3DBase< U, FrameTag > &v) const
 
template<class U >
PreciseFloatType< T, U >::Type dot (const Vector3DBase< U, FrameTag > &v) const
 
Vector3DBaseoperator*= (const T &t)
 Scaling by a scalar value (multiplication) More...
 
template<class U >
Vector3DBaseoperator+= (const Vector3DBase< U, FrameTag > &v)
 
Vector3DBase operator- () const
 Unary minus, returns a vector with components (-x(),-y(),-z()) More...
 
template<class U >
Vector3DBaseoperator-= (const Vector3DBase< U, FrameTag > &v)
 
Vector3DBaseoperator/= (const T &t)
 Scaling by a scalar value (division) More...
 
bool operator== (const Vector3DBase &rh) const
 
Vector3DBase unit () const
 
 Vector3DBase ()
 
template<class U >
 Vector3DBase (const Vector3DBase< U, FrameTag > &v)
 
 Vector3DBase (const T &x, const T &y, const T &z)
 construct from cartesian coordinates More...
 
 Vector3DBase (const Cylindrical &set)
 
 Vector3DBase (const Polar &set)
 construct from polar coordinates More...
 
 Vector3DBase (const Geom::Theta< T > &th, const Geom::Phi< T > &ph, const T &r)
 
template<class U >
 Vector3DBase (const Basic3DVector< U > &v)
 
- Public Member Functions inherited from PV3DBase< T, VectorTag, FrameTag >
T barePhi () const
 
T bareTheta () const
 
const BasicVectorTypebasicVector () const
 
T eta () const
 
T mag () const
 
T mag2 () const
 
MathVector const & mathVector () const
 
MathVectormathVector ()
 
T perp () const
 
T perp2 () const
 
Geom::Phi< Tphi () const
 
 PV3DBase ()
 
 PV3DBase (const T &x, const T &y, const T &z)
 construct from cartesian coordinates More...
 
 PV3DBase (const Cylindrical &set)
 
 PV3DBase (const Polar &set)
 construct from polar coordinates More...
 
 PV3DBase (const Geom::Theta< T > &th, const Geom::Phi< T > &ph, const T &r)
 
 PV3DBase (const Basic3DVector< U > &v)
 
Geom::Theta< Ttheta () const
 
T transverse () const
 
T x () const
 
T y () const
 
T z () const
 

Additional Inherited Members

- Protected Attributes inherited from PV3DBase< T, VectorTag, FrameTag >
BasicVectorType theVector
 

Detailed Description

template<class T, class FrameTag>
class Vector3DBase< T, FrameTag >

Definition at line 8 of file Vector3DBase.h.

Member Typedef Documentation

◆ BaseClass

template<class T, class FrameTag>
typedef PV3DBase<T, VectorTag, FrameTag> Vector3DBase< T, FrameTag >::BaseClass

Definition at line 10 of file Vector3DBase.h.

◆ BasicVectorType

template<class T, class FrameTag>
typedef BaseClass::BasicVectorType Vector3DBase< T, FrameTag >::BasicVectorType

Definition at line 15 of file Vector3DBase.h.

◆ Cylindrical

template<class T, class FrameTag>
typedef BaseClass::Cylindrical Vector3DBase< T, FrameTag >::Cylindrical

Definition at line 12 of file Vector3DBase.h.

◆ Polar

template<class T, class FrameTag>
typedef BaseClass::Polar Vector3DBase< T, FrameTag >::Polar

Definition at line 14 of file Vector3DBase.h.

◆ Spherical

template<class T, class FrameTag>
typedef BaseClass::Spherical Vector3DBase< T, FrameTag >::Spherical

Definition at line 13 of file Vector3DBase.h.

◆ VectorType

template<class T, class FrameTag>
typedef Vector3DBase<T, FrameTag> Vector3DBase< T, FrameTag >::VectorType

Definition at line 11 of file Vector3DBase.h.

Constructor & Destructor Documentation

◆ Vector3DBase() [1/7]

template<class T, class FrameTag>
Vector3DBase< T, FrameTag >::Vector3DBase ( )
inline

default constructor uses default constructor of T to initialize the components. For built-in floating-point types this means initialization to zero

Definition at line 21 of file Vector3DBase.h.

Referenced by Vector3DBase< Scalar, GlobalTag >::operator-(), and Vector3DBase< Scalar, GlobalTag >::unit().

21 {}

◆ Vector3DBase() [2/7]

template<class T, class FrameTag>
template<class U >
Vector3DBase< T, FrameTag >::Vector3DBase ( const Vector3DBase< U, FrameTag > &  v)
inline

Construct from another point in the same reference frame, possiblly with different precision

Definition at line 27 of file Vector3DBase.h.

27 : BaseClass(v.basicVector()) {}
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
PV3DBase< T, VectorTag, FrameTag > BaseClass
Definition: Vector3DBase.h:10

◆ Vector3DBase() [3/7]

template<class T, class FrameTag>
Vector3DBase< T, FrameTag >::Vector3DBase ( const T x,
const T y,
const T z 
)
inline

construct from cartesian coordinates

Definition at line 30 of file Vector3DBase.h.

30 : BaseClass(x, y, z) {}
PV3DBase< T, VectorTag, FrameTag > BaseClass
Definition: Vector3DBase.h:10

◆ Vector3DBase() [4/7]

template<class T, class FrameTag>
Vector3DBase< T, FrameTag >::Vector3DBase ( const Cylindrical set)
inlineexplicit

Construct from cylindrical coordinates.

Definition at line 34 of file Vector3DBase.h.

34 : BaseClass(set) {}
PV3DBase< T, VectorTag, FrameTag > BaseClass
Definition: Vector3DBase.h:10

◆ Vector3DBase() [5/7]

template<class T, class FrameTag>
Vector3DBase< T, FrameTag >::Vector3DBase ( const Polar set)
inlineexplicit

construct from polar coordinates

Definition at line 37 of file Vector3DBase.h.

37 : BaseClass(set) {}
PV3DBase< T, VectorTag, FrameTag > BaseClass
Definition: Vector3DBase.h:10

◆ Vector3DBase() [6/7]

template<class T, class FrameTag>
Vector3DBase< T, FrameTag >::Vector3DBase ( const Geom::Theta< T > &  th,
const Geom::Phi< T > &  ph,
const T r 
)
inline

Deprecated construct from polar coordinates, use constructor from Polar( theta, phi, r) instead.

Definition at line 42 of file Vector3DBase.h.

42 : BaseClass(th, ph, r) {}
PV3DBase< T, VectorTag, FrameTag > BaseClass
Definition: Vector3DBase.h:10

◆ Vector3DBase() [7/7]

template<class T, class FrameTag>
template<class U >
Vector3DBase< T, FrameTag >::Vector3DBase ( const Basic3DVector< U > &  v)
inlineexplicit

Explicit constructor from BasicVectorType, bypasses consistency checks for point/vector and for coordinate frame. To be used as carefully as e.g. const_cast.

Definition at line 49 of file Vector3DBase.h.

49 : BaseClass(v) {}
PV3DBase< T, VectorTag, FrameTag > BaseClass
Definition: Vector3DBase.h:10

Member Function Documentation

◆ cross()

template<class T, class FrameTag>
template<class U >
Vector3DBase<typename PreciseFloatType<T, U>::Type, FrameTag> Vector3DBase< T, FrameTag >::cross ( const Vector3DBase< U, FrameTag > &  v) const
inline

Vector (or cross) product with a vector of possibly different precision, defined in the same reference frame. The product is computed without loss of precision. The precision of the returned Vector is the higher precision of the scalar types of the two vectors.

Definition at line 110 of file Vector3DBase.h.

Referenced by gen::EvtGenInterface::addToHepMC(), RPCSeedPattern::computePtwithSegment(), RodPlaneBuilderFromDet::computeRotation(), PlaneBuilderForGluedDet::computeRotation(), DTDigitizer::computeTime(), Line::distance(), SignedImpactParameter3D::distanceWithJetAxis(), TransverseImpactPointExtrapolator::doExtrapolation(), RPCSeedPattern::extropolateStep(), Cylinder::fastTangent(), AlCaHOCalibProducer::fillHOStore(), jacobianCartesianToCurvilinear(), jacobianCurvilinearToCartesian(), PathToPlane2Order::operator()(), RPCSeedPattern::SegmentAlgorithmSpecial(), Cylinder::tangentPlane(), TransverseImpactPointExtrapolator::tipSurface(), TkRotation< align::Scalar >::TkRotation(), and L1MuonPixelTrackFitter::valPhi().

110  {
112  return RT(this->theVector.cross(v.basicVector()));
113  }
Basic3DVector cross(const Basic3DVector &lh) const
Vector product, or "cross" product, with a vector of same type.
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53

◆ dot()

template<class T, class FrameTag>
template<class U >
PreciseFloatType<T, U>::Type Vector3DBase< T, FrameTag >::dot ( const Vector3DBase< U, FrameTag > &  v) const
inline

Scalar (or dot) product with a vector of possibly different precision, defined in the same reference frame. The product is computed without loss of precision. The type of the returned scalar is the more precise of the scalar types of the two vectors.

Definition at line 99 of file Vector3DBase.h.

Referenced by GlobalTrackerMuonAlignment::analyzeTrackTrack(), GlobalTrackerMuonAlignment::analyzeTrackTrajectory(), SignedImpactParameter3D::apply(), SignedDecayLength3D::apply(), HGCDoublet::areAligned(), btagbtvdeep::TrackPairInfoBuilder::buildTrackPairInfo(), TwoTrackMinimumDistanceLineLine::calculate(), Line::closerPointToLine(), JacobianCurvilinearToLocal::compute(), JacobianLocalToCurvilinear::compute(), DTDigitizer::computeTime(), Line::distance(), SignedImpactParameter3D::distanceWithJetAxis(), V0Fitter::fitAll(), getDistInPlane(), getDistInPlaneSimple(), spr::getDistInPlaneTrackDir(), getDistInPlaneTrackDir(), Plane::localZ(), OuterDetCompatibility::maximalLocalDisplacement(), TSCBLBuilderWithPropagator::operator()(), MagGeoBuilderFromDDD::volumeHandle::referencePlane(), BtoCharmDecayVertexMergerT< VTX >::resolveBtoDchain(), and SignedTransverseImpactParameter::zImpactParameter().

99  {
100  return this->theVector.dot(v.basicVector());
101  }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
T dot(const Basic3DVector &rh) const
Scalar product, or "dot" product, with a vector of same type.

◆ operator*=()

template<class T, class FrameTag>
Vector3DBase& Vector3DBase< T, FrameTag >::operator*= ( const T t)
inline

Scaling by a scalar value (multiplication)

Definition at line 81 of file Vector3DBase.h.

81  {
82  this->theVector *= t;
83  return *this;
84  }

◆ operator+=()

template<class T, class FrameTag>
template<class U >
Vector3DBase& Vector3DBase< T, FrameTag >::operator+= ( const Vector3DBase< U, FrameTag > &  v)
inline

Increment by another Vector of possibly different precision, defined in the same reference frame

Definition at line 63 of file Vector3DBase.h.

63  {
64  this->theVector += v.basicVector();
65  return *this;
66  }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53

◆ operator-()

template<class T, class FrameTag>
Vector3DBase Vector3DBase< T, FrameTag >::operator- ( ) const
inline

Unary minus, returns a vector with components (-x(),-y(),-z())

Definition at line 78 of file Vector3DBase.h.

78 { return Vector3DBase(-this->basicVector()); }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53

◆ operator-=()

template<class T, class FrameTag>
template<class U >
Vector3DBase& Vector3DBase< T, FrameTag >::operator-= ( const Vector3DBase< U, FrameTag > &  v)
inline

Decrement by another Vector of possibly different precision, defined in the same reference frame

Definition at line 72 of file Vector3DBase.h.

72  {
73  this->theVector -= v.basicVector();
74  return *this;
75  }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53

◆ operator/=()

template<class T, class FrameTag>
Vector3DBase& Vector3DBase< T, FrameTag >::operator/= ( const T t)
inline

Scaling by a scalar value (division)

Definition at line 87 of file Vector3DBase.h.

87  {
88  this->theVector /= t;
89  return *this;
90  }

◆ operator==()

template<class T, class FrameTag>
bool Vector3DBase< T, FrameTag >::operator== ( const Vector3DBase< T, FrameTag > &  rh) const
inline

Definition at line 57 of file Vector3DBase.h.

57 { return this->basicVector() == rh.basicVector(); }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53

◆ unit()

template<class T, class FrameTag>
Vector3DBase Vector3DBase< T, FrameTag >::unit ( ) const
inline

Unit vector parallel to this. If mag() is zero, a zero vector is returned.

Definition at line 54 of file Vector3DBase.h.

Referenced by gen::EvtGenInterface::addToHepMC(), SignedImpactParameter3D::apply(), SignedDecayLength3D::apply(), SignedTransverseImpactParameter::apply(), btagbtvdeep::TrackPairInfoBuilder::buildTrackPairInfo(), SignedDecayLength3D::closestApproachToJet(), SignedImpactParameter3D::closestApproachToJet(), ForwardDiskSectorBuilderFromDet::computeBounds(), ForwardRingDiskBuilderFromDet::computeBounds(), AnalyticalCurvilinearJacobian::computeFullJacobian(), AnalyticalCurvilinearJacobian::computeStraightLineJacobian(), ForwardDetLayer::computeSurface(), DTDigitizer::computeTime(), TSCPBuilderNoMaterial::createFTSatTransverseImpactPointCharged(), fastsim::TrackerSimHitProducer::createHitOnDetector(), RPCSeedPattern::createSeed(), GlobalTrajectoryParameters::direction(), CTPPSPixelLocalTrack::directionVector(), SignedImpactParameter3D::distanceWithJetAxis(), DTRecSegment4D::DTRecSegment4D(), TrajectoryExtrapolatorToLine::extrapolate(), RPCSeedPattern::extropolateStep(), ConformalMappingFit::findRot(), DTSegmentUpdator::fit(), trackingTools::ftsFromVertexToPoint(), getDistInPlane(), getDistInPlaneSimple(), spr::getDistInPlaneTrackDir(), getDistInPlaneTrackDir(), TrackDetectorAssociator::getTAMuonChamberMatches(), BasicTrajectoryState::globalDirection(), PixelTemplateSmearerBase::hitsMerge(), SeedFromConsecutiveHitsTripletOnlyCreator::initialKinematic(), SeedFromConsecutiveHitsCreator::initialKinematic(), SeedForPhotonConversion1Leg::initialKinematic(), SeedForPhotonConversionFromQuadruplets::initialKinematic(), jacobianCartesianToCurvilinear(), PerigeeConversions::jacobianCurvilinear2Perigee(), jacobianCurvilinearToCartesian(), PerigeeConversions::jacobianPerigee2Curvilinear(), IPTools::linearizedSignedImpactParameter3D(), BasicTrajectoryState::localDirection(), FlatHexagon::makeAxis(), TruncatedPyramid::makeAxis(), FlatTrd::makeAxis(), TrajectoryManager::makeSinglePSimHit(), OuterDetCompatibility::maximalLocalDisplacement(), TransverseBoundPlaneFactory::operator()(), PropagationDirectionChooser::operator()(), MuonSimHitProducer::produce(), CosmicRegionalSeedGenerator::regions(), SeedGeneratorForCRack::seeds(), RPCSeedPattern::SegmentAlgorithmSpecial(), CosmicMuonUtilities::stepPropagate(), ThirdHitPredictionFromInvLine::ThirdHitPredictionFromInvLine(), TkRotation< align::Scalar >::TkRotation(), ConversionSeedFinder::trackStateFromClusters(), Geant4ePropagator::transformToG4SurfaceTarget(), Vector3DBase< Scalar, GlobalTag >::unit(), and CSCCrossGap::unitVector().

54 { return Vector3DBase(this->basicVector().unit()); }
const BasicVectorType & basicVector() const
Definition: PV3DBase.h:53
Vector3DBase unit() const
Definition: Vector3DBase.h:54