Back to home page

Project CMSSW displayed by LXR

 
 

    


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