Go to the documentation of this file.00001 #ifndef Geometry_CommonTopologies_Topology_H
00002 #define Geometry_CommonTopologies_Topology_H
00003
00004 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
00005 #include "DataFormats/GeometryCommonDetAlgo/interface/LocalError.h"
00006 #include "DataFormats/GeometryCommonDetAlgo/interface/MeasurementPoint.h"
00007 #include "DataFormats/GeometryCommonDetAlgo/interface/MeasurementError.h"
00008 #include "DataFormats/Math/interface/AlgebraicROOTObjects.h"
00009
00010 class GeomDetType;
00011
00039 class Topology {
00040 public:
00041 typedef Basic2DVector<double> Vector2D;
00042 typedef Vector2D::MathVector MathVector2D;
00044 class LocalTrackAngles : public Vector2D {
00045 public:
00046 typedef Basic2DVector<double> Base;
00047 LocalTrackAngles(const Base & v) : Base(v) {}
00048 LocalTrackAngles(double dxdz, double dydz) : Base(dxdz,dydz) {}
00049 double dxdz() const { return x(); }
00050 double dydz() const { return y(); }
00051 };
00052 typedef Point2DBase <double, LocalTag> Local2DPoint;
00055 class LocalTrackPred {
00056 public:
00057 LocalTrackPred(double x, double y, double dxdz, double dydz) : point_(x,y),angles_(dxdz,dydz){}
00060 LocalTrackPred(const AlgebraicVector5& localTrajPar) :
00061 point_(localTrajPar[3], localTrajPar[4]), angles_(localTrajPar[1], localTrajPar[2]) {}
00062 const Local2DPoint& point() const {return point_;}
00063 const LocalTrackAngles& angles() const {return angles_;}
00064 private:
00065 Local2DPoint point_;
00066 LocalTrackAngles angles_;
00067 };
00068
00069 virtual ~Topology() {}
00070
00071
00072
00073
00074 virtual LocalPoint localPosition( const MeasurementPoint& ) const = 0;
00075
00076 virtual LocalError
00077 localError( const MeasurementPoint&, const MeasurementError& ) const = 0;
00078
00079 virtual MeasurementPoint measurementPosition( const LocalPoint&) const = 0;
00080
00081 virtual MeasurementError
00082 measurementError( const LocalPoint&, const LocalError& ) const = 0;
00083
00084 virtual int channel( const LocalPoint& p) const = 0;
00085
00086
00088 virtual LocalPoint localPosition(const MeasurementPoint &mp, const LocalTrackPred &) const {
00089 return localPosition(mp);
00090 }
00091
00093 virtual LocalError
00094 localError(const MeasurementPoint &mp, const MeasurementError &me,
00095 const LocalTrackPred &) const {
00096 return localError(mp,me);
00097 }
00098
00100 virtual MeasurementPoint measurementPosition( const LocalPoint &lp, const LocalTrackAngles &) const {
00101 return measurementPosition(lp);
00102 }
00103
00105 virtual MeasurementError
00106 measurementError( const LocalPoint &lp, const LocalError &le, const LocalTrackAngles &) const {
00107 return measurementError(lp, le);
00108 }
00109
00111 virtual int channel( const LocalPoint &lp, const LocalTrackAngles &) const {
00112 return channel(lp);
00113 }
00114
00115
00116 private:
00117
00118 };
00119
00120 #endif