G4NuclearLevelManager Class Reference

#include <G4NuclearLevelManager.hh>


Public Member Functions

 G4NuclearLevelManager (G4int Z, G4int A, const G4String &filename)
 G4NuclearLevelManager (const G4NuclearLevelManager &right)
 ~G4NuclearLevelManager ()
void SetNucleus (G4int Z, G4int A, const G4String &filename)
G4bool IsValid () const
G4int NumberOfLevels () const
const G4NuclearLevelGetLevel (G4int i) const
const G4NuclearLevelNearestLevel (G4double energy, G4double eDiffMax=9999.*CLHEP::GeV) const
const G4NuclearLevelLowestLevel () const
const G4NuclearLevelHighestLevel () const
G4double MinLevelEnergy () const
G4double MaxLevelEnergy () const
void PrintAll ()


Detailed Description

Definition at line 65 of file G4NuclearLevelManager.hh.


Constructor & Destructor Documentation

G4NuclearLevelManager::G4NuclearLevelManager ( G4int  Z,
G4int  A,
const G4String filename 
)

Definition at line 67 of file G4NuclearLevelManager.cc.

00067                                                                                        :
00068     _nucleusA(A), _nucleusZ(Z), _fileName(filename), _validity(false), 
00069     _levels(0), _levelEnergy(0), _gammaEnergy(0), _probability(0)
00070 { 
00071     if (A <= 0 || Z <= 0 || Z > A )
00072         throw G4HadronicException(__FILE__, __LINE__, "==== G4NuclearLevelManager ==== (Z,A) <0, or Z>A");
00073 
00074     MakeLevels();
00075 }

G4NuclearLevelManager::G4NuclearLevelManager ( const G4NuclearLevelManager right  ) 

Definition at line 367 of file G4NuclearLevelManager.cc.

References _angularMomentum, _fileName, _gammaEnergy, _halfLife, _kCC, _l1CC, _l2CC, _l3CC, _levelEnergy, _levels, _m1CC, _m2CC, _m3CC, _m4CC, _m5CC, _nPlusCC, _nucleusA, _nucleusZ, _polarity, _probability, _totalCC, _validity, buffer, GetLevel(), and CLHEP::detail::n.

00368 {
00369     _levelEnergy = right._levelEnergy;
00370     _gammaEnergy = right._gammaEnergy;
00371     _probability = right._probability;
00372     _polarity = right._polarity;
00373     _halfLife = right._halfLife;
00374     _angularMomentum = right._angularMomentum;
00375     _kCC = right._kCC;
00376     _l1CC = right._l1CC;
00377     _l2CC = right._l2CC;
00378     _l3CC = right._l3CC;
00379     _m1CC = right._m1CC;
00380     _m2CC = right._m2CC;
00381     _m3CC = right._m3CC;
00382     _m4CC = right._m4CC;
00383     _m5CC = right._m5CC;
00384     _nPlusCC = right._nPlusCC;
00385     _totalCC = right._totalCC;
00386     _nucleusA = right._nucleusA;
00387     _nucleusZ = right._nucleusZ;
00388     _fileName = right._fileName;
00389     _validity = right._validity;
00390 
00391     if (right._levels != 0)   
00392       {
00393         _levels = new G4PtrLevelVector;
00394         G4int n = right._levels->size();
00395         G4int i;
00396         for (i=0; i<n; ++i)
00397           {
00398             _levels->push_back(new G4NuclearLevel(*(right.GetLevel(i))));
00399           }
00400         
00401         G4PtrSort<G4NuclearLevel>(_levels);
00402       }
00403     else 
00404       {
00405         _levels = 0;
00406       }
00407     for (G4int i=0; i<30; ++i) {
00408       buffer[i] = right.buffer[i];
00409     }
00410 }

G4NuclearLevelManager::~G4NuclearLevelManager (  ) 

Definition at line 77 of file G4NuclearLevelManager.cc.

00078 {
00079   ClearLevels();
00080 }


Member Function Documentation

const G4NuclearLevel * G4NuclearLevelManager::GetLevel ( G4int  i  )  const

Definition at line 96 of file G4NuclearLevelManager.cc.

References NumberOfLevels().

Referenced by G4ContinuumGammaTransition::G4ContinuumGammaTransition(), G4NuclearLevelManager(), NearestLevel(), and PrintAll().

00096                                                                    {
00097   return (i>=0 && i<NumberOfLevels()) ? (*_levels)[i] : 0;
00098 }

const G4NuclearLevel * G4NuclearLevelManager::HighestLevel (  )  const

Definition at line 141 of file G4NuclearLevelManager.cc.

References NumberOfLevels().

00142 {
00143   return (NumberOfLevels() > 0) ? _levels->front() : 0;
00144 }

G4bool G4NuclearLevelManager::IsValid (  )  const [inline]

Definition at line 78 of file G4NuclearLevelManager.hh.

Referenced by G4DiscreteGammaDeexcitation::CreateTransition().

00078 { return _validity; }

const G4NuclearLevel * G4NuclearLevelManager::LowestLevel (  )  const

Definition at line 147 of file G4NuclearLevelManager.cc.

References NumberOfLevels().

00148 {
00149   return (NumberOfLevels() > 0) ? _levels->back() : 0;
00150 }

G4double G4NuclearLevelManager::MaxLevelEnergy (  )  const

Definition at line 135 of file G4NuclearLevelManager.cc.

References NumberOfLevels().

Referenced by G4DiscreteGammaDeexcitation::CanDoTransition(), G4ContinuumGammaDeexcitation::CanDoTransition(), G4ContinuumGammaTransition::G4ContinuumGammaTransition(), and PrintAll().

00136 {
00137   return (NumberOfLevels() > 0) ? _levels->back()->Energy() : 0.*GeV;
00138 }

G4double G4NuclearLevelManager::MinLevelEnergy (  )  const

Definition at line 129 of file G4NuclearLevelManager.cc.

References NumberOfLevels().

Referenced by G4DiscreteGammaDeexcitation::CanDoTransition(), G4ContinuumGammaTransition::G4ContinuumGammaTransition(), and PrintAll().

00130 {
00131   return (NumberOfLevels() > 0) ? _levels->front()->Energy() : 9999.*GeV;
00132 }

const G4NuclearLevel * G4NuclearLevelManager::NearestLevel ( G4double  energy,
G4double  eDiffMax = 9999.*CLHEP::GeV 
) const

Definition at line 102 of file G4NuclearLevelManager.cc.

References G4NuclearLevel::Energy(), GetLevel(), and NumberOfLevels().

Referenced by G4RadioactiveDecay::AddDecayRateTable(), G4DiscreteGammaDeexcitation::CanDoTransition(), G4DiscreteGammaDeexcitation::CreateTransition(), and G4ContinuumGammaTransition::SelectGamma().

00104 {
00105   if (NumberOfLevels() <= 0) return 0;
00106 
00107   G4int iNear = -1;
00108 
00109   //G4cout << "G4NuclearLevelManager::NearestLevel E(MeV)= " 
00110   //     << energy/MeV << " dEmax(MeV)= " << eDiffMax/MeV << G4endl;
00111   
00112   G4double diff = 9999. * GeV;
00113   for (unsigned int i=0; i<_levels->size(); i++)
00114     {
00115       G4double e = GetLevel(i)->Energy();
00116       G4double eDiff = std::abs(e - energy);
00117       //G4cout << i << ".   eDiff(MeV)= " << eDiff/MeV << G4endl;
00118       if (eDiff < diff && eDiff <= eDiffMax)
00119         { 
00120           diff = eDiff; 
00121           iNear = i;
00122         }
00123     }
00124   
00125   return GetLevel(iNear);       // Includes range checking on iNear
00126 }

G4int G4NuclearLevelManager::NumberOfLevels (  )  const [inline]

Definition at line 80 of file G4NuclearLevelManager.hh.

Referenced by G4RadioactiveDecay::AddDecayRateTable(), G4ContinuumGammaTransition::G4ContinuumGammaTransition(), GetLevel(), HighestLevel(), LowestLevel(), MaxLevelEnergy(), MinLevelEnergy(), NearestLevel(), and PrintAll().

00080 { return (_levels ? _levels->size() : 0); }

void G4NuclearLevelManager::PrintAll (  ) 

Definition at line 353 of file G4NuclearLevelManager.cc.

References G4cout, G4endl, GetLevel(), MaxLevelEnergy(), MinLevelEnergy(), and NumberOfLevels().

00354 {
00355   G4int nLevels = NumberOfLevels();
00356     
00357   G4cout << " ==== G4NuclearLevelManager ==== (" << _nucleusZ << ", " << _nucleusA
00358          << ") has " << nLevels << " levels" << G4endl
00359          << "Highest level is at energy " << MaxLevelEnergy() << " MeV "
00360          << G4endl << "Lowest level is at energy " << MinLevelEnergy()
00361          << " MeV " << G4endl;
00362     
00363   for (G4int i=0; i<nLevels; i++)
00364     GetLevel(i)->PrintAll();
00365 }

void G4NuclearLevelManager::SetNucleus ( G4int  Z,
G4int  A,
const G4String filename 
)

Definition at line 82 of file G4NuclearLevelManager.cc.

00083 {
00084   if (A <= 0 || Z <= 0 || Z > A )
00085     throw G4HadronicException(__FILE__, __LINE__, "==== G4NuclearLevelManager ==== (Z,A) <0, or Z>A");
00086 
00087   if (_nucleusZ != Z || _nucleusA != A)
00088     {
00089       _nucleusA = A;
00090       _nucleusZ = Z;
00091       _fileName = filename;
00092       MakeLevels();
00093     }
00094 }


The documentation for this class was generated from the following files:
Generated on Mon May 27 17:52:44 2013 for Geant4 by  doxygen 1.4.7