00001
00002
00003 #ifndef FLUXSVC_FLUX_H
00004 #define FLUXSVC_FLUX_H
00005
00006
00007 #include "FluxSvc/IFlux.h"
00008
00009
00010
00011 class FluxMgr;
00012 class EventSource;
00013 class FluxSource;
00014
00015
00016
00020 class Flux : public IFlux {
00021 public:
00023 Flux(std::string name);
00024 virtual ~Flux();
00025
00027 virtual std::string name()const;
00028
00030 virtual std::string title()const;
00031
00033 virtual void generate();
00034
00036 virtual std::string particleName()const;
00037
00039 virtual double energy()const;
00040
00042 virtual HepPoint3D launchPoint()const;
00043
00045 virtual HepVector3D launchDir()const;
00046
00048 virtual double time()const;
00049
00050
00052 virtual double rate()const;
00053
00055 static void mgr(FluxMgr* );
00056
00058 virtual void setTargetArea( double area);
00059
00061 double targetArea()const;
00062
00064 virtual std::string findSource()const;
00065
00067 virtual int numSource()const;
00068
00069 virtual void addFactory( const IFactory* factory );
00070
00071 virtual void addFactory(std::string name, const ISpectrumFactory* factory );
00072
00073
00074
00075
00076 private:
00077
00078 EventSource* m_event;
00079 double m_time;
00080 FluxSource* m_flux;
00081
00082 static FluxMgr* s_mgr;
00083
00084 };
00085
00086 #endif