00001
00002
00003
00004
00005 #ifndef _H_IFlux_
00006 #define _H_IFlux_
00007
00008
00009
00010 #include <string>
00011 #include "CLHEP/Geometry/Point3D.h"
00012 #include "CLHEP/Geometry/Vector3D.h"
00013 #include "GaudiKernel/FactoryTable.h"
00014 #include "flux/SpectrumFactoryTable.h"
00015
00016
00018 class IFlux {
00019 public:
00020
00021 IFlux(std::string name=""){};
00022 virtual ~IFlux(){}
00023
00025 virtual std::string name()const=0;
00026
00028 virtual std::string title()const = 0;
00029
00031 virtual void generate()=0;
00032
00034 virtual std::string particleName()const=0;
00035
00037 virtual double energy()const=0;
00038
00040 virtual HepPoint3D launchPoint()const=0;
00041
00043 virtual HepVector3D launchDir()const=0;
00044
00046 virtual double time()const=0;
00047
00049 virtual double rate()const=0;
00050
00052 virtual void setTargetArea( double area)=0;
00053
00055 virtual double targetArea()const =0;
00056
00058 virtual std::string findSource()const=0;
00059
00061 virtual int numSource()const=0;
00062
00063 virtual void addFactory( const IFactory* factory )=0;
00064
00065 virtual void addFactory(std::string name, const ISpectrumFactory* factory )=0;
00066 #if 0
00067
00068 virtual std::string paramlist(std::vector<double>& params)=0;
00069
00070
00071 virtual void setParams(std::vector<double>& params)=0;
00072 #endif
00073 };
00074
00075
00076 #endif // _H_FluxSvc