Geant4-11
Public Member Functions | Private Attributes
G4OrlicLiXsModel Class Reference

#include <G4OrlicLiXsModel.hh>

Public Member Functions

G4double CalculateL1CrossSection (G4int zTarget, G4double energyIncident)
 
G4double CalculateL2CrossSection (G4int zTarget, G4double energyIncident)
 
G4double CalculateL3CrossSection (G4int zTarget, G4double energyIncident)
 
 G4OrlicLiXsModel ()
 
 G4OrlicLiXsModel (const G4OrlicLiXsModel &)=delete
 
G4OrlicLiXsModeloperator= (const G4OrlicLiXsModel &right)=delete
 
virtual ~G4OrlicLiXsModel ()
 

Private Attributes

G4AtomicTransitionManagertransitionManager
 

Detailed Description

Definition at line 53 of file G4OrlicLiXsModel.hh.

Constructor & Destructor Documentation

◆ G4OrlicLiXsModel() [1/2]

G4OrlicLiXsModel::G4OrlicLiXsModel ( )
explicit

Definition at line 54 of file G4OrlicLiXsModel.cc.

55{
57}
static G4AtomicTransitionManager * Instance()
G4AtomicTransitionManager * transitionManager

References G4AtomicTransitionManager::Instance(), and transitionManager.

◆ ~G4OrlicLiXsModel()

G4OrlicLiXsModel::~G4OrlicLiXsModel ( )
virtual

Definition at line 61 of file G4OrlicLiXsModel.cc.

62{;}

◆ G4OrlicLiXsModel() [2/2]

G4OrlicLiXsModel::G4OrlicLiXsModel ( const G4OrlicLiXsModel )
delete

Member Function Documentation

◆ CalculateL1CrossSection()

G4double G4OrlicLiXsModel::CalculateL1CrossSection ( G4int  zTarget,
G4double  energyIncident 
)

Definition at line 68 of file G4OrlicLiXsModel.cc.

70{
71
72 if ( zTarget < 41 )//fixed: no control on z!
73 {
74 return 0;
75 }
76
77 G4double l1BindingEnergy = transitionManager->Shell(zTarget,1)->BindingEnergy()/keV;
78 G4double lamda = 1836.109; //massIncident/electron_mass_c2;
79
80 G4double normalizedEnergy = (energyIncident/keV)/(lamda*l1BindingEnergy);
81
82 G4double x = std::log(normalizedEnergy);
83
84 G4double a0 = 0.;
85 G4double a1 = 0.;
86 G4double a2 = 0.;
87 G4double a3 = 0.;
88 G4double a4 = 0.;
89 G4double a5 = 0.;
90 G4double a6 = 0.;
91 G4double a7 = 0.;
92 G4double a8 = 0.;
93 G4double a9 = 0.;
94
95 if ( (zTarget>=41 && zTarget<=50) && (normalizedEnergy>=0.013 && normalizedEnergy<=1) )
96 {
97 a0=11.274881;
98 a1=-0.187401;
99 a2=-0.943341;
100 a3=-1.47817;
101 a4=-1.282343;
102 a5=-0.386544;
103 a6=-0.037932;
104 a7=0.;
105 a8=0.;
106 a9=0.;
107 }
108 else if ( (zTarget>=51 && zTarget<=60) && (normalizedEnergy>=0.012 && normalizedEnergy<=0.95))
109 {
110 a0=11.242637;
111 a1=-0.162515;
112 a2=1.035774;
113 a3=3.970908;
114 a4=3.968233;
115 a5=1.655714;
116 a6=0.058885;
117 a7=-0.155743;
118 a8=-0.042228;
119 a9=-0.003371;
120 }
121 else if ( (zTarget>=61 && zTarget<=70) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.6) )
122 {
123 a0=6.476722;
124 a1=-25.804787;
125 a2=-54.061629;
126 a3=-56.684589;
127 a4=-33.223367;
128 a5=-11.034979;
129 a6=-2.042851;
130 a7=-0.194075;
131 a8=-0.007252;
132 a9=0.;
133 }
134 else if ( (zTarget>=71 && zTarget<=80) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.45) )
135 {
136 a0=12.776794;
137 a1=6.562907;
138 a2=10.158703;
139 a3=7.432592;
140 a4=2.332036;
141 a5=0.317946;
142 a6=0.014479;
143 a7=0.;
144 a8=0.;
145 a9=0.;
146 }
147 else if ( (zTarget>=81 && zTarget<=92) && (normalizedEnergy>=0.008 && normalizedEnergy<=0.3) )
148 {
149 a0=28.243087;
150 a1=50.199585;
151 a2=58.281684;
152 a3=34.130538;
153 a4=10.268531;
154 a5=1.525302;
155 a6=0.08835;
156 a7=0.;
157 a8=0.;
158 a9=0.;
159 }
160 else {return 0;}
161
162
163 G4double analyticalFunction = a0 + (a1*x)+(a2*x*x)+(a3*std::pow(x,3))+
164 (a4*std::pow(x,4))+(a5*std::pow(x,5))+(a6*std::pow(x,6))+
165 (a7*std::pow(x,7))+(a8*std::pow(x,8))+(a9*std::pow(x,9));
166
167 G4double L1crossSection = G4Exp(analyticalFunction)/(l1BindingEnergy*l1BindingEnergy);
168
169 if (L1crossSection >= 0) {
170 return L1crossSection * barn;
171 }
172 else {return 0;}
173}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
const G4double a0
static constexpr double barn
Definition: G4SIunits.hh:85
static constexpr double keV
Definition: G4SIunits.hh:202
double G4double
Definition: G4Types.hh:83
G4double BindingEnergy() const
G4AtomicShell * Shell(G4int Z, size_t shellIndex) const

References a0, barn, G4AtomicShell::BindingEnergy(), G4Exp(), keV, G4AtomicTransitionManager::Shell(), and transitionManager.

Referenced by G4empCrossSection::CrossSection(), and G4empCrossSection::GetCrossSection().

◆ CalculateL2CrossSection()

G4double G4OrlicLiXsModel::CalculateL2CrossSection ( G4int  zTarget,
G4double  energyIncident 
)

Definition at line 177 of file G4OrlicLiXsModel.cc.

179{
180 if ( zTarget < 41) //fixed: no control on z!)
181 {
182 return 0;
183 }
184
185 G4double massIncident;
186 G4Proton* aProtone = G4Proton::Proton();
187
188 massIncident = aProtone->GetPDGMass();
189
190 G4double L2crossSection;
191
192 G4double l2BindingEnergy = (transitionManager->Shell(zTarget,2)->BindingEnergy())/keV;
193 G4double lamda = massIncident/electron_mass_c2;
194 G4double normalizedEnergy = (energyIncident/keV)/(lamda*l2BindingEnergy);
195 G4double x = std::log(normalizedEnergy);
196
197 G4double a0 = 0.;
198 G4double a1 = 0.;
199 G4double a2 = 0.;
200 G4double a3 = 0.;
201 G4double a4 = 0.;
202 G4double a5 = 0.;
203
204 if ( (zTarget>=41 && zTarget<=50) && (normalizedEnergy>=0.015 && normalizedEnergy<=1.5))
205 {
206 a0=11.194798;
207 a1=0.178807;
208 a2=-0.449865;
209 a3=-0.063528;
210 a4=-0.015364;
211 a5=0.;
212 }
213 else if ( (zTarget>=51 && zTarget<=60) && (normalizedEnergy>=0.012 && normalizedEnergy<=1.0))
214 {
215 a0=11.241409;
216 a1=0.149635;
217 a2=-0.633269;
218 a3=-0.17834;
219 a4=-0.034743;
220 a5=0.006474; // a little bit better if this is zero (respect to ecpssr)
221 }
222 else if ( (zTarget>=61 && zTarget<=70) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.65))
223 {
224 a0=11.247424;
225 a1=0.203051;
226 a2=-0.219083;
227 a3=0.164514;
228 a4=0.058692;
229 a5=0.007866;
230 }
231 else if ( (zTarget>=71 && zTarget<=80) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.47))
232 {
233 a0=11.229924;
234 a1=-0.087241;
235 a2=-0.753908;
236 a3=-0.181546;
237 a4=-0.030406;
238 a5=0.;
239 }
240 else if ( (zTarget>=81 && zTarget<=92) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.35))
241 {
242 a0=11.586671;
243 a1=0.730838;
244 a2=-0.056713;
245 a3=0.053262;
246 a4=-0.003672;
247 a5=0.;
248 }
249 else {return 0;}
250
251 G4double analyticalFunction = a0 + (a1*x)+(a2*x*x)+(a3*std::pow(x,3))+
252 (a4*std::pow(x,4))+(a5*std::pow(x,5));
253
254 L2crossSection = G4Exp(analyticalFunction)/(l2BindingEnergy*l2BindingEnergy);
255
256 if (L2crossSection >= 0) {
257 return L2crossSection * barn;
258 }
259 else {return 0;}
260}
static G4Proton * Proton()
Definition: G4Proton.cc:92
float electron_mass_c2
Definition: hepunit.py:273

References a0, barn, G4AtomicShell::BindingEnergy(), source.hepunit::electron_mass_c2, G4Exp(), G4ParticleDefinition::GetPDGMass(), keV, G4Proton::Proton(), G4AtomicTransitionManager::Shell(), and transitionManager.

Referenced by G4empCrossSection::CrossSection(), and G4empCrossSection::GetCrossSection().

◆ CalculateL3CrossSection()

G4double G4OrlicLiXsModel::CalculateL3CrossSection ( G4int  zTarget,
G4double  energyIncident 
)

Definition at line 264 of file G4OrlicLiXsModel.cc.

266{
267
268 if ( zTarget < 41) //fixed: no control on z!
269 {
270 return 0;
271 }
272
273 G4double massIncident;
274 G4Proton* aProtone = G4Proton::Proton();
275 massIncident = aProtone->GetPDGMass();
276
277 G4double L3crossSection;
278 G4double l3BindingEnergy = (transitionManager->Shell(zTarget,3)->BindingEnergy())/keV;
279
280 G4double lamda = massIncident/electron_mass_c2;
281 G4double normalizedEnergy = (energyIncident/keV)/(lamda*l3BindingEnergy);
282 G4double x = std::log(normalizedEnergy);
283
284 G4double a0 = 0.;
285 G4double a1 = 0.;
286 G4double a2 = 0.;
287 G4double a3 = 0.;
288 G4double a4 = 0.;
289 G4double a5 = 0.;
290
291 if ( (zTarget>=41 && zTarget<=50 ) && (normalizedEnergy>=0.015 && normalizedEnergy<=1.5))
292 {
293 a0=11.91837;
294 a1=0.03064;
295 a2=-0.657644;
296 a3=-0.14532;
297 a4=-0.026059;
298 //a5=-0.044735; Correction to Orlic model as explained in
299 //Abdelhwahed H Incerti S and Mantero A 2009 Nucl. Instrum. Meth.B 267 37
300 }
301 else if ( (zTarget>=51 && zTarget<=60 ) && (normalizedEnergy>=0.013 && normalizedEnergy<=1.1))
302 {
303 a0=11.909485;
304 a1=0.15918;
305 a2=-0.588004;
306 a3=-0.159466;
307 a4=-0.033184;
308 }
309 else if ( (zTarget>=61 && zTarget<=70 ) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.67))
310 {
311 a0=11.878472;
312 a1=-0.137007;
313 a2=-0.959475;
314 a3=-0.316505;
315 a4=-0.054154;
316 }
317 else if ( (zTarget>=71 && zTarget<=80 ) && (normalizedEnergy>=0.013 && normalizedEnergy<=0.5))
318 {
319 a0=11.802538;
320 a1=-0.371796;
321 a2=-1.052238;
322 a3=-0.28766;
323 a4=-0.042608;
324 }
325 else if ( (zTarget>=81 && zTarget<=92 ) && (normalizedEnergy>=0.01 && normalizedEnergy<=0.35))
326 {
327 a0=11.423712;
328 a1=-1.428823;
329 a2=-1.946979;
330 a3=-0.585198;
331 a4=-0.076467;
332 }
333 else {return 0;}
334
335 G4double analyticalFunction = a0 + (a1*x)+(a2*x*x)+
336 (a3*std::pow(x,3))+(a4*std::pow(x,4))+(a5*std::pow(x,5));
337
338 L3crossSection = G4Exp(analyticalFunction)/(l3BindingEnergy*l3BindingEnergy);
339
340 if (L3crossSection >= 0) {
341 return L3crossSection * barn;
342 }
343 else {return 0;}
344}

References a0, barn, G4AtomicShell::BindingEnergy(), source.hepunit::electron_mass_c2, G4Exp(), G4ParticleDefinition::GetPDGMass(), keV, G4Proton::Proton(), G4AtomicTransitionManager::Shell(), and transitionManager.

Referenced by G4empCrossSection::CrossSection(), and G4empCrossSection::GetCrossSection().

◆ operator=()

G4OrlicLiXsModel & G4OrlicLiXsModel::operator= ( const G4OrlicLiXsModel right)
delete

Field Documentation

◆ transitionManager

G4AtomicTransitionManager* G4OrlicLiXsModel::transitionManager
private

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