| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

AnalyticFieldSvc.h

Go to the documentation of this file.
00001 #ifndef ANALYTICFIELDSVC_H
00002 #define ANALYTICFIELDSVC_H 1
00003 
00004 // Include files
00005 #include "GaudiKernel/Service.h"
00006 
00007 #include "GaudiKernel/IMagneticFieldSvc.h"
00008 #include "GaudiKernel/Vector3DTypes.h"
00009 #include "GaudiKernel/Point3DTypes.h"
00010 #include "MagVec.h"
00011 #include "MagMat.h"
00012 
00013 // Forward declarations
00014 template <class TYPE> class SvcFactory;
00015 
00016 
00027 class AnalyticFieldSvc : public Service,
00028                          virtual public IMagneticFieldSvc {
00029 
00030 protected:
00031   
00035   AnalyticFieldSvc( const std::string& name, ISvcLocator* svc );
00036   
00038   virtual ~AnalyticFieldSvc();
00039 
00040 public:
00041 
00043   virtual StatusCode initialize();
00044   
00046   virtual StatusCode finalize();
00047   
00053   virtual StatusCode queryInterface( const InterfaceID& riid, 
00054                                      void** ppvInterface      );
00055   
00061   virtual StatusCode fieldVector( const Gaudi::XYZPoint&  xyz, 
00062                                         Gaudi::XYZVector& fvec ) const;
00063 
00064 private:
00065 
00067   friend class SvcFactory<AnalyticFieldSvc>;
00068 
00070   //  void fieldGrid( const Gaudi::XYZPoint& xyz, Gaudi::XYZVector& fvec ) const;
00071 
00072   StatusCode GetParam();       
00073 void Bcalculation(const Gaudi::XYZPoint&  point, 
00074                    Gaudi::XYZVector& bf ) const; 
00075  double EvaluateField(MagVec& pos, MagMat& bmap) const; 
00076 
00077   void ClearMaps();
00078   
00079   
00080   std::string m_filename[3];           
00081   std::vector<MagMat*> Bxmap;       
00082   std::vector<MagMat*> Bymap;       
00083   std::vector<MagMat*> Bzmap;       
00084 
00085   std::vector<double> zmin;           
00086   std::vector<double> zmax;           
00087 
00088   double m_zOffSet;              
00089   
00090 
00091   bool                m_useConstField;    
00092   std::vector<double> m_constFieldVector; 
00093   double              m_scaleFactor;      
00094 
00095   int m_nREG,m_nREGmin,m_nREGmax;
00096   
00097 };
00098 
00099 #endif  // ANALYTICFIELDSVC_H
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:04:54 2011 for Magnet by doxygen 1.4.7