CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_6_1_1/src/Geometry/CommonTopologies/interface/SurfaceDeformation.h

Go to the documentation of this file.
00001 #ifndef Geometry_CommonTopologies_SurfaceDeformation_H
00002 #define Geometry_CommonTopologies_SurfaceDeformation_H
00003 
00010 
00011 #include "DataFormats/GeometryVector/interface/Vector2DBase.h"
00012 #include "DataFormats/GeometryVector/interface/Point2DBase.h"
00013 #include "DataFormats/GeometryVector/interface/LocalTag.h"
00014 #include "Geometry/CommonTopologies/interface/Topology.h"
00015 
00016 #include <vector>
00017 
00018 class SurfaceDeformation
00019 {
00020  public:
00021   typedef Vector2DBase<double, LocalTag> Local2DVector;
00022   typedef Topology::Local2DPoint         Local2DPoint;
00023   typedef Topology::LocalTrackAngles     LocalTrackAngles;
00024   typedef Topology::Vector2D             Vector2D;
00025   typedef Topology::MathVector2D         MathVector2D;
00026 
00027   virtual ~SurfaceDeformation() {}
00028 
00029   virtual SurfaceDeformation* clone() const = 0;
00030 
00032   virtual int type() const = 0;
00033 
00040   virtual Local2DVector positionCorrection(const Local2DPoint &localPos,
00041                                            const LocalTrackAngles &localAngles,
00042                                            double length, double width) const = 0;
00043 
00048   virtual bool add(const SurfaceDeformation &other) = 0;
00049   
00050   // Seems like only GeometryAligner and derived classes need access
00051   // to parameters, so we could make it a friend and protect parameters()...
00052   // friend class GeometryAligner; // to be able to call parameters
00053   // protected:
00054 
00056   virtual std::vector<double> parameters() const = 0;
00057 
00058 };
00059 
00060 #endif