Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4RToEConvForGamma Class Reference

#include <G4RToEConvForGamma.hh>

+ Inheritance diagram for G4RToEConvForGamma:

Public Member Functions

 G4RToEConvForGamma ()
 
virtual ~G4RToEConvForGamma ()
 
- Public Member Functions inherited from G4VRangeToEnergyConverter
 G4VRangeToEnergyConverter ()
 
virtual ~G4VRangeToEnergyConverter ()
 
 G4VRangeToEnergyConverter (const G4VRangeToEnergyConverter &r)=delete
 
G4VRangeToEnergyConverteroperator= (const G4VRangeToEnergyConverter &r)=delete
 
G4bool operator== (const G4VRangeToEnergyConverter &r) const =delete
 
G4bool operator!= (const G4VRangeToEnergyConverter &r) const =delete
 
virtual G4double Convert (const G4double rangeCut, const G4Material *material)
 
const G4ParticleDefinitionGetParticleType () const
 
void SetVerboseLevel (G4int value)
 
G4int GetVerboseLevel () const
 

Protected Member Functions

G4double ComputeValue (const G4int Z, const G4double kinEnergy) final
 
- Protected Member Functions inherited from G4VRangeToEnergyConverter

Additional Inherited Members

- Static Public Member Functions inherited from G4VRangeToEnergyConverter
static void SetEnergyRange (const G4double lowedge, const G4double highedge)
 
static G4double GetLowEdgeEnergy ()
 
static G4double GetHighEdgeEnergy ()
 
static G4double GetMaxEnergyCut ()
 
static void SetMaxEnergyCut (const G4double value)
 
- Protected Attributes inherited from G4VRangeToEnergyConverter
const G4ParticleDefinitiontheParticle = nullptr
 
G4int fPDG = 0
 

Detailed Description

Definition at line 40 of file G4RToEConvForGamma.hh.

Constructor & Destructor Documentation

◆ G4RToEConvForGamma()

G4RToEConvForGamma::G4RToEConvForGamma ( )
explicit

Definition at line 40 of file G4RToEConvForGamma.cc.

42{
44 if (theParticle == nullptr)
45 {
46#ifdef G4VERBOSE
47 if (GetVerboseLevel()>0)
48 {
49 G4cout << " G4RToEConvForGamma::G4RToEConvForGamma() - ";
50 G4cout << "Gamma is not defined !!" << G4endl;
51 }
52#endif
53 }
54 else
55 {
57 }
58}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
const G4ParticleDefinition * theParticle

◆ ~G4RToEConvForGamma()

G4RToEConvForGamma::~G4RToEConvForGamma ( )
virtual

Definition at line 61 of file G4RToEConvForGamma.cc.

62{}

Member Function Documentation

◆ ComputeValue()

G4double G4RToEConvForGamma::ComputeValue ( const G4int Z,
const G4double kinEnergy )
finalprotectedvirtual

Implements G4VRangeToEnergyConverter.

Definition at line 65 of file G4RToEConvForGamma.cc.

67{
68 // Compute the "absorption" cross-section of the photon "absorption".
69 // Cross-section means here the sum of the cross-sections of the
70 // pair production, Compton scattering and photoelectric processes
71
72 const G4double t1keV = 1.*CLHEP::keV;
73 const G4double t200keV = 200.*CLHEP::keV;
74 const G4double t100MeV = 100.*CLHEP::MeV;
75
76 G4double Zsquare = Z*Z;
77 G4double Zlog = G4Pow::GetInstance()->logZ(Z);
78 G4double Zlogsquare = Zlog*Zlog;
79
80 G4double tmin = (0.552+218.5/Z+557.17/Zsquare)*CLHEP::MeV;
81 G4double tlow = 0.2*G4Exp(-7.355/std::sqrt(Z))*CLHEP::MeV;
82
83 G4double smin = (0.01239+0.005585*Zlog-0.000923*Zlogsquare)*G4Exp(1.5*Zlog);
84 G4double s200keV = (0.2651-0.1501*Zlog+0.02283*Zlogsquare)*Zsquare;
85
86 G4double cminlog = G4Log(tmin/t200keV);
87 G4double cmin = G4Log(s200keV/smin)/(cminlog*cminlog);
88
89 G4double slowlog = G4Log(t200keV/tlow);
90 G4double slow = s200keV * G4Exp(0.042*Z*slowlog*slowlog);
91 G4double logtlow = G4Log(tlow/t1keV);
92 G4double clow = G4Log(300.*Zsquare/slow)/logtlow;
93 G4double chigh = (7.55e-5 - 0.0542e-5*Z)*Zsquare*Z/G4Log(t100MeV/tmin);
94
95 // Calculate the cross-section (using an approximate empirical formula)
96 G4double xs;
97 if ( energy < tlow )
98 {
99 xs = (energy < t1keV) ? slow*G4Exp(clow*logtlow) :
100 slow*G4Exp(clow*G4Log(tlow/energy));
101 }
102 else if ( energy < t200keV )
103 {
104 G4double x = G4Log(t200keV/energy);
105 xs = s200keV * G4Exp(0.042*Z*x*x);
106 }
107 else if( energy<tmin )
108 {
109 const G4double x = G4Log(tmin/energy);
110 xs = smin * G4Exp(cmin*x*x);
111 }
112 else
113 {
114 xs = smin + chigh*G4Log(energy/tmin);
115 }
116 return xs * CLHEP::barn;
117}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition G4Exp.hh:180
G4double G4Log(G4double x)
Definition G4Log.hh:227
double G4double
Definition G4Types.hh:83
static G4Pow * GetInstance()
Definition G4Pow.cc:41
G4double logZ(G4int Z) const
Definition G4Pow.hh:137
G4double energy(const ThreeVector &p, const G4double m)

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