00001 #ifndef RKLocalFieldProvider_H 00002 #define RKLocalFieldProvider_H 00003 00004 #include "FWCore/Utilities/interface/Visibility.h" 00005 #include "DataFormats/GeometrySurface/interface/GloballyPositioned.h" 00006 00007 class MagVolume; 00008 00009 class dso_internal RKLocalFieldProvider { 00010 public: 00011 00012 typedef GloballyPositioned<float> Frame; 00013 typedef Frame::GlobalVector GlobalVector; 00014 typedef Frame::GlobalPoint GlobalPoint; 00015 typedef Frame::LocalVector LocalVector; 00016 typedef Frame::LocalPoint LocalPoint; 00017 typedef Frame::PositionType Position; 00018 typedef Frame::RotationType Rotation; 00019 typedef GlobalVector::BasicVectorType Vector; 00020 00022 explicit RKLocalFieldProvider( const MagVolume& vol); 00023 00025 RKLocalFieldProvider( const MagVolume& vol, const Frame& frame); 00026 00028 Vector inTesla( const LocalPoint& lp) const; 00029 00030 Vector inTesla( double x, double y, double z) const { 00031 return inTesla( LocalPoint(x,y,z)); 00032 } 00033 00034 Vector inTesla( const Vector& v) const { 00035 return inTesla( LocalPoint(v)); 00036 } 00037 00039 const Frame& frame() const {return theFrame;} 00040 00041 private: 00042 00043 const MagVolume & theVolume; 00044 const Frame& theFrame; 00045 bool transform_; 00046 00047 00048 }; 00049 00050 #endif