source: trunk/source/processes/hadronic/util/include/G4Nucleus.hh @ 1262

Last change on this file since 1262 was 819, checked in by garnier, 16 years ago

import all except CVS

File size: 6.8 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer                                           *
4// *                                                                  *
5// * The  Geant4 software  is  copyright of the Copyright Holders  of *
6// * the Geant4 Collaboration.  It is provided  under  the terms  and *
7// * conditions of the Geant4 Software License,  included in the file *
8// * LICENSE and available at  http://cern.ch/geant4/license .  These *
9// * include a list of copyright holders.                             *
10// *                                                                  *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work  make  any representation or  warranty, express or implied, *
14// * regarding  this  software system or assume any liability for its *
15// * use.  Please see the license in the file  LICENSE  and URL above *
16// * for the full disclaimer and the limitation of liability.         *
17// *                                                                  *
18// * This  code  implementation is the result of  the  scientific and *
19// * technical work of the GEANT4 collaboration.                      *
20// * By using,  copying,  modifying or  distributing the software (or *
21// * any work based  on the software)  you  agree  to acknowledge its *
22// * use  in  resulting  scientific  publications,  and indicate your *
23// * acceptance of all terms of the Geant4 Software license.          *
24// ********************************************************************
25//
26//
27//
28 // original by H.P. Wellisch
29 // modified by J.L. Chuma, TRIUMF, 19-Nov-1996
30 // last modified: 27-Mar-1997
31 // Chr. Volcker, 10-Nov-1997: new methods and class variables.
32// M.G. Pia, 2 Oct 1998: modified GetFermiMomentum (original design was
33//                       the source of memory leaks)
34 
35#ifndef G4Nucleus_h
36#define G4Nucleus_h 1
37// Class Description
38// This class knows how to describe a nucleus;
39// to be used in your physics implementation (not physics list) in case you need this physics.
40// Class Description - End
41
42 
43#include "globals.hh"
44#include "G4ThreeVector.hh"
45#include "G4ParticleTypes.hh"
46#include "G4ReactionProduct.hh"
47#include "G4DynamicParticle.hh"
48#include "G4ReactionProductVector.hh"
49#include "Randomize.hh"
50 
51 class G4Nucleus 
52 {
53 public:
54   
55    G4Nucleus();
56   
57    G4Nucleus( const G4double A, const G4double Z );
58
59    G4Nucleus( const G4Material *aMaterial );
60   
61    ~G4Nucleus();
62   
63    inline G4Nucleus( const G4Nucleus &right )
64    { *this = right; }
65   
66    inline G4Nucleus & operator=( const G4Nucleus &right )
67     {
68       if( this != &right )
69       {
70         aEff=right.aEff; 
71         zEff=right.zEff; 
72         pnBlackTrackEnergy=right.pnBlackTrackEnergy; 
73         dtaBlackTrackEnergy=right.dtaBlackTrackEnergy; 
74         theTemp = right.theTemp;
75         excitationEnergy = right.excitationEnergy;
76         momentum = right.momentum;
77         fermiMomentum = right.fermiMomentum;
78       }
79       return *this;
80     }
81   
82    inline G4bool operator==( const G4Nucleus &right ) const
83    { return ( this == (G4Nucleus *) &right ); }
84   
85    inline G4bool operator!=( const G4Nucleus &right ) const
86    { return ( this != (G4Nucleus *) &right ); }
87   
88    void ChooseParameters( const G4Material *aMaterial );
89
90    void SetParameters( const G4double A, const G4double Z );
91   
92    inline G4double GetN() const
93    { return aEff; }
94   
95    inline G4double GetZ() const
96    { return zEff; }
97   
98    G4DynamicParticle *ReturnTargetParticle() const;
99   
100    G4double AtomicMass( const G4double A, const G4double Z ) const;
101   
102    G4double GetThermalPz( const G4double mass, const G4double temp ) const;
103   
104    G4ReactionProduct GetThermalNucleus(G4double aMass, G4double temp=-1) const;
105   
106    G4ReactionProduct GetBiasedThermalNucleus(G4double aMass, G4ThreeVector aVelocity, G4double temp=-1) const;
107
108    G4double Cinema( G4double kineticEnergy );
109   
110    G4double EvaporationEffects( G4double kineticEnergy );
111
112    G4double AnnihilationEvaporationEffects(G4double kineticEnergy, G4double ekOrg);
113   
114    inline G4double GetPNBlackTrackEnergy() const
115    { return pnBlackTrackEnergy; }
116   
117    inline G4double GetDTABlackTrackEnergy() const
118    { return dtaBlackTrackEnergy; }
119   
120    inline G4double GetAnnihilationPNBlackTrackEnergy() const
121    { return pnBlackTrackEnergyfromAnnihilation; }
122   
123    inline G4double GetAnnihilationDTABlackTrackEnergy() const
124    { return dtaBlackTrackEnergyfromAnnihilation; }
125   
126// ******************  methods introduced by ChV ***********************   
127   // return fermi momentum
128     G4ThreeVector GetFermiMomentum();
129
130/*
131  // return particle to be absorbed.
132     G4DynamicParticle* ReturnAbsorbingParticle(G4double weight);
133*/
134
135  //  final nucleus fragmentation. Return List of particles
136  // which should be used for further tracking.
137     G4ReactionProductVector* Fragmentate();
138     
139
140  // excitation Energy...
141     void AddExcitationEnergy(G4double anEnergy);
142 
143 
144  // momentum of absorbed Particles ..
145     void AddMomentum(const G4ThreeVector aMomentum);
146     
147  // return excitation Energy
148     G4double GetEnergyDeposit() {return excitationEnergy; }
149     
150
151
152// ****************************** end ChV ******************************
153
154
155 private:
156   
157    G4double aEff;  // effective atomic weight
158    G4double zEff;  // effective atomic number
159   
160    G4double pnBlackTrackEnergy;  // the kinetic energy available for
161                                  // proton/neutron black track particles
162    G4double dtaBlackTrackEnergy; // the kinetic energy available for
163                                  // deuteron/triton/alpha particles
164    G4double pnBlackTrackEnergyfromAnnihilation;
165                     // kinetic energy available for proton/neutron black
166                     // track particles based on baryon annihilation
167    G4double dtaBlackTrackEnergyfromAnnihilation;
168                     // kinetic energy available for deuteron/triton/alpha
169                     // black track particles based on baryon annihilation
170
171
172// ************************** member variables by ChV *******************
173  // Excitation Energy leading to evaporation or deexcitation.
174     G4double  excitationEnergy;
175     
176  // Momentum, accumulated by absorbing Particles
177     G4ThreeVector momentum;
178     
179  // Fermi Gas model: at present, we assume constant nucleon density for all
180  // nuclei. The radius of a nucleon is taken to be 1 fm.
181  // see for example S.Fl"ugge, Encyclopedia of Physics, Vol XXXIX,
182  // Structure of Atomic Nuclei (Berlin-Gottingen-Heidelberg, 1957) page 426.
183
184  // maximum momentum possible from fermi gas model:
185     G4double fermiMomentum; 
186     G4double theTemp; // temperature
187// ****************************** end ChV ******************************
188
189 };
190 
191#endif
192 
Note: See TracBrowser for help on using the repository browser.