File indexing completed on 2024-04-06 12:14:22
0001 #ifndef Geometry_CommonTopologies_SurfaceDeformation_H
0002 #define Geometry_CommonTopologies_SurfaceDeformation_H
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "DataFormats/GeometryVector/interface/Vector2DBase.h"
0012 #include "DataFormats/GeometryVector/interface/Point2DBase.h"
0013 #include "DataFormats/GeometryVector/interface/LocalTag.h"
0014 #include "Geometry/CommonTopologies/interface/Topology.h"
0015
0016 #include <vector>
0017
0018 class SurfaceDeformation {
0019 public:
0020 typedef Vector2DBase<double, LocalTag> Local2DVector;
0021 typedef Topology::Local2DPoint Local2DPoint;
0022 typedef Topology::LocalTrackAngles LocalTrackAngles;
0023 typedef Topology::Vector2D Vector2D;
0024 typedef Topology::MathVector2D MathVector2D;
0025
0026 virtual ~SurfaceDeformation() {}
0027
0028 virtual SurfaceDeformation *clone() const = 0;
0029
0030
0031 virtual int type() const = 0;
0032
0033
0034
0035
0036
0037
0038
0039 virtual Local2DVector positionCorrection(const Local2DPoint &localPos,
0040 const LocalTrackAngles &localAngles,
0041 double length,
0042 double width) const = 0;
0043
0044
0045
0046
0047
0048 virtual bool add(const SurfaceDeformation &other) = 0;
0049
0050
0051
0052
0053
0054
0055
0056 virtual std::vector<double> parameters() const = 0;
0057 };
0058
0059 #endif