00001 #ifndef TRLINEAREXTRAPOLATOR_H
00002 #define TRLINEAREXTRAPOLATOR_H 1
00003
00004
00005 #include "GaudiAlg/GaudiTool.h"
00006 #include "TrKernel/ITrExtrapolator.h"
00007
00008
00009 class TrState;
00010
00021 class TrLinearExtrapolator: public GaudiTool,
00022 virtual public ITrExtrapolator {
00023
00024 public:
00026 TrLinearExtrapolator(const std::string& type,
00027 const std::string& name,
00028 const IInterface* parent);
00029
00031 virtual ~TrLinearExtrapolator();
00032
00034 virtual const HepMatrix& transportMatrix() const;
00035
00037 virtual StatusCode propagate( TrState* state,
00038 double z = 0,
00039 ParticleID partId = ParticleID(211));
00040
00042 virtual StatusCode propagate( TrState* state,
00043 HepPlane plane,
00044 ParticleID partId = ParticleID(211));
00045
00048 virtual StatusCode positionAndMomentum( TrState* state,
00049 double z = 0,
00050 ParticleID partId = ParticleID(211),
00051 HepPoint3D pos,
00052 HepVector3D mom,
00053 HepSymMatrix cov6D );
00054
00057 virtual StatusCode positionAndMomentum( TrState* state,
00058 HepPlane plane,
00059 ParticleID partId = ParticleID(211),
00060 HepPoint3D pos,
00061 HepVector3D mom,
00062 HepSymMatrix cov6D );
00063
00066 virtual StatusCode positionAndMomentum( TrTrack* track,
00067 double z = 0,
00068 ParticleID partId = ParticleID(211),
00069 HepPoint3D pos,
00070 HepVector3D mom,
00071 HepSymMatrix cov6D );
00072
00075 virtual StatusCode positionAndMomentum( TrTrack* track,
00076 HepPlane plane,
00077 ParticleID partId = ParticleID(211),
00078 HepPoint3D pos,
00079 HepVector3D mom,
00080 HepSymMatrix cov6D );
00081
00083 virtual StatusCode position( TrState* state,
00084 double z = 0,
00085 ParticleID partId = ParticleID(211),
00086 HepPoint3D pos );
00087
00089 virtual StatusCode position( TrState* state,
00090 double z = 0,
00091 ParticleID partId = ParticleID(211),
00092 HepPoint3D pos,
00093 std::vector errPos );
00094
00096 virtual StatusCode position( TrState* state,
00097 HepPlane plane,
00098 ParticleID partId = ParticleID(211),
00099 HepPoint3D pos );
00100
00102 virtual StatusCode position( TrTrack* track,
00103 double z = 0,
00104 ParticleID partId = ParticleID(211),
00105 HepPoint3D pos );
00106
00108 virtual StatusCode position( TrTrack* track,
00109 HepPlane plane,
00110 ParticleID partId = ParticleID(211),
00111 HepPoint3D pos );
00112
00114 virtual StatusCode slopes( TrState* state,
00115 double z = 0,
00116 ParticleID partId = ParticleID(211),
00117 HepVector3D slopes );
00118
00120 virtual StatusCode slopes( TrState* state,
00121 double z = 0,
00122 ParticleID partId = ParticleID(211),
00123 HepVector3D slopes,
00124 std::vector errSlopes );
00125
00127 virtual StatusCode slopes( TrState* state,
00128 HepPlane plane,
00129 ParticleID partId = ParticleID(211),
00130 HepVector3D slopes );
00131
00133 virtual StatusCode slopes( TrState* state,
00134 double z = 0,
00135 ParticleID partId = ParticleID(211),
00136 HepVector3D slopes );
00137
00139 virtual StatusCode slopes( TrTrack* track,
00140 HepPlane plane,
00141 ParticleID partId = ParticleID(211),
00142 HepVector3D slopes );
00143
00145 virtual StatusCode posMomCovariance( TrState* state,
00146 double z = 0,
00147 ParticleID partId = ParticleID(211),
00148 HepSymMatrix cov6D );
00149
00152 virtual StatusCode posMomCovariance( TrState* state,
00153 HepPlane plane,
00154 ParticleID partId = ParticleID(211),
00155 HepSymMatrix cov6D );
00156
00158 virtual StatusCode errPosition( TrState* state,
00159 double z = 0,
00160 ParticleID partId = ParticleID(211),
00161 std::vector errPosition );
00162
00164 virtual StatusCode errPosition( TrState* state,
00165 HepPlane plane,
00166 ParticleID partId = ParticleID(211),
00167 std::vector errPosition );
00168
00170 virtual StatusCode errSlopes( TrState* state,
00171 double z = 0,
00172 ParticleID partId = ParticleID(211),
00173 std::vector errPosition );
00174
00177 virtual StatusCode errSlopes( TrState* state,
00178 HepPlane plane,
00179 ParticleID partId = ParticleID(211),
00180 std::vector errSlopes );
00181
00183 virtual StatusCode p( TrState* state,
00184 double z = 0,
00185 ParticleID partId = ParticleID(211),
00186 double p );
00187
00189 virtual StatusCode p( TrState* state,
00190 HepPlane plane,
00191 ParticleID partId = ParticleID(211),
00192 double p );
00193
00195 virtual StatusCode pt( TrState* state,
00196 double z = 0,
00197 ParticleID partId = ParticleID(211),
00198 double pt );
00199
00201 virtual StatusCode pt( TrState* state,
00202 HepPlane plane,
00203 ParticleID partId = ParticleID(211),
00204 double pt );
00205
00207 virtual StatusCode momentum( TrState* state,
00208 double z = 0,
00209 ParticleID partId = ParticleID(211),
00210 HepVector3D );
00211
00213 virtual StatusCode momentum( TrState* state,
00214 HepPlane plane,
00215 ParticleID partId = ParticleID(211),
00216 HepVector3D );
00217
00219 virtual StatusCode errMomentum( TrState* state,
00220 double z = 0,
00221 ParticleID partId = ParticleID(211),
00222 std::vector errMomentum );
00223
00225 virtual StatusCode errMomentum( TrState* state,
00226 HepPlane plane,
00227 ParticleID partId = ParticleID(211),
00228 std::vector errMomentum );
00229
00230 private:
00231
00233 HepMatrix m_F;
00234
00236 void extrapolate( TrState* state) const;
00237
00238 };
00239
00240 #endif // TRLINEAREXTRAPOLATOR_H