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>
GlobalPoint globalPosition() const
ConstReferenceCountingPointer< SurfaceType > theSurfaceP
virtual ~BasicTrajectoryState()
CurvilinearTrajectoryError & setCurvilinearError()
LocalPoint localPosition() const
virtual bool singleState() const =0
FreeTrajectoryState const * freeTrajectoryState(bool withErrors=true) const
CartesianTrajectoryError cartesianError() const
const MagneticField * magneticField() const
SurfaceSideDefinition::SurfaceSide SurfaceSide
SurfaceSide surfaceSide() const
Position relative to material, defined relative to momentum vector.
SurfaceSide theSurfaceSide
const GlobalTrajectoryParameters & parameters() const
virtual pointer clone() const =0
LocalPoint position() const
Local x and y position coordinates.
BasicTrajectoryState(const GlobalTrajectoryParameters &par, const CurvilinearTrajectoryError &err, const SurfaceType &aSurface, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
const CartesianTrajectoryError cartesianError() const
virtual void update(const LocalTrajectoryParameters &p, const SurfaceType &aSurface, const MagneticField *field, const SurfaceSide side)
BasicTrajectoryState(double iweight, Args &&...args)
TrackCharge charge() const
TrackCharge charge() const
std::shared_ptr< T > pointer
const CurvilinearTrajectoryError & curvilinearError() const
virtual Components const & components() const =0
void rescaleError(double factor)
BasicTrajectoryState(const LocalTrajectoryParameters &par, const SurfaceType &aSurface, const MagneticField *field, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
GlobalVector globalDirection() const
std::vector< TrajectoryStateOnSurface > Components
static std::shared_ptr< BTSOS > build(Args &&...args)
void createLocalErrorFromCurvilinearError() const
const LocalTrajectoryError & localError() const
void createLocalError() const
BasicTrajectoryState(const FreeTrajectoryState &fts, const SurfaceType &aSurface, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
void checkCurvilinError() const
double signedInverseMomentum() const
void createLocalParameters() const
LocalVector momentum() const
Momentum vector in the local frame.
GlobalVector momentum() const
Vector3DBase unit() const
GlobalPoint position() const
const SurfaceType & surface() const
static std::shared_ptr< BTSOS > churn(Args &&...args)
const GlobalTrajectoryParameters & globalParameters() const
double transverseCurvature() const
FreeTrajectoryState theFreeState
CurvilinearTrajectoryError & setCurvilinearError()
double transverseCurvature() const
BasicTrajectoryState(const GlobalTrajectoryParameters &par, const SurfaceType &aSurface, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
void missingError(char const *where) const
bool theLocalParametersValid
GlobalVector globalMomentum() const
BasicTrajectoryState(const GlobalTrajectoryParameters &par, const CartesianTrajectoryError &err, const SurfaceType &aSurface, const SurfaceSide side=SurfaceSideDefinition::atCenterOfSurface)
const LocalTrajectoryParameters & localParameters() const
LocalTrajectoryParameters theLocalParameters
virtual bool canUpdateLocalParameters() const
LocalVector localDirection() const
const MagneticField & magneticField() const
LocalVector localMomentum() const
const CurvilinearTrajectoryError & curvilinearError() const
BasicTrajectoryState(const FreeTrajectoryState &fts)
LocalTrajectoryError theLocalError
ProxyBase11< BTSOS > Proxy
double signedInverseMomentum() const
BasicTrajectoryState BTSOS