00001
00002 #ifndef TRACKEXTRAPOLATORS_TREXTRAPOLATOR_H
00003 #define TRACKEXTRAPOLATORS_TREXTRAPOLATOR_H 1
00004
00005
00006
00007 #include "GaudiAlg/GaudiTool.h"
00008
00009 #include "Tools/ITrExtrapolator.h"
00010
00011 class Track;
00012 class State;
00013
00022 class TrExtrapolator : public GaudiTool,
00023 virtual public ITrExtrapolator {
00024 public:
00026 virtual StatusCode propagate( const Track& track,
00027 double z,
00028 State& state,
00029 ParticleID pid = ParticleID(211) );
00030
00032 virtual StatusCode propagate( const Track& track,
00033 const HepPlane3D& plane,
00034 State& state,
00035 ParticleID pid = ParticleID(211) );
00036
00038 virtual StatusCode propagate( State& state,
00039 double z,
00040 ParticleID pid = ParticleID(211) );
00041
00043 virtual StatusCode propagate( State& state,
00044 const HepPlane3D& plane,
00045 ParticleID pid = ParticleID(211) );
00046
00056 virtual StatusCode positionAndMomentum( const Track& track,
00057 double z,
00058 HepPoint3D& pos,
00059 HepVector3D& mom,
00060 HepSymMatrix& cov6D,
00061 ParticleID pid = ParticleID(211) );
00062
00065 virtual StatusCode positionAndMomentum( const Track& track,
00066 const HepPlane3D& plane,
00067 HepPoint3D& pos,
00068 HepVector3D& mom,
00069 HepSymMatrix& cov6D,
00070 ParticleID pid = ParticleID(211) );
00071
00073 virtual StatusCode positionAndMomentum( const Track& track,
00074 double z,
00075 HepPoint3D& pos,
00076 HepVector3D& mom,
00077 ParticleID pid = ParticleID(211) );
00078
00080 virtual StatusCode positionAndMomentum( const Track& track,
00081 const HepPlane3D& plane,
00082 HepPoint3D& pos,
00083 HepVector3D& mom,
00084 ParticleID pid = ParticleID(211) );
00085
00087 virtual StatusCode position( const Track& track,
00088 double z,
00089 HepPoint3D& pos,
00090 HepSymMatrix& errPos,
00091 ParticleID pid = ParticleID(211) );
00092
00094 virtual StatusCode position( const Track& track,
00095 const HepPlane3D& plane,
00096 HepPoint3D& pos,
00097 HepSymMatrix& errPos,
00098 ParticleID pid = ParticleID(211) );
00099
00101 virtual StatusCode position( const Track& track,
00102 double z,
00103 HepPoint3D& pos,
00104 ParticleID pid = ParticleID(211) );
00105
00107 virtual StatusCode position( const Track& track,
00108 const HepPlane3D& plane,
00109 HepPoint3D& pos,
00110 ParticleID pid = ParticleID(211) );
00111
00113 virtual StatusCode slopes( const Track& track,
00114 double z,
00115 HepVector3D& slopes,
00116 HepSymMatrix& errSlopes,
00117 ParticleID pid = ParticleID(211) );
00118
00120 virtual StatusCode slopes( const Track& track,
00121 const HepPlane3D& plane,
00122 HepVector3D& slopes,
00123 HepSymMatrix& errSlopes,
00124 ParticleID pid = ParticleID(211) );
00125
00127 virtual StatusCode slopes( const Track& track,
00128 double z,
00129 HepVector3D& slopes,
00130 ParticleID pid = ParticleID(211) );
00131
00133 virtual StatusCode slopes( const Track& track,
00134 const HepPlane3D& plane,
00135 HepVector3D& slopes,
00136 ParticleID pid = ParticleID(211) );
00137
00139 virtual StatusCode p( const Track& track,
00140 double z,
00141 double& p,
00142 ParticleID pid = ParticleID(211) );
00143
00145 virtual StatusCode p( const Track& track,
00146 const HepPlane3D& plane,
00147 double& p,
00148 ParticleID pid = ParticleID(211) );
00149
00151 virtual StatusCode pt( const Track& track,
00152 double z,
00153 double& pt,
00154 ParticleID pid = ParticleID(211) );
00155
00157 virtual StatusCode pt( const Track& track,
00158 const HepPlane3D& plane,
00159 double& pt,
00160 ParticleID pid = ParticleID(211) );
00161
00163 virtual StatusCode momentum( const Track& track,
00164 double z,
00165 HepVector3D& mom,
00166 HepSymMatrix& errMom,
00167 ParticleID pid = ParticleID(211) );
00168
00170 virtual StatusCode momentum( const Track& track,
00171 const HepPlane3D& plane,
00172 HepVector3D& mom,
00173 HepSymMatrix& errMom,
00174 ParticleID pid = ParticleID(211) );
00175
00177 virtual StatusCode momentum( const Track& track,
00178 double z,
00179 HepVector3D& mom,
00180 ParticleID pid = ParticleID(211) );
00181
00183 virtual StatusCode momentum( const Track& track,
00184 const HepPlane3D& plane,
00185 HepVector3D& mom,
00186 ParticleID pid = ParticleID(211) );
00187
00189 virtual const HepMatrix& transportMatrix() const;
00190
00192 TrExtrapolator( const std::string& type,
00193 const std::string& name,
00194 const IInterface* parent );
00195
00197 virtual ~TrExtrapolator( );
00198
00199 protected:
00201 HepMatrix m_F;
00202
00204 virtual void updateState( State& state, double z ) const;
00205
00206 private:
00207
00208 };
00209 #endif // TRACKEXTRAPOLATORS_TREXTRAPOLATOR_H