Changeset 961 for trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc
- Timestamp:
- Apr 6, 2009, 12:21:12 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc
r819 r961 24 24 // ******************************************************************** 25 25 // 26 // 27 // $Id: G4FinalStateChargeDecrease.cc,v 1.2 2007/11/09 20:11:04 pia Exp $ 28 // GEANT4 tag $Name: $ 29 // 30 // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) 31 // 32 // Reference: TNS Geant4-DNA paper 33 // Reference for implementation model: NIM. 155, pp. 145-156, 1978 34 35 // History: 36 // ----------- 37 // Date Name Modification 38 // 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper 39 // 40 // ------------------------------------------------------------------- 41 42 // Class description: 43 // Reference: TNS Geant4-DNA paper 44 // S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: 45 // design foundation and implementation of the first set of models, 46 // IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. 47 // Further documentation available from http://www.ge.infn.it/geant4/dna 48 49 // ------------------------------------------------------------------- 50 26 // $Id: G4FinalStateChargeDecrease.cc,v 1.4 2009/01/20 07:50:28 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02-ref-02 $ 51 28 52 29 #include "G4FinalStateChargeDecrease.hh" 53 #include "G4Track.hh"54 #include "G4Step.hh"55 #include "G4DynamicParticle.hh"56 //#include "Randomize.hh"57 30 58 #include "G4ParticleTypes.hh" 59 #include "G4ParticleDefinition.hh" 60 #include "G4SystemOfUnits.hh" 61 //#include "G4ParticleMomentum.hh" 62 #include "G4DNAGenericIonsManager.hh" 31 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 63 32 64 33 G4FinalStateChargeDecrease::G4FinalStateChargeDecrease() 65 34 { 66 name = "ChargeDecrease";67 35 lowEnergyLimit = 1 * keV; 68 36 highEnergyLimit = 10 * MeV; 69 37 } 70 38 39 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 71 40 72 41 G4FinalStateChargeDecrease::~G4FinalStateChargeDecrease() 73 42 {} 74 43 44 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 75 45 76 46 const G4FinalStateProduct& G4FinalStateChargeDecrease::GenerateFinalState(const G4Track& track, const G4Step& /* step */) 77 47 { 78 // Clear previous secondaries, energy deposit and particle kill status79 48 product.Clear(); 80 49 … … 95 64 96 65 if (outK<0) 97 98 99 100 101 66 { 67 G4String message; 68 message="ChargeDecreaseDingfelder::GenerateFinalState - Final kinetic energy is below 0! Process "; 69 G4Exception(message); 70 } 102 71 103 // Primary particle 72 //SI - Added protection against total energy deposit 73 product.DoNotDepositEnergy(); 74 // 104 75 product.KillPrimaryParticle(); 76 105 77 product.AddEnergyDeposit(waterBindingEnergy); 106 107 //Secondary particle 78 108 79 G4DynamicParticle* aSecondary = new G4DynamicParticle(OutgoingParticleDefinition(definition, finalStateIndex), 109 80 track.GetDynamicParticle()->GetMomentumDirection(), … … 114 85 return product; 115 86 } 87 88 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 116 89 117 90 G4int G4FinalStateChargeDecrease::NumberOfFinalStates(G4ParticleDefinition* particleDefinition, … … 125 98 126 99 if (particleDefinition == instance->GetIon("alpha++") ) 127 128 129 130 100 { 101 if (finalStateIndex==0) return 1; 102 return 2; 103 } 131 104 132 105 if (particleDefinition == instance->GetIon("alpha+") ) return 1; … … 135 108 } 136 109 110 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 137 111 138 112 G4ParticleDefinition* G4FinalStateChargeDecrease::OutgoingParticleDefinition (G4ParticleDefinition* particleDefinition, … … 144 118 145 119 if (particleDefinition == instance->GetIon("alpha++") ) 146 { 147 if (finalStateIndex == 0) return instance->GetIon("alpha+"); 148 149 return instance->GetIon("helium"); 150 } 120 { 121 if (finalStateIndex == 0) return instance->GetIon("alpha+"); 122 return instance->GetIon("helium"); 123 } 151 124 152 125 if (particleDefinition == instance->GetIon("alpha+") ) return instance->GetIon("helium"); … … 155 128 } 156 129 130 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 157 131 158 132 G4double G4FinalStateChargeDecrease::WaterBindingEnergyConstant(G4ParticleDefinition* particleDefinition, … … 168 142 169 143 if (particleDefinition == instance->GetIon("alpha++") ) 170 144 { 171 145 // Binding energy for W+ -> W++ + e- 10.79 eV 172 146 // Binding energy for W -> W+ + e- 10.79 eV … … 178 152 179 153 return 10.79*2*eV; 180 154 } 181 155 182 156 if (particleDefinition == instance->GetIon("alpha+") ) 183 157 { 184 158 // Binding energy for W+ -> W++ + e- 10.79 eV 185 159 // Binding energy for W -> W+ + e- 10.79 eV … … 189 163 190 164 return 10.79*eV; 191 165 } 192 166 193 167 return 0; 194 168 } 195 169 170 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 196 171 197 172 G4double G4FinalStateChargeDecrease::OutgoingParticleBindingEnergyConstant(G4ParticleDefinition* particleDefinition, … … 203 178 204 179 if (particleDefinition == instance->GetIon("alpha++") ) 205 180 { 206 181 // Binding energy for He+ -> He++ + e- 54.509 eV 207 182 // Binding energy for He -> He+ + e- 24.587 eV … … 210 185 211 186 return (54.509 + 24.587)*eV; 212 187 } 213 188 214 189 if (particleDefinition == instance->GetIon("alpha+") ) 215 190 { 216 191 // Binding energy for He+ -> He++ + e- 54.509 eV 217 192 // Binding energy for He -> He+ + e- 24.587 eV 218 193 219 194 return 24.587*eV; 220 195 } 221 196 222 197 return 0;
Note: See TracChangeset
for help on using the changeset viewer.