00001 #ifndef MAGFIELDREADER_H
00002 #define MAGFIELDREADER_H 1
00003
00004
00005
00006 #include <string>
00007
00008
00009 #include "GaudiKernel/Algorithm.h"
00010 #include "GaudiKernel/NTuple.h"
00011 #include "BesTimerSvc/IBesTimerSvc.h"
00012 #include "BesTimerSvc/BesTimerSvc.h"
00013
00014
00015 class IMagneticFieldSvc;
00016
00024 class MagFieldReader : public Algorithm {
00025 public:
00027 MagFieldReader( const std::string& name, ISvcLocator* pSvcLocator );
00028
00029 virtual ~MagFieldReader( ){ };
00030
00031 virtual StatusCode initialize();
00032 virtual StatusCode execute ();
00033 virtual StatusCode finalize ();
00034
00035 protected:
00036
00037 private:
00038
00039 StatusCode readField();
00040
00041
00042 IMagneticFieldSvc* m_pIMF;
00043
00044
00045 double m_zMin, m_zMax, m_step;
00046
00047
00048 double m_xMin, m_xMax, m_yMin, m_yMax;
00049
00050 NTuple::Tuple* m_ntuple;
00051 NTuple::Tuple* m_tuple1;
00052 NTuple::Tuple* m_tuple2;
00053 NTuple::Tuple* m_tuple3;
00054 NTuple::Tuple* m_tuple4;
00055 NTuple::Item<float> m_x, m_y, m_z, m_Bx, m_By, m_Bz, m_r;
00056 NTuple::Item<float> m_x2, m_y2, m_z2, m_Bx2, m_By2, m_Bz2, m_r2;
00057 NTuple::Item<float> m_x3, m_y3, m_z3, m_Bx3, m_By3, m_Bz3, m_r3, m_phi3;
00058 NTuple::Item<float> m_sigma_bx,m_sigma_by,m_sigma_bz;
00059 NTuple::Item<float> m_time;
00060
00061 std::string m_filename;
00062
00063 IBesTimerSvc* m_timersvc;
00064 BesTimer* m_timer;
00065 };
00066 #endif // MAGFIELDREADER_H