00001
00002 #ifndef TRACKEXTRAPOLATORS_TRACKEXTRAPOLATOR_H
00003 #define TRACKEXTRAPOLATORS_TRACKEXTRAPOLATOR_H 1
00004
00005
00006
00007 #include "GaudiAlg/GaudiTool.h"
00008 #include "Tools/ITrackExtrapolator.h"
00009 #include "Event/Track.h"
00010
00011
00020 class TrackExtrapolator : public GaudiTool,
00021 virtual public ITrackExtrapolator {
00022 public:
00024 virtual StatusCode propagate( const Track& track,
00025 double z,
00026 State& state,
00027 ParticleID pid = ParticleID(211) );
00028
00030 virtual StatusCode propagate( const Track& track,
00031 const HepPlane3D& plane,
00032 State& state,
00033 ParticleID pid = ParticleID(211) );
00034
00036 virtual StatusCode propagate( State& state,
00037 double z,
00038 ParticleID pid = ParticleID(211) )
00039 {
00040 warning() << " can not propagate " << pid.pid()
00041 << " state " << state.position() << " at " << z << endreq;
00042 return StatusCode::FAILURE;
00043 }
00044
00046 virtual StatusCode propagate( State& state,
00047 const HepPlane3D& plane,
00048 ParticleID pid = ParticleID(211) )
00049 {
00050 warning() << " can not propagate " << pid.pid()
00051 << "state " << state.position() << " at " << plane.normal()
00052 << endreq;
00053 return StatusCode::FAILURE;
00054 }
00055
00056
00066 virtual StatusCode positionAndMomentum( const Track& track,
00067 double z,
00068 HepPoint3D& pos,
00069 HepVector3D& mom,
00070 HepSymMatrix& cov6D,
00071 ParticleID pid = ParticleID(211) );
00072
00075 virtual StatusCode positionAndMomentum( const Track& track,
00076 const HepPlane3D& plane,
00077 HepPoint3D& pos,
00078 HepVector3D& mom,
00079 HepSymMatrix& cov6D,
00080 ParticleID pid = ParticleID(211) );
00081
00083 virtual StatusCode positionAndMomentum( const Track& track,
00084 double z,
00085 HepPoint3D& pos,
00086 HepVector3D& mom,
00087 ParticleID pid = ParticleID(211) );
00088
00090 virtual StatusCode positionAndMomentum( const Track& track,
00091 const HepPlane3D& plane,
00092 HepPoint3D& pos,
00093 HepVector3D& mom,
00094 ParticleID pid = ParticleID(211) );
00095
00097 virtual StatusCode position( const Track& track,
00098 double z,
00099 HepPoint3D& pos,
00100 HepSymMatrix& errPos,
00101 ParticleID pid = ParticleID(211) );
00102
00104 virtual StatusCode position( const Track& track,
00105 const HepPlane3D& plane,
00106 HepPoint3D& pos,
00107 HepSymMatrix& errPos,
00108 ParticleID pid = ParticleID(211) );
00109
00111 virtual StatusCode position( const Track& track,
00112 double z,
00113 HepPoint3D& pos,
00114 ParticleID pid = ParticleID(211) );
00115
00117 virtual StatusCode position( const Track& track,
00118 const HepPlane3D& plane,
00119 HepPoint3D& pos,
00120 ParticleID pid = ParticleID(211) );
00121
00123 virtual StatusCode slopes( const Track& track,
00124 double z,
00125 HepVector3D& slopes,
00126 HepSymMatrix& errSlopes,
00127 ParticleID pid = ParticleID(211) );
00128
00130 virtual StatusCode slopes( const Track& track,
00131 const HepPlane3D& plane,
00132 HepVector3D& slopes,
00133 HepSymMatrix& errSlopes,
00134 ParticleID pid = ParticleID(211) );
00135
00137 virtual StatusCode slopes( const Track& track,
00138 double z,
00139 HepVector3D& slopes,
00140 ParticleID pid = ParticleID(211) );
00141
00143 virtual StatusCode slopes( const Track& track,
00144 const HepPlane3D& plane,
00145 HepVector3D& slopes,
00146 ParticleID pid = ParticleID(211) );
00147
00149 virtual StatusCode p( const Track& track,
00150 double z,
00151 double& p,
00152 ParticleID pid = ParticleID(211) );
00153
00155 virtual StatusCode p( const Track& track,
00156 const HepPlane3D& plane,
00157 double& p,
00158 ParticleID pid = ParticleID(211) );
00159
00161 virtual StatusCode pt( const Track& track,
00162 double z,
00163 double& pt,
00164 ParticleID pid = ParticleID(211) );
00165
00167 virtual StatusCode pt( const Track& track,
00168 const HepPlane3D& plane,
00169 double& pt,
00170 ParticleID pid = ParticleID(211) );
00171
00173 virtual StatusCode momentum( const Track& track,
00174 double z,
00175 HepVector3D& mom,
00176 HepSymMatrix& errMom,
00177 ParticleID pid = ParticleID(211) );
00178
00180 virtual StatusCode momentum( const Track& track,
00181 const HepPlane3D& plane,
00182 HepVector3D& mom,
00183 HepSymMatrix& errMom,
00184 ParticleID pid = ParticleID(211) );
00185
00187 virtual StatusCode momentum( const Track& track,
00188 double z,
00189 HepVector3D& mom,
00190 ParticleID pid = ParticleID(211) );
00191
00193 virtual StatusCode momentum( const Track& track,
00194 const HepPlane3D& plane,
00195 HepVector3D& mom,
00196 ParticleID pid = ParticleID(211) );
00197
00199 virtual const HepMatrix& transportMatrix() const;
00200
00202 TrackExtrapolator( const std::string& type,
00203 const std::string& name,
00204 const IInterface* parent );
00205
00207 virtual ~TrackExtrapolator( );
00208
00209 protected:
00211 HepMatrix m_F;
00212
00214 virtual void updateState( State& state, double z ) const;
00215
00216 private:
00217
00218 };
00219 #endif // TRACKEXTRAPOLATORS_TRACKEXTRAPOLATOR_H