Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
G4PomeronCrossSection Class Reference

#include <G4PomeronCrossSection.hh>

Public Member Functions

 G4PomeronCrossSection (const G4ParticleDefinition *)
 
 G4PomeronCrossSection (const G4Proton *)
 
 G4PomeronCrossSection (const G4Neutron *)
 
 G4PomeronCrossSection (const G4PionPlus *)
 
 G4PomeronCrossSection (const G4PionMinus *)
 
 G4PomeronCrossSection (const G4PionZero *)
 
 G4PomeronCrossSection (const G4KaonPlus *)
 
 G4PomeronCrossSection (const G4KaonMinus *)
 
 G4PomeronCrossSection (const G4KaonZero *)
 
 G4PomeronCrossSection (const G4KaonZeroLong *)
 
 G4PomeronCrossSection (const G4KaonZeroShort *)
 
 G4PomeronCrossSection (const G4Gamma *)
 
 ~G4PomeronCrossSection ()
 
G4double GetTotalCrossSection (const G4double s)
 
G4double GetDiffractiveCrossSection (const G4double s)
 
G4double GetElasticCrossSection (const G4double s)
 
G4double GetInelasticCrossSection (const G4double s)
 
G4double GetTotalProbability (const G4double s, const G4double impactsquare)
 
G4double GetDiffractiveProbability (const G4double s, const G4double impactsquare)
 
G4double GetNondiffractiveProbability (const G4double s, const G4double impactsquare)
 
G4double GetElasticProbability (const G4double s, const G4double impactsquare)
 
G4double GetInelasticProbability (const G4double s, const G4double impactsquare)
 
G4double GetCutPomeronProbability (const G4double s, const G4double impactsquare, const G4int nPomerons)
 
void Setgamma (const G4double agam)
 
G4double SoftEikonal (G4double s, G4double impactsquare)
 
G4double HardEikonal (G4double s, G4double impactsquare)
 
void Pomeron_S (G4double apomeron_S)
 
void Pomeron_Gamma (G4double apomeron_Gamma)
 
void Pomeron_C (G4double apomeron_C)
 
void Pomeron_Rsquare (G4double apomeron_Rsquare)
 
void Pomeron_Alpha (G4double apomeron_Alpha)
 
void Pomeron_Alphaprime (G4double apomeron_Alphaprime)
 
void Pomeron_Gamma_Hard (G4double apomeron_Gamma_Hard)
 
void Pomeron_Alpha_Hard (G4double apomeron_Alpha_Hard)
 

Detailed Description

Definition at line 45 of file G4PomeronCrossSection.hh.

Constructor & Destructor Documentation

G4PomeronCrossSection::G4PomeronCrossSection ( const G4ParticleDefinition particle)

Definition at line 46 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection(), G4ParticleDefinition::GetBaryonNumber(), and G4ParticleDefinition::GetPDGEncoding().

Referenced by G4PomeronCrossSection().

47  {
48  G4int Encoding = std::abs(particle->GetPDGEncoding());
49 
50  if (std::abs(particle->GetBaryonNumber())!=0)
51  InitForNucleon();
52  else if (Encoding/100== 3 || Encoding/10 == 3)
53  InitForKaon();
54  else
55  InitForPion();
56  }
int G4int
Definition: G4Types.hh:78
G4PomeronCrossSection::G4PomeronCrossSection ( const G4Proton )

Definition at line 60 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

61 {
62  InitForNucleon();
63 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4Neutron )

Definition at line 64 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

65 {
66  InitForNucleon();
67 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4PionPlus )

Definition at line 69 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

70 {
71  InitForPion();
72 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4PionMinus )

Definition at line 73 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

74 {
75  InitForPion();
76 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4PionZero )

Definition at line 77 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

78 {
79  InitForPion();
80 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4KaonPlus )

Definition at line 82 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

83 {
84  InitForKaon();
85 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4KaonMinus )

Definition at line 86 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

87 {
88  InitForKaon();
89 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4KaonZero )

Definition at line 90 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

91 {
92  InitForKaon();
93 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4KaonZeroLong )

Definition at line 94 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

95 {
96  InitForKaon();
97 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4KaonZeroShort )

Definition at line 98 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

99 {
100  InitForKaon();
101 }
G4PomeronCrossSection::G4PomeronCrossSection ( const G4Gamma )

Definition at line 102 of file G4PomeronCrossSection.cc.

References G4PomeronCrossSection().

103 {
104  InitForGamma();
105 }
G4PomeronCrossSection::~G4PomeronCrossSection ( )

Definition at line 42 of file G4PomeronCrossSection.cc.

43 {;}

Member Function Documentation

G4double G4PomeronCrossSection::GetCutPomeronProbability ( const G4double  s,
const G4double  impactsquare,
const G4int  nPomerons 
)

Definition at line 165 of file G4PomeronCrossSection.cc.

References G4Pow::factorial(), and G4Pow::GetInstance().

167 {
168  G4double factorial=G4Pow::GetInstance()->factorial(nPomerons);
169 
170  return std::exp(-2*Eikonal(S,impactsquare))/pomeron_C*
171  std::pow(2*Eikonal(S,impactsquare),nPomerons)/factorial;
172 }
static G4Pow * GetInstance()
Definition: G4Pow.cc:53
G4double factorial(G4int Z) const
Definition: G4Pow.hh:268
double G4double
Definition: G4Types.hh:76
G4double G4PomeronCrossSection::GetDiffractiveCrossSection ( const G4double  s)

Definition at line 119 of file G4PomeronCrossSection.cc.

References GetElasticCrossSection().

120 {
121  return ( pomeron_C -1) * GetElasticCrossSection(S);
122 }
G4double GetElasticCrossSection(const G4double s)
G4double G4PomeronCrossSection::GetDiffractiveProbability ( const G4double  s,
const G4double  impactsquare 
)

Definition at line 137 of file G4PomeronCrossSection.cc.

References GetNondiffractiveProbability(), and GetTotalProbability().

Referenced by GetInelasticProbability().

139 {
140  return (pomeron_C-1)/pomeron_C *
141  (GetTotalProbability(S,impactsquare) -
142  GetNondiffractiveProbability(S,impactsquare));
143 }
G4double GetTotalProbability(const G4double s, const G4double impactsquare)
G4double GetNondiffractiveProbability(const G4double s, const G4double impactsquare)
G4double G4PomeronCrossSection::GetElasticCrossSection ( const G4double  s)

Definition at line 114 of file G4PomeronCrossSection.cc.

Referenced by GetDiffractiveCrossSection(), and GetInelasticCrossSection().

115 {
116  return SigP(S)/pomeron_C *(Expand(Z(S)/2) - Expand(Z(S)));
117 }
G4double G4PomeronCrossSection::GetElasticProbability ( const G4double  s,
const G4double  impactsquare 
)

Definition at line 151 of file G4PomeronCrossSection.cc.

References GetInelasticProbability(), and GetTotalProbability().

153 {
154  return (GetTotalProbability(S,impactsquare) -
155  GetInelasticProbability(S,impactsquare));
156 }
G4double GetInelasticProbability(const G4double s, const G4double impactsquare)
G4double GetTotalProbability(const G4double s, const G4double impactsquare)
G4double G4PomeronCrossSection::GetInelasticCrossSection ( const G4double  s)

Definition at line 124 of file G4PomeronCrossSection.cc.

References GetElasticCrossSection(), and GetTotalCrossSection().

125 {
127 }
G4double GetTotalCrossSection(const G4double s)
G4double GetElasticCrossSection(const G4double s)
G4double G4PomeronCrossSection::GetInelasticProbability ( const G4double  s,
const G4double  impactsquare 
)

Definition at line 158 of file G4PomeronCrossSection.cc.

References GetDiffractiveProbability(), and GetNondiffractiveProbability().

Referenced by GetElasticProbability().

160 {
161  return GetNondiffractiveProbability(S,impactsquare) +
162  GetDiffractiveProbability(S,impactsquare);
163 }
G4double GetNondiffractiveProbability(const G4double s, const G4double impactsquare)
G4double GetDiffractiveProbability(const G4double s, const G4double impactsquare)
G4double G4PomeronCrossSection::GetNondiffractiveProbability ( const G4double  s,
const G4double  impactsquare 
)

Definition at line 145 of file G4PomeronCrossSection.cc.

Referenced by GetDiffractiveProbability(), and GetInelasticProbability().

147 {
148  return (1-std::exp(-2*Eikonal(S,impactsquare)))/pomeron_C;
149 }
G4double G4PomeronCrossSection::GetTotalCrossSection ( const G4double  s)

Definition at line 107 of file G4PomeronCrossSection.cc.

Referenced by GetInelasticCrossSection().

108 {
109  G4double FZ2= Expand(Z(S)/2);
110  return SigP(S) * FZ2;
111 }
double G4double
Definition: G4Types.hh:76
G4double G4PomeronCrossSection::GetTotalProbability ( const G4double  s,
const G4double  impactsquare 
)

Definition at line 131 of file G4PomeronCrossSection.cc.

Referenced by GetDiffractiveProbability(), and GetElasticProbability().

133 {
134  return 2/pomeron_C*(1-std::exp(-1*Eikonal(S,impactsquare)));
135 }
G4double G4PomeronCrossSection::HardEikonal ( G4double  s,
G4double  impactsquare 
)

Definition at line 313 of file G4PomeronCrossSection.cc.

References python.hepunit::hbarc_squared.

314  {
315  return Zhard(S)/2*std::exp(-impactsquare/LambdaHard(S)/hbarc_squared/4);
316  }
void G4PomeronCrossSection::Pomeron_Alpha ( G4double  apomeron_Alpha)
inline

Definition at line 95 of file G4PomeronCrossSection.hh.

95 { pomeron_Alpha = apomeron_Alpha;}
void G4PomeronCrossSection::Pomeron_Alpha_Hard ( G4double  apomeron_Alpha_Hard)
inline

Definition at line 98 of file G4PomeronCrossSection.hh.

98 { pomeron_Alpha_Hard = apomeron_Alpha_Hard;}
void G4PomeronCrossSection::Pomeron_Alphaprime ( G4double  apomeron_Alphaprime)
inline

Definition at line 96 of file G4PomeronCrossSection.hh.

96 { pomeron_Alphaprime = apomeron_Alphaprime;}
void G4PomeronCrossSection::Pomeron_C ( G4double  apomeron_C)
inline

Definition at line 93 of file G4PomeronCrossSection.hh.

93 { pomeron_C = apomeron_C;}
void G4PomeronCrossSection::Pomeron_Gamma ( G4double  apomeron_Gamma)
inline

Definition at line 92 of file G4PomeronCrossSection.hh.

92 { pomeron_Gamma = apomeron_Gamma;}
void G4PomeronCrossSection::Pomeron_Gamma_Hard ( G4double  apomeron_Gamma_Hard)
inline

Definition at line 97 of file G4PomeronCrossSection.hh.

97 { pomeron_Gamma_Hard = apomeron_Gamma_Hard;}
void G4PomeronCrossSection::Pomeron_Rsquare ( G4double  apomeron_Rsquare)
inline

Definition at line 94 of file G4PomeronCrossSection.hh.

94 { pomeron_Rsquare = apomeron_Rsquare;}
void G4PomeronCrossSection::Pomeron_S ( G4double  apomeron_S)
inline

Definition at line 91 of file G4PomeronCrossSection.hh.

91 { pomeron_S = apomeron_S;}
void G4PomeronCrossSection::Setgamma ( const G4double  agam)

Definition at line 175 of file G4PomeronCrossSection.cc.

References python.hepunit::GeV.

176 {
177  pomeron_Gamma=agam/GeV/GeV;
178 }
G4double G4PomeronCrossSection::SoftEikonal ( G4double  s,
G4double  impactsquare 
)

Definition at line 308 of file G4PomeronCrossSection.cc.

References python.hepunit::hbarc_squared.

309  {
310  return Zsoft(S)/2*std::exp(-impactsquare/LambdaSoft(S)/hbarc_squared/4);
311  }

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