CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/MagneticField/VolumeGeometry/interface/MagneticFieldProvider.h

Go to the documentation of this file.
00001 #ifndef MagneticFieldProvider_h
00002 #define MagneticFieldProvider_h
00003 
00013 #include "DataFormats/GeometryVector/interface/Point3DBase.h"
00014 #include "DataFormats/GeometryVector/interface/Vector3DBase.h"
00015 #include "DataFormats/GeometryVector/interface/LocalTag.h"
00016 #include "DataFormats/GeometryVector/interface/GlobalTag.h"
00017 
00018 template <class T>
00019 class MagneticFieldProvider {
00020 public:
00021 
00022   typedef Point3DBase<T,GlobalTag>      GlobalPointType;
00023   typedef Point3DBase<T,LocalTag>       LocalPointType;
00024   typedef Vector3DBase<T,GlobalTag>     GlobalVectorType;
00025   typedef Vector3DBase<T,LocalTag>      LocalVectorType;
00026 
00029   virtual LocalVectorType valueInTesla( const LocalPointType& p) const = 0;
00030 
00034   // virtual GlobalVectorType valueInTesla( const GlobalPointType& p) const = 0;
00035 
00039   virtual int hasDerivatives() const {return false;}
00040 
00043   virtual LocalVectorType derivativeInTeslaPerMeter( const LocalPointType& p, 
00044                                                      int N) const {
00045     return LocalVectorType();
00046   }
00047 
00048 };
00049 
00050 #endif