00001
00002
00003 #ifndef CrProton_H
00004 #define CrProton_H
00005
00006
00009
00010 #include <vector>
00011 #include <utility>
00012 #include <string>
00013 #include "flux/Spectrum.h"
00014
00015 class CrSpectrum;
00016
00017 class CrProton : public Spectrum
00018 {
00019 public:
00020
00021
00022
00023
00024
00025 CrProton(const std::string& params);
00026 ~CrProton();
00027
00028 CrSpectrum* selectComponent(HepRandomEngine* engine);
00029 double energySrc(HepRandomEngine* engine);
00030 std::pair<double,double> dir(double energy, HepRandomEngine* engine);
00031 CrSpectrum* component() const;
00032
00034 virtual double flux ( ) const;
00035
00036 virtual const char * particleName()const{ return "p";}
00037 virtual std::string title()const{return "CrProton";}
00038 virtual double solidAngle( )const;
00039
00040 private:
00041 std::vector<CrSpectrum*> m_subComponents;
00042 CrSpectrum* m_component;
00043 };
00044 #endif // CrProton_H
00045