00001
00002 #ifndef LHCBINTERFACES_ITRACKEXTRAPOLATOR_H
00003 #define LHCBINTERFACES_ITRACKEXTRAPOLATOR_H 1
00004
00005
00006 #include "GaudiKernel/IAlgTool.h"
00007
00008 #include "Kernel/ParticleID.h"
00009
00010 #include "CLHEP/Matrix/Matrix.h"
00011 #include "CLHEP/Geometry/Point3D.h"
00012 #include "CLHEP/Geometry/Vector3D.h"
00013 #include "CLHEP/Geometry/Plane3D.h"
00014
00015 class Track;
00016 class State;
00017
00018 static const InterfaceID IID_ITrackExtrapolator( "ITrackExtrapolator" , 2, 0 );
00019
00032 class ITrackExtrapolator: virtual public IAlgTool {
00033 public:
00035 static const InterfaceID& interfaceID() { return IID_ITrackExtrapolator; }
00036
00038 virtual StatusCode propagate( const Track& track,
00039 double z,
00040 State& state,
00041 ParticleID pid = ParticleID(211) ) = 0;
00042
00044 virtual StatusCode propagate( const Track& track,
00045 const HepPlane3D& plane,
00046 State& state,
00047 ParticleID pid = ParticleID(211) ) = 0;
00048
00050 virtual StatusCode propagate( State& state,
00051 double z,
00052 ParticleID pid = ParticleID(211) ) = 0;
00053
00055 virtual StatusCode propagate( State& state,
00056 const HepPlane3D& plane,
00057 ParticleID pid = ParticleID(211) ) = 0;
00058
00061 virtual StatusCode positionAndMomentum( const Track& track,
00062 double z,
00063 HepPoint3D& pos,
00064 HepVector3D& mom,
00065 HepSymMatrix& cov6D,
00066 ParticleID pid = ParticleID(211) ) = 0;
00067
00070 virtual StatusCode positionAndMomentum( const Track& track,
00071 const HepPlane3D& plane,
00072 HepPoint3D& pos,
00073 HepVector3D& mom,
00074 HepSymMatrix& cov6D,
00075 ParticleID pid = ParticleID(211) ) = 0;
00076
00078 virtual StatusCode positionAndMomentum( const Track& track,
00079 double z,
00080 HepPoint3D& pos,
00081 HepVector3D& mom,
00082 ParticleID pid = ParticleID(211) ) = 0;
00083
00085 virtual StatusCode positionAndMomentum( const Track& track,
00086 const HepPlane3D& plane,
00087 HepPoint3D& pos,
00088 HepVector3D& mom,
00089 ParticleID pid = ParticleID(211) ) = 0;
00090
00092 virtual StatusCode position( const Track& track,
00093 double z,
00094 HepPoint3D& pos,
00095 HepSymMatrix& errPos,
00096 ParticleID pid = ParticleID(211) ) = 0;
00097
00099 virtual StatusCode position( const Track& track,
00100 const HepPlane3D& plane,
00101 HepPoint3D& pos,
00102 HepSymMatrix& errPos,
00103 ParticleID pid = ParticleID(211) ) = 0;
00104
00106 virtual StatusCode position( const Track& track,
00107 double z,
00108 HepPoint3D& pos,
00109 ParticleID pid = ParticleID(211) ) = 0;
00110
00112 virtual StatusCode position( const Track& track,
00113 const HepPlane3D& plane,
00114 HepPoint3D& pos,
00115 ParticleID pid = ParticleID(211) ) = 0;
00116
00118 virtual StatusCode slopes( const Track& track,
00119 double z,
00120 HepVector3D& slopes,
00121 HepSymMatrix& errSlopes,
00122 ParticleID pid = ParticleID(211) ) = 0;
00123
00125 virtual StatusCode slopes( const Track& track,
00126 const HepPlane3D& plane,
00127 HepVector3D& slopes,
00128 HepSymMatrix& errSlopes,
00129 ParticleID pid = ParticleID(211) ) = 0;
00130
00132 virtual StatusCode slopes( const Track& track,
00133 double z,
00134 HepVector3D& slopes,
00135 ParticleID pid = ParticleID(211) ) = 0;
00136
00138 virtual StatusCode slopes( const Track& track,
00139 const HepPlane3D& plane,
00140 HepVector3D& slopes,
00141 ParticleID pid = ParticleID(211) ) = 0;
00142
00144 virtual StatusCode p( const Track& track,
00145 double z,
00146 double& p,
00147 ParticleID pid = ParticleID(211) ) = 0;
00148
00150 virtual StatusCode p( const Track& track,
00151 const HepPlane3D& plane,
00152 double& p,
00153 ParticleID pid = ParticleID(211) ) = 0;
00154
00156 virtual StatusCode pt( const Track& track,
00157 double z,
00158 double& pt,
00159 ParticleID pid = ParticleID(211) ) = 0;
00160
00162 virtual StatusCode pt( const Track& track,
00163 const HepPlane3D& plane,
00164 double& pt,
00165 ParticleID pid = ParticleID(211) ) = 0;
00166
00168 virtual StatusCode momentum( const Track& track,
00169 double z,
00170 HepVector3D& mom,
00171 HepSymMatrix& errMom,
00172 ParticleID pid = ParticleID(211) ) = 0;
00173
00175 virtual StatusCode momentum( const Track& track,
00176 const HepPlane3D& plane,
00177 HepVector3D& mom,
00178 HepSymMatrix& errMom,
00179 ParticleID pid = ParticleID(211) ) = 0;
00180
00182 virtual StatusCode momentum( const Track& track,
00183 double z,
00184 HepVector3D& mom,
00185 ParticleID pid = ParticleID(211) ) = 0;
00186
00188 virtual StatusCode momentum( const Track& track,
00189 const HepPlane3D& plane,
00190 HepVector3D& mom,
00191 ParticleID pid = ParticleID(211) ) = 0;
00192
00194 virtual const HepMatrix& transportMatrix() const = 0;
00195
00196 };
00197
00198
00199
00200
00201
00202 #endif // LHCBINTERFACES_ITRACKEXTRAPOLATOR_H