Geant4-11
Public Member Functions | Private Member Functions | Private Attributes | Friends
G4ElasticData Class Reference

#include <G4ElasticHadrNucleusHE.hh>

Public Member Functions

 G4ElasticData (const G4ParticleDefinition *h, G4int Z, G4int A, const G4double *e)
 
 ~G4ElasticData ()
 

Private Member Functions

void DefineNucleusParameters (G4int A)
 
 G4ElasticData (const G4ElasticData &)
 
G4ElasticDataoperator= (const G4ElasticData &right)
 

Private Attributes

G4double Aeff
 
G4double dQ2
 
std::vector< G4doublefCumProb [NENERGY]
 
G4double massA
 
G4double massA2
 
G4double maxQ2 [NENERGY]
 
G4double Pnucl
 
G4double R1
 
G4double R2
 

Friends

class G4ElasticHadrNucleusHE
 

Detailed Description

Definition at line 64 of file G4ElasticHadrNucleusHE.hh.

Constructor & Destructor Documentation

◆ G4ElasticData() [1/2]

G4ElasticData::G4ElasticData ( const G4ParticleDefinition h,
G4int  Z,
G4int  A,
const G4double e 
)

Definition at line 100 of file G4ElasticHadrNucleusHE.cc.

102{
103 G4double massGeV = p->GetPDGMass()*invGeV;
104 G4double mass2GeV2= massGeV*massGeV;
105
107 G4double limitQ2 = 35./(R1*R1); // (GeV/c)^2
108
110 massA2 = massA*massA;
111 /*
112 G4cout << " G4ElasticData for " << p->GetParticleName()
113 << " Z= " << Z << " A= " << A << " R1= " << R1
114 << " R2= " << R2 << G4endl;
115 */
116 for(G4int kk = 0; kk<NENERGY; ++kk)
117 {
118 G4double elab = e[kk] + massGeV;
119 G4double plab2= e[kk]*(e[kk] + 2.0*massGeV);
120 G4double Q2m = 4.0*plab2*massA2/(mass2GeV2 + massA2 + 2.*massA*elab);
121
122 if(Z == 1 && p == G4Proton::Proton()) { Q2m *= 0.5; }
123
124 maxQ2[kk] = Q2m;
125 /*
126 G4cout << " Ekin= " << e[kk] << " Q2m= " << Q2m
127 << " limitQ2= " << limitQ2 << G4endl;
128 */
129 }
130
131 dQ2 = limitQ2/(G4double)(ONQ2-2);
132}
const G4double invGeV
static const G4int NENERGY
static const G4int ONQ2
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
const G4int Z[17]
const G4double A[17]
G4double maxQ2[NENERGY]
void DefineNucleusParameters(G4int A)
static G4double GetNuclearMass(const G4double A, const G4double Z)
static G4Proton * Proton()
Definition: G4Proton.cc:92

References A, DefineNucleusParameters(), dQ2, G4NucleiProperties::GetNuclearMass(), G4ParticleDefinition::GetPDGMass(), invGeV, massA, massA2, maxQ2, NENERGY, ONQ2, G4Proton::Proton(), R1, and Z.

◆ ~G4ElasticData()

G4ElasticData::~G4ElasticData ( )
inline

Definition at line 74 of file G4ElasticHadrNucleusHE.hh.

74{}

◆ G4ElasticData() [2/2]

G4ElasticData::G4ElasticData ( const G4ElasticData )
private

Member Function Documentation

◆ DefineNucleusParameters()

void G4ElasticData::DefineNucleusParameters ( G4int  A)
private

Definition at line 136 of file G4ElasticHadrNucleusHE.cc.

137{
138 switch (A) {
139 case 207:
140 case 208:
141 R1 = 20.5;
142 R2 = 15.74;
143 Pnucl = 0.4;
144 Aeff = 0.7;
145 break;
146 case 237:
147 case 238:
148 R1 = 21.7;
149 R2 = 16.5;
150 Pnucl = 0.4;
151 Aeff = 0.7;
152 break;
153 case 90:
154 case 91:
155 R1 = 16.5;
156 R2 = 11.62;
157 Pnucl = 0.4;
158 Aeff = 0.7;
159 break;
160 case 58:
161 case 59:
162 R1 = 15.75;
163 R2 = 9.9;
164 Pnucl = 0.45;
165 Aeff = 0.85;
166 break;
167 case 48:
168 case 47:
169 R1 = 14.0;
170 R2 = 9.26;
171 Pnucl = 0.31;
172 Aeff = 0.75;
173 break;
174 case 40:
175 case 41:
176 R1 = 13.3;
177 R2 = 9.26;
178 Pnucl = 0.31;
179 Aeff = 0.75;
180 break;
181 case 28:
182 case 29:
183 R1 = 12.0;
184 R2 = 7.64;
185 Pnucl = 0.253;
186 Aeff = 0.8;
187 break;
188 case 16:
189 R1 = 10.50;
190 R2 = 5.5;
191 Pnucl = 0.7;
192 Aeff = 0.98;
193 break;
194 case 12:
195 R1 = 9.3936;
196 R2 = 4.63;
197 Pnucl = 0.7;
198 Aeff = 1.0;
199 break;
200 case 11:
201 R1 = 9.0;
202 R2 = 5.42;
203 Pnucl = 0.19;
204 Aeff = 0.9;
205 break;
206 case 9:
207 R1 = 9.9;
208 R2 = 6.5;
209 Pnucl = 0.690;
210 Aeff = 0.95;
211 break;
212 case 4:
213 R1 = 5.3;
214 R2 = 3.7;
215 Pnucl = 0.4;
216 Aeff = 0.75;
217 break;
218 case 1:
219 R1 = 4.5;
220 R2 = 2.3;
221 Pnucl = 0.177;
222 Aeff = 0.9;
223 break;
224 default:
225 R1 = 4.45*G4Exp(G4Log((G4double)(A - 1))*0.309)*0.9;
226 R2 = 2.3 *G4Exp(G4Log((G4double)A)* 0.36);
227
228 if(A < 100 && A > 3) { Pnucl = 0.176 + 0.00275*A; }
229 else { Pnucl = 0.4; }
230 //G4cout<<" Deault: A= "<<A<<" R1 R2 Aeff Pnucl "<<R1<<" "<<R2<<" "
231 // <<Aeff<<" "<<Pnucl<<G4endl;
232
233 if(A >= 100) { Aeff = 0.7; }
234 else if(A < 100 && A > 75) { Aeff = 1.5 - 0.008*A; }
235 else { Aeff = 0.9; }
236 break;
237 }
238 //G4cout<<" Result: A= "<<A<<" R1 R2 Aeff Pnucl "<<R1<<" "<<R2<<" "
239 // <<Aeff<<" "<<Pnucl<<G4endl;
240}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
G4double G4Log(G4double x)
Definition: G4Log.hh:226

References A, Aeff, G4Exp(), G4Log(), Pnucl, R1, and R2.

Referenced by G4ElasticData().

◆ operator=()

G4ElasticData & G4ElasticData::operator= ( const G4ElasticData right)
private

Friends And Related Function Documentation

◆ G4ElasticHadrNucleusHE

friend class G4ElasticHadrNucleusHE
friend

Definition at line 67 of file G4ElasticHadrNucleusHE.hh.

Field Documentation

◆ Aeff

G4double G4ElasticData::Aeff
private

◆ dQ2

G4double G4ElasticData::dQ2
private

◆ fCumProb

std::vector<G4double> G4ElasticData::fCumProb[NENERGY]
private

◆ massA

G4double G4ElasticData::massA
private

Definition at line 86 of file G4ElasticHadrNucleusHE.hh.

Referenced by G4ElasticData().

◆ massA2

G4double G4ElasticData::massA2
private

Definition at line 87 of file G4ElasticHadrNucleusHE.hh.

Referenced by G4ElasticData().

◆ maxQ2

G4double G4ElasticData::maxQ2[NENERGY]
private

◆ Pnucl

G4double G4ElasticData::Pnucl
private

◆ R1

G4double G4ElasticData::R1
private

◆ R2

G4double G4ElasticData::R2
private

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