Changeset 961 for trunk/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreen.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/G4CrossSectionExcitationMillerGreen.cc
r819 r961 24 24 // ******************************************************************** 25 25 // 26 // 27 // $Id: G4CrossSectionExcitationMillerGreen.cc,v 1.3 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 // Geant4-DNA Cross total cross section for electron elastic scattering in water 44 // Reference: TNS Geant4-DNA paper 45 // S. Chauvie et al., Geant4 physics processes for microdosimetry simulation: 46 // design foundation and implementation of the first set of models, 47 // IEEE Trans. Nucl. Sci., vol. 54, no. 6, Dec. 2007. 48 // Further documentation available from http://www.ge.infn.it/geant4/dna 49 50 // ------------------------------------------------------------------- 51 26 // $Id: G4CrossSectionExcitationMillerGreen.cc,v 1.4 2008/07/14 20:47:34 sincerti Exp $ 27 // GEANT4 tag $Name: geant4-09-02-ref-02 $ 52 28 53 29 #include "G4CrossSectionExcitationMillerGreen.hh" 54 #include "G4Track.hh" 55 #include "G4DynamicParticle.hh" 56 #include "G4Proton.hh" 57 #include "G4CrossSectionExcitationEmfietzoglouPartial.hh" 58 #include "G4DNAGenericIonsManager.hh" 30 31 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 59 32 60 33 G4CrossSectionExcitationMillerGreen::G4CrossSectionExcitationMillerGreen() 61 34 { 62 // Default energy limits (defined for protection against anomalous behaviour only)63 name = "ExcitationMillerGreen";64 35 lowEnergyLimitDefault = 10 * eV; 65 36 highEnergyLimitDefault = 10 * MeV; … … 78 49 79 50 if (protonDef != 0) 80 81 82 83 84 51 { 52 proton = protonDef->GetParticleName(); 53 lowEnergyLimit[proton] = 10. * eV; 54 highEnergyLimit[proton] = 500. * keV; 55 } 85 56 else 86 87 88 57 { 58 G4Exception("G4CrossSectionExcitationMillerGreen Constructor: proton is not defined"); 59 } 89 60 90 61 if (alphaPlusPlusDef != 0) 91 92 93 94 95 62 { 63 alphaPlusPlus = alphaPlusPlusDef->GetParticleName(); 64 lowEnergyLimit[alphaPlusPlus] = 1. * keV; 65 highEnergyLimit[alphaPlusPlus] = 10. * MeV; 66 } 96 67 else 97 68 { 98 69 G4Exception("G4CrossSectionExcitationMillerGreen Constructor: alphaPlusPlus is not defined"); 99 70 } 100 71 101 72 if (alphaPlusDef != 0) 102 103 104 105 106 73 { 74 alphaPlus = alphaPlusDef->GetParticleName(); 75 lowEnergyLimit[alphaPlus] = 1. * keV; 76 highEnergyLimit[alphaPlus] = 10. * MeV; 77 } 107 78 else 108 109 110 79 { 80 G4Exception("G4CrossSectionExcitationMillerGreen Constructor: alphaPlus is not defined"); 81 } 111 82 112 83 if (heliumDef != 0) 113 114 115 116 117 84 { 85 helium = heliumDef->GetParticleName(); 86 lowEnergyLimit[helium] = 1. * keV; 87 highEnergyLimit[helium] = 10. * MeV; 88 } 118 89 else 119 { 120 G4Exception("G4CrossSectionExcitationMillerGreen Constructor: helium is not defined"); 121 } 122 123 90 { 91 G4Exception("G4CrossSectionExcitationMillerGreen Constructor: helium is not defined"); 92 } 93 124 94 } 125 95 96 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 126 97 127 98 G4CrossSectionExcitationMillerGreen::~G4CrossSectionExcitationMillerGreen() 128 99 {} 129 100 101 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 130 102 131 103 G4double G4CrossSectionExcitationMillerGreen::CrossSection(const G4Track& track) … … 154 126 const G4String& particleName = particle->GetDefinition()->GetParticleName(); 155 127 156 // Retrieve energy limits for the current particle type157 158 128 std::map< G4String,G4double,std::less<G4String> >::iterator pos1; 159 129 pos1 = lowEnergyLimit.find(particleName); 160 130 161 // Lower limit162 131 if (pos1 != lowEnergyLimit.end()) 163 164 165 132 { 133 lowLim = pos1->second; 134 } 166 135 167 // Upper limit168 136 std::map< G4String,G4double,std::less<G4String> >::iterator pos2; 169 137 pos2 = highEnergyLimit.find(particleName); 170 138 171 139 if (pos2 != highEnergyLimit.end()) 172 173 174 140 { 141 highLim = pos2->second; 142 } 175 143 176 //177 144 const G4ParticleDefinition* particleDefinition = track.GetDefinition(); 178 145 … … 180 147 181 148 if (k >= lowLim && k <= highLim) 149 { 150 crossSection = partialCrossSection.Sum(k,particleDefinition); 151 G4DNAGenericIonsManager *instance; 152 instance = G4DNAGenericIonsManager::Instance(); 153 154 // add ONE or TWO electron-water excitation for alpha+ and helium 155 156 if ( particleDefinition == instance->GetIon("alpha+") 157 || 158 particleDefinition == instance->GetIon("helium") 159 ) 182 160 { 183 184 crossSection = partialCrossSection.Sum(k,particleDefinition);185 G4DNAGenericIonsManager *instance;186 instance = G4DNAGenericIonsManager::Instance();187 188 // add ONE or TWO electron-water excitation for alpha+ and helium189 190 if ( particleDefinition == instance->GetIon("alpha+")191 ||192 particleDefinition == instance->GetIon("helium")193 )194 {195 161 G4CrossSectionExcitationEmfietzoglouPartial * excitationXS = 196 162 new G4CrossSectionExcitationEmfietzoglouPartial(); 163 197 164 G4double sigmaExcitation=0; 198 165 if (k*0.511/3728 > 7.4*eV && k*0.511/3728 < 10*keV) sigmaExcitation = excitationXS->Sum(k*0.511/3728); … … 200 167 if ( particleDefinition == instance->GetIon("alpha+") ) 201 168 crossSection = crossSection + sigmaExcitation ; 169 202 170 if ( particleDefinition == instance->GetIon("helium") ) 203 171 crossSection = crossSection + 2*sigmaExcitation ; 172 204 173 delete excitationXS; 205 206 174 } 175 } 207 176 208 177 return crossSection;
Note: See TracChangeset
for help on using the changeset viewer.