00001 #ifndef TRACKINTERFACES_ITRACKEXTRAPOLATOR_H
00002 #define TRACKINTERFACES_ITRACKEXTRAPOLATOR_H 1
00003
00004
00005
00006
00007 #include "GaudiKernel/IAlgTool.h"
00008
00009
00010 #include "Kernel/ParticleID.h"
00011
00012
00013 #include "CLHEP/Matrix/Matrix.h"
00014 #include "CLHEP/Geometry/Point3D.h"
00015 #include "CLHEP/Geometry/Vector3D.h"
00016 #include "CLHEP/Geometry/Plane3D.h"
00017
00018 class Track;
00019 class State;
00020
00021 static const InterfaceID IID_ITrackExtrapolator( "ITrackExtrapolator" , 2, 0 );
00022
00035 class ITrackExtrapolator: virtual public IAlgTool {
00036 public:
00038 static const InterfaceID& interfaceID() { return IID_ITrackExtrapolator; }
00039
00041 virtual StatusCode propagate( const Track& track,
00042 double z,
00043 State& state,
00044 ParticleID pid = ParticleID(211) ) = 0;
00045
00047 virtual StatusCode propagate( const Track& track,
00048 const HepPlane3D& plane,
00049 State& state,
00050 ParticleID pid = ParticleID(211) ) = 0;
00051
00053 virtual StatusCode propagate( State& state,
00054 double z,
00055 ParticleID pid = ParticleID(211) ) = 0;
00056
00058 virtual StatusCode propagate( State& state,
00059 const HepPlane3D& plane,
00060 ParticleID pid = ParticleID(211) ) = 0;
00061
00064 virtual StatusCode positionAndMomentum( const Track& track,
00065 double z,
00066 HepPoint3D& pos,
00067 HepVector3D& mom,
00068 HepSymMatrix& cov6D,
00069 ParticleID pid = ParticleID(211) ) = 0;
00070
00073 virtual StatusCode positionAndMomentum( const Track& track,
00074 const HepPlane3D& plane,
00075 HepPoint3D& pos,
00076 HepVector3D& mom,
00077 HepSymMatrix& cov6D,
00078 ParticleID pid = ParticleID(211) ) = 0;
00079
00081 virtual StatusCode positionAndMomentum( const Track& track,
00082 double z,
00083 HepPoint3D& pos,
00084 HepVector3D& mom,
00085 ParticleID pid = ParticleID(211) ) = 0;
00086
00088 virtual StatusCode positionAndMomentum( const Track& track,
00089 const HepPlane3D& plane,
00090 HepPoint3D& pos,
00091 HepVector3D& mom,
00092 ParticleID pid = ParticleID(211) ) = 0;
00093
00095 virtual StatusCode position( const Track& track,
00096 double z,
00097 HepPoint3D& pos,
00098 HepSymMatrix& errPos,
00099 ParticleID pid = ParticleID(211) ) = 0;
00100
00102 virtual StatusCode position( const Track& track,
00103 const HepPlane3D& plane,
00104 HepPoint3D& pos,
00105 HepSymMatrix& errPos,
00106 ParticleID pid = ParticleID(211) ) = 0;
00107
00109 virtual StatusCode position( const Track& track,
00110 double z,
00111 HepPoint3D& pos,
00112 ParticleID pid = ParticleID(211) ) = 0;
00113
00115 virtual StatusCode position( const Track& track,
00116 const HepPlane3D& plane,
00117 HepPoint3D& pos,
00118 ParticleID pid = ParticleID(211) ) = 0;
00119
00121 virtual StatusCode slopes( const Track& track,
00122 double z,
00123 HepVector3D& slopes,
00124 HepSymMatrix& errSlopes,
00125 ParticleID pid = ParticleID(211) ) = 0;
00126
00128 virtual StatusCode slopes( const Track& track,
00129 const HepPlane3D& plane,
00130 HepVector3D& slopes,
00131 HepSymMatrix& errSlopes,
00132 ParticleID pid = ParticleID(211) ) = 0;
00133
00135 virtual StatusCode slopes( const Track& track,
00136 double z,
00137 HepVector3D& slopes,
00138 ParticleID pid = ParticleID(211) ) = 0;
00139
00141 virtual StatusCode slopes( const Track& track,
00142 const HepPlane3D& plane,
00143 HepVector3D& slopes,
00144 ParticleID pid = ParticleID(211) ) = 0;
00145
00147 virtual StatusCode p( const Track& track,
00148 double z,
00149 double& p,
00150 ParticleID pid = ParticleID(211) ) = 0;
00151
00153 virtual StatusCode p( const Track& track,
00154 const HepPlane3D& plane,
00155 double& p,
00156 ParticleID pid = ParticleID(211) ) = 0;
00157
00159 virtual StatusCode pt( const Track& track,
00160 double z,
00161 double& pt,
00162 ParticleID pid = ParticleID(211) ) = 0;
00163
00165 virtual StatusCode pt( const Track& track,
00166 const HepPlane3D& plane,
00167 double& pt,
00168 ParticleID pid = ParticleID(211) ) = 0;
00169
00171 virtual StatusCode momentum( const Track& track,
00172 double z,
00173 HepVector3D& mom,
00174 HepSymMatrix& errMom,
00175 ParticleID pid = ParticleID(211) ) = 0;
00176
00178 virtual StatusCode momentum( const Track& track,
00179 const HepPlane3D& plane,
00180 HepVector3D& mom,
00181 HepSymMatrix& errMom,
00182 ParticleID pid = ParticleID(211) ) = 0;
00183
00185 virtual StatusCode momentum( const Track& track,
00186 double z,
00187 HepVector3D& mom,
00188 ParticleID pid = ParticleID(211) ) = 0;
00189
00191 virtual StatusCode momentum( const Track& track,
00192 const HepPlane3D& plane,
00193 HepVector3D& mom,
00194 ParticleID pid = ParticleID(211) ) = 0;
00195
00197 virtual const HepMatrix& transportMatrix() const = 0;
00198
00199 };
00200
00201
00202
00203
00204
00205 #endif // TRACKINTERFACES_ITRACKEXTRAPOLATOR_H