Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/processes/electromagnetic/dna/models/src/G4DNAMillerGreenExcitationModel.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /processes/electromagnetic/dna/models/src/G4DNAMillerGreenExcitationModel.cc (Version 11.3.0) and /processes/electromagnetic/dna/models/src/G4DNAMillerGreenExcitationModel.cc (Version 4.0.p1)


  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 //                                                
 27                                                   
 28 #include "G4DNAMillerGreenExcitationModel.hh"     
 29 #include "G4SystemOfUnits.hh"                     
 30 #include "G4DNAChemistryManager.hh"               
 31 #include "G4DNAMolecularMaterial.hh"              
 32 #include "G4Exp.hh"                               
 33 #include "G4Pow.hh"                               
 34 #include "G4Alpha.hh"                             
 35                                                   
 36 static G4Pow * gpow = G4Pow::GetInstance();       
 37 //....oooOO0OOooo........oooOO0OOooo........oo    
 38                                                   
 39 using namespace std;                              
 40                                                   
 41 //....oooOO0OOooo........oooOO0OOooo........oo    
 42                                                   
 43 G4DNAMillerGreenExcitationModel::G4DNAMillerGr    
 44                                                   
 45 :G4VEmModel(nam)                                  
 46 {                                                 
 47   fpMolWaterDensity = nullptr;                    
 48                                                   
 49   nLevels=0;                                      
 50   kineticEnergyCorrection[0]=0.;                  
 51   kineticEnergyCorrection[1]=0.;                  
 52   kineticEnergyCorrection[2]=0.;                  
 53   kineticEnergyCorrection[3]=0.;                  
 54                                                   
 55   verboseLevel= 0;                                
 56   // Verbosity scale:                             
 57   // 0 = nothing                                  
 58   // 1 = warning for energy non-conservation      
 59   // 2 = details of energy budget                 
 60   // 3 = calculation of cross sections, file o    
 61   // 4 = entering in methods                      
 62                                                   
 63   if( verboseLevel>0 )                            
 64   {                                               
 65     G4cout << "Miller & Green excitation model    
 66   }                                               
 67   fParticleChangeForGamma = nullptr;              
 68                                                   
 69   // Selection of stationary mode                 
 70                                                   
 71   statCode = false;                               
 72 }                                                 
 73                                                   
 74 //....oooOO0OOooo........oooOO0OOooo........oo    
 75                                                   
 76 G4DNAMillerGreenExcitationModel::~G4DNAMillerG    
 77 = default;                                        
 78                                                   
 79 //....oooOO0OOooo........oooOO0OOooo........oo    
 80                                                   
 81 void G4DNAMillerGreenExcitationModel::Initiali    
 82                                                   
 83 {                                                 
 84                                                   
 85   if (verboseLevel > 3)                           
 86     G4cout << "Calling G4DNAMillerGreenExcitat    
 87                                                   
 88   // Energy limits                                
 89                                                   
 90   G4DNAGenericIonsManager *instance;              
 91   instance = G4DNAGenericIonsManager::Instance    
 92   protonDef = G4Proton::ProtonDefinition();       
 93   hydrogenDef = instance->GetIon("hydrogen");     
 94   alphaPlusPlusDef = G4Alpha::Alpha();            
 95   alphaPlusDef = instance->GetIon("alpha+");      
 96   heliumDef = instance->GetIon("helium");         
 97                                                   
 98   G4String proton;                                
 99   G4String hydrogen;                              
100   G4String alphaPlusPlus;                         
101   G4String alphaPlus;                             
102   G4String helium;                                
103                                                   
104   // LIMITS AND CONSTANTS                         
105                                                   
106   proton = protonDef->GetParticleName();          
107   lowEnergyLimit[proton] = 10. * eV;              
108   highEnergyLimit[proton] = 500. * keV;           
109                                                   
110   kineticEnergyCorrection[0] = 1.;                
111   slaterEffectiveCharge[0][0] = 0.;               
112   slaterEffectiveCharge[1][0] = 0.;               
113   slaterEffectiveCharge[2][0] = 0.;               
114   sCoefficient[0][0] = 0.;                        
115   sCoefficient[1][0] = 0.;                        
116   sCoefficient[2][0] = 0.;                        
117                                                   
118   hydrogen = hydrogenDef->GetParticleName();      
119   lowEnergyLimit[hydrogen] = 10. * eV;            
120   highEnergyLimit[hydrogen] = 500. * keV;         
121                                                   
122   kineticEnergyCorrection[0] = 1.;                
123   slaterEffectiveCharge[0][0] = 0.;               
124   slaterEffectiveCharge[1][0] = 0.;               
125   slaterEffectiveCharge[2][0] = 0.;               
126   sCoefficient[0][0] = 0.;                        
127   sCoefficient[1][0] = 0.;                        
128   sCoefficient[2][0] = 0.;                        
129                                                   
130   alphaPlusPlus = alphaPlusPlusDef->GetParticl    
131   lowEnergyLimit[alphaPlusPlus] = 1. * keV;       
132   highEnergyLimit[alphaPlusPlus] = 400. * MeV;    
133                                                   
134   kineticEnergyCorrection[1] = 0.9382723/3.727    
135   slaterEffectiveCharge[0][1]=0.;                 
136   slaterEffectiveCharge[1][1]=0.;                 
137   slaterEffectiveCharge[2][1]=0.;                 
138   sCoefficient[0][1]=0.;                          
139   sCoefficient[1][1]=0.;                          
140   sCoefficient[2][1]=0.;                          
141                                                   
142   alphaPlus = alphaPlusDef->GetParticleName();    
143   lowEnergyLimit[alphaPlus] = 1. * keV;           
144   highEnergyLimit[alphaPlus] = 400. * MeV;        
145                                                   
146   kineticEnergyCorrection[2] = 0.9382723/3.727    
147   slaterEffectiveCharge[0][2]=2.0;                
148                                                   
149   // Following values provided by M. Dingfelde    
150   slaterEffectiveCharge[1][2]=2.00;               
151   slaterEffectiveCharge[2][2]=2.00;               
152   //                                              
153   sCoefficient[0][2]=0.7;                         
154   sCoefficient[1][2]=0.15;                        
155   sCoefficient[2][2]=0.15;                        
156                                                   
157   helium = heliumDef->GetParticleName();          
158   lowEnergyLimit[helium] = 1. * keV;              
159   highEnergyLimit[helium] = 400. * MeV;           
160                                                   
161   kineticEnergyCorrection[3] = 0.9382723/3.727    
162   slaterEffectiveCharge[0][3]=1.7;                
163   slaterEffectiveCharge[1][3]=1.15;               
164   slaterEffectiveCharge[2][3]=1.15;               
165   sCoefficient[0][3]=0.5;                         
166   sCoefficient[1][3]=0.25;                        
167   sCoefficient[2][3]=0.25;                        
168                                                   
169   //                                              
170                                                   
171   if (particle==protonDef)                        
172   {                                               
173     SetLowEnergyLimit(lowEnergyLimit[proton]);    
174     SetHighEnergyLimit(highEnergyLimit[proton]    
175   }                                               
176                                                   
177   if (particle==hydrogenDef)                      
178   {                                               
179     SetLowEnergyLimit(lowEnergyLimit[hydrogen]    
180     SetHighEnergyLimit(highEnergyLimit[hydroge    
181   }                                               
182                                                   
183   if (particle==alphaPlusPlusDef)                 
184   {                                               
185     SetLowEnergyLimit(lowEnergyLimit[alphaPlus    
186     SetHighEnergyLimit(highEnergyLimit[alphaPl    
187   }                                               
188                                                   
189   if (particle==alphaPlusDef)                     
190   {                                               
191     SetLowEnergyLimit(lowEnergyLimit[alphaPlus    
192     SetHighEnergyLimit(highEnergyLimit[alphaPl    
193   }                                               
194                                                   
195   if (particle==heliumDef)                        
196   {                                               
197     SetLowEnergyLimit(lowEnergyLimit[helium]);    
198     SetHighEnergyLimit(highEnergyLimit[helium]    
199   }                                               
200                                                   
201   //                                              
202                                                   
203   nLevels = waterExcitation.NumberOfLevels();     
204                                                   
205   //                                              
206   if( verboseLevel>0 )                            
207   {                                               
208     G4cout << "Miller & Green excitation model    
209            << "Energy range: "                    
210            << LowEnergyLimit() / eV << " eV -     
211            << HighEnergyLimit() / keV << " keV    
212            << particle->GetParticleName()         
213            << G4endl;                             
214   }                                               
215                                                   
216   // Initialize water density pointer             
217   fpMolWaterDensity = G4DNAMolecularMaterial::    
218                                                   
219   if (isInitialised) { return; }                  
220   fParticleChangeForGamma = GetParticleChangeF    
221   isInitialised = true;                           
222                                                   
223 }                                                 
224                                                   
225 //....oooOO0OOooo........oooOO0OOooo........oo    
226                                                   
227 G4double G4DNAMillerGreenExcitationModel::Cros    
228                                                   
229                                                   
230                                                   
231                                                   
232 {                                                 
233   if (verboseLevel > 3)                           
234     G4cout << "Calling CrossSectionPerVolume()    
235                                                   
236   // Calculate total cross section for model      
237                                                   
238   if (                                            
239        particleDefinition != protonDef            
240        &&                                         
241        particleDefinition != hydrogenDef          
242        &&                                         
243        particleDefinition != alphaPlusPlusDef     
244        &&                                         
245        particleDefinition != alphaPlusDef         
246        &&                                         
247        particleDefinition != heliumDef            
248      )                                            
249                                                   
250      return 0;                                    
251                                                   
252   G4double lowLim = 0;                            
253   G4double highLim = 0;                           
254   G4double crossSection = 0.;                     
255                                                   
256   G4double waterDensity = (*fpMolWaterDensity)    
257                                                   
258   const G4String& particleName = particleDefin    
259                                                   
260   std::map< G4String,G4double,std::less<G4Stri    
261   pos1 = lowEnergyLimit.find(particleName);       
262                                                   
263   if (pos1 != lowEnergyLimit.end())               
264   {                                               
265     lowLim = pos1->second;                        
266   }                                               
267                                                   
268   std::map< G4String,G4double,std::less<G4Stri    
269   pos2 = highEnergyLimit.find(particleName);      
270                                                   
271   if (pos2 != highEnergyLimit.end())              
272   {                                               
273     highLim = pos2->second;                       
274   }                                               
275                                                   
276   if (k >= lowLim && k <= highLim)                
277   {                                               
278     crossSection = Sum(k,particleDefinition);     
279                                                   
280     // add ONE or TWO electron-water excitatio    
281     /*                                            
282       if ( particleDefinition == alphaPlusDef     
283            ||                                     
284            particleDefinition == heliumDef        
285          )                                        
286       {                                           
287                                                   
288       G4DNAEmfietzoglouExcitationModel * excit    
289           excitationXS->Initialise(G4Electron:    
290                                                   
291       G4double sigmaExcitation=0;                 
292       G4double tmp =0.;                           
293                                                   
294       if (k*0.511/3728 > 8.23*eV && k*0.511/37    
295         excitationXS->CrossSectionPerVolume(ma    
296         /material->GetAtomicNumDensityVector()    
297                                                   
298       if ( particleDefinition == alphaPlusDef     
299         crossSection = crossSection +  sigmaEx    
300                                                   
301       if ( particleDefinition == heliumDef )      
302         crossSection = crossSection + 2*sigmaE    
303                                                   
304       delete excitationXS;                        
305                                                   
306           // Alternative excitation model         
307                                                   
308           G4DNABornExcitationModel * excitatio    
309           excitationXS->Initialise(G4Electron:    
310                                                   
311       G4double sigmaExcitation=0;                 
312       G4double tmp=0;                             
313                                                   
314       if (k*0.511/3728 > 9*eV && k*0.511/3728     
315         excitationXS->CrossSectionPerVolume(ma    
316         /material->GetAtomicNumDensityVector()    
317                                                   
318       if ( particleDefinition == alphaPlusDef     
319         crossSection = crossSection +  sigmaEx    
320                                                   
321       if ( particleDefinition == heliumDef )      
322         crossSection = crossSection + 2*sigmaE    
323                                                   
324       delete excitationXS;                        
325                                                   
326       }                                           
327     */                                            
328                                                   
329   }                                               
330                                                   
331   if (verboseLevel > 2)                           
332   {                                               
333     G4cout << "_______________________________    
334     G4cout << "G4DNAMillerGreenExcitationModel    
335     G4cout << "Kinetic energy(eV)=" << k/eV <<    
336     G4cout << "Cross section per water molecul    
337     G4cout << "Cross section per water molecul    
338     // G4cout << " - Cross section per water m    
339     G4cout << "G4DNAMillerGreenExcitationModel    
340   }                                               
341                                                   
342     return crossSection*waterDensity;             
343 }                                                 
344                                                   
345 //....oooOO0OOooo........oooOO0OOooo........oo    
346                                                   
347 void G4DNAMillerGreenExcitationModel::SampleSe    
348                                                   
349                                                   
350                                                   
351                                                   
352 {                                                 
353                                                   
354   if (verboseLevel > 3)                           
355     G4cout << "Calling SampleSecondaries() of     
356                                                   
357   G4double particleEnergy0 = aDynamicParticle-    
358                                                   
359   G4int level = RandomSelect(particleEnergy0,a    
360                                                   
361   // Dingfelder's excitation levels               
362   const G4double excitation[]={ 8.17*eV, 10.13    
363   G4double excitationEnergy = excitation[level    
364                                                   
365   G4double newEnergy = 0.;                        
366                                                   
367   if (!statCode) newEnergy = particleEnergy0 -    
368                                                   
369   else newEnergy = particleEnergy0;               
370                                                   
371   if (newEnergy>0)                                
372   {                                               
373     fParticleChangeForGamma->ProposeMomentumDi    
374     fParticleChangeForGamma->SetProposedKineti    
375     fParticleChangeForGamma->ProposeLocalEnerg    
376                                                   
377     const G4Track * theIncomingTrack = fPartic    
378     G4DNAChemistryManager::Instance()->CreateW    
379      level, theIncomingTrack);                    
380                                                   
381   }                                               
382                                                   
383 }                                                 
384                                                   
385 //....oooOO0OOooo........oooOO0OOooo........oo    
386                                                   
387 G4double G4DNAMillerGreenExcitationModel::GetP    
388                                           G4in    
389                                           cons    
390                                           G4do    
391 {                                                 
392   return PartialCrossSection(kineticEnergy, le    
393 }                                                 
394                                                   
395 //....oooOO0OOooo........oooOO0OOooo........oo    
396                                                   
397 G4double G4DNAMillerGreenExcitationModel::Part    
398                                                   
399 {                                                 
400   //                               ( ( z * aj     
401   // sigma(t) = zEff^2 * sigma0 * ------------    
402   //                               jj ^ ( omeg    
403   //                                              
404   // where t is the kinetic energy corrected b    
405   //                                              
406   // zEff is:                                     
407   //  1 for protons                               
408   //  2 for alpha++                               
409   //  and  2 - c1 S_1s - c2 S_2s - c3 S_2p for    
410   //                                              
411   // Dingfelder et al., RPC 59, 255-275, 2000     
412   // Formula (34) and Table 2                     
413                                                   
414   const G4double sigma0(1.E+8 * barn);            
415   const G4double nu(1.);                          
416   const G4double aj[]={876.*eV, 2084.* eV, 137    
417   const G4double jj[]={19820.*eV, 23490.*eV, 2    
418   const G4double omegaj[]={0.85, 0.88, 0.88, 0    
419                                                   
420   // Dingfelder's excitation levels               
421   const G4double Eliq[5]={ 8.17*eV, 10.13*eV,     
422                                                   
423   G4int particleTypeIndex = 0;                    
424                                                   
425   if (particleDefinition == protonDef) particl    
426   if (particleDefinition == hydrogenDef) parti    
427   if (particleDefinition == alphaPlusPlusDef)     
428   if (particleDefinition == alphaPlusDef) part    
429   if (particleDefinition == heliumDef) particl    
430                                                   
431   G4double tCorrected;                            
432   tCorrected = k * kineticEnergyCorrection[par    
433                                                   
434   // SI - added protection                        
435   if (tCorrected < Eliq[excitationLevel]) retu    
436   //                                              
437                                                   
438   G4int z = 10;                                   
439                                                   
440   G4double numerator;                             
441   numerator = gpow->powA(z * aj[excitationLeve    
442               gpow->powA(tCorrected - Eliq[exc    
443                                                   
444   // H case : see S. Uehara et al. IJRB 77, 2,    
445                                                   
446   if (particleDefinition == hydrogenDef)          
447       numerator = gpow->powA(z * 0.75*aj[excit    
448                   gpow->powA(tCorrected - Eliq    
449                                                   
450                                                   
451   G4double power;                                 
452   power = omegaj[excitationLevel] + nu;           
453                                                   
454   G4double denominator;                           
455   denominator = gpow->powA(jj[excitationLevel]    
456                                                   
457   G4double zEff = particleDefinition->GetPDGCh    
458                                                   
459   zEff -= ( sCoefficient[0][particleTypeIndex]    
460           sCoefficient[1][particleTypeIndex] *    
461           sCoefficient[2][particleTypeIndex] *    
462                                                   
463   if (particleDefinition == hydrogenDef) zEff     
464                                                   
465   G4double cross = sigma0 * zEff * zEff * nume    
466                                                   
467                                                   
468   return cross;                                   
469 }                                                 
470                                                   
471 //....oooOO0OOooo........oooOO0OOooo........oo    
472                                                   
473 G4int G4DNAMillerGreenExcitationModel::RandomS    
474 {                                                 
475   G4int i = nLevels;                              
476   G4double value = 0.;                            
477   std::deque<G4double> values;                    
478                                                   
479   if ( particle == alphaPlusPlusDef ||            
480        particle == protonDef||                    
481        particle == hydrogenDef  ||                
482        particle == alphaPlusDef  ||               
483        particle == heliumDef                      
484        )                                          
485   {                                               
486     while (i > 0)                                 
487     {                                             
488       i--;                                        
489       G4double partial = PartialCrossSection(k    
490       values.push_front(partial);                 
491       value += partial;                           
492     }                                             
493                                                   
494     value *= G4UniformRand();                     
495                                                   
496     i = nLevels;                                  
497                                                   
498     while (i > 0)                                 
499     {                                             
500       i--;                                        
501       if (values[i] > value) return i;            
502       value -= values[i];                         
503     }                                             
504   }                                               
505                                                   
506   /*                                              
507   // add ONE or TWO electron-water excitation     
508                                                   
509   if ( particle == alphaPlusDef                   
510        ||                                         
511        particle == heliumDef                      
512      )                                            
513   {                                               
514     while (i>0)                                   
515     {                                             
516       i--;                                        
517                                                   
518           G4DNAEmfietzoglouExcitationModel * e    
519           excitationXS->Initialise(G4Electron:    
520                                                   
521       G4double sigmaExcitation=0;                 
522                                                   
523       if (k*0.511/3728 > 8.23*eV && k*0.511/37    
524                                                   
525       G4double partial = PartialCrossSection(k    
526                                                   
527       if (particle == alphaPlusDef) partial =     
528       if (particle == heliumDef) partial = Par    
529                                                   
530       values.push_front(partial);                 
531       value += partial;                           
532       delete excitationXS;                        
533     }                                             
534                                                   
535     value*=G4UniformRand();                       
536                                                   
537     i=5;                                          
538     while (i>0)                                   
539     {                                             
540       i--;                                        
541                                                   
542       if (values[i]>value) return i;              
543                                                   
544       value-=values[i];                           
545     }                                             
546   }                                               
547   */                                              
548                                                   
549   return 0;                                       
550 }                                                 
551                                                   
552 //....oooOO0OOooo........oooOO0OOooo........oo    
553                                                   
554 G4double G4DNAMillerGreenExcitationModel::Sum(    
555 {                                                 
556   G4double totalCrossSection = 0.;                
557                                                   
558   for (G4int i=0; i<nLevels; i++)                 
559   {                                               
560     totalCrossSection += PartialCrossSection(k    
561   }                                               
562   return totalCrossSection;                       
563 }                                                 
564                                                   
565 //....oooOO0OOooo........oooOO0OOooo........oo    
566                                                   
567 G4double G4DNAMillerGreenExcitationModel::S_1s    
568                                                   
569                                                   
570                                                   
571 {                                                 
572   // 1 - e^(-2r) * ( 1 + 2 r + 2 r^2)             
573   // Dingfelder, in Chattanooga 2005 proceedin    
574                                                   
575   G4double r = R(t, energyTransferred, _slater    
576   G4double value = 1. - G4Exp(-2 * r) * ( ( 2.    
577                                                   
578   return value;                                   
579 }                                                 
580                                                   
581                                                   
582 //....oooOO0OOooo........oooOO0OOooo........oo    
583                                                   
584 G4double G4DNAMillerGreenExcitationModel::S_2s    
585                                                   
586                                                   
587                                                   
588 {                                                 
589   // 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 2 r^4)    
590   // Dingfelder, in Chattanooga 2005 proceedin    
591                                                   
592   G4double r = R(t, energyTransferred, _slater    
593   G4double value =  1. - G4Exp(-2 * r) * (((2.    
594                                                   
595   return value;                                   
596                                                   
597 }                                                 
598                                                   
599 //....oooOO0OOooo........oooOO0OOooo........oo    
600                                                   
601 G4double G4DNAMillerGreenExcitationModel::S_2p    
602                                                   
603                                                   
604                                                   
605 {                                                 
606   // 1 - e^(-2 r) * ( 1 + 2 r + 2 r^2 + 4/3 r^    
607   // Dingfelder, in Chattanooga 2005 proceedin    
608                                                   
609   G4double r = R(t, energyTransferred, _slater    
610   G4double value =  1. - G4Exp(-2 * r) * ((((     
611                                                   
612   return value;                                   
613 }                                                 
614                                                   
615 //....oooOO0OOooo........oooOO0OOooo........oo    
616                                                   
617 G4double G4DNAMillerGreenExcitationModel::R(G4    
618                                             G4    
619                                             G4    
620                                             G4    
621 {                                                 
622   // tElectron = m_electron / m_alpha * t         
623   // Dingfelder, in Chattanooga 2005 proceedin    
624                                                   
625   G4double tElectron = 0.511/3728. * t;           
626                                                   
627   // The following is provided by M. Dingfelde    
628   G4double H = 2.*13.60569172 * eV;               
629   G4double value = std::sqrt ( 2. * tElectron     
630                                                   
631   return value;                                   
632 }                                                 
633                                                   
634