|
||||
File indexing completed on 2024-04-06 12:31:28
0001 #ifndef HelixLineExtrapolation_H 0002 #define HelixLineExtrapolation_H 0003 0004 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 0005 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 0006 0007 #include <utility> 0008 0009 class Line; 0010 0011 /** Abstract interface for the extrapolation of a helix to 0012 * the closest approach to a line. 0013 */ 0014 0015 class HelixLineExtrapolation { 0016 public: 0017 /** The types for position and direction are frame-neutral 0018 * (not global, local, etc.) so this interface can be used 0019 * in any frame. Of course, the helix and the plane must be defined 0020 * in the same frame, which is also the frame of the result. 0021 */ 0022 typedef Basic3DVector<float> PositionType; 0023 typedef Basic3DVector<float> DirectionType; 0024 typedef Basic3DVector<double> PositionTypeDouble; 0025 typedef Basic3DVector<double> DirectionTypeDouble; 0026 0027 public: 0028 virtual ~HelixLineExtrapolation() = default; 0029 // 0030 // the helix is passed to the constructor and does not appear in the interface 0031 // 0032 0033 /** Propagation status (true if valid) and (signed) path length 0034 * along the helix from the starting point to the closest approach 0035 * to the point. The starting point is given in the constructor. 0036 */ 0037 virtual std::pair<bool, double> pathLength(const GlobalPoint& point) const = 0; 0038 0039 /** Propagation status (true if valid) and (signed) path length 0040 * along the helix from the starting point to the closest approach 0041 * to the line. The starting point is given in the constructor. 0042 */ 0043 virtual std::pair<bool, double> pathLength(const Line& line) const = 0; 0044 0045 /** Returns the position along the helix that corresponds to path 0046 * length "s" from the starting point. If s is obtained from the 0047 * pathLength method the position is the destination point, i.e. 0048 * the position at the closest approach (if it exists!) 0049 * is given by position( pathLength(line) ). 0050 */ 0051 virtual PositionType position(double s) const = 0; 0052 0053 /** Returns the direction along the helix that corresponds to path 0054 * length "s" from the starting point. As for position, 0055 * the direction at the closest approach (if it exists!) 0056 * is given by direction( pathLength(line) ). 0057 */ 0058 virtual DirectionType direction(double s) const = 0; 0059 }; 0060 0061 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.2.1 LXR engine. The LXR team |