00001 00013 #ifndef NUCSTATE_H 00014 #define NUCSTATE_H 00015 00016 #include <more/phys/ens.h> 00017 00018 #include <vector> 00019 #include <ostream> 00020 #include <string> 00021 00022 namespace GenDecay { 00023 00024 class NucDecay; 00025 00026 class NucState { 00027 more::phys::nucleus m_nuc; // Z/A 00028 more::phys::ens::confiv_t m_halflife; // half life of this state 00029 more::phys::ens::confiv_t m_erel; // Nuclear energy relative to reference 00030 int m_eref; // Energy reference 00031 std::vector<NucDecay*> m_decays; 00032 00033 public: 00034 00035 NucState(const more::phys::nucleus& n, 00036 more::phys::ens::confiv_t hl = more::phys::ens::confiv_t(0.0,0.0), 00037 more::phys::ens::confiv_t rel = more::phys::ens::confiv_t(0.0,0.0), 00038 int ref=0.0) 00039 : m_nuc(n), m_halflife(hl), m_erel(rel), m_eref(ref) {} 00040 00041 more::phys::nucleus nuc() const { return m_nuc; } 00042 more::phys::ens::confiv_t halflife() const { return m_halflife; } 00043 more::phys::ens::confiv_t erel() const { return m_erel; } 00044 int eref() const { return m_eref; } 00045 std::vector<NucDecay*>& decays() { return m_decays; } 00046 00047 00048 int Z(); 00049 int A(); 00051 double lifetime(); 00053 double lifetime_clhep(); 00055 double energy(); 00057 double energy_clhep(); 00058 int ndecays(); 00059 NucDecay* decay(int ind); 00060 }; 00061 } 00062 00063 std::ostream& operator<<(std::ostream& o, const GenDecay::NucState& ns); 00064 00065 00066 00067 #endif // NUCSTATE_H