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

#include <G4ProtonInelasticCrossSection.hh>

Inheritance diagram for G4ProtonInelasticCrossSection:
Collaboration diagram for G4ProtonInelasticCrossSection:

Public Member Functions

 G4ProtonInelasticCrossSection ()
 
 ~G4ProtonInelasticCrossSection ()
 
virtual G4bool IsElementApplicable (const G4DynamicParticle *aPart, G4int Z, const G4Material *)
 
virtual G4double GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *)
 
G4double GetProtonCrossSection (G4double kineticEnergy, G4int Z)
 
- Public Member Functions inherited from G4VCrossSectionDataSet
 G4VCrossSectionDataSet (const G4String &nam="")
 
virtual ~G4VCrossSectionDataSet ()
 
virtual G4bool IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=0, const G4Material *mat=0)
 
G4double GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0)
 
G4double ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0)
 
virtual G4double GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0)
 
virtual G4IsotopeSelectIsotope (const G4Element *, G4double kinEnergy)
 
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)
 
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 52 of file G4ProtonInelasticCrossSection.hh.

Constructor & Destructor Documentation

G4ProtonInelasticCrossSection::G4ProtonInelasticCrossSection ( )

Definition at line 41 of file G4ProtonInelasticCrossSection.cc.

42  : G4VCrossSectionDataSet("Axen-Wellisch"),thEnergy(19.8*CLHEP::GeV)
43 {
44  nist = G4NistManager::Instance();
45  theProton = G4Proton::Proton();
46 }
G4VCrossSectionDataSet(const G4String &nam="")
static G4NistManager * Instance()
static G4Proton * Proton()
Definition: G4Proton.cc:93
static constexpr double GeV

Here is the call graph for this function:

G4ProtonInelasticCrossSection::~G4ProtonInelasticCrossSection ( )

Definition at line 48 of file G4ProtonInelasticCrossSection.cc.

49 {}

Member Function Documentation

G4double G4ProtonInelasticCrossSection::GetElementCrossSection ( const G4DynamicParticle aPart,
G4int  Z,
const G4Material  
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 59 of file G4ProtonInelasticCrossSection.cc.

62 {
63  return GetProtonCrossSection(aPart->GetKineticEnergy(), Z);
64 }
G4double GetKineticEnergy() const
G4double GetProtonCrossSection(G4double kineticEnergy, G4int Z)

Here is the call graph for this function:

G4double G4ProtonInelasticCrossSection::GetProtonCrossSection ( G4double  kineticEnergy,
G4int  Z 
)

Definition at line 66 of file G4ProtonInelasticCrossSection.cc.

68 {
69  if(kineticEnergy <= 0.0) { return 0.0; }
70 
71  // constant cross section above ~20GeV
72  if (kineticEnergy > thEnergy) { kineticEnergy = thEnergy; }
73 
74  G4double a = nist->GetAtomicMassAmu(Z);
75  G4double a13 = G4Pow::GetInstance()->powA(a,-0.3333333333);
76  G4int nOfNeutrons = G4lrint(a) - Z;
77  kineticEnergy /=GeV;
78  G4double alog10E = std::log10(kineticEnergy);
79 
80  static const G4double nuleonRadius=1.36e-15;
81  static const G4double fac=CLHEP::pi*nuleonRadius*nuleonRadius;
82 
83  G4double b0 = 2.247-0.915*(1 - a13);
84  G4double fac1 = b0*(1 - a13);
85  G4double fac2 = 1.;
86  if(nOfNeutrons > 1) { fac2=G4Log((G4double(nOfNeutrons))); }
87  G4double crossSection = 1.0E31*fac*fac2*(1. + 1./a13 - fac1);
88 
89  // high energy correction
90  crossSection *= (1 - 0.15*G4Exp(-kineticEnergy))/(1.0 - 0.0007*a);
91 
92  // first try on low energies: rise
93  G4double ff1= 0.70-0.002*a; // slope of the drop at medium energies.
94  G4double ff2= 1.00+1/a; // start of the slope.
95  G4double ff3= 0.8+18/a-0.002*a; // stephight
96 
97  G4double ff4= 1.0 - (1.0/(1+G4Exp(-8*ff1*(alog10E + 1.37*ff2))));
98 
99  crossSection *= (1 + ff3*ff4);
100 
101  // low energy return to zero
102 
103  ff1=1. - 1./a - 0.001*a; // slope of the rise
104  ff2=1.17 - 2.7/a - 0.0014*a; // start of the rise
105 
106  ff4=-8.*ff1*(alog10E + 2.0*ff2);
107 
108  crossSection *= millibarn/(1. + G4Exp(ff4));
109  return crossSection;
110 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:55
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:259
std::vector< ExP01TrackerHit * > a
Definition: ExP01Classes.hh:33
int G4int
Definition: G4Types.hh:78
G4double G4Log(G4double x)
Definition: G4Log.hh:230
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
int G4lrint(double ad)
Definition: templates.hh:163
G4double GetAtomicMassAmu(const G4String &symb) const
static constexpr double GeV
Definition: G4SIunits.hh:217
static const G4double fac
double G4double
Definition: G4Types.hh:76
static constexpr double pi
Definition: SystemOfUnits.h:54
static constexpr double millibarn
Definition: G4SIunits.hh:106

Here is the call graph for this function:

Here is the caller graph for this function:

G4bool G4ProtonInelasticCrossSection::IsElementApplicable ( const G4DynamicParticle aPart,
G4int  Z,
const G4Material  
)
virtual

Reimplemented from G4VCrossSectionDataSet.

Definition at line 52 of file G4ProtonInelasticCrossSection.cc.

55 {
56  return ((1 < Z) && (aPart->GetDefinition() == theProton));
57 }
G4ParticleDefinition * GetDefinition() const

Here is the call graph for this function:


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