CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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 
21  // constructor from persistent track
23  TrackTransientTrack( const Track & tk , const MagneticField* field);
24  TrackTransientTrack( const TrackRef & tk , const MagneticField* field);
25 
26  TrackTransientTrack( const TrackRef & tk , const MagneticField* field, const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
27 
28  TrackTransientTrack( const Track & tk , const MagneticField* field, const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
29 
31 
33 
34  void setES(const edm::EventSetup& );
35 
37 
38  void setBeamSpot(const reco::BeamSpot& beamSpot);
39 
41 
43 
45 
48  {return builder(initialFTS, point);}
49 
54 
56 
58 
59  bool impactPointStateAvailable() const {return (m_TSOS.load()==kSet ? true : false); }
60 
64  TrackRef persistentTrackRef() const { return tkr_; }
65 
67 
68  TrackCharge charge() const {return Track::charge();}
69 
70  const MagneticField* field() const {return theField;}
71 
72  const Track & track() const {return *this;}
73 
75 
76  private:
77 
80 
82 
83  // mutable member data, those should be treated very carefully to guarantee
84  // thread safeness of the code by using atomic thread-safe helpers, see below
88  // thread-safe helpers to guarantee proper update of mutable member data
89  mutable std::atomic<char> m_TSOS;
90  mutable std::atomic<char> m_TSCP;
91  mutable std::atomic<char> m_SCTBL;
92 
93  TSCPBuilderNoMaterial builder;
96 
97  // to be used to setup thread states of class mutables
99 
100  };
101 
102 }
103 
104 #endif
const MagneticField * field() const
void setTrackingGeometry(const edm::ESHandle< GlobalTrackingGeometry > &)
TrajectoryStateOnSurface impactPointState() const
TrajectoryStateClosestToPoint impactPointTSCP() const
TrajectoryStateOnSurface initialTSOS
bool impactPointStateAvailable() const
TrajectoryStateOnSurface outermostMeasurementState() const
TrajectoryStateClosestToPoint trajectoryStateClosestToPoint(const GlobalPoint &point) const
void setES(const edm::EventSetup &)
edm::ESHandle< GlobalTrackingGeometry > theTrackingGeometry
TrajectoryStateOnSurface innermostMeasurementState() const
TrajectoryStateOnSurface stateOnSurface(const GlobalPoint &point) const
const Track & track() const
std::atomic< char > m_TSOS
TrackBaseRef trackBaseRef() const
TrackRef persistentTrackRef() const
int TrackCharge
Definition: TrackCharge.h:4
TrackCharge charge() const
edm::RefToBase< reco::Track > TrackBaseRef
persistent reference to a Track, using views
Definition: TrackFwd.h:31
FreeTrajectoryState initialFreeState() const
TSCPBuilderNoMaterial builder
TrajectoryStateClosestToBeamLine trajectoryStateClosestToBeamLine
TrajectoryStateClosestToBeamLine stateAtBeamLine() const
const MagneticField * theField
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalPoint
point in global coordinate system
Definition: Point3D.h:17
TrackTransientTrack & operator=(const TrackTransientTrack &tt)
void setBeamSpot(const reco::BeamSpot &beamSpot)
std::atomic< char > m_TSCP
TrajectoryStateClosestToPoint initialTSCP
int charge() const
track electric charge
Definition: TrackBase.h:543
std::atomic< char > m_SCTBL
*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
FreeTrajectoryState initialFTS