File indexing completed on 2023-10-25 09:49:08
0001 #ifndef Geometry_CommonTopologies_Topology_H
0002 #define Geometry_CommonTopologies_Topology_H
0003
0004 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
0005 #include "DataFormats/GeometrySurface/interface/LocalError.h"
0006 #include "DataFormats/GeometryCommonDetAlgo/interface/MeasurementPoint.h"
0007 #include "DataFormats/GeometryCommonDetAlgo/interface/MeasurementError.h"
0008 #include "DataFormats/Math/interface/AlgebraicROOTObjects.h"
0009
0010 class GeomDetType;
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039 class Topology {
0040 public:
0041 typedef Basic2DVector<double> Vector2D;
0042 typedef Vector2D::MathVector MathVector2D;
0043
0044 class LocalTrackAngles : public Vector2D {
0045 public:
0046 typedef Basic2DVector<double> Base;
0047 LocalTrackAngles() {}
0048 LocalTrackAngles(const Base &v) : Base(v) {}
0049 LocalTrackAngles(double dxdz, double dydz) : Base(dxdz, dydz) {}
0050 double dxdz() const { return x(); }
0051 double dydz() const { return y(); }
0052 };
0053 typedef Point2DBase<double, LocalTag> Local2DPoint;
0054
0055
0056 class LocalTrackPred {
0057 public:
0058 LocalTrackPred() {}
0059 LocalTrackPred(double x, double y, double dxdz, double dydz) : point_(x, y), angles_(dxdz, dydz) {}
0060
0061
0062 LocalTrackPred(const AlgebraicVector5 &localTrajPar)
0063 : point_(localTrajPar[3], localTrajPar[4]), angles_(localTrajPar[1], localTrajPar[2]) {}
0064 const Local2DPoint &point() const { return point_; }
0065 const LocalTrackAngles &angles() const { return angles_; }
0066
0067 private:
0068 Local2DPoint point_;
0069 LocalTrackAngles angles_;
0070 };
0071
0072 virtual ~Topology() {}
0073
0074
0075
0076
0077 virtual LocalPoint localPosition(const MeasurementPoint &) const = 0;
0078
0079 virtual LocalError localError(const MeasurementPoint &, const MeasurementError &) const = 0;
0080
0081 virtual MeasurementPoint measurementPosition(const LocalPoint &) const = 0;
0082
0083 virtual MeasurementError measurementError(const LocalPoint &, const LocalError &) const = 0;
0084
0085 virtual int channel(const LocalPoint &p) const = 0;
0086
0087
0088
0089 virtual LocalPoint localPosition(const MeasurementPoint &mp, const LocalTrackPred & ) const {
0090 return localPosition(mp);
0091 }
0092
0093
0094 virtual LocalError localError(const MeasurementPoint &mp,
0095 const MeasurementError &me,
0096 const LocalTrackPred & ) const {
0097 return localError(mp, me);
0098 }
0099
0100
0101 virtual MeasurementPoint measurementPosition(const LocalPoint &lp, const LocalTrackAngles & ) const {
0102 return measurementPosition(lp);
0103 }
0104
0105
0106 virtual MeasurementError measurementError(const LocalPoint &lp,
0107 const LocalError &le,
0108 const LocalTrackAngles & ) const {
0109 return measurementError(lp, le);
0110 }
0111
0112
0113 virtual int channel(const LocalPoint &lp, const LocalTrackAngles & ) const { return channel(lp); }
0114
0115 private:
0116 };
0117
0118 #endif