CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_5_3_14/src/Geometry/CommonTopologies/interface/TwoBowedSurfacesDeformation.h

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