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