Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-02-14 14:31:55

0001 #ifndef RKLocalFieldProvider_H
0002 #define RKLocalFieldProvider_H
0003 #include "FWCore/Utilities/interface/Visibility.h"
0004 
0005 #include "FWCore/Utilities/interface/Visibility.h"
0006 #include "DataFormats/GeometrySurface/interface/GloballyPositioned.h"
0007 
0008 class MagVolume;
0009 
0010 class dso_internal RKLocalFieldProvider {
0011 public:
0012   typedef GloballyPositioned<float> Frame;
0013   typedef Frame::GlobalVector GlobalVector;
0014   typedef Frame::GlobalPoint GlobalPoint;
0015   typedef Frame::LocalVector LocalVector;
0016   typedef Frame::LocalPoint LocalPoint;
0017   typedef Frame::PositionType Position;
0018   typedef Frame::RotationType Rotation;
0019   typedef GlobalVector::BasicVectorType Vector;
0020 
0021   /// Local field access to the MagVolume field, in the MagVolume frame
0022   explicit RKLocalFieldProvider(const MagVolume& vol);
0023 
0024   /// Local field access to the MagVolume field, transformed to the "frame" frame
0025   RKLocalFieldProvider(const MagVolume& vol, const Frame& frame);
0026 
0027   /// the argument lp is in the local frame specified in the constructor
0028   Vector inTesla(const LocalPoint& lp) const;
0029 
0030   Vector inTesla(double x, double y, double z) const { return inTesla(LocalPoint(x, y, z)); }
0031 
0032   Vector inTesla(const Vector& v) const { return inTesla(LocalPoint(v)); }
0033 
0034   /// The reference frame in which the field is defined
0035   const Frame& frame() const { return theFrame; }
0036 
0037 private:
0038   const MagVolume& theVolume;
0039   const Frame& theFrame;
0040   bool transform_;
0041 };
0042 
0043 #endif