CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/TrackPropagation/RungeKutta/src/PathToPlane2Order.h

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