00001
00002
00003 #ifndef _H_IFlux_
00004 #define _H_IFlux_
00005
00015
00016 #include <string>
00017 #include "CLHEP/Geometry/Point3D.h"
00018 #include "CLHEP/Geometry/Vector3D.h"
00019 #include "../src/SpectrumFactoryTable.h"
00020 #include "geometry/CoordTransform.h"
00021
00022 class ParticleProperty;
00023 class EventSource;
00024 class FluxSource;
00025
00027 class IFlux {
00028 public:
00030 IFlux(std::string name=""){};
00031 virtual ~IFlux(){}
00032
00034 virtual std::string name()const=0;
00035
00037 virtual std::string title()const = 0;
00038
00040 virtual void generate()=0;
00041
00043 virtual std::string particleName()const=0;
00044
00046
00047
00049 virtual double energy()const=0;
00050
00052 virtual HepPoint3D launchPoint()const=0;
00053
00055 virtual HepVector3D launchDir()const=0;
00056
00058 virtual double time()const=0;
00059
00061 virtual double rate()const=0;
00062
00064 virtual void setTargetArea( double area)=0;
00065
00067 virtual double targetArea()const =0;
00068
00070 virtual std::string findSource()const=0;
00071
00073 virtual int numSource()const=0;
00074
00076 virtual void pass ( double t)=0;
00077
00079 virtual Rotation CELTransform(double time)const=0;
00080
00082 virtual Rotation orientTransform(double time)const=0;
00083
00084 virtual void addFactory(std::string name, const ISpectrumFactory* factory )=0;
00085
00086 virtual double gpsTime()const=0;
00087
00089 virtual Rotation transformGlastToGalactic(double time)const=0;
00090
00091 virtual EventSource* currentEvent()=0;
00092
00093 virtual FluxSource* currentFlux()=0;
00094
00096 virtual void writeSourceCharacteristic(std::ostream& out)=0;
00097
00098 #if 0
00099
00100 virtual std::string paramlist(std::vector<double>& params)=0;
00101
00102
00103 virtual void setParams(std::vector<double>& params)=0;
00104 #endif
00105 };
00106
00107
00108 #endif // _H_FluxSvc