![]() |
|
|||
File indexing completed on 2024-04-06 12:14:22
0001 #ifndef Geometry_CommonTopologies_BowedSurfaceDeformation_H 0002 #define Geometry_CommonTopologies_BowedSurfaceDeformation_H 0003 0004 /// BowedSurfaceAlignmentParameters 0005 /// 0006 /// Class to apply corrections to local positions resulting 0007 /// from a non-planar surface. The bows are parametrised using 0008 /// Legendre polynomials up to second order, excluding 0009 /// 0th and 1st order that are already treated by local w 0010 /// shift and rotations around local u and v axes. 0011 /// 0012 /// \author : Gero Flucke 0013 /// date : October 2010 0014 0015 #include "Geometry/CommonTopologies/interface/SurfaceDeformation.h" 0016 0017 // already included in the above: 0018 // #include <vector> 0019 0020 class BowedSurfaceDeformation : public SurfaceDeformation { 0021 public: 0022 /// constructor from sagittae, i.e. coefficients of Legendre polynomials 0023 BowedSurfaceDeformation(double sagittaX, double sagittaXY, double sagittaY) 0024 : theSagittaX(sagittaX), theSagittaY(sagittaY), theSagittaXY(sagittaXY) {} 0025 /// constructor from vector of sagittae, parameters.size() must be 0026 /// between minParameterSize() and maxParameterSize() 0027 BowedSurfaceDeformation(const std::vector<double> ¶meters); 0028 0029 BowedSurfaceDeformation *clone() const override; 0030 0031 /// specific type, i.e. SurfaceDeformationFactory::kBowedSurface 0032 int type() const override; 0033 0034 /// correction to add to local position depending on 0035 /// - track parameters in local frame (from LocalTrajectoryParameters): 0036 /// * track position as Local2DPoint(x,y) 0037 /// * track angles as LocalTrackAngles(dxdz, dydz) 0038 /// - length of surface (local y-coordinate) 0039 /// - width of surface (local x-coordinate) 0040 Local2DVector positionCorrection(const Local2DPoint &localPos, 0041 const LocalTrackAngles &localAngles, 0042 double length, 0043 double width) const override; 0044 0045 /// update information with parameters of 'other', 0046 /// false in case the type or some parameters do not match and thus 0047 /// the information cannot be used (then no changes are done), 0048 /// true if merge was successful 0049 bool add(const SurfaceDeformation &other) override; 0050 0051 /// parameters, i.e. sagittae as given in the constructor 0052 std::vector<double> parameters() const override; 0053 0054 // the size 0055 static constexpr unsigned int parSize = 3; 0056 static constexpr unsigned int parameterSize() { return parSize; } 0057 0058 /// minimum size of vector that is accepted by constructor from vector 0059 static constexpr unsigned int minParameterSize() { return parameterSize(); } 0060 /// maximum size of vector that is accepted by constructor from vector 0061 static constexpr unsigned int maxParameterSize() { return parameterSize(); } 0062 0063 private: 0064 double theSagittaX; 0065 double theSagittaY; 0066 double theSagittaXY; 0067 // double theRelWidthLowY; // could be used for non-rectangular modules 0068 }; 0069 0070 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |
![]() ![]() |