00001 #ifndef GeometryCommonTopologiesTwoBowedSurfacesDeformation_H 00002 #define GeometryCommonTopologiesTwoBowedSurfacesDeformation_H 00003 00014 00015 #include "Geometry/CommonTopologies/interface/SurfaceDeformation.h" 00016 00017 #include<array> 00018 00019 class TwoBowedSurfacesDeformation : public SurfaceDeformation 00020 { 00021 public: 00038 TwoBowedSurfacesDeformation(const std::vector<double> ¶meters); 00039 00040 virtual TwoBowedSurfacesDeformation* clone() const; 00041 00043 virtual int type() const; 00044 00051 virtual Local2DVector positionCorrection(const Local2DPoint &localPos, 00052 const LocalTrackAngles &localAngles, 00053 double length, double width) const; 00054 00059 virtual bool add(const SurfaceDeformation &other); 00060 00062 virtual std::vector<double> parameters() const; 00063 00064 // the size 00065 static constexpr unsigned int parSize = 13; 00066 static constexpr unsigned int parameterSize() { return parSize; } 00067 00068 00070 static constexpr unsigned int minParameterSize() { return parameterSize(); } 00072 static constexpr unsigned int maxParameterSize() { return parameterSize();} 00073 00074 // location of ySplit 00075 static constexpr unsigned int k_ySplit() { return parameterSize()-1;} 00076 00077 private: 00078 double theParameters[parSize]; 00079 }; 00080 00081 #endif