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

Last change on this file since 1036 was 819, checked in by garnier, 17 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.