00001 #if !defined(AFX_ISPECTRUM_H__9D00078B_7121_473C_813A_827B2F4126A5__INCLUDED_)
00002 #define AFX_ISPECTRUM_H__9D00078B_7121_473C_813A_827B2F4126A5__INCLUDED_
00003
00016 #if _MSC_VER > 1000
00017 #pragma once
00018 #endif // _MSC_VER > 1000
00019
00020 #include <string>
00021 #include <utility>
00022
00023 #include "CLHEP/Random/RandomEngine.h"
00024
00025
00026 class HepRandomEngine;
00027
00028
00029 class ISpectrum
00030 {
00031
00032 public:
00033
00035 virtual const char * particleName()const=0;
00036
00038 virtual double flux (double time ) const=0;
00039
00041 virtual double solidAngle()const{return 6.;}
00042
00044 virtual std::string title()const=0;
00045
00047 virtual double interval (double time)=0;
00048
00050 virtual double energySrc(HepRandomEngine* engine, double time=0)=0;
00051 virtual std::pair<double,double> dir(double energy, HepRandomEngine* engine)=0;
00052
00053 };
00054
00055
00056 #endif // !defined(AFX_ISPECTRUM_H__9D00078B_7121_473C_813A_827B2F4126A5__INCLUDED_)