Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // original by H.P. Wellisch 27 // modified by J.L. Chuma, TRIUMF, 19-Nov-1996 28 // last modified: 27-Mar-1997 29 // Chr. Volcker, 10-Nov-1997: new methods and 30 // M.G. Pia, 2 Oct 1998: modified GetFermiMome 31 // the source of memory 32 // G.Folger, spring 2010: add integer A/Z int 33 // A. Ribon, autumn 2021: extended to hypernu 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 ( 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 G4Nucleus(const G4double A, const G4double 57 G4Nucleus(const G4int A, const G4int Z, co 58 G4Nucleus(const G4Material* aMaterial); 59 60 ~G4Nucleus(); 61 62 inline G4Nucleus( const G4Nucleus &right ) 63 { *this = right; } 64 65 inline G4Nucleus& operator = (const G4Nucl 66 { 67 if (this != &right) { 68 theA=right.theA; 69 theZ=right.theZ; 70 theL=right.theL; 71 aEff=right.aEff; 72 zEff=right.zEff; 73 fIsotope = right.fIsotope; 74 pnBlackTrackEnergy=right.pnBlackTrackE 75 dtaBlackTrackEnergy=right.dtaBlackTrac 76 pnBlackTrackEnergyfromAnnihilation = 77 right.pnBlackTrackEnergyf 78 dtaBlackTrackEnergyfromAnnihilation = 79 right.dtaBlackTrackEnergy 80 theTemp = right.theTemp; 81 excitationEnergy = right.excitationEne 82 momentum = right.momentum; 83 fermiMomentum = right.fermiMomentum; 84 } 85 return *this; 86 } 87 88 inline G4bool operator==( const G4Nucleus 89 { return ( this == (G4Nucleus *) &right ); 90 91 inline G4bool operator!=( const G4Nucleus 92 { return ( this != (G4Nucleus *) &right ); 93 94 void ChooseParameters( const G4Material *a 95 96 void SetParameters( const G4double A, cons 97 void SetParameters( const G4int A, const G 98 99 inline G4int GetA_asInt() const 100 { return theA; } 101 102 inline G4int GetN_asInt() const 103 { return theA-theZ-theL; } 104 105 inline G4int GetZ_asInt() const 106 { return theZ; } 107 108 inline G4int GetL() const // Number of La 109 { return theL; } 110 111 inline const G4Isotope* GetIsotope() 112 { return fIsotope; } 113 114 inline void SetIsotope(const G4Isotope* is 115 { 116 fIsotope = iso; 117 if(iso) { 118 theZ = iso->GetZ(); 119 theA = iso->GetN(); 120 theL = 0; 121 aEff = theA; 122 zEff = theZ; 123 } 124 } 125 126 G4DynamicParticle *ReturnTargetParticle() 127 128 G4double AtomicMass( const G4double A, con 129 G4double AtomicMass( const G4int A, const 130 131 G4double GetThermalPz( const G4double mass 132 133 G4ReactionProduct GetThermalNucleus(G4doub 134 135 G4ReactionProduct GetBiasedThermalNucleus( 136 137 void DoKinematicsOfThermalNucleus(const G4 138 G4Reacti 139 140 G4double Cinema( G4double kineticEnergy ); 141 142 G4double EvaporationEffects( G4double kine 143 144 G4double AnnihilationEvaporationEffects(G4 145 146 inline G4double GetPNBlackTrackEnergy() co 147 { return pnBlackTrackEnergy; } 148 149 inline G4double GetDTABlackTrackEnergy() c 150 { return dtaBlackTrackEnergy; } 151 152 inline G4double GetAnnihilationPNBlackTrac 153 { return pnBlackTrackEnergyfromAnnihilatio 154 155 inline G4double GetAnnihilationDTABlackTra 156 { return dtaBlackTrackEnergyfromAnnihilati 157 158 // ****************** methods introduced by C 159 // return fermi momentum 160 G4ThreeVector GetFermiMomentum(); 161 162 /* 163 // return particle to be absorbed. 164 G4DynamicParticle* ReturnAbsorbingParticl 165 */ 166 167 // final nucleus fragmentation. Return List 168 // which should be used for further tracking 169 G4ReactionProductVector* Fragmentate(); 170 171 172 // excitation Energy... 173 void AddExcitationEnergy(G4double anEnerg 174 175 176 // momentum of absorbed Particles .. 177 void AddMomentum(const G4ThreeVector aMom 178 179 // return excitation Energy 180 G4double GetEnergyDeposit() {return excit 181 182 183 184 // ****************************** end ChV **** 185 186 187 private: 188 189 G4int theA; 190 G4int theZ; 191 G4int theL; // Number of Lambdas (in t 192 G4double aEff; // effective atomic weight 193 G4double zEff; // effective atomic number 194 195 const G4Isotope* fIsotope; 196 197 G4double pnBlackTrackEnergy; // the kinet 198 // proton/ne 199 G4double dtaBlackTrackEnergy; // the kinet 200 // deuteron/ 201 G4double pnBlackTrackEnergyfromAnnihilatio 202 // kinetic energy availab 203 // track particles based 204 G4double dtaBlackTrackEnergyfromAnnihilati 205 // kinetic energy availab 206 // black track particles 207 208 209 // ************************** member variables 210 // Excitation Energy leading to evaporation 211 G4double excitationEnergy; 212 213 // Momentum, accumulated by absorbing Partic 214 G4ThreeVector momentum; 215 216 // Fermi Gas model: at present, we assume co 217 // nuclei. The radius of a nucleon is taken 218 // see for example S.Fl"ugge, Encyclopedia o 219 // Structure of Atomic Nuclei (Berlin-Gottin 220 221 // maximum momentum possible from fermi gas 222 G4double fermiMomentum; 223 G4double theTemp; // temperature 224 // ****************************** end ChV **** 225 226 }; 227 228 #endif 229 230