00001
00002
00003 #ifndef _H_IFlux_
00004 #define _H_IFlux_
00005
00006
00007 #include <string>
00008 #include "CLHEP/Vector/Rotation.h"
00009 #include "CLHEP/Vector/ThreeVector.h"
00010
00011 class ParticleProperty;
00012 class EventSource;
00013
00014 class ISpectrumFactory;
00015
00026 class IFlux {
00027 public:
00029 IFlux(std::string =""){};
00030 virtual ~IFlux(){}
00031
00033 virtual std::string name()const=0;
00034
00036 virtual std::string title()const = 0;
00037
00039 virtual void generate()=0;
00040
00042 virtual std::string particleName()const=0;
00043
00045
00046
00048 virtual double energy()const=0;
00049
00051 virtual Hep3Vector launchPoint()const=0;
00052
00054 virtual Hep3Vector launchDir()const=0;
00055
00057 virtual double time()const=0;
00058
00060 virtual double rate()const=0;
00061
00063 virtual void setTargetArea( double area)=0;
00064
00066 virtual double targetArea()const =0;
00067
00069 virtual std::string findSource()const=0;
00070
00072 virtual int numSource()const=0;
00073
00075 virtual void pass ( double t)=0;
00076
00078 virtual CLHEP::HepRotation CELTransform(double time)const=0;
00079
00081 virtual CLHEP::HepRotation orientTransform(double time)const=0;
00082
00083 virtual void addFactory(std::string name, const ISpectrumFactory* factory )=0;
00084
00085 virtual double gpsTime()const=0;
00086
00088 virtual CLHEP::HepRotation transformGlastToGalactic(double time)const=0;
00089
00090 virtual EventSource* currentEvent()=0;
00091 virtual EventSource* currentFlux()=0;
00092
00094 virtual void writeSourceCharacteristic(std::ostream& out)=0;
00095
00096
00097 virtual CLHEP::HepRotation transformToGlast(double seconds,int index)const=0;
00098
00099 };
00100
00101
00102 #endif // _H_FluxSvc