CMS 3D CMS Logo

TransientTrackFromFTS.cc
Go to the documentation of this file.
7 // #include <iostream>
9 
10 using namespace reco;
11 
13  hasTime(false), timeExt_(0.), dtErrorExt_(0.),
14  theField(nullptr), initialTSOSAvailable(false), initialTSCPAvailable(false),
15  trackAvailable(false), blStateAvailable(false)
16 {}
17 
19  initialFTS(fts), hasTime(false), timeExt_(0.), dtErrorExt_(0.),
23 {}
24 
26  const double time,
27  const double dtime) :
28  initialFTS(fts), hasTime(true), timeExt_(time), dtErrorExt_(dtime),
32 {}
33 
34 
37  initialFTS(fts), hasTime(false), timeExt_(0.), dtErrorExt_(0.),
41 {}
42 
44  const double time,
45  const double dtime,
47  initialFTS(fts), hasTime(true), timeExt_(time), dtErrorExt_(dtime),
51 {}
52 
53 
59 {
60  if (tt.initialTSOSAvailable) {
62  initialTSOSAvailable = true;
63  }
64  if (tt.initialTSCPAvailable) {
66  initialTSCPAvailable = true;
67  }
68 }
69 
70 
71 
73 {
75 }
76 
77 void
79 {
81 }
82 
84 {
86  blStateAvailable = false;
87 }
88 
89 
91 {
93  return initialTSOS;
94 }
95 
97 {
100  initialTSCPAvailable = true;
101  }
102  return initialTSCP;
103 }
104 
106 {
107  throw cms::Exception("LogicError") <<
108  "TransientTrack built from a FreeTrajectoryState (TransientTrackFromFTS) can not have an outermostMeasurementState";
109 }
110 
112 {
113  throw cms::Exception("LogicError") <<
114  "TransientTrack built from a FreeTrajectoryState (TransientTrackFromFTS) can not have an innermostMeasurementState";
115 }
116 
117 
119 {
122  initialTSOSAvailable = true;
123 }
124 
127 {
129  return tipe.extrapolate(initialFTS, point);
130 }
131 
133 {
134  if UNLIKELY(!trackAvailable) {
136  math::XYZPoint pos( v.x(), v.y(), v.z() );
138  math::XYZVector mom( p.x(), p.y(), p.z() );
139 
140  theTrack = Track(0., 0., pos, mom, initialFTS.charge(),
142  trackAvailable = true;
143  }
144  return theTrack;
145 }
146 
148 {
150  TSCBLBuilderNoMaterial blsBuilder;
152  blStateAvailable = true;
153  }
155 }
156 
TrajectoryStateClosestToBeamLine stateAtBeamLine() const override
void setES(const edm::EventSetup &) override
const MagneticField * field() const override
TrajectoryStateOnSurface outermostMeasurementState() const override
TrajectoryStateOnSurface initialTSOS
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
TrackCharge charge() const
#define nullptr
const CurvilinearTrajectoryError & curvilinearError() const
void setTrackingGeometry(const edm::ESHandle< GlobalTrackingGeometry > &) override
const MagneticField * theField
TrajectoryStateClosestToPoint initialTSCP
edm::ESHandle< GlobalTrackingGeometry > theTrackingGeometry
FreeTrajectoryState initialFreeState() const override
const Track & track() const override
GlobalVector momentum() const
TrajectoryStateOnSurface impactPointState() const override
ROOT::Math::DisplacementVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalVector
vector in glovbal coordinate system
Definition: Vector3D.h:27
void setBeamSpot(const reco::BeamSpot &beamSpot) override
GlobalPoint position() const
TrajectoryStateClosestToPoint impactPointTSCP() const override
XYZVectorD XYZVector
spatial vector with cartesian internal representation
Definition: Vector3D.h:30
XYZPointD XYZPoint
point in space with cartesian internal representation
Definition: Point3D.h:12
TrajectoryStateOnSurface innermostMeasurementState() const override
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< float >, ROOT::Math::GlobalCoordinateSystemTag > GlobalPoint
point in global coordinate system
Definition: Point3D.h:17
TrajectoryStateOnSurface extrapolate(const FreeTrajectoryState &fts, const GlobalPoint &vtx) const
extrapolation with default (=geometrical) propagator
fixed size matrix
T get() const
Definition: EventSetup.h:62
TrajectoryStateOnSurface stateOnSurface(const GlobalPoint &point) const override
TrajectoryStateClosestToBeamLine trajectoryStateClosestToBeamLine
*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
#define UNLIKELY(x)