CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/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* clone() const = 0;
00028 
00030   virtual int type() const = 0;
00031 
00038   virtual Local2DVector positionCorrection(const Local2DPoint &localPos,
00039                                            const LocalTrackAngles &localAngles,
00040                                            double length, double width) const = 0;
00041 
00046   virtual bool add(const SurfaceDeformation &other) = 0;
00047   
00048   // Seems like only GeometryAligner and derived classes need access
00049   // to parameters, so we could make it a friend and protect parameters()...
00050   // friend class GeometryAligner; // to be able to call parameters
00051   // protected:
00052 
00054   virtual std::vector<double> parameters() const = 0;
00055 
00056 };
00057 
00058 #endif