CMS 3D CMS Logo

CMSSW_4_4_3_patch1/src/Geometry/CommonTopologies/interface/BowedSurfaceDeformation.h

Go to the documentation of this file.
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> &parameters);
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