/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

Radiation.h
Go to the documentation of this file.
00001 
00015 #ifndef RADIATION_H
00016 #define RADIATION_H
00017 
00018 #include "GaudiKernel/RndmGenerators.h"
00019 #include <string>
00020 #include <iostream>
00021 
00022 namespace GenDecay {
00023 
00024 enum RadiationType {
00025     Unknown = 0,
00026     Alpha, BetaMinus, BetaPlus, Gamma, EleCapture,
00027 };
00028 
00029 class Radiation {
00030 protected:
00031 
00032     double m_energy;
00033 
00034 public:
00035 
00036     Radiation(double characteristic_energy);
00037     virtual ~Radiation();
00038 
00039     virtual double kineticEnergy() const;
00040 
00041 
00042     virtual std::string asString() const = 0;
00043 
00044     virtual RadiationType type() const  = 0;
00045     virtual int pid() const = 0;
00046     virtual double mass() const = 0;
00047     virtual std::string typeString() const  = 0;
00048 
00049 };
00050 
00051 
00052 class AlphaRadiation : public Radiation 
00053 {
00054     int m_parentA;
00055 
00056 public:
00057     // For Alpha, energy is kinetic energy
00058     AlphaRadiation(double energy, int parentA);
00059     virtual ~AlphaRadiation();
00060 
00061     std::string asString() const;
00062 
00063     double kineticEnergy() const;
00064     int pid() const;
00065     double mass() const;
00066 
00067     RadiationType type() const { return Alpha; }
00068     std::string typeString() const { return "Alpha"; }
00069 };
00070 
00071 class BetaRadiation : public Radiation 
00072 {
00073     int m_parentZ;
00074     int m_daughterZ;
00075     int m_betaSign;
00076     double m_endpoint;
00077 
00078     double m_norm, m_maximum;
00079     mutable Rndm::Numbers m_rand; // not const correct....
00080 
00081     void normalize();
00082 
00083 public:
00084     // For beta, energy is endpoint energy, not corrected for electron loss (beta+)
00085     BetaRadiation(double energy, int parentZ);
00086     virtual ~BetaRadiation();
00087 
00088     RadiationType type() const { return (m_betaSign < 0 ? BetaMinus : BetaPlus); }
00089     std::string typeString() const { return (m_betaSign < 0 ? "BetaMinus" : "BetaPlus"); }
00090 
00091     std::string asString() const;
00092 
00093     int sign() const { return m_betaSign; }
00094 
00095     double kineticEnergy() const;
00096     int pid() const;
00097     double mass() const;
00098 
00099     double dnde(double kineticEnergy) const;
00100     double dnde_noff(double kineticEnergy) const;
00101     double fermi_function(double kineticEnergy) const;
00102 };
00103 
00104 class GammaRadiation : public Radiation 
00105 {
00106 public:
00107     GammaRadiation(double energy);
00108     virtual ~GammaRadiation();
00109 
00110     int pid() const;
00111     double mass() const;
00112 
00113     std::string asString() const;
00114     RadiationType type() const { return Gamma; }
00115     std::string typeString() const { return "Gamma"; }
00116 };
00117 
00118 class ElectronCapture: public Radiation
00119 {
00120 public:
00121     ElectronCapture(double characteristic_energy);
00122     virtual ~ElectronCapture();
00123 
00124     std::string asString() const;
00125     int pid() const;
00126     double mass() const;
00127     RadiationType type() const { return EleCapture; }
00128     std::string typeString() const { return "EleCapture"; }
00129 };
00130 
00131 } // namespace GenDecay
00132 
00133 std::ostream& operator<<(std::ostream& o, const GenDecay::Radiation& r);
00134 
00135 
00136 #endif  // RADIATION_H
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 10:21:06 for GenDecay by doxygen 1.7.4