00001
00008 #ifndef _H_FluxSvc_
00009 #define _H_FluxSvc_
00010
00020
00021 #include "GaudiKernel/Service.h"
00022 #include "GaudiKernel/IRunable.h"
00023 #include "GaudiKernel/Property.h"
00024
00025 #include "FluxSvc/IFluxSvc.h"
00026 #include <list>
00027
00028
00029 template <class TYPE> class SvcFactory;
00030 class IFlux;
00031 class FluxMgr;
00032 class IParticlePropertySvc;
00033 class IAppMgrUI;
00034
00035
00036 class FluxSvc :
00037 virtual public Service,
00038 virtual public IFluxSvc,
00039 virtual public IRunable
00040 {
00041 public:
00042
00044 StatusCode source(std::string name, IFlux*&);
00045
00047 std::list<std::string> fluxNames()const;
00048
00050 virtual void addFactory(std::string name, const ISpectrumFactory* factory );
00051
00053 virtual void pass ( double t);
00054
00056 void rootDisplay(std::vector<char*> arguments);
00057
00059 IFlux* currentFlux();
00060
00062 std::string fluxName()const;
00063
00065 void setOrientation(std::pair<double,double> ang);
00066
00068 std::pair<double,double> getOrientation();
00069
00071 HepRotation transformGlastToGalactic(double time)const;
00072
00074 std::pair<double,double> location();
00075
00077 std::string uniqueIDString()const;
00078
00080 void setRockType(int rockType);
00081
00083 std::vector<std::pair< std::string ,std::list<std::string> > > sourceOriginList() const;
00084
00085
00087 virtual StatusCode run();
00088
00089
00090
00091
00093 virtual StatusCode initialize ();
00094
00096 virtual StatusCode finalize ();
00097
00099 virtual StatusCode queryInterface( const IID& riid, void** ppvUnknown );
00100
00101 protected:
00102
00104 FluxSvc ( const std::string& name, ISvcLocator* al );
00105
00107 virtual ~FluxSvc ();
00108
00109 private:
00110
00111 IParticlePropertySvc* m_partSvc;
00112
00114 friend class SvcFactory<FluxSvc>;
00115
00116 FluxMgr * m_fluxMgr;
00118
00119 std::vector<std::string> m_source_lib;
00121 std::string m_source_lib_default;
00123 std::string m_dtd_file;
00125 IFlux* m_currentFlux;
00126
00128 IAppMgrUI* m_appMgrUI;
00129 IntegerProperty m_evtMax;
00130
00131
00132 DoubleProperty m_startTime;
00133 DoubleProperty m_endTime;
00134 };
00135
00136
00137 #endif // _H_FluxSvc