Changeset 1340 for trunk/source/processes/electromagnetic/lowenergy
- Timestamp:
- Nov 5, 2010, 3:45:55 PM (15 years ago)
- Location:
- trunk/source/processes/electromagnetic/lowenergy
- Files:
-
- 27 edited
-
History (modified) (2 diffs)
-
include/G4DNAScreenedRutherfordElasticModel.hh (modified) (2 diffs)
-
include/G4Generator2BN.hh (modified) (2 diffs)
-
include/G4Generator2BS.hh (modified) (5 diffs)
-
include/G4IonParametrisedLossModel.hh (modified) (6 diffs)
-
include/G4IonParametrisedLossModel.icc (modified) (5 diffs)
-
src/G4DNABornExcitationModel.cc (modified) (2 diffs)
-
src/G4DNABornIonisationModel.cc (modified) (3 diffs)
-
src/G4DNAChampionElasticModel.cc (modified) (3 diffs)
-
src/G4DNAElastic.cc (modified) (2 diffs)
-
src/G4DNAExcitation.cc (modified) (4 diffs)
-
src/G4DNAGenericIonsManager.cc (modified) (5 diffs)
-
src/G4DNAIonisation.cc (modified) (3 diffs)
-
src/G4DNAMillerGreenExcitationModel.cc (modified) (24 diffs)
-
src/G4DNARuddIonisationModel.cc (modified) (23 diffs)
-
src/G4DNAScreenedRutherfordElasticModel.cc (modified) (3 diffs)
-
src/G4Generator2BN.cc (modified) (4 diffs)
-
src/G4Generator2BS.cc (modified) (7 diffs)
-
src/G4IonParametrisedLossModel.cc (modified) (5 diffs)
-
src/G4LivermoreIonisationModel.cc (modified) (12 diffs)
-
src/G4LivermorePhotoElectricModel.cc (modified) (2 diffs)
-
src/G4Penelope08ComptonModel.cc (modified) (2 diffs)
-
src/G4Penelope08GammaConversionModel.cc (modified) (2 diffs)
-
src/G4Penelope08PhotoElectricModel.cc (modified) (3 diffs)
-
src/G4Penelope08RayleighModel.cc (modified) (4 diffs)
-
src/G4PenelopeOscillatorManager.cc (modified) (1 diff)
-
src/G4PhotoElectricAngularGeneratorSauterGavrila.cc (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/processes/electromagnetic/lowenergy/History
r1337 r1340 1 $Id: History,v 1.4 42 2010/06/15 08:04:11 gcosmoExp $1 $Id: History,v 1.462 2010/11/04 14:52:17 sincerti Exp $ 2 2 ------------------------------------------------------------------- 3 3 … … 17 17 * Reverse chronological order (last date on top), please * 18 18 ---------------------------------------------------------- 19 20 04.11.2010, S. Incerti, tag emlowen-V09-03-54 21 - removed warnings in Rudd ionization classes (SI) 22 - G4IonParametrisedLossModel - (VI) moved few virtual methods from 23 inline to source, minor cleanup of initialisation 24 25 03.11.2010, S. Incerti, tag emlowen-V09-03-53 26 restricted momentum conservation to electrons 27 in G4DNA ionisation 28 29 03.11.2010, S. Incerti, tag emlowen-V09-03-52 30 new preliminary Geant4-DNA ionisation class for ions by Z. Francis 31 to be used with G4LEDATA 6.18 32 33 17.10.2010, S. Incerti, tag emlowen-V09-03-51 34 extended low energy coverage of G4DNA electron models 35 to be used with G4LEDATA 6.17 36 37 14.10.2010, V. Ivanchenko, tag emlowen-V09-03-50 38 G4GeneratorBS - optimise computations to speedup, fixed comments 39 G4GeneratorBN - fixed comments 40 G4VBremAngularDistribution - moved to utils 41 G4ModifiedTsai - moved to standard 42 43 13.10.2010, L. Pandola, tag emlowen-V09-03-49 44 Update G4LivermoreIonisationModel to produce fluorescence AlongStep 45 only if above the production cuts. Stricter check for energy 46 conservation 47 48 08.10.2010, S. Incerti, tag emlowen-V09-03-48 49 Added new excitation model for H 50 51 15.09.2010, S. Incerti, tag emlowen-V09-03-47 52 Added protection in xs file opening for G4DNA Sanche excitation 53 54 15.09.2010, S. Incerti, tag emlowen-V09-03-46 55 Corrected data file names in G4DNA Melton and Sanche 56 57 08.09.2010, S. Incerti, tag emlowen-V09-03-45 58 Updated high energy limits of G4DNAExcitation and G4DNAIonisation 59 60 08.09.2010, S. Incerti, tag emlowen-V09-03-44 61 Set high energy limit of G4DNAScreenedRutherfordModel to 1 MeV 62 63 08.09.2010, S. Incerti, tag emlowen-V09-03-43 64 Added new G4DNA processes and models for vib. exc & attachment 65 Provided by Z. Francis et al. - Appl. Rad. Isot. (2010) 66 http://dx.doi.org/10.1016/j.apradiso.2010.08.011 67 to be used with G4LEDATA 6.16 68 69 08.09.2010, S. Incerti, tag emlowen-V09-03-42 70 Decreased low energy limit of G4DNAScreenedRutherfordModel 71 72 05.09.2010, S. Incerti, tag emlowen-V09-03-41 73 Bugzilla 1120 74 Modified G4PhotoElectricAngularGeneratorSauterGavrila.cc 75 as proposed by J. Goldberg 76 77 25.08.2010, S. Incerti, tag emlowen-V09-03-40 78 - updated & extended Rudd and Miller & Green models 79 - to be used with G4LEDATA 6.15 80 81 25.08.2010, S. Incerti, tag emlowen-V09-03-39 82 -Adapted all high energy limits of G4DNA electron models 83 84 24.08.2010, S. Incerti, tag emlowen-V09-03-38 85 -Changed low energy limit of G4DNA elastic scattering models for e- 86 -Switched default excitation model for e- to Born 87 -to be used with G4LEDATA 6.14 88 89 28.07.2010, L. Pandola, tag emlowen-V09-03-37 90 First full version of G4Penelope08IonisationModel, model for e+/e- 91 ionisation according to Penelope v2008. Still beta version. 92 93 26.07.2010, L. Pandola, tag emlowen-V09-03-36 94 Added class G4PenelopeCrossSection to store/handle cross sections 95 (and higher momenta, like stopping powers) for the updated 96 Penelope08 e+/e- models (ionisation and bremsstrahlung). 19 97 20 98 15.06.2010, G. Cosmo, tag emlowen-V09-03-35 -
trunk/source/processes/electromagnetic/lowenergy/include/G4DNAScreenedRutherfordElasticModel.hh
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAScreenedRutherfordElasticModel.hh,v 1. 2 2010/01/07 18:10:19sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNAScreenedRutherfordElasticModel.hh,v 1.3 2010/09/08 13:39:11 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 … … 67 67 G4double killBelowEnergy; 68 68 G4double lowEnergyLimit; 69 G4double lowEnergyLimitOfModel; 70 G4double intermediateEnergyLimit; 69 G4double intermediateEnergyLimit; 71 70 G4double highEnergyLimit; 72 71 G4bool isInitialised; -
trunk/source/processes/electromagnetic/lowenergy/include/G4Generator2BN.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4Generator2BN.hh,v 1.4 2010/10/14 14:00:29 vnivanch Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 26 28 // 27 29 // ------------------------------------------------------------------- … … 63 65 public: 64 66 65 G4Generator2BN(const G4String& name );67 G4Generator2BN(const G4String& name = ""); 66 68 67 ~G4Generator2BN();69 virtual ~G4Generator2BN(); 68 70 69 71 G4double PolarAngle(const G4double initial_energy, -
trunk/source/processes/electromagnetic/lowenergy/include/G4Generator2BS.hh
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4Generator2BS.hh,v 1.5 2010/10/14 14:00:29 vnivanch Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 26 28 // 27 29 // ------------------------------------------------------------------- … … 39 41 // 40 42 // Modifications: 41 // 02 Jun 2003 First implementation acording with new design 43 // 02 Jun 2003 First implementation acording with new design 44 // 12 Oct 2010 V.Ivanchenko moved RejectionFunction inline 42 45 // 43 46 // 44 47 // Class Description: 45 48 // 46 // Concrete class for Bremsstrahlung Angular Distribution Generation - 2BS Distribution 47 // Further documentation available from http://www.ge.infn.it/geant4/lowE 49 // Concrete class for Bremsstrahlung Angular Distribution Generation 50 // 2BS Distribution 51 // 48 52 49 53 // ------------------------------------------------------------------- … … 57 61 #include "G4VBremAngularDistribution.hh" 58 62 63 class G4Pow; 64 59 65 class G4Generator2BS : public G4VBremAngularDistribution 60 66 { … … 62 68 public: 63 69 64 G4Generator2BS(const G4String& name );70 G4Generator2BS(const G4String& name=""); 65 71 66 ~G4Generator2BS();72 virtual ~G4Generator2BS(); 67 73 68 74 G4double PolarAngle(const G4double initial_energy, … … 74 80 protected: 75 81 76 G4double RejectionFunction(G4double value) const;82 inline G4double RejectionFunction(G4double value) const; 77 83 78 84 private: 85 79 86 G4double z; 80 87 G4double rejection_argument1, rejection_argument2, rejection_argument3; 81 88 G4double EnergyRatio; 82 89 90 G4Pow* g4pow; 91 83 92 // hide assignment operator 84 G4Generator2BS & operator=(const G4Generator2BS &right);85 G4Generator2BS(const G4Generator2BS&);93 G4Generator2BS & operator=(const G4Generator2BS &right); 94 G4Generator2BS(const G4Generator2BS&); 86 95 87 96 }; 88 97 98 inline G4double G4Generator2BS::RejectionFunction(G4double value) const 99 { 100 G4double argument = (1+value)*(1+value); 101 return (4+std::log(rejection_argument3+(z/argument)))* 102 ((4*EnergyRatio*value/argument)-rejection_argument1)+rejection_argument2; 103 } 104 89 105 #endif 90 106 -
trunk/source/processes/electromagnetic/lowenergy/include/G4IonParametrisedLossModel.hh
r1228 r1340 24 24 // ******************************************************************** 25 25 // 26 // 26 // $Id: G4IonParametrisedLossModel.hh,v 1.8 2010/11/04 12:21:47 vnivanch Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 27 28 // 28 29 // =========================================================================== … … 136 137 137 138 // Function, which computes the mean energy transfer rate to delta rays 138 G4double DeltaRayMeanEnergyTransferRate(139 inline G4double DeltaRayMeanEnergyTransferRate( 139 140 const G4Material*, // Target Material 140 141 const G4ParticleDefinition*, // Projectile … … 183 184 // Function checking the applicability of physics tables to ion-material 184 185 // combinations (Note: the energy range of tables is not checked) 185 LossTableList::iterator IsApplicable(186 inline LossTableList::iterator IsApplicable( 186 187 const G4ParticleDefinition*, // Projectile (ion) 187 188 const G4Material*); // Target material … … 208 209 209 210 // Function for setting energy loss limit for stopping power integration 210 void SetEnergyLossLimit(G4double ionEnergyLossLimit);211 inline void SetEnergyLossLimit(G4double ionEnergyLossLimit); 211 212 212 213 protected: 214 215 virtual 213 216 G4double MaxSecondaryEnergy(const G4ParticleDefinition*, 214 217 G4double); // Kinetic energy of projectile … … 231 234 232 235 // Function, which updates parameters concering particle properties 233 void UpdateCache(236 inline void UpdateCache( 234 237 const G4ParticleDefinition*); // Projectile (ion) 235 238 … … 287 290 288 291 // Pointer to particle change object, which is used to set e.g. the 289 // energy loss due to nuclear stopping 292 // energy loss and secondary delta-electron 293 // used indicating if model is initialized 290 294 G4ParticleChangeForLoss* particleChangeLoss; 291 292 // Flag indicating if model is initialized (i.e. if293 // G4ParticleChangeForLoss was created)294 G4bool modelIsInitialised;295 295 296 296 // ###################################################################### -
trunk/source/processes/electromagnetic/lowenergy/include/G4IonParametrisedLossModel.icc
r1196 r1340 24 24 // ******************************************************************** 25 25 // 26 // 26 // $Id: G4IonParametrisedLossModel.icc,v 1.7 2010/11/04 12:21:47 vnivanch Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 27 28 // 28 29 // =========================================================================== … … 43 44 // Minor bug fix in ComputeDEDXPerVolume (AL) 44 45 // 20. 11. 2009 - Added set-method for energy loss limit (AL) 46 // 04. 11. 2010 - Moved virtual methods to the source (VI) 45 47 // 46 48 // Class description: … … 54 56 // 55 57 // =========================================================================== 56 57 58 58 59 inline G4double G4IonParametrisedLossModel::DeltaRayMeanEnergyTransferRate( … … 116 117 } 117 118 118 119 inline120 G4double G4IonParametrisedLossModel::MaxSecondaryEnergy(121 const G4ParticleDefinition* particle,122 G4double kineticEnergy) {123 124 // ############## Maximum energy of secondaries ##########################125 // Function computes maximum energy of secondary electrons which are126 // released by an ion127 //128 // See Geant4 physics reference manual (version 9.1), section 9.1.1129 //130 // Ref.: W.M. Yao et al, Jour. of Phys. G 33 (2006) 1.131 // C.Caso et al. (Part. Data Group), Europ. Phys. Jour. C 3 1 (1998).132 // B. Rossi, High energy particles, New York, NY: Prentice-Hall (1952).133 //134 // (Implementation adapted from G4BraggIonModel)135 136 if(particle != cacheParticle) UpdateCache(particle);137 138 G4double tau = kineticEnergy/cacheMass;139 G4double tmax = 2.0 * electron_mass_c2 * tau * (tau + 2.) /140 (1. + 2.0 * (tau + 1.) * cacheElecMassRatio +141 cacheElecMassRatio * cacheElecMassRatio);142 143 return tmax;144 }145 146 147 119 inline 148 120 void G4IonParametrisedLossModel::UpdateCache( … … 155 127 cacheChargeSquare = q * q; 156 128 } 157 158 159 inline160 G4double G4IonParametrisedLossModel::GetChargeSquareRatio(161 const G4ParticleDefinition* particle,162 const G4Material* material,163 G4double kineticEnergy) { // Kinetic energy164 165 G4double chargeSquareRatio = corrections ->166 EffectiveChargeSquareRatio(particle,167 material,168 kineticEnergy);169 corrFactor = chargeSquareRatio *170 corrections -> EffectiveChargeCorrection(particle,171 material,172 kineticEnergy);173 return corrFactor;174 }175 176 177 inline178 G4double G4IonParametrisedLossModel::GetParticleCharge(179 const G4ParticleDefinition* particle,180 const G4Material* material,181 G4double kineticEnergy) { // Kinetic energy182 183 return corrections -> GetParticleCharge(particle, material, kineticEnergy);184 }185 186 129 187 130 inline -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNABornExcitationModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNABornExcitationModel.cc,v 1. 9 2010/03/27 11:32:41sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNABornExcitationModel.cc,v 1.10 2010/08/24 13:51:06 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 … … 78 78 if (verboseLevel > 3) 79 79 G4cout << "Calling G4DNABornExcitationModel::Initialise()" << G4endl; 80 81 // Energy limits82 // Energy limits83 80 84 81 G4String fileElectron("dna/sigma_excitation_e_born"); -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNABornIonisationModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNABornIonisationModel.cc,v 1.1 6 2010/03/26 18:10:43sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNABornIonisationModel.cc,v 1.18 2010/11/03 12:22:36 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 … … 376 376 deltaDirection.rotateUz(primaryDirection); 377 377 378 G4double deltaTotalMomentum = std::sqrt(secondaryKinetic*(secondaryKinetic + 2.*electron_mass_c2 )); 379 380 G4double finalPx = totalMomentum*primaryDirection.x() - deltaTotalMomentum*deltaDirection.x(); 381 G4double finalPy = totalMomentum*primaryDirection.y() - deltaTotalMomentum*deltaDirection.y(); 382 G4double finalPz = totalMomentum*primaryDirection.z() - deltaTotalMomentum*deltaDirection.z(); 383 G4double finalMomentum = std::sqrt(finalPx*finalPx + finalPy*finalPy + finalPz*finalPz); 384 finalPx /= finalMomentum; 385 finalPy /= finalMomentum; 386 finalPz /= finalMomentum; 387 388 G4ThreeVector direction; 389 direction.set(finalPx,finalPy,finalPz); 390 391 fParticleChangeForGamma->ProposeMomentumDirection(direction.unit()) ; 378 if (particle->GetDefinition() == G4Electron::ElectronDefinition()) 379 { 380 G4double deltaTotalMomentum = std::sqrt(secondaryKinetic*(secondaryKinetic + 2.*electron_mass_c2 )); 381 382 G4double finalPx = totalMomentum*primaryDirection.x() - deltaTotalMomentum*deltaDirection.x(); 383 G4double finalPy = totalMomentum*primaryDirection.y() - deltaTotalMomentum*deltaDirection.y(); 384 G4double finalPz = totalMomentum*primaryDirection.z() - deltaTotalMomentum*deltaDirection.z(); 385 G4double finalMomentum = std::sqrt(finalPx*finalPx + finalPy*finalPy + finalPz*finalPz); 386 finalPx /= finalMomentum; 387 finalPy /= finalMomentum; 388 finalPz /= finalMomentum; 389 390 G4ThreeVector direction; 391 direction.set(finalPx,finalPy,finalPz); 392 393 fParticleChangeForGamma->ProposeMomentumDirection(direction.unit()) ; 394 } 395 396 else fParticleChangeForGamma->ProposeMomentumDirection(primaryDirection) ; 397 392 398 fParticleChangeForGamma->SetProposedKineticEnergy(k-bindingEnergy-secondaryKinetic); 393 399 fParticleChangeForGamma->ProposeLocalEnergyDeposit(bindingEnergy); … … 507 513 G4double maxSecKinetic = 4.* (electron_mass_c2 / proton_mass_c2) * k; 508 514 phi = twopi * G4UniformRand(); 509 cosTheta = std::sqrt(secKinetic / maxSecKinetic); 515 516 // cosTheta = std::sqrt(secKinetic / maxSecKinetic); 517 518 // Restriction below 100 eV from Emfietzoglou (2000) 519 520 if (secKinetic>100*eV) cosTheta = std::sqrt(secKinetic / maxSecKinetic); 521 else cosTheta = (2.*G4UniformRand())-1.; 522 510 523 } 511 524 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAChampionElasticModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAChampionElasticModel.cc,v 1.1 2 2010/04/08 17:29:08sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNAChampionElasticModel.cc,v 1.15 2010/10/17 11:28:51 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 … … 41 41 { 42 42 43 killBelowEnergy = 8.23*eV; // Minimum e- energy for energy loss by excitation43 killBelowEnergy = 0.025*eV; // Minimum e- energy for energy loss by excitation 44 44 lowEnergyLimit = 0 * eV; 45 lowEnergyLimitOfModel = 7.4 * eV; // The model lower energy is 7.4 eV46 highEnergyLimit = 1 0* MeV;45 lowEnergyLimitOfModel = 0.025 * eV; 46 highEnergyLimit = 1. * MeV; 47 47 SetLowEnergyLimit(lowEnergyLimit); 48 48 SetHighEnergyLimit(highEnergyLimit); … … 139 139 140 140 std::ostringstream eFullFileName; 141 eFullFileName << path << "/dna/sigmadiff_cumulated _elastic_e_champion.dat";141 eFullFileName << path << "/dna/sigmadiff_cumulatedshort_elastic_e_champion.dat"; 142 142 std::ifstream eDiffCrossSection(eFullFileName.str().c_str()); 143 143 -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAElastic.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAElastic.cc,v 1. 3 2009/03/04 13:28:49sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNAElastic.cc,v 1.4 2010/09/08 14:07:16 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 29 29 #include "G4DNAElastic.hh" … … 62 62 if(!Model()) SetModel(new G4DNAScreenedRutherfordElasticModel); 63 63 Model()->SetLowEnergyLimit(0*eV); 64 Model()->SetHighEnergyLimit(1 0*MeV);64 Model()->SetHighEnergyLimit(1.*MeV); 65 65 AddEmModel(1, Model()); 66 66 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAExcitation.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAExcitation.cc,v 1. 4 2010/03/27 11:32:41sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNAExcitation.cc,v 1.7 2010/10/08 08:53:17 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 29 29 #include "G4DNAExcitation.hh" … … 57 57 &p == G4Electron::Electron() 58 58 || &p == G4Proton::ProtonDefinition() 59 || &p == instance->GetIon("hydrogen") 59 60 || &p == instance->GetIon("alpha++") 60 61 || &p == instance->GetIon("alpha+") … … 77 78 { 78 79 79 // Firstmodel80 80 // Emfietzoglou model 81 /* 81 82 if(!Model()) SetModel(new G4DNAEmfietzoglouExcitationModel); 82 83 Model()->SetLowEnergyLimit(8.23*eV); 83 84 Model()->SetHighEnergyLimit(10*MeV); 85 */ 86 // Born model 84 87 85 // Alternative model86 /*87 88 if(!Model()) SetModel(new G4DNABornExcitationModel); 88 89 Model()->SetLowEnergyLimit(9*eV); 89 90 Model()->SetHighEnergyLimit(1*MeV); 90 */ 91 91 92 AddEmModel(1, Model()); 92 93 } … … 106 107 } 107 108 109 if(name == "hydrogen") 110 { 111 if(!Model()) SetModel(new G4DNAMillerGreenExcitationModel); 112 Model()->SetLowEnergyLimit(10*eV); 113 Model()->SetHighEnergyLimit(500*keV); 114 115 AddEmModel(1, Model()); 116 } 117 118 108 119 if( name == "alpha" || name == "alpha+" || name == "helium" ) 109 120 { 110 121 if(!Model()) SetModel(new G4DNAMillerGreenExcitationModel); 111 122 Model()->SetLowEnergyLimit(1*keV); 112 Model()->SetHighEnergyLimit( 10*MeV);123 Model()->SetHighEnergyLimit(400*MeV); 113 124 114 125 AddEmModel(1, Model()); -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAGenericIonsManager.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAGenericIonsManager.cc,v 1. 6 2009/06/10 13:32:36 manteroExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNAGenericIonsManager.cc,v 1.7 2010/11/03 10:44:26 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 29 29 #include "G4DNAGenericIonsManager.hh" … … 71 71 G4Ions *positronium2s; 72 72 73 G4Ions *carbon; 74 G4Ions *nitrogen; 75 G4Ions *oxygen; 76 G4Ions *iron; 77 78 iron= new G4Ions( 79 "iron", 52.5672*GeV, 0.0*MeV, +26.0*eplus, 80 0, +1, 0, 81 0, 0, 0, 82 "nucleus", +26, +56, 0, 83 true, -1.0, 0, 84 false, "", 0, 85 0.0); 86 87 oxygen= new G4Ions( 88 "oxygen", 15.0074*GeV, 0.0*MeV, +8.0*eplus, 89 0, +1, 0, 90 0, 0, 0, 91 "nucleus", +8, +16, 0, 92 true, -1.0, 0, 93 false, "", 0, 94 0.0); 95 96 97 nitrogen= new G4Ions( 98 "nitrogen", 13.132*GeV, 0.0*MeV, +7.0*eplus, 99 0, +1, 0, 100 0, 0, 0, 101 "nucleus", +7, +14, 0, 102 true, -1.0, 0, 103 false, "", 0, 104 0.0); 105 106 carbon= new G4Ions( 107 "carbon", 11.267025440*GeV, 0.0*MeV, +6.0*eplus, 108 0, +1, 0, 109 0, 0, 0, 110 "nucleus", +6, +12, 0, 111 true, -1.0, 0, 112 false, "", 0, 113 0.0); 73 114 74 helium= new G4Ions(115 helium= new G4Ions( 75 116 "helium", 3.727417*GeV, 0.0*MeV, +0.0*eplus, 76 117 0, +1, 0, … … 81 122 0.0); 82 123 83 alphaPlus= new G4Ions("alpha+", 3.727417*GeV, 0.0*MeV, +1.0*eplus,124 alphaPlus= new G4Ions("alpha+", 3.727417*GeV, 0.0*MeV, +1.0*eplus, 84 125 1, +1, 0, 85 126 0, 0, 0, … … 110 151 111 152 112 /*113 // molechules construction114 115 G4Ions* oxonium; // H3O -- it will become H3O+116 G4Ions* hydroxyl; // OH -- it will produce OH- too117 G4Ions* molHydrogen; // H2118 //G4Ions* hydroxide; // OH-119 G4Ions* hydroPeroxide; // H2O2120 G4Ions* water; // H2O -- it will become also H2O+121 122 123 G4double mass = 19.02*g/Avogadro - 11*electron_mass_c2;124 125 oxonium = new G4Ions("H3O", mass, 0, +11.0*eplus,126 0, 0, 0,127 0, 0, 0,128 "molecule", 0, 0, 0,129 true, -1.0, 0,130 false, "", 0,131 0.0);132 133 mass = 17.00734*g/Avogadro - 9*electron_mass_c2;134 135 hydroxyl = new G4Ions("OH", mass, 0, +9.0*eplus,136 0, 0, 0,137 0, 0, 0,138 "molecule", 0, 0, 0,139 true, -1.0, 0,140 false, "", 0,141 0.0);142 143 mass = 2.01588*g/Avogadro - 2*electron_mass_c2;144 145 molHydrogen = new G4Ions("H2", mass, 0, +2.0*eplus,146 0, 0, 0,147 0, 0, 0,148 "molecule", 0, 0, 0,149 true, -1.0, 0,150 false, "", 0,151 0.0);152 153 mass = 34.01468*g/Avogadro - 18*electron_mass_c2;154 155 hydroPeroxide = new G4Ions("H2O2", mass, 0, +18.0*eplus,156 0, 0, 0,157 0, 0, 0,158 "molecule", 0, 0, 0,159 true, -1.0, 0,160 false, "", 0,161 0.0);162 163 mass = 18.015*g/Avogadro - 10*electron_mass_c2;164 165 water = new G4Ions("H2O", mass, 0, +10.0*eplus,166 0, 0, 0,167 0, 0, 0,168 "molecule", 0, 0, 0,169 true, -1.0, 0,170 false, "", 0,171 0.0);172 173 map["H3O" ] =oxonium;174 map["OH" ] =hydroxyl;175 map["H2" ] =molHydrogen;176 map["H2O2"] =hydroPeroxide;177 map["H2O" ] =water;178 */179 180 181 153 map["helium" ]=helium; 182 154 map["hydrogen"]=hydrogen; … … 185 157 map["Ps-1s" ]=positronium1s; 186 158 map["Ps-2s" ]=positronium2s; 159 map["carbon" ]=carbon; 160 map["nitrogen"]=nitrogen; 161 map["oxygen" ]=oxygen; 162 map["iron" ]=iron; 163 187 164 188 165 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAIonisation.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAIonisation.cc,v 1. 4 2009/11/02 17:00:11sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNAIonisation.cc,v 1.5 2010/09/08 14:30:45 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 29 29 #include "G4DNAIonisation.hh" … … 91 91 if(!Model(2)) SetModel(new G4DNABornIonisationModel,2); 92 92 Model(2)->SetLowEnergyLimit(500*keV); 93 Model(2)->SetHighEnergyLimit(10 *MeV);93 Model(2)->SetHighEnergyLimit(100*MeV); 94 94 95 95 AddEmModel(1, Model(1)); … … 110 110 if(!Model()) SetModel(new G4DNARuddIonisationModel); 111 111 Model()->SetLowEnergyLimit(0*keV); 112 Model()->SetHighEnergyLimit( 10*MeV);112 Model()->SetHighEnergyLimit(400*MeV); 113 113 114 114 AddEmModel(1, Model()); -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAMillerGreenExcitationModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAMillerGreenExcitationModel.cc,v 1. 9 2010/06/08 21:50:00sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNAMillerGreenExcitationModel.cc,v 1.11 2010/10/08 08:53:17 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 … … 74 74 instance = G4DNAGenericIonsManager::Instance(); 75 75 G4ParticleDefinition* protonDef = G4Proton::ProtonDefinition(); 76 G4ParticleDefinition* hydrogenDef = instance->GetIon("hydrogen"); 76 77 G4ParticleDefinition* alphaPlusPlusDef = instance->GetIon("alpha++"); 77 78 G4ParticleDefinition* alphaPlusDef = instance->GetIon("alpha+"); … … 79 80 80 81 G4String proton; 82 G4String hydrogen; 81 83 G4String alphaPlusPlus; 82 84 G4String alphaPlus; … … 102 104 } 103 105 106 if (hydrogenDef != 0) 107 { 108 hydrogen = hydrogenDef->GetParticleName(); 109 lowEnergyLimit[hydrogen] = 10. * eV; 110 highEnergyLimit[hydrogen] = 500. * keV; 111 112 kineticEnergyCorrection[0] = 1.; 113 slaterEffectiveCharge[0][0] = 0.; 114 slaterEffectiveCharge[1][0] = 0.; 115 slaterEffectiveCharge[2][0] = 0.; 116 sCoefficient[0][0] = 0.; 117 sCoefficient[1][0] = 0.; 118 sCoefficient[2][0] = 0.; 119 } 120 else 121 { 122 G4Exception("G4DNAMillerGreenExcitationModel::Initialise: hydrogen is not defined"); 123 124 } 104 125 if (alphaPlusPlusDef != 0) 105 126 { 106 127 alphaPlusPlus = alphaPlusPlusDef->GetParticleName(); 107 128 lowEnergyLimit[alphaPlusPlus] = 1. * keV; 108 highEnergyLimit[alphaPlusPlus] = 10. * MeV;129 highEnergyLimit[alphaPlusPlus] = 400. * MeV; 109 130 110 131 kineticEnergyCorrection[1] = 0.9382723/3.727417; … … 125 146 alphaPlus = alphaPlusDef->GetParticleName(); 126 147 lowEnergyLimit[alphaPlus] = 1. * keV; 127 highEnergyLimit[alphaPlus] = 10. * MeV;148 highEnergyLimit[alphaPlus] = 400. * MeV; 128 149 129 150 kineticEnergyCorrection[2] = 0.9382723/3.727417; 130 151 slaterEffectiveCharge[0][2]=2.0; 131 slaterEffectiveCharge[1][2]=1.15; 132 slaterEffectiveCharge[2][2]=1.15; 152 153 // Following values provided by M. Dingfelder 154 slaterEffectiveCharge[1][2]=2.00; 155 slaterEffectiveCharge[2][2]=2.00; 156 // 133 157 sCoefficient[0][2]=0.7; 134 158 sCoefficient[1][2]=0.15; … … 144 168 helium = heliumDef->GetParticleName(); 145 169 lowEnergyLimit[helium] = 1. * keV; 146 highEnergyLimit[helium] = 10. * MeV;170 highEnergyLimit[helium] = 400. * MeV; 147 171 148 172 kineticEnergyCorrection[3] = 0.9382723/3.727417; … … 153 177 sCoefficient[1][3]=0.25; 154 178 sCoefficient[2][3]=0.25; 179 155 180 } 156 181 else … … 163 188 SetLowEnergyLimit(lowEnergyLimit[proton]); 164 189 SetHighEnergyLimit(highEnergyLimit[proton]); 190 } 191 192 if (particle==hydrogenDef) 193 { 194 SetLowEnergyLimit(lowEnergyLimit[hydrogen]); 195 SetHighEnergyLimit(highEnergyLimit[hydrogen]); 165 196 } 166 197 … … 231 262 particleDefinition != G4Proton::ProtonDefinition() 232 263 && 264 particleDefinition != instance->GetIon("hydrogen") 265 && 233 266 particleDefinition != instance->GetIon("alpha++") 234 267 && … … 272 305 273 306 // add ONE or TWO electron-water excitation for alpha+ and helium 274 307 /* 275 308 if ( particleDefinition == instance->GetIon("alpha+") 276 309 || … … 278 311 ) 279 312 { 313 280 314 G4DNAEmfietzoglouExcitationModel * excitationXS = new G4DNAEmfietzoglouExcitationModel(); 315 excitationXS->Initialise(G4Electron::ElectronDefinition()); 281 316 282 317 G4double sigmaExcitation=0; … … 294 329 295 330 delete excitationXS; 331 332 // Alternative excitation model 333 334 G4DNABornExcitationModel * excitationXS = new G4DNABornExcitationModel(); 335 excitationXS->Initialise(G4Electron::ElectronDefinition()); 336 337 G4double sigmaExcitation=0; 338 G4double tmp=0; 339 340 if (k*0.511/3728 > 9*eV && k*0.511/3728 < 1*MeV ) sigmaExcitation = 341 excitationXS->CrossSectionPerVolume(material,G4Electron::ElectronDefinition(),k*0.511/3728,tmp,tmp) 342 /material->GetAtomicNumDensityVector()[1]; 343 344 if ( particleDefinition == instance->GetIon("alpha+") ) 345 crossSection = crossSection + sigmaExcitation ; 346 347 if ( particleDefinition == instance->GetIon("helium") ) 348 crossSection = crossSection + 2*sigmaExcitation ; 349 350 delete excitationXS; 351 296 352 } 353 */ 297 354 298 355 } … … 327 384 G4int level = RandomSelect(particleEnergy0,aDynamicParticle->GetDefinition()); 328 385 329 G4double excitationEnergy = waterExcitation.ExcitationEnergy(level); 386 // G4double excitationEnergy = waterExcitation.ExcitationEnergy(level); 387 388 // Dingfelder's excitation levels 389 const G4double excitation[]={ 8.17*eV, 10.13*eV, 11.31*eV, 12.91*eV, 14.50*eV}; 390 G4double excitationEnergy = excitation[level]; 391 330 392 G4double newEnergy = particleEnergy0 - excitationEnergy; 331 393 … … 364 426 const G4double omegaj[]={0.85, 0.88, 0.88, 0.78, 0.78}; 365 427 428 // Dingfelder's excitation levels 429 const G4double Eliq[5]={ 8.17*eV, 10.13*eV, 11.31*eV, 12.91*eV, 14.50*eV}; 430 366 431 G4int particleTypeIndex = 0; 367 432 G4DNAGenericIonsManager* instance; … … 369 434 370 435 if (particleDefinition == G4Proton::ProtonDefinition()) particleTypeIndex=0; 436 if (particleDefinition == instance->GetIon("hydrogen")) particleTypeIndex=0; 371 437 if (particleDefinition == instance->GetIon("alpha++")) particleTypeIndex=1; 372 438 if (particleDefinition == instance->GetIon("alpha+")) particleTypeIndex=2; … … 377 443 378 444 // SI - added protection 379 if (tCorrected < waterExcitation.ExcitationEnergy(excitationLevel)) return 0;445 if (tCorrected < Eliq[excitationLevel]) return 0; 380 446 // 381 447 … … 384 450 G4double numerator; 385 451 numerator = std::pow(z * aj[excitationLevel], omegaj[excitationLevel]) * 386 std::pow(tCorrected - waterExcitation.ExcitationEnergy(excitationLevel), nu); 452 std::pow(tCorrected - Eliq[excitationLevel], nu); 453 454 // H case : see S. Uehara et al. IJRB 77, 2, 139-154 (2001) - section 3.3 455 456 if (particleDefinition == instance->GetIon("hydrogen")) 457 numerator = std::pow(z * 0.75*aj[excitationLevel], omegaj[excitationLevel]) * 458 std::pow(tCorrected - Eliq[excitationLevel], nu); 459 387 460 388 461 G4double power; … … 394 467 G4double zEff = particleDefinition->GetPDGCharge() / eplus + particleDefinition->GetLeptonNumber(); 395 468 396 zEff -= ( sCoefficient[0][particleTypeIndex] * S_1s(k, waterExcitation.ExcitationEnergy(excitationLevel), slaterEffectiveCharge[0][particleTypeIndex], 1.) + 397 sCoefficient[1][particleTypeIndex] * S_2s(k, waterExcitation.ExcitationEnergy(excitationLevel), slaterEffectiveCharge[1][particleTypeIndex], 2.) + 398 sCoefficient[2][particleTypeIndex] * S_2p(k, waterExcitation.ExcitationEnergy(excitationLevel), slaterEffectiveCharge[2][particleTypeIndex], 2.) ); 469 zEff -= ( sCoefficient[0][particleTypeIndex] * S_1s(k, Eliq[excitationLevel], slaterEffectiveCharge[0][particleTypeIndex], 1.) + 470 sCoefficient[1][particleTypeIndex] * S_2s(k, Eliq[excitationLevel], slaterEffectiveCharge[1][particleTypeIndex], 2.) + 471 sCoefficient[2][particleTypeIndex] * S_2p(k, Eliq[excitationLevel], slaterEffectiveCharge[2][particleTypeIndex], 2.) ); 472 473 if (particleDefinition == instance->GetIon("hydrogen")) zEff = 1.; 399 474 400 475 G4double cross = sigma0 * zEff * zEff * numerator / denominator; 476 401 477 402 478 return cross; … … 415 491 416 492 if ( particle == instance->GetIon("alpha++") || 417 particle == G4Proton::ProtonDefinition() ) 493 particle == G4Proton::ProtonDefinition()|| 494 particle == instance->GetIon("hydrogen") || 495 particle == instance->GetIon("alpha+") || 496 particle == instance->GetIon("helium") 497 ) 418 498 { 419 499 while (i > 0) … … 437 517 } 438 518 519 /* 439 520 // add ONE or TWO electron-water excitation for alpha+ and helium 440 521 … … 449 530 450 531 G4DNAEmfietzoglouExcitationModel * excitationXS = new G4DNAEmfietzoglouExcitationModel(); 532 excitationXS->Initialise(G4Electron::ElectronDefinition()); 451 533 452 534 G4double sigmaExcitation=0; … … 455 537 456 538 G4double partial = PartialCrossSection(k,i,particle); 539 457 540 if (particle == instance->GetIon("alpha+")) partial = PartialCrossSection(k,i,particle) + sigmaExcitation; 458 541 if (particle == instance->GetIon("helium")) partial = PartialCrossSection(k,i,particle) + 2*sigmaExcitation; 542 459 543 values.push_front(partial); 460 544 value += partial; … … 474 558 } 475 559 } 560 */ 476 561 477 562 return 0; … … 552 637 553 638 G4double tElectron = 0.511/3728. * t; 554 G4double value = 2. * tElectron * slaterEffectiveCharge / (energyTransferred * shellNumber); 555 639 640 // The following is provided by M. Dingfelder 641 G4double H = 2.*13.60569172 * eV; 642 G4double value = std::sqrt ( 2. * tElectron / H ) / ( energyTransferred / H ) * (slaterEffectiveCharge/shellNumber); 643 556 644 return value; 557 645 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNARuddIonisationModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNARuddIonisationModel.cc,v 1. 17 2010/04/07 20:08:31sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNARuddIonisationModel.cc,v 1.21 2010/11/04 14:52:17 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 … … 159 159 160 160 lowEnergyLimit[alphaPlusPlus] = lowEnergyLimitForZ2; 161 highEnergyLimit[alphaPlusPlus] = 10. * MeV;161 highEnergyLimit[alphaPlusPlus] = 400. * MeV; 162 162 163 163 // Cross section … … 181 181 182 182 lowEnergyLimit[alphaPlus] = lowEnergyLimitForZ2; 183 highEnergyLimit[alphaPlus] = 10. * MeV;183 highEnergyLimit[alphaPlus] = 400. * MeV; 184 184 185 185 // Cross section … … 202 202 203 203 lowEnergyLimit[helium] = lowEnergyLimitForZ2; 204 highEnergyLimit[helium] = 10. * MeV;204 highEnergyLimit[helium] = 400. * MeV; 205 205 206 206 // Cross section … … 363 363 sigma = table->FindValue(k); 364 364 365 // BEGIN ELECTRON CORRECTION366 // add ONE or TWO electron-water excitation for alpha+ and helium367 368 if ( particleDefinition == instance->GetIon("alpha+")369 ||370 particleDefinition == instance->GetIon("helium")371 )372 {373 374 G4DNACrossSectionDataSet* electronDataset = new G4DNACrossSectionDataSet375 (new G4LogLogInterpolation, eV, (1./3.343e22)*m*m);376 377 electronDataset->LoadData("dna/sigma_ionisation_e_born");378 379 G4double kElectron = k * 0.511/3728;380 381 if ( particleDefinition == instance->GetIon("alpha+") )382 {383 G4double tmp1 = table->FindValue(k) + electronDataset->FindValue(kElectron);384 delete electronDataset;385 if (verboseLevel > 3)386 {387 G4cout << "---> Kinetic energy(eV)=" << k/eV << G4endl;388 G4cout << " - Cross section per water molecule (cm^2)=" << tmp1/cm/cm << G4endl;389 G4cout << " - Cross section per water molecule (cm^-1)=" <<390 tmp1*material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl;391 }392 return tmp1*material->GetAtomicNumDensityVector()[1];393 }394 395 if ( particleDefinition == instance->GetIon("helium") )396 {397 G4double tmp2 = table->FindValue(k) + 2. * electronDataset->FindValue(kElectron);398 delete electronDataset;399 if (verboseLevel > 3)400 {401 G4cout << "---> Kinetic energy(eV)=" << k/eV << G4endl;402 G4cout << " - Cross section per water molecule (cm^2)=" << tmp2/cm/cm << G4endl;403 G4cout << " - Cross section per water molecule (cm^-1)=" << tmp2*404 material->GetAtomicNumDensityVector()[1]/(1./cm) << G4endl;405 }406 return tmp2*material->GetAtomicNumDensityVector()[1];407 }408 }409 410 // END ELECTRON CORRECTION411 365 } 412 366 } … … 489 443 G4ParticleDefinition* definition = particle->GetDefinition(); 490 444 G4ParticleMomentum primaryDirection = particle->GetMomentumDirection(); 445 /* 491 446 G4double particleMass = definition->GetPDGMass(); 492 447 G4double totalEnergy = k + particleMass; 493 448 G4double pSquare = k*(totalEnergy+particleMass); 494 449 G4double totalMomentum = std::sqrt(pSquare); 450 */ 495 451 496 452 G4int ionizationShell = RandomSelect(k,particleName); … … 511 467 deltaDirection.rotateUz(primaryDirection); 512 468 469 // Ignored for ions on electrons 470 /* 513 471 G4double deltaTotalMomentum = std::sqrt(secondaryKinetic*(secondaryKinetic + 2.*electron_mass_c2 )); 514 472 … … 525 483 526 484 fParticleChangeForGamma->ProposeMomentumDirection(direction.unit()) ; 485 */ 486 fParticleChangeForGamma->ProposeMomentumDirection(primaryDirection); 487 527 488 fParticleChangeForGamma->SetProposedKineticEnergy(k-bindingEnergy-secondaryKinetic); 528 489 fParticleChangeForGamma->ProposeLocalEnergyDeposit(bindingEnergy); … … 575 536 } 576 537 538 577 539 G4double secElecKinetic = 0.; 578 540 … … 616 578 617 579 phi = twopi * G4UniformRand(); 618 cosTheta = std::sqrt(secKinetic / maxSecKinetic); 580 581 //cosTheta = std::sqrt(secKinetic / maxSecKinetic); 582 583 // Restriction below 100 eV from Emfietzoglou (2000) 584 585 if (secKinetic>100*eV) cosTheta = std::sqrt(secKinetic / maxSecKinetic); 586 else cosTheta = (2.*G4UniformRand())-1.; 587 619 588 } 620 589 … … 656 625 G4double alphaConst ; 657 626 658 const G4double Bj[5] = {12.61*eV, 14.73*eV, 18.55*eV, 32.20*eV, 539.7*eV}; 627 // const G4double Bj[5] = {12.61*eV, 14.73*eV, 18.55*eV, 32.20*eV, 539.7*eV}; 628 // The following values are provided by M. dingfelder (priv. comm) 629 const G4double Bj[5] = {12.60*eV, 14.70*eV, 18.40*eV, 32.20*eV, 540*eV}; 659 630 660 631 if (j == 4) … … 681 652 E1 = 0.38; 682 653 A2 = 1.07; 683 B2 = 14.6; 654 // Value provided by M. Dingfelder (priv. comm) 655 B2 = 11.6; 656 // 684 657 C2 = 0.60; 685 658 D2 = 0.04; … … 697 670 698 671 G4double w = wBig / Bj[ionizationLevelIndex]; 672 // Note that the following (j==4) cases are provided by M. Dingfelder (priv. comm) 673 if (j==4) w = wBig / waterStructure.IonisationEnergy(ionizationLevelIndex); 674 699 675 G4double Ry = 13.6*eV; 700 676 … … 713 689 tau = (0.511/3728.) * k ; 714 690 } 715 691 716 692 G4double S = 4.*pi * Bohr_radius*Bohr_radius * n * std::pow((Ry/Bj[ionizationLevelIndex]),2); 693 if (j==4) S = 4.*pi * Bohr_radius*Bohr_radius * n * std::pow((Ry/waterStructure.IonisationEnergy(ionizationLevelIndex)),2); 694 717 695 G4double v2 = tau / Bj[ionizationLevelIndex]; 696 if (j==4) v2 = tau / waterStructure.IonisationEnergy(ionizationLevelIndex); 697 718 698 G4double v = std::sqrt(v2); 719 699 G4double wc = 4.*v2 - 2.*v - (Ry/(4.*Bj[ionizationLevelIndex])); 700 if (j==4) wc = 4.*v2 - 2.*v - (Ry/(4.*waterStructure.IonisationEnergy(ionizationLevelIndex))); 720 701 721 702 G4double L1 = (C1* std::pow(v,(D1))) / (1.+ E1*std::pow(v, (D1+4.))); … … 731 712 * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); 732 713 714 if (j==4) sigma = CorrectionFactor(particleDefinition, k) 715 * Gj[j] * (S/waterStructure.IonisationEnergy(ionizationLevelIndex)) 716 * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); 717 733 718 if ( (particleDefinition == instance->GetIon("hydrogen")) && (ionizationLevelIndex==4)) 734 719 735 sigma = Gj[j] * (S/Bj[ionizationLevelIndex]) 720 // sigma = Gj[j] * (S/Bj[ionizationLevelIndex]) 721 sigma = Gj[j] * (S/waterStructure.IonisationEnergy(ionizationLevelIndex)) 736 722 * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); 737 723 … … 756 742 { 757 743 slaterEffectiveCharge[0]=2.0; 758 slaterEffectiveCharge[1]=1.15; 759 slaterEffectiveCharge[2]=1.15; 744 // The following values are provided by M. Dingfelder (priv. comm) 745 slaterEffectiveCharge[1]=2.0; 746 slaterEffectiveCharge[2]=2.0; 747 // 760 748 sCoefficient[0]=0.7; 761 749 sCoefficient[1]=0.15; … … 780 768 sigma = Gj[j] * (S/Bj[ionizationLevelIndex]) * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); 781 769 770 if (j==4) sigma = Gj[j] * (S/waterStructure.IonisationEnergy(ionizationLevelIndex)) 771 * ( (F1+w*F2) / ( std::pow((1.+w),3) * ( 1.+std::exp(alphaConst*(w-wc)/v))) ); 772 782 773 G4double zEff = particleDefinition->GetPDGCharge() / eplus + particleDefinition->GetLeptonNumber(); 783 774 … … 852 843 853 844 G4double tElectron = 0.511/3728. * t; 854 G4double value = 2. * tElectron * slaterEffectiveChg / (energyTransferred * shellNumber); 845 // The following values are provided by M. Dingfelder (priv. comm) 846 G4double H = 2.*13.60569172 * eV; 847 G4double value = std::sqrt ( 2. * tElectron / H ) / ( energyTransferred / H ) * (slaterEffectiveChg/shellNumber); 855 848 856 849 return value; … … 872 865 { 873 866 G4double value = (std::log10(k/eV)-4.2)/0.5; 874 return((0.8/(1+std::exp(value))) + 0.9); 867 // The following values are provided by M. Dingfelder (priv. comm) 868 return((0.6/(1+std::exp(value))) + 0.9); 875 869 } 876 870 else … … 891 885 G4DNAGenericIonsManager *instance; 892 886 instance = G4DNAGenericIonsManager::Instance(); 893 G4double kElectron(0);894 895 G4DNACrossSectionDataSet * electronDataset = new G4DNACrossSectionDataSet (new G4LogLogInterpolation, eV, (1./3.343e22)*m*m);896 887 897 if ( particle == instance->GetIon("alpha+")->GetParticleName()898 ||899 particle == instance->GetIon("helium")->GetParticleName()900 )901 {902 electronDataset->LoadData("dna/sigma_ionisation_e_born");903 904 kElectron = k * 0.511/3728;905 906 }907 908 // END PART 1/2 OF ELECTRON CORRECTION909 910 888 G4int level = 0; 911 889 … … 931 909 i--; 932 910 valuesBuffer[i] = table->GetComponent(i)->FindValue(k); 933 934 // BEGIN PART 2/2 OF ELECTRON CORRECTION935 // Use only electron partial cross sections936 937 if (particle == instance->GetIon("alpha+")->GetParticleName())938 {valuesBuffer[i]=table->GetComponent(i)->FindValue(k) + electronDataset->GetComponent(i)->FindValue(kElectron); }939 940 if (particle == instance->GetIon("helium")->GetParticleName())941 {valuesBuffer[i]=table->GetComponent(i)->FindValue(k) + 2*electronDataset->GetComponent(i)->FindValue(kElectron); }942 943 // BEGIN PART 2/2 OF ELECTRON CORRECTION944 945 911 value += valuesBuffer[i]; 946 912 } … … 958 924 { 959 925 delete[] valuesBuffer; 960 961 if (electronDataset) delete electronDataset;962 963 926 return i; 964 927 } … … 975 938 } 976 939 977 delete electronDataset;978 979 940 return level; 980 941 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4DNAScreenedRutherfordElasticModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4DNAScreenedRutherfordElasticModel.cc,v 1.1 0 2010/01/07 18:10:50sincerti Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4DNAScreenedRutherfordElasticModel.cc,v 1.14 2010/09/08 14:07:16 sincerti Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 … … 41 41 { 42 42 43 killBelowEnergy = 8.23*eV; // Minimum e- energy for energy loss by excitation43 killBelowEnergy = 0.025*eV; // Minimum e- energy for energy loss by excitation 44 44 lowEnergyLimit = 0 * eV; 45 lowEnergyLimitOfModel = 7 * eV; // The model lower energy is 7 eV46 45 intermediateEnergyLimit = 200 * eV; // Switch between two final state models 47 highEnergyLimit = 1 0* MeV;46 highEnergyLimit = 1. * MeV; 48 47 SetLowEnergyLimit(lowEnergyLimit); 49 48 SetHighEnergyLimit(highEnergyLimit); … … 174 173 if (ekin < highEnergyLimit) 175 174 { 176 177 //SI : XS must not be zero otherwise sampling of secondaries method ignored178 if (ekin < lowEnergyLimitOfModel) ekin = lowEnergyLimitOfModel;179 //180 175 181 176 G4double z = 10.; -
trunk/source/processes/electromagnetic/lowenergy/src/G4Generator2BN.cc
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4Generator2BN.cc,v 1.9 2010/10/14 14:01:02 vnivanch Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 26 28 // 27 29 // ------------------------------------------------------------------- … … 45 47 // Class Description: 46 48 // 47 // Concrete base class for Bremsstrahlung Angular Distribution Generation - 2BN Distribution 49 // Concrete base class for Bremsstrahlung Angular Distribution Generation 50 // 2BN Distribution 48 51 // 49 52 // Class Description: End 50 53 // 51 54 // ------------------------------------------------------------------- 52 // 53 // 55 // 54 56 55 57 #include "G4Generator2BN.hh" … … 150 152 151 153 152 G4Generator2BN::G4Generator2BN(const G4String& name):G4VBremAngularDistribution(name) 154 G4Generator2BN::G4Generator2BN(const G4String&) 155 : G4VBremAngularDistribution("AngularGen2BN") 153 156 { 154 157 b = 1.2; … … 172 175 173 176 G4Generator2BN::~G4Generator2BN() 174 { ;}177 {} 175 178 176 179 // -
trunk/source/processes/electromagnetic/lowenergy/src/G4Generator2BS.cc
r819 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4Generator2BS.cc,v 1.10 2010/10/14 14:01:02 vnivanch Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 26 28 // 27 29 // ------------------------------------------------------------------- … … 39 41 // 40 42 // Modifications: 41 // 02 Jun 2003 First implementation acording with new design 42 // 05 Nov 2003 MGP Fixed std namespace 43 // 17 Nov 2003 MGP Fixed compilation problem on Windows 43 // 02 Jun 2003 First implementation acording with new design 44 // 05 Nov 2003 MGP Fixed std namespace 45 // 17 Nov 2003 MGP Fixed compilation problem on Windows 46 // 12 Oct 2010 V.Ivanchenko Moved RejectionFunction inline, use G4Pow to speadup 44 47 // 45 48 // Class Description: 46 49 // 47 // Concrete base class for Bremsstrahlung Angular Distribution Generation - 2BS Distribution 50 // Concrete base class for Bremsstrahlung Angular Distribution Generation 51 // 2BS Distribution 48 52 // 49 53 // Class Description: End … … 51 55 // ------------------------------------------------------------------- 52 56 // 53 //54 57 55 58 #include "G4Generator2BS.hh" 56 #include "Randomize.hh" 57 //59 #include "Randomize.hh" 60 #include "G4Pow.hh" 58 61 59 G4Generator2BS::G4Generator2BS(const G4String& name):G4VBremAngularDistribution(name) 60 {;} 62 // 63 64 G4Generator2BS::G4Generator2BS(const G4String&) 65 : G4VBremAngularDistribution("AngularGen2BS") 66 { 67 g4pow = G4Pow::GetInstance(); 68 } 61 69 62 70 // 63 71 64 72 G4Generator2BS::~G4Generator2BS() 65 { ;}73 {} 66 74 67 75 // … … 79 87 // Departement of Medical Physics, Memorial Sloan-Kettering Cancer Center, New York 80 88 81 82 89 G4double theta = 0; 83 90 … … 87 94 G4double gMaxEnergy = (pi*initialTotalEnergy)*(pi*initialTotalEnergy); 88 95 89 G4double Zeff = std::sqrt(static_cast<G4double>(Z) * (static_cast<G4double>(Z) + 1.0)); 90 z = (0.00008116224*(std::pow(Zeff,0.3333333))); 96 //G4double Zeff = std::sqrt(static_cast<G4double>(Z) * (static_cast<G4double>(Z) + 1.0)); 97 //z = (0.00008116224*(std::pow(Zeff,0.3333333))); 98 99 // VI speadup 100 z = 0.00008116224*(g4pow->Z13(Z) + g4pow->Z13(Z+1)); 91 101 92 102 // Rejection arguments … … 97 107 98 108 // Calculate rejection function at 0, 1 and Emax 99 G4double gfunction0 = RejectionFunction(0 );100 G4double gfunction1 = RejectionFunction(1 );109 G4double gfunction0 = RejectionFunction(0.0); 110 G4double gfunction1 = RejectionFunction(1.0); 101 111 G4double gfunctionEmax = RejectionFunction(gMaxEnergy); 102 103 112 104 113 // Calculate Maximum value … … 110 119 do{ 111 120 rand = G4UniformRand(); 112 rand = rand/(1-rand+1.0/gMaxEnergy);121 rand /= (1 - rand + 1.0/gMaxEnergy); 113 122 gfunctionTest = RejectionFunction(rand); 114 123 randTest = G4UniformRand(); 115 124 116 } while(randTest > (gfunctionTest/gMaximum));125 } while(randTest*gMaximum > gfunctionTest); 117 126 118 127 theta = std::sqrt(rand)/initialTotalEnergy; 119 128 120 121 129 return theta; 122 130 } 131 123 132 // 124 125 G4double G4Generator2BS::RejectionFunction(G4double value) const126 {127 128 G4double argument = (1+value)*(1+value);129 130 G4double gfunction = (4+std::log(rejection_argument3+(z/argument)))*131 ((4*EnergyRatio*value/argument)-rejection_argument1)+rejection_argument2;132 133 return gfunction;134 135 }136 133 137 134 void G4Generator2BS::PrintGeneratorInformation() const 138 135 { 139 136 G4cout << "\n" << G4endl; 140 G4cout << "Bremsstrahlung Angular Generator is 2BS Generator from 2BS Koch & Motz distribution (Rev Mod Phys 31(4), 920 (1959))" << G4endl; 137 G4cout << "Bremsstrahlung Angular Generator is 2BS Generator " 138 << "from 2BS Koch & Motz distribution (Rev Mod Phys 31(4), 920 (1959))" << G4endl; 141 139 G4cout << "Sampling algorithm adapted from PIRS-0203" << G4endl; 142 140 G4cout << "\n" << G4endl; -
trunk/source/processes/electromagnetic/lowenergy/src/G4IonParametrisedLossModel.cc
r1228 r1340 24 24 // ******************************************************************** 25 25 // 26 // 26 // $Id: G4IonParametrisedLossModel.cc,v 1.10 2010/11/04 12:21:48 vnivanch Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 27 28 // 28 29 // =========================================================================== … … 64 65 // functions accordingly, added new cache param.) 65 66 // - Removed GetRange function (AL) 67 // 04. 11. 2010 - Moved virtual methods to the source (VI) 66 68 // 67 69 // … … 107 109 nmbSubBins(100), 108 110 particleChangeLoss(0), 109 modelIsInitialised(false),110 corrections(0),111 111 corrFactor(1.0), 112 112 energyLossLimit(0.01), 113 cutEnergies(0) {114 113 cutEnergies(0) 114 { 115 115 genericIon = G4GenericIon::Definition(); 116 116 genericIonPDGMass = genericIon -> GetPDGMass(); 117 corrections = G4LossTableManager::Instance() -> EmCorrections(); 117 118 118 119 // The upper limit of the current model is set to 100 TeV … … 192 193 return couple -> GetMaterial() -> GetIonisation() -> 193 194 GetMeanExcitationEnergy(); 195 } 196 197 // ######################################################################### 198 199 G4double G4IonParametrisedLossModel::MaxSecondaryEnergy( 200 const G4ParticleDefinition* particle, 201 G4double kineticEnergy) { 202 203 // ############## Maximum energy of secondaries ########################## 204 // Function computes maximum energy of secondary electrons which are 205 // released by an ion 206 // 207 // See Geant4 physics reference manual (version 9.1), section 9.1.1 208 // 209 // Ref.: W.M. Yao et al, Jour. of Phys. G 33 (2006) 1. 210 // C.Caso et al. (Part. Data Group), Europ. Phys. Jour. C 3 1 (1998). 211 // B. Rossi, High energy particles, New York, NY: Prentice-Hall (1952). 212 // 213 // (Implementation adapted from G4BraggIonModel) 214 215 if(particle != cacheParticle) UpdateCache(particle); 216 217 G4double tau = kineticEnergy/cacheMass; 218 G4double tmax = 2.0 * electron_mass_c2 * tau * (tau + 2.) / 219 (1. + 2.0 * (tau + 1.) * cacheElecMassRatio + 220 cacheElecMassRatio * cacheElecMassRatio); 221 222 return tmax; 223 } 224 225 // ######################################################################### 226 227 G4double G4IonParametrisedLossModel::GetChargeSquareRatio( 228 const G4ParticleDefinition* particle, 229 const G4Material* material, 230 G4double kineticEnergy) { // Kinetic energy 231 232 G4double chargeSquareRatio = corrections -> 233 EffectiveChargeSquareRatio(particle, 234 material, 235 kineticEnergy); 236 corrFactor = chargeSquareRatio * 237 corrections -> EffectiveChargeCorrection(particle, 238 material, 239 kineticEnergy); 240 return corrFactor; 241 } 242 243 // ######################################################################### 244 245 G4double G4IonParametrisedLossModel::GetParticleCharge( 246 const G4ParticleDefinition* particle, 247 const G4Material* material, 248 G4double kineticEnergy) { // Kinetic energy 249 250 return corrections -> GetParticleCharge(particle, material, kineticEnergy); 194 251 } 195 252 … … 295 352 } 296 353 297 // The particle change object is cast to G4ParticleChangeForLoss 298 if(! modelIsInitialised) { 299 300 modelIsInitialised = true; 301 corrections = G4LossTableManager::Instance() -> EmCorrections(); 302 303 if(!particleChangeLoss) { 304 if(pParticleChange) { 305 306 particleChangeLoss = reinterpret_cast<G4ParticleChangeForLoss*> 307 (pParticleChange); 308 } 309 else { 310 particleChangeLoss = new G4ParticleChangeForLoss(); 311 } 312 } 354 // The particle change object 355 if(! particleChangeLoss) { 356 particleChangeLoss = GetParticleChangeForLoss(); 313 357 } 314 358 -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermoreIonisationModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermoreIonisationModel.cc,v 1. 8 2010/03/26 09:32:50pandola Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4LivermoreIonisationModel.cc,v 1.9 2010/10/13 07:28:47 pandola Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 // Author: Luciano Pandola … … 44 44 // - atomic deexcitation managed via G4VEmModel::DeexcitationFlag() is 45 45 // set as "true" (default would be false) 46 // 12 Oct 2010 L Pandola 47 // - add debugging information about energy in 48 // SampleDeexcitationAlongStep() 49 // - generate fluorescence SampleDeexcitationAlongStep() only above 50 // the cuts. 51 // 46 52 // 47 53 … … 125 131 } 126 132 energySpectrum = new G4eIonisationSpectrum(); 127 if (verboseLevel > 0)133 if (verboseLevel > 3) 128 134 G4cout << "G4VEnergySpectrum is initialized" << G4endl; 129 135 … … 159 165 } 160 166 161 if (verboseLevel > 1)167 if (verboseLevel > 3) 162 168 { 163 169 G4cout << "Cross section data: " << G4endl; … … 440 446 //secondaries. The eloss value is updated. 441 447 G4double energyLossBefore = eloss; 448 442 449 if (verboseLevel > 2) 443 G4cout << "Energy loss along step before deexcitation : " << energyLossBefore/keV << 444 " keV" << G4endl; 445 450 { 451 G4cout << "-----------------------------------------------------------" << G4endl; 452 G4cout << " SampleDeexcitationAlongStep() from G4LivermoreIonisation" << G4endl; 453 G4cout << "Energy loss along step before deexcitation : " << energyLossBefore/keV << 454 " keV" << G4endl; 455 } 446 456 G4double incidentEnergy = theTrack.GetDynamicParticle()->GetKineticEnergy(); 447 457 … … 453 463 G4double cute = (*(theCoupleTable->GetEnergyCutsVector(1)))[index]; 454 464 455 //Notice: in LowEnergyIonisation, fluorescence is always generated above 250 eV456 //not above the tracking cut.457 //G4double cutForLowEnergySecondaryParticles = 250.0*eV;458 465 459 466 std::vector<G4DynamicParticle*>* deexcitationProducts = … … 505 512 { 506 513 e = aSecondary->GetKineticEnergy(); 507 if ( eTot + e <= eloss ) 514 G4double itsCut = cutg; 515 if (aSecondary->GetParticleDefinition() == G4Electron::Electron()) 516 itsCut = cute; 517 if ( eTot + e <= eloss && e > itsCut ) 508 518 { 509 519 eTot += e; … … 524 534 } 525 535 536 G4double energyLossInFluorescence = 0.0; 526 537 size_t nSecondaries = deexcitationProducts->size(); 527 538 if (nSecondaries > 0) 528 539 { 529 fParticleChange->SetNumberOfSecondaries(nSecondaries); 540 //You may have already secondaries produced by SampleSubCutSecondaries() 541 //at the process G4VEnergyLossProcess 542 G4int secondariesBefore = fParticleChange->GetNumberOfSecondaries(); 543 fParticleChange->SetNumberOfSecondaries(nSecondaries+secondariesBefore); 530 544 const G4StepPoint* preStep = theTrack.GetStep()->GetPreStepPoint(); 531 545 const G4StepPoint* postStep = theTrack.GetStep()->GetPostStepPoint(); … … 538 552 G4double time, q; 539 553 G4ThreeVector position; 540 554 541 555 for (size_t i=0; i<nSecondaries; i++) 542 556 { … … 553 567 position += r; 554 568 G4Track* newTrack = new G4Track(part, time, position); 569 energyLossInFluorescence += eSecondary; 555 570 pParticleChange->AddSecondary(newTrack); 556 571 } … … 566 581 delete deexcitationProducts; 567 582 583 //Check and verbosities. Ensure energy conservation 568 584 if (verboseLevel > 2) 569 G4cout << "Energy loss along step after deexcitation : " << eloss/keV << 570 " keV" << G4endl; 585 { 586 G4cout << "Energy loss along step after deexcitation : " << eloss/keV << 587 " keV" << G4endl; 588 } 589 if (verboseLevel > 1) 590 { 591 G4cout << "------------------------------------------------------------------" << G4endl; 592 G4cout << "Energy in fluorescence: " << energyLossInFluorescence/keV << " keV" << G4endl; 593 G4cout << "Residual energy loss: " << eloss/keV << " keV " << G4endl; 594 G4cout << "Total final: " << (energyLossInFluorescence+eloss)/keV << " keV" << G4endl; 595 G4cout << "Total initial: " << energyLossBefore/keV << " keV" << G4endl; 596 G4cout << "------------------------------------------------------------------" << G4endl; 597 } 598 if (verboseLevel > 0) 599 { 600 if (std::fabs(energyLossBefore-energyLossInFluorescence-eloss)>10*eV) 601 { 602 G4cout << "Found energy non-conservation at SampleDeexcitationAlongStep() " << G4endl; 603 G4cout << "Energy in fluorescence: " << energyLossInFluorescence/keV << " keV" << G4endl; 604 G4cout << "Residual energy loss: " << eloss/keV << " keV " << G4endl; 605 G4cout << "Total final: " << (energyLossInFluorescence+eloss)/keV << " keV" << G4endl; 606 G4cout << "Total initial: " << energyLossBefore/keV << " keV" << G4endl; 607 } 608 } 571 609 } 572 610 … … 655 693 xsis->AddComponent(p); 656 694 } 657 if(verboseLevel> 0) xsis->PrintData();695 if(verboseLevel>3) xsis->PrintData(); 658 696 shellVacancy->AddXsiTable(xsis); 659 697 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4LivermorePhotoElectricModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4LivermorePhotoElectricModel.cc,v 1.1 1 2010/03/26 09:32:50pandola Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4LivermorePhotoElectricModel.cc,v 1.12 2010/10/13 07:15:42 pandola Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 // … … 304 304 if (!DeexcitationFlag() && augerbool) 305 305 { 306 G4cout << "WARNING - G4 PenelopePhotoElectricModel" << G4endl;306 G4cout << "WARNING - G4LivermorePhotoElectricModel" << G4endl; 307 307 G4cout << "The use of the Atomic Deexcitation Manager is set to false " << G4endl; 308 308 G4cout << "Therefore, Auger electrons will be not generated anyway" << G4endl; -
trunk/source/processes/electromagnetic/lowenergy/src/G4Penelope08ComptonModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4Penelope08ComptonModel.cc,v 1. 6 2010/04/12 13:53:29pandola Exp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4Penelope08ComptonModel.cc,v 1.7 2010/07/28 07:09:16 pandola Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 // Author: Luciano Pandola … … 42 42 #include "G4VEMDataSet.hh" 43 43 #include "G4PhysicsTable.hh" 44 #include "G4ElementTable.hh"45 #include "G4Element.hh"46 44 #include "G4PhysicsLogVector.hh" 47 45 #include "G4AtomicTransitionManager.hh" -
trunk/source/processes/electromagnetic/lowenergy/src/G4Penelope08GammaConversionModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4Penelope08GammaConversionModel.cc,v 1. 3 2010/06/25 09:41:17 gunterExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4Penelope08GammaConversionModel.cc,v 1.4 2010/07/28 07:09:16 pandola Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 // Author: Luciano Pandola … … 87 87 if (fScreeningFunction) 88 88 delete fScreeningFunction; 89 90 89 } 91 90 -
trunk/source/processes/electromagnetic/lowenergy/src/G4Penelope08PhotoElectricModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4Penelope08PhotoElectricModel.cc,v 1. 4 2010/06/25 09:41:19 gunterExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4Penelope08PhotoElectricModel.cc,v 1.5 2010/07/28 07:09:16 pandola Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 // Author: Luciano Pandola … … 42 42 #include "G4ElementTable.hh" 43 43 #include "G4Element.hh" 44 #include "G4CrossSectionHandler.hh"45 44 #include "G4AtomicTransitionManager.hh" 46 45 #include "G4AtomicShell.hh" … … 487 486 //(theTable)[ishell] --> cross section for shell (ishell-1) 488 487 489 490 491 488 //reserve space for the vectors 492 489 //everything is log-log -
trunk/source/processes/electromagnetic/lowenergy/src/G4Penelope08RayleighModel.cc
r1337 r1340 24 24 // ******************************************************************** 25 25 // 26 // $Id: G4Penelope08RayleighModel.cc,v 1. 2 2010/06/25 09:41:28 gunterExp $27 // GEANT4 tag $Name: geant4-09-04-beta-01$26 // $Id: G4Penelope08RayleighModel.cc,v 1.3 2010/07/28 07:09:16 pandola Exp $ 27 // GEANT4 tag $Name: emlowen-V09-03-54 $ 28 28 // 29 29 // Author: Luciano Pandola … … 43 43 #include "G4ElementTable.hh" 44 44 #include "G4Element.hh" 45 #include "G4PenelopeIntegrator.hh"46 45 #include "G4PhysicsFreeVector.hh" 47 46 … … 224 223 225 224 if (verboseLevel > 2) 226 G4cout << " Compton cross Section at " << energy/keV << " keV for Z=" << Z <<225 G4cout << "Rayleigh cross section at " << energy/keV << " keV for Z=" << Z << 227 226 " = " << cross/barn << " barn" << G4endl; 228 227 return cross; … … 414 413 fParticleChange->SetProposedKineticEnergy(photonEnergy0) ; 415 414 416 417 415 return; 418 416 } -
trunk/source/processes/electromagnetic/lowenergy/src/G4PenelopeOscillatorManager.cc
r1337 r1340 66 66 { 67 67 Clear(); 68 delete instance; 68 69 } 69 70 -
trunk/source/processes/electromagnetic/lowenergy/src/G4PhotoElectricAngularGeneratorSauterGavrila.cc
r1337 r1340 79 79 80 80 if (gamma > 5.) { 81 return G4ThreeVector(sinteta*cosphi, sinteta*sinphi, costeta); 81 G4ThreeVector direction (sinteta*cosphi, sinteta*sinphi, costeta); 82 return direction; 83 // Bugzilla 1120 84 // SI on 05/09/2010 as suggested by JG 04/09/10 82 85 } 83 86
Note:
See TracChangeset
for help on using the changeset viewer.
