Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/electromagnetic/TestEm7/src/G4LindhardPartition.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 /examples/extended/electromagnetic/TestEm7/src/G4LindhardPartition.cc (Version 11.3.0) and /examples/extended/electromagnetic/TestEm7/src/G4LindhardPartition.cc (Version 10.6.p3)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 /*                                                 26 /*
 27  *  \file electromagnetic/TestEm7/src/G4Lindha     27  *  \file electromagnetic/TestEm7/src/G4LindhardPartition.cc
 28  *  \brief Implementation of the G4LindhardPar     28  *  \brief Implementation of the G4LindhardPartition class
 29  *                                                 29  *
 30  *  Created by Marcus Mendenhall on 1/14/08.       30  *  Created by Marcus Mendenhall on 1/14/08.
 31  *  2008 Vanderbilt University, Nashville, TN,     31  *  2008 Vanderbilt University, Nashville, TN, USA.
 32  *                                                 32  *
 33  */                                                33  */
 34                                                    34 
 35 //                                                 35 //
 36                                                    36 
 37 #include "G4LindhardPartition.hh"                  37 #include "G4LindhardPartition.hh"
 38                                                << 
 39 #include "G4Element.hh"                        << 
 40 #include "G4Material.hh"                           38 #include "G4Material.hh"
                                                   >>  39 #include "G4Element.hh"
 41 #include "G4PhysicalConstants.hh"                  40 #include "G4PhysicalConstants.hh"
 42 #include "G4SystemOfUnits.hh"                      41 #include "G4SystemOfUnits.hh"
 43                                                    42 
 44 //....oooOO0OOooo........oooOO0OOooo........oo << 
 45 /*                                                 43 /*
 46 for a first cut, we will compute NIEL from a L     44 for a first cut, we will compute NIEL from a Lindhard-Robinson partition
 47 based on the most abundant element in the mate     45 based on the most abundant element in the material.
 48                                                    46 
 49 this is from IEEE Trans. Nucl Science Vol. 48      47 this is from IEEE Trans. Nucl Science Vol. 48 No.1 February 2001 page 162++
 50 Insoo Jun, "Effects of Secondary Particles on      48 Insoo Jun, "Effects of Secondary Particles on the Total Dose..."
 51 and, by reference,                                 49 and, by reference,
 52 Lindhard, Nielsen, Scharff & Thompson,         <<  50 Lindhard, Nielsen, Scharff & Thompson, 
 53 "Integral Equations Governing Radiation Efects <<  51 "Integral Equations Governing Radiation Efects...", 
 54 Mat. Fys. Medd. Dan. Vid. Selsk. vol 33 #10, p     52 Mat. Fys. Medd. Dan. Vid. Selsk. vol 33 #10, pp1-42, 1963
 55 and                                                53 and
 56 Robinson, "The dependence of radiation effects     54 Robinson, "The dependence of radiation effects on primary recoil energy",
 57 in Proc. Int. Conf. Radiation-Induced Voids in <<  55 in Proc. Int. Conf. Radiation-Induced Voids in Metal,  
 58 Albany, NY 1972 pp. 397-439                        56 Albany, NY 1972 pp. 397-439
 59 def lindhard_robinson(z1, a1, z2, a2, ke):         57 def lindhard_robinson(z1, a1, z2, a2, ke):
 60 el=30.724*z1*z2*math.sqrt(z1**0.6667+z2**0.666     58 el=30.724*z1*z2*math.sqrt(z1**0.6667+z2**0.6667)*(a1+a2)/a2
 61 fl=0.0793*z1**0.6667*math.sqrt(z2)*(a1+a2)**1.     59 fl=0.0793*z1**0.6667*math.sqrt(z2)*(a1+a2)**1.5/
 62 ((z1**0.6667+z2**0.6667)**0.75*a1**1.5*math.sq     60 ((z1**0.6667+z2**0.6667)**0.75*a1**1.5*math.sqrt(a2))
 63 eps=ke*(1.0/el)                                    61 eps=ke*(1.0/el)
 64 return 1.0/(1+fl*(3.4008*eps**0.16667+0.40244*     62 return 1.0/(1+fl*(3.4008*eps**0.16667+0.40244*eps**0.75+eps))
 65 */                                                 63 */
 66                                                    64 
 67 G4LindhardRobinsonPartition::G4LindhardRobinso <<  65 G4LindhardRobinsonPartition::G4LindhardRobinsonPartition() 
 68 {                                                  66 {
 69   max_z = 120;                                     67   max_z = 120;
 70   for (size_t i = 1; i < max_z; i++) {         <<  68   for(size_t i=1; i<max_z; i++) {z23[i]=std::pow((G4double)i, 2./3.);}
 71     z23[i] = std::pow((G4double)i, 2. / 3.);   << 
 72   }                                            << 
 73 }                                                  69 }
 74                                                    70 
 75 //....oooOO0OOooo........oooOO0OOooo........oo <<  71 G4double G4LindhardRobinsonPartition::PartitionNIEL(
 76                                                <<  72    G4int z1, G4double a1, const G4Material *material, G4double energy) const
 77 G4double G4LindhardRobinsonPartition::Partitio << 
 78                                                << 
 79                                                << 
 80 {                                                  73 {
 81   size_t nMatElements = material->GetNumberOfE     74   size_t nMatElements = material->GetNumberOfElements();
 82                                                <<  75         
 83   const G4double* atomDensities = material->Ge <<  76   const G4double *atomDensities=material->GetVecNbOfAtomsPerVolume();
 84   G4double maxdens = 0.0;                      <<  77   G4double maxdens=0.0;
 85   size_t maxindex = 0;                         <<  78   size_t maxindex=0;
 86   for (size_t k = 0; k < nMatElements; k++) {  <<  79   for (size_t k=0 ; k < nMatElements ; k++ )
 87     if (atomDensities[k] > maxdens) {          <<  80     {
 88       maxdens = atomDensities[k];              <<  81       if(atomDensities[k] > maxdens) {
 89       maxindex = k;                            <<  82         maxdens=atomDensities[k];
                                                   >>  83         maxindex=k;
                                                   >>  84       }
 90     }                                              85     }
 91   }                                            <<  86   const G4Element *element=material->GetElement(maxindex);
 92   const G4Element* element = material->GetElem << 
 93                                                    87 
 94   G4int z2 = G4int(element->GetZ());           <<  88   G4int z2=G4int(element->GetZ());
                                                   >>  89         
                                                   >>  90   G4double a2=element->GetA()/(Avogadro*amu);
                                                   >>  91         
                                                   >>  92   G4double zpow=z23[z1]+z23[z2];
                                                   >>  93   G4double asum=a1+a2;
                                                   >>  94         
                                                   >>  95   G4double el=30.724*z1*z2*std::sqrt(zpow)*asum/a2;
                                                   >>  96   G4double fl=0.0793*z23[z1]*std::sqrt(z2*asum*asum*asum/(a1*a1*a1*a2))
                                                   >>  97               /std::pow(zpow, 0.75);
                                                   >>  98   G4double eps=(energy/eV)*(1.0/el);
 95                                                    99 
 96   G4double a2 = element->GetA() / (Avogadro *  << 100   return 
 97                                                << 101     1.0/(1+fl*(3.4008*std::pow(eps, 0.16667)+0.40244*std::pow(eps, 0.75)+eps));
 98   G4double zpow = z23[z1] + z23[z2];           << 
 99   G4double asum = a1 + a2;                     << 
100                                                << 
101   G4double el = 30.724 * z1 * z2 * std::sqrt(z << 
102   G4double fl = 0.0793 * z23[z1] * std::sqrt(z << 
103                 / std::pow(zpow, 0.75);        << 
104   G4double eps = (energy / eV) * (1.0 / el);   << 
105                                                << 
106   return 1.0 / (1 + fl * (3.4008 * std::pow(ep << 
107 }                                                 102 }
                                                   >> 103 
108                                                   104