Go to the documentation of this file. 1 #ifndef BasicTrajectoryState_H
2 #define BasicTrajectoryState_H
36 BTSCount(BTSCount
const&) {}
38 static unsigned int maxReferences;
39 static unsigned long long aveReferences;
40 static unsigned long long toteReferences;
42 void addReference()
const {
44 referenceMax_ =
std::max(referenceMax_, referenceCount_);
46 void removeReference()
const {
47 if (0 == --referenceCount_) {
48 delete const_cast<BTSCount*>(
this);
52 unsigned int references()
const {
return referenceCount_; }
55 mutable unsigned int referenceCount_ = 0;
56 mutable unsigned int referenceMax_ = 0;
85 template <
typename T,
typename... Args>
86 static std::shared_ptr<BTSOS>
build(Args&&...
args) {
87 return std::make_shared<T>(std::forward<Args>(
args)...);
90 template <
typename T,
typename... Args>
91 static std::shared_ptr<BTSOS>
churn(Args&&...
args) {
181 template <
typename... Args>
const MagneticField * magneticField() const
BasicTrajectoryState BTSOS
GlobalVector globalDirection() const
GlobalVector momentum() const
virtual pointer clone() const =0
FreeTrajectoryState const * freeTrajectoryState(bool withErrors=true) const
SurfaceSideDefinition::SurfaceSide SurfaceSide
BasicTrajectoryState(const FreeTrajectoryState &fts)
TrackCharge charge() const
TrackCharge charge() const
BasicTrajectoryState(const GlobalTrajectoryParameters &par, const SurfaceType &aSurface, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
BasicTrajectoryState(const LocalTrajectoryParameters &par, const SurfaceType &aSurface, const MagneticField *field, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
double signedInverseMomentum() const
GlobalPoint position() const
void rescaleError(double factor)
bool theLocalParametersValid
Vector3DBase unit() const
const LocalTrajectoryError & localError() const
BasicTrajectoryState(double iweight, Args &&... args)
CartesianTrajectoryError cartesianError() const
LocalPoint position() const
Local x and y position coordinates.
void createLocalErrorFromCurvilinearError() const
const CurvilinearTrajectoryError & curvilinearError() const
const GlobalTrajectoryParameters & globalParameters() const
std::shared_ptr< T > pointer
const SurfaceType & surface() const
LocalVector localMomentum() const
virtual bool canUpdateLocalParameters() const
const CartesianTrajectoryError cartesianError() const
virtual bool singleState() const =0
void createLocalParameters() const
LocalTrajectoryError theLocalError
LocalVector localDirection() const
void missingError(char const *where) const
const GlobalTrajectoryParameters & parameters() const
virtual void update(const LocalTrajectoryParameters &p, const SurfaceType &aSurface, const MagneticField *field, const SurfaceSide side)
BasicTrajectoryState(const GlobalTrajectoryParameters &par, const CartesianTrajectoryError &err, const SurfaceType &aSurface, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
GlobalPoint globalPosition() const
double transverseCurvature() const
std::vector< TrajectoryStateOnSurface > Components
BasicTrajectoryState(const FreeTrajectoryState &fts, const SurfaceType &aSurface, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
virtual ~BasicTrajectoryState()
LocalTrajectoryParameters theLocalParameters
SurfaceSide surfaceSide() const
Position relative to material, defined relative to momentum vector.
static std::shared_ptr< BTSOS > churn(Args &&... args)
LocalVector momentum() const
Momentum vector in the local frame.
static std::shared_ptr< BTSOS > build(Args &&... args)
void createLocalError() const
const LocalTrajectoryParameters & localParameters() const
const MagneticField & magneticField() const
ProxyBase11< BTSOS > Proxy
CurvilinearTrajectoryError & setCurvilinearError()
CurvilinearTrajectoryError & setCurvilinearError()
virtual Components const & components() const =0
FreeTrajectoryState theFreeState
LocalPoint localPosition() const
const CurvilinearTrajectoryError & curvilinearError() const
BasicTrajectoryState(const GlobalTrajectoryParameters &par, const CurvilinearTrajectoryError &err, const SurfaceType &aSurface, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
ConstReferenceCountingPointer< SurfaceType > theSurfaceP
double signedInverseMomentum() const
void checkCurvilinError() const
double transverseCurvature() const
SurfaceSide theSurfaceSide
GlobalVector globalMomentum() const