CMS 3D CMS Logo

TrackTransientTrack.h
Go to the documentation of this file.
1 #ifndef TrackingTools_TransientTrack_TrackingTransientTrack_h
2 #define TrackingTools_TransientTrack_TrackingTransientTrack_h
3 
4 #include <atomic>
5 
15 
16 namespace reco {
17 
19  public:
20  // constructor from persistent track
22  TrackTransientTrack(const Track& tk, const MagneticField* field);
23  TrackTransientTrack(const Track& tk, const double time, const double dtime, const MagneticField* field);
24 
26  TrackTransientTrack(const TrackRef& tk, const double time, const double dtime, const MagneticField* field);
27 
28  TrackTransientTrack(const TrackRef& tk,
29  const MagneticField* field,
30  const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
31  TrackTransientTrack(const TrackRef& tk,
32  const double time,
33  const double dtime,
34  const MagneticField* field,
35  const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
36 
37  TrackTransientTrack(const Track& tk,
38  const MagneticField* field,
39  const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
40  TrackTransientTrack(const Track& tk,
41  const double time,
42  const double dtime,
43  const MagneticField* field,
44  const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
45 
47 
49 
51 
52  void setBeamSpot(const reco::BeamSpot& beamSpot) override;
53 
54  FreeTrajectoryState initialFreeState() const override { return initialFTS; }
55 
57 
59 
61  return builder(initialFTS, point);
62  }
63 
68 
70 
72 
73  bool impactPointStateAvailable() const override { return (m_TSOS.load() == kSet ? true : false); }
74 
78  TrackRef persistentTrackRef() const { return tkr_; }
79 
80  TrackBaseRef trackBaseRef() const override { return TrackBaseRef(tkr_); }
81 
82  TrackCharge charge() const override { return Track::charge(); }
83 
84  const MagneticField* field() const override { return theField; }
85 
86  const Track& track() const override { return *this; }
87 
89 
90  double timeExt() const override { return (hasTime ? timeExt_ : std::numeric_limits<double>::quiet_NaN()); }
91  double dtErrorExt() const override { return (hasTime ? dtErrorExt_ : std::numeric_limits<double>::quiet_NaN()); }
92 
93  private:
95  bool hasTime;
98 
100 
101  // mutable member data, those should be treated very carefully to guarantee
102  // thread safeness of the code by using atomic thread-safe helpers, see below
106  // thread-safe helpers to guarantee proper update of mutable member data
107  mutable std::atomic<char> m_TSOS;
108  mutable std::atomic<char> m_TSCP;
109  mutable std::atomic<char> m_SCTBL;
110 
114 
115  // to be used to setup thread states of class mutables
117  };
118 
119 } // namespace reco
120 
121 #endif
TrajectoryStateOnSurface initialTSOS
TrajectoryStateOnSurface innermostMeasurementState() const override
const MagneticField * field() const override
edm::ESHandle< GlobalTrackingGeometry > theTrackingGeometry
TrajectoryStateClosestToPoint trajectoryStateClosestToPoint(const GlobalPoint &point) const override
int TrackCharge
Definition: TrackCharge.h:4
bool impactPointStateAvailable() const override
int charge() const
track electric charge
Definition: TrackBase.h:596
edm::RefToBase< reco::Track > TrackBaseRef
persistent reference to a Track, using views
Definition: TrackFwd.h:35
double timeExt() const override
TrajectoryStateOnSurface outermostMeasurementState() const override
void setTrackingGeometry(const edm::ESHandle< GlobalTrackingGeometry > &) override
TSCPBuilderNoMaterial builder
TrajectoryStateClosestToBeamLine trajectoryStateClosestToBeamLine
double dtErrorExt() const override
const MagneticField * theField
TrajectoryStateOnSurface stateOnSurface(const GlobalPoint &point) const override
FreeTrajectoryState initialFreeState() const override
const Track & track() const override
double dtime()
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalPoint
point in global coordinate system
Definition: Point3D.h:18
TrajectoryStateOnSurface impactPointState() const override
TrackTransientTrack & operator=(const TrackTransientTrack &tt)
fixed size matrix
TrajectoryStateClosestToBeamLine stateAtBeamLine() const override
TrackRef persistentTrackRef() const
TrajectoryStateClosestToPoint initialTSCP
TrackCharge charge() const override
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
TrajectoryStateClosestToPoint impactPointTSCP() const override
FreeTrajectoryState initialFTS
void setBeamSpot(const reco::BeamSpot &beamSpot) override
TrackBaseRef trackBaseRef() const override