CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CandidatePtrTransientTrack.h
Go to the documentation of this file.
1 #ifndef TrackingTools_TransientTrack_CandTransientTrack_h
2 #define TrackingTools_TransientTrack_CandTransientTrack_h
3 
4 #include <atomic>
5 
15 
17 namespace reco {
18 
20  public:
21 
22  // constructor from persistent track
25  CandidatePtrTransientTrack( const CandidatePtr & tk , const MagneticField* field, const edm::ESHandle<GlobalTrackingGeometry>& trackingGeometry);
26 
28 
30 
31  void setES(const edm::EventSetup& );
32 
34 
35  void setBeamSpot(const reco::BeamSpot& beamSpot);
36 
38 
40 
42 
45  {return builder(initialFTS, point);}
46 
51 
53 
55 
56  bool impactPointStateAvailable() const {return (m_TSOS.load()==kSet ? true : false); }
57 
61  TrackRef persistentTrackRef() const { return TrackRef(); }
62 
64 
65  TrackCharge charge() const {return Track::charge();}
66 
67  CandidatePtr candidate() const {return ptr_; }
68 
69  const MagneticField* field() const {return theField;}
70 
71  const Track & track() const {return *this;}
72 
74 
75  private:
76 
79 
81 
82  // mutable member data, those should be treated very carefully to guarantee
83  // thread safeness of the code by using atomic thread-safe helpers, see below
87  // thread-safe helpers to guarantee proper update of mutable member data
88  mutable std::atomic<char> m_TSOS;
89  mutable std::atomic<char> m_TSCP;
90  mutable std::atomic<char> m_SCTBL;
91 
92  TSCPBuilderNoMaterial builder;
95 
96  // to be used to setup thread states of class mutables
98 
99  };
100 
101 }
102 
103 #endif
TrajectoryStateClosestToPoint initialTSCP
void setTrackingGeometry(const edm::ESHandle< GlobalTrackingGeometry > &)
TrajectoryStateOnSurface impactPointState() const
CandidatePtrTransientTrack & operator=(const CandidatePtrTransientTrack &tt)
TrajectoryStateOnSurface outermostMeasurementState() const
FreeTrajectoryState initialFreeState() const
TrajectoryStateOnSurface stateOnSurface(const GlobalPoint &point) const
int TrackCharge
Definition: TrackCharge.h:4
TrajectoryStateClosestToBeamLine stateAtBeamLine() const
TrajectoryStateClosestToPoint trajectoryStateClosestToPoint(const GlobalPoint &point) const
edm::RefToBase< reco::Track > TrackBaseRef
persistent reference to a Track, using views
Definition: TrackFwd.h:31
TrajectoryStateClosestToBeamLine trajectoryStateClosestToBeamLine
void setBeamSpot(const reco::BeamSpot &beamSpot)
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
Definition: TrackFwd.h:19
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalPoint
point in global coordinate system
Definition: Point3D.h:17
TrajectoryStateOnSurface innermostMeasurementState() const
int charge() const
track electric charge
Definition: TrackBase.h:543
const MagneticField * field() const
*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
edm::ESHandle< GlobalTrackingGeometry > theTrackingGeometry
TrajectoryStateClosestToPoint impactPointTSCP() const