G4VGammaDeexcitation.hh

Go to the documentation of this file.
00001 //
00002 // ********************************************************************
00003 // * License and Disclaimer                                           *
00004 // *                                                                  *
00005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
00006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
00007 // * conditions of the Geant4 Software License,  included in the file *
00008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
00009 // * include a list of copyright holders.                             *
00010 // *                                                                  *
00011 // * Neither the authors of this software system, nor their employing *
00012 // * institutes,nor the agencies providing financial support for this *
00013 // * work  make  any representation or  warranty, express or implied, *
00014 // * regarding  this  software system or assume any liability for its *
00015 // * use.  Please see the license in the file  LICENSE  and URL above *
00016 // * for the full disclaimer and the limitation of liability.         *
00017 // *                                                                  *
00018 // * This  code  implementation is the result of  the  scientific and *
00019 // * technical work of the GEANT4 collaboration.                      *
00020 // * By using,  copying,  modifying or  distributing the software (or *
00021 // * any work based  on the software)  you  agree  to acknowledge its *
00022 // * use  in  resulting  scientific  publications,  and indicate your *
00023 // * acceptance of all terms of the Geant4 Software license.          *
00024 // ********************************************************************
00025 //
00026 // $Id$
00027 //
00028 // -------------------------------------------------------------------
00029 //      GEANT 4 class file
00030 //
00031 //      CERN, Geneva, Switzerland
00032 //
00033 //      File name:     G4VGammaDeexcitation
00034 //
00035 //      Author:        Maria Grazia Pia (pia@genova.infn.it)
00036 //
00037 //      Creation date: 23 October 1998
00038 //
00039 //      Modifications:
00040 //          
00041 //        15 April 1999, Alessandro Brunengo (Alessandro.Brunengo@ge.infn.it)
00042 //              Added creation time evaluation for products of evaporation
00043 //
00044 //        21 Nov 2001, Fan Lei (flei@space.qinetiq.com)
00045 //           Modified GenerateGamma() and UpdateUncleus() for implementation
00046 //           of Internal Conversion processs
00047 // 
00048 //        8 March 2002, Fan Lei (flei@space.qinetiq.com)
00049 //          Added  SetEO () , GetEO(), UpdateElectrons() to allow the assignment 
00050 //          and modification of electron configuration.
00051 //
00052 //        18 October 2002, F. Lei
00053 //          Added GetVaccantSN() and _vSN in order to link to ARM in low-e em
00054 //          _vSN is updated in UpdateElectron()
00055 //          Added SetVaccantSN(). It is need to to re-set _vSN after each 
00056 //          IC happened.
00057 //
00058 //        28 April 2010, V.Ivanchenko cleanup methods
00059 //
00060 // -------------------------------------------------------------------
00061 //
00062 
00063 #ifndef G4VGAMMADEEXCITATION_HH
00064 #define G4VGAMMADEEXCITATION_HH 1
00065 
00066 #include "globals.hh"
00067 #include "G4VGammaTransition.hh"
00068 #include "G4Fragment.hh"
00069 #include "G4FragmentVector.hh"
00070 #include "G4ElectronOccupancy.hh"
00071 
00072 class G4VGammaDeexcitation {
00073 
00074 public:
00075 
00076   G4VGammaDeexcitation();
00077 
00078   virtual ~G4VGammaDeexcitation();
00079 
00080   virtual G4VGammaTransition * CreateTransition() = 0;
00081   virtual G4bool CanDoTransition() = 0;
00082 
00083   // Single gamma transition
00084   G4FragmentVector * DoTransition();
00085 
00086   // Chain of gamma transitions
00087   G4FragmentVector * DoChain();
00088 
00089   G4Fragment * GenerateGamma();
00090 
00091   inline G4Fragment* GetNucleus();
00092 
00093   inline void SetNucleus(G4Fragment* nucleus);
00094 
00095   inline void SetVerboseLevel(G4int verbose);
00096 
00097   inline void Initialize();
00098 
00099   inline void SetEO(G4ElectronOccupancy eo) { _electronO = eo; };
00100   inline void SetVaccantSN( G4int val ) { _vSN = val;};
00101   
00102   inline G4ElectronOccupancy GetEO() { return _electronO; };    
00103   inline G4int GetVacantSN() {return _vSN;};
00104 
00105   inline void SetTimeLimit(G4double value) { fTimeLimit = value; }
00106 
00107 protected:
00108 
00109   void Update();
00110 
00111   G4VGammaTransition* _transition; // Owned pointer
00112   G4int _verbose;
00113 
00114 private:
00115 
00116   G4VGammaDeexcitation(const G4VGammaDeexcitation & right);
00117   const G4VGammaDeexcitation & operator = (const G4VGammaDeexcitation & right);
00118   G4bool operator == (const G4VGammaDeexcitation & right) const;
00119   G4bool operator != (const G4VGammaDeexcitation & right) const;
00120 
00121   G4Fragment* _nucleus;
00122   G4ElectronOccupancy _electronO;
00123   G4int _vSN;
00124   G4double fTimeLimit;
00125 
00126 };
00127 
00128 inline G4Fragment* G4VGammaDeexcitation::GetNucleus() 
00129 {
00130   return _nucleus; 
00131 }
00132 
00133 inline void G4VGammaDeexcitation::SetNucleus(G4Fragment* nucleus)
00134 {
00135   _nucleus = nucleus;
00136 }
00137 
00138 inline void G4VGammaDeexcitation::SetVerboseLevel(G4int verbose)
00139 {
00140   _verbose = verbose;
00141 }
00142 
00143 inline void G4VGammaDeexcitation::Initialize()
00144 {
00145   if (_transition != 0) { delete _transition; }
00146   _transition = CreateTransition();
00147   if (_transition != 0) {
00148     _transition->SetEnergyFrom(_nucleus->GetExcitationEnergy());
00149   }
00150 }
00151 
00152 #endif
00153 
00154 
00155 
00156 
00157 
00158 

Generated on Mon May 27 17:50:13 2013 for Geant4 by  doxygen 1.4.7