00001 #ifndef Geometry_CommonTopologies_BowedSurfaceDeformation_H 00002 #define Geometry_CommonTopologies_BowedSurfaceDeformation_H 00003 00017 00018 #include "Geometry/CommonTopologies/interface/SurfaceDeformation.h" 00019 00020 // already included in the above: 00021 // #include <vector> 00022 00023 class BowedSurfaceDeformation : public SurfaceDeformation 00024 { 00025 public: 00027 BowedSurfaceDeformation(double sagittaX, double sagittaXY, double sagittaY) : 00028 theSagittaX(sagittaX), theSagittaXY(sagittaXY), theSagittaY(sagittaY) { } 00031 BowedSurfaceDeformation(const std::vector<double> ¶meters); 00032 00033 virtual BowedSurfaceDeformation* clone() const; 00034 00036 virtual int type() const; 00037 00044 virtual Local2DVector positionCorrection(const Local2DPoint &localPos, 00045 const LocalTrackAngles &localAngles, 00046 double length, double width) const; 00047 00052 virtual bool add(const SurfaceDeformation &other); 00053 00055 virtual std::vector<double> parameters() const; 00056 00058 static unsigned int minParameterSize() { return 3;} 00060 static unsigned int maxParameterSize() { return 3;} 00061 00062 private: 00063 double theSagittaX; 00064 double theSagittaXY; 00065 double theSagittaY; 00066 // double theRelWidthLowY; // could be used for non-rectangular modules 00067 }; 00068 00069 #endif