CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/TrackPropagation/RungeKutta/interface/PathToPlane2Order.h

Go to the documentation of this file.
00001 #ifndef PathToPlane2Order_H
00002 #define PathToPlane2Order_H
00003 
00004 #include "DataFormats/GeometryVector/interface/Basic3DVector.h"
00005 #include "TrackingTools/GeomPropagators/interface/HelixPlaneCrossing.h"
00006 #include "TrackPropagation/RungeKutta/interface/CartesianState.h"
00007 #include "DataFormats/TrajectorySeed/interface/PropagationDirection.h"
00008 #include "DataFormats/GeometrySurface/interface/Plane.h"
00009 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00010 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
00011 
00018 class RKLocalFieldProvider;
00019 
00020 class PathToPlane2Order {
00021 public:
00022 
00023     typedef Plane::Scalar                                Scalar;
00024     typedef Basic3DVector<Scalar>                        Vector3D;
00025     typedef GloballyPositioned<Scalar>                   Frame;
00026 
00027     PathToPlane2Order( const RKLocalFieldProvider& fld, const Frame* fieldFrame) : 
00028       theField(fld), theFieldFrame(fieldFrame) {}
00029 
00032     std::pair<bool,double> operator()( const Plane& plane, 
00033                                        const Vector3D& position,
00034                                        const Vector3D& momentum,
00035                                        double charge,
00036                                        const PropagationDirection propDir = alongMomentum);
00037 
00038     std::pair<bool,double> operator()( const Plane& plane, 
00039                                        const GlobalPoint& position,
00040                                        const GlobalVector& momentum,
00041                                        double charge,
00042                                        const PropagationDirection propDir = alongMomentum) {
00043         return operator()( plane, theFieldFrame->toLocal(position).basicVector(), 
00044                            theFieldFrame->toLocal(momentum).basicVector(), charge, propDir);
00045     }
00046 
00047 private:
00048 
00049     const RKLocalFieldProvider& theField;
00050     const Frame*                theFieldFrame;
00051 };
00052 
00053 #endif