Geant4  10.03.p03
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4LindhardRobinsonPartition Class Reference

#include <G4LindhardPartition.hh>

Inheritance diagram for G4LindhardRobinsonPartition:
Collaboration diagram for G4LindhardRobinsonPartition:

Public Member Functions

 G4LindhardRobinsonPartition ()
 
virtual ~G4LindhardRobinsonPartition ()
 
virtual G4double PartitionNIEL (G4int z1, G4double a1, const G4Material *material, G4double energy) const
 
- Public Member Functions inherited from G4VNIELPartition
 G4VNIELPartition ()
 
virtual ~G4VNIELPartition ()
 

Public Attributes

G4double z23 [120]
 
size_t max_z
 

Detailed Description

Definition at line 56 of file G4LindhardPartition.hh.

Constructor & Destructor Documentation

G4LindhardRobinsonPartition::G4LindhardRobinsonPartition ( )

Definition at line 66 of file G4LindhardPartition.cc.

67 {
68  max_z = 120;
69  for(size_t i=1; i<max_z; i++) {z23[i]=std::pow((G4double)i, 2./3.);}
70 }
double G4double
Definition: G4Types.hh:76
virtual G4LindhardRobinsonPartition::~G4LindhardRobinsonPartition ( )
inlinevirtual

Definition at line 60 of file G4LindhardPartition.hh.

60 { }

Member Function Documentation

G4double G4LindhardRobinsonPartition::PartitionNIEL ( G4int  z1,
G4double  a1,
const G4Material material,
G4double  energy 
) const
virtual

Implements G4VNIELPartition.

Definition at line 72 of file G4LindhardPartition.cc.

74 {
75  size_t nMatElements = material->GetNumberOfElements();
76 
77  const G4double *atomDensities=material->GetVecNbOfAtomsPerVolume();
78  G4double maxdens=0.0;
79  size_t maxindex=0;
80  for (size_t k=0 ; k < nMatElements ; k++ )
81  {
82  if(atomDensities[k] > maxdens) {
83  maxdens=atomDensities[k];
84  maxindex=k;
85  }
86  }
87  const G4Element *element=material->GetElement(maxindex);
88 
89  G4int z2=G4int(element->GetZ());
90 
91  G4double a2=element->GetA()/(Avogadro*amu);
92 
93  G4double zpow=z23[z1]+z23[z2];
94  G4double asum=a1+a2;
95 
96  G4double el=30.724*z1*z2*std::sqrt(zpow)*asum/a2;
97  G4double fl=0.0793*z23[z1]*std::sqrt(z2*asum*asum*asum/(a1*a1*a1*a2))
98  /std::pow(zpow, 0.75);
99  G4double eps=(energy/eV)*(1.0/el);
100 
101  return
102  1.0/(1+fl*(3.4008*std::pow(eps, 0.16667)+0.40244*std::pow(eps, 0.75)+eps));
103 }
G4double GetZ() const
Definition: G4Element.hh:131
static const G4double eps
const G4Element * GetElement(G4int iel) const
Definition: G4Material.hh:202
G4double GetA() const
Definition: G4Element.hh:139
int G4int
Definition: G4Types.hh:78
float Avogadro
Definition: hepunit.py:253
const G4double * GetVecNbOfAtomsPerVolume() const
Definition: G4Material.hh:206
static constexpr double eV
Definition: G4SIunits.hh:215
G4double energy(const ThreeVector &p, const G4double m)
size_t GetNumberOfElements() const
Definition: G4Material.hh:186
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Member Data Documentation

size_t G4LindhardRobinsonPartition::max_z

Definition at line 67 of file G4LindhardPartition.hh.

G4double G4LindhardRobinsonPartition::z23[120]

Definition at line 66 of file G4LindhardPartition.hh.


The documentation for this class was generated from the following files: