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

#include <G4IonProtonCrossSection.hh>

+ Inheritance diagram for G4IonProtonCrossSection:

Public Member Functions

 G4IonProtonCrossSection ()
 
 ~G4IonProtonCrossSection () override
 
G4double GetProtonCrossSection (const G4DynamicParticle *, G4int Z)
 
G4double GetDeuteronCrossSection (const G4DynamicParticle *, G4int Z)
 
G4double GetTritonCrossSection (const G4DynamicParticle *, G4int Z)
 
G4double GetHe3CrossSection (const G4DynamicParticle *, G4int Z)
 
G4double GetAlphaCrossSection (const G4DynamicParticle *, G4int Z)
 
G4bool IsElementApplicable (const G4DynamicParticle *aPart, G4int Z, const G4Material *) override
 
G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr) override
 
G4double GetElementCrossSection (const G4DynamicParticle *aPart, G4int Z, const G4Material *) override
 
G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr) override
 
void BuildPhysicsTable (const G4ParticleDefinition &) override
 
void CrossSectionDescription (std::ostream &) const override
 
- Public Member Functions inherited from G4VCrossSectionDataSet
 G4VCrossSectionDataSet (const G4String &nam="")
 
virtual ~G4VCrossSectionDataSet ()
 
virtual G4bool IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=nullptr)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr)
 
virtual const G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy, G4double logE)
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void DumpPhysicsTable (const G4ParticleDefinition &)
 
virtual void CrossSectionDescription (std::ostream &) const
 
virtual G4int GetVerboseLevel () const
 
virtual void SetVerboseLevel (G4int value)
 
G4double GetMinKinEnergy () const
 
void SetMinKinEnergy (G4double value)
 
G4double GetMaxKinEnergy () const
 
void SetMaxKinEnergy (G4double value)
 
bool ForAllAtomsAndEnergies () const
 
void SetForAllAtomsAndEnergies (G4bool val)
 
const G4StringGetName () const
 

Additional Inherited Members

- Protected Member Functions inherited from G4VCrossSectionDataSet
void SetName (const G4String &)
 
- Protected Attributes inherited from G4VCrossSectionDataSet
G4int verboseLevel
 

Detailed Description

Definition at line 57 of file G4IonProtonCrossSection.hh.

Constructor & Destructor Documentation

◆ G4IonProtonCrossSection()

G4IonProtonCrossSection::G4IonProtonCrossSection ( )
explicit

Definition at line 49 of file G4IonProtonCrossSection.cc.

50 : G4VCrossSectionDataSet("InvProtonXS")
51{
55 xsHe3 = new G4ParticleInelasticXS(G4He3::He3());
57}
static G4Alpha * Alpha()
Definition: G4Alpha.cc:88
static G4Deuteron * Deuteron()
Definition: G4Deuteron.cc:93
static G4He3 * He3()
Definition: G4He3.cc:93
static G4Proton * Proton()
Definition: G4Proton.cc:92
static G4Triton * Triton()
Definition: G4Triton.cc:94

◆ ~G4IonProtonCrossSection()

G4IonProtonCrossSection::~G4IonProtonCrossSection ( )
override

Definition at line 59 of file G4IonProtonCrossSection.cc.

60{}

Member Function Documentation

◆ BuildPhysicsTable()

void G4IonProtonCrossSection::BuildPhysicsTable ( const G4ParticleDefinition )
overridevirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 138 of file G4IonProtonCrossSection.cc.

139{
143 xsHe3->BuildPhysicsTable(*G4He3::He3());
145}
void BuildPhysicsTable(const G4ParticleDefinition &) final

◆ CrossSectionDescription()

void G4IonProtonCrossSection::CrossSectionDescription ( std::ostream &  outFile) const
overridevirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 148 of file G4IonProtonCrossSection.cc.

149{
150 outFile << "G4IonProtonCrossSection calculates the inelastic cross section\n"
151 << "for any ion projectile with Z >=2 only on hydrogen target.\n"
152 << "It uses the inverse kinematics and the G4ParticleInelasticXS\n"
153 << "cross section.\n";
154}

◆ GetAlphaCrossSection()

G4double G4IonProtonCrossSection::GetAlphaCrossSection ( const G4DynamicParticle dp,
G4int  Z 
)

Definition at line 87 of file G4IonProtonCrossSection.cc.

88{
89 return xsAlpha->GetElementCrossSection(dp, Z);
90}
G4double GetElementCrossSection(const G4DynamicParticle *, G4int Z, const G4Material *mat=nullptr) final

◆ GetDeuteronCrossSection()

G4double G4IonProtonCrossSection::GetDeuteronCrossSection ( const G4DynamicParticle dp,
G4int  Z 
)

Definition at line 69 of file G4IonProtonCrossSection.cc.

70{
71 return xsDeuteron->GetElementCrossSection(dp, Z);
72}

◆ GetElementCrossSection()

G4double G4IonProtonCrossSection::GetElementCrossSection ( const G4DynamicParticle aPart,
G4int  Z,
const G4Material  
)
overridevirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 107 of file G4IonProtonCrossSection.cc.

109{
110 G4int A = (1 == Z) ? 1 : 4;
111 return GetIsoCrossSection(dp, Z, A);
112}
double A(double temperature)
int G4int
Definition: G4Types.hh:85
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=nullptr, const G4Element *elm=nullptr, const G4Material *mat=nullptr) override

◆ GetHe3CrossSection()

G4double G4IonProtonCrossSection::GetHe3CrossSection ( const G4DynamicParticle dp,
G4int  Z 
)

Definition at line 81 of file G4IonProtonCrossSection.cc.

82{
83 return xsHe3->GetElementCrossSection(dp, Z);
84}

◆ GetIsoCrossSection()

G4double G4IonProtonCrossSection::GetIsoCrossSection ( const G4DynamicParticle dp,
G4int  Z,
G4int  A,
const G4Isotope iso = nullptr,
const G4Element elm = nullptr,
const G4Material mat = nullptr 
)
overridevirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 115 of file G4IonProtonCrossSection.cc.

120{
121 const G4ParticleDefinition* p = dp->GetDefinition();
122 G4double e = dp->GetKineticEnergy()*CLHEP::proton_mass_c2/p->GetPDGMass();
123 G4double res = 0.0;
124 if(1 == Z && 1 == A) {
125 res = xsProton->IsoCrossSection(e, G4Log(e), Z, A);
126 } else if(1 == Z && 2 == A) {
127 res = xsDeuteron->IsoCrossSection(e, G4Log(e), Z, A);
128 } else if(1 == Z && 3 == A) {
129 res = xsTriton->IsoCrossSection(e, G4Log(e), Z, A);
130 } else if(2 == Z && 3 == A) {
131 res = xsHe3->IsoCrossSection(e, G4Log(e), Z, A);
132 } else if(2 == Z && 4 == A) {
133 res = xsAlpha->IsoCrossSection(e, G4Log(e), Z, A);
134 }
135 return res;
136}
G4double G4Log(G4double x)
Definition: G4Log.hh:226
double G4double
Definition: G4Types.hh:83
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double IsoCrossSection(G4double ekin, G4double logE, G4int Z, G4int A)

Referenced by GetElementCrossSection().

◆ GetProtonCrossSection()

G4double G4IonProtonCrossSection::GetProtonCrossSection ( const G4DynamicParticle dp,
G4int  Z 
)

Definition at line 63 of file G4IonProtonCrossSection.cc.

64{
65 return xsProton->GetElementCrossSection(dp, Z);
66}

◆ GetTritonCrossSection()

G4double G4IonProtonCrossSection::GetTritonCrossSection ( const G4DynamicParticle dp,
G4int  Z 
)

Definition at line 75 of file G4IonProtonCrossSection.cc.

76{
77 return xsTriton->GetElementCrossSection(dp, Z);
78}

◆ IsElementApplicable()

G4bool G4IonProtonCrossSection::IsElementApplicable ( const G4DynamicParticle aPart,
G4int  Z,
const G4Material  
)
overridevirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 92 of file G4IonProtonCrossSection.cc.

94{
95 return (Z <= 2);
96}

◆ IsIsoApplicable()

G4bool G4IonProtonCrossSection::IsIsoApplicable ( const G4DynamicParticle ,
G4int  Z,
G4int  A,
const G4Element elm = nullptr,
const G4Material mat = nullptr 
)
overridevirtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 98 of file G4IonProtonCrossSection.cc.

102{
103 return (Z <= 2 && A <= 4);
104}

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