00001 #ifndef Interpolation_SpecialCylindricalMFGrid_h 00002 #define Interpolation_SpecialCylindricalMFGrid_h 00003 00014 #include "MagneticField/Interpolation/interface/MFGrid3D.h" 00015 00016 class binary_ifstream; 00017 00018 class SpecialCylindricalMFGrid : public MFGrid3D { 00019 public: 00020 00024 SpecialCylindricalMFGrid( binary_ifstream& istr, 00025 const GloballyPositioned<float>& vol, 00026 int gridType); 00027 00028 virtual LocalVector uncheckedValueInTesla( const LocalPoint& p) const; 00029 00030 virtual void dump() const; 00031 00032 virtual void toGridFrame( const LocalPoint& p, double& a, double& b, double& c) const; 00033 00034 virtual LocalPoint fromGridFrame( double a, double b, double c) const; 00035 00036 private: 00037 00038 //double RParAsFunOfPhi[4]; // R = f(phi) or const. (0,2: const. par. ; 1,3: const./sin(phi)) 00039 00040 double stepConstTerm_; 00041 double stepPhiTerm_; 00042 double startConstTerm_; 00043 double startPhiTerm_; 00044 00045 double stepSize( double sinPhi) const {return stepConstTerm_ + stepPhiTerm_ /sinPhi;} 00046 double startingPoint( double sinPhi) const {return startConstTerm_ + startPhiTerm_/sinPhi;} 00047 bool sector1; 00048 }; 00049 00050 #endif