Geant4-11
Public Member Functions | Private Types | Private Attributes
G4Reggeons Class Reference

#include <G4Reggeons.hh>

Public Member Functions

void CalculateXs ()
 
G4double Chi_pomeron (G4double Mult, G4double B)
 
G4double Chi_reggeon (G4double Mult, G4double B)
 
 G4Reggeons (const G4ParticleDefinition *)
 
G4double Get_Cprojectile ()
 
G4double Get_Ctarget ()
 
G4double GetDDiffX ()
 
G4double GetElasticX ()
 
G4double GetInelX ()
 
G4double GetND_X ()
 
G4double GetNDp_X ()
 
G4double GetNDr_X ()
 
G4double GetPrDiffX ()
 
void GetProbabilities (G4double B, G4int Mode, G4double &Pint, G4double &Pprd, G4double &Ptrd, G4double &Pdd, G4double &Pnd, G4double &Pnvr)
 
G4double GetTotalX ()
 
G4double GetTotalXp ()
 
G4double GetTotalXr ()
 
G4double GetTrDiffX ()
 
G4int ncPomerons ()
 
void SetS (G4double S)
 
 ~G4Reggeons ()
 

Private Types

enum  { ALL , WITHOUT_R , NON_DIFF }
 

Private Attributes

G4double Alpha_pomeron
 
G4double Alpha_pomeronHard
 
G4double Alphaprime_pomeron
 
G4double C_pomeron
 
G4double chiPin
 
G4double Cpr_pomeron
 
G4double Ctr_pomeron
 
G4double FParity
 
G4double Freggeon_Alpha
 
G4double Freggeon_Alphaprime
 
G4double Freggeon_C
 
G4double Freggeon_Gamma
 
G4double Freggeon_Rsquare
 
G4double Gamma_pomeron
 
G4double Gamma_pomeronHard
 
G4double Rsquare_pomeron
 
G4double S0_pomeron
 
G4double Sint =0.
 
G4ParticleDefinitionTarget =G4Proton::Proton()
 
G4double WParity
 
G4double Wreggeon_Alpha
 
G4double Wreggeon_Alphaprime
 
G4double Wreggeon_C
 
G4double Wreggeon_Gamma
 
G4double Wreggeon_Rsquare
 
G4double XDDiff
 
G4double Xelastic
 
G4double Xinel
 
G4double Xnd
 
G4double XndP
 
G4double XndR
 
G4double Xpr_Diff
 
G4double Xtotal
 
G4double XtotalP
 
G4double XtotalR
 
G4double Xtr_Diff
 

Detailed Description

Definition at line 46 of file G4Reggeons.hh.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
ALL 
WITHOUT_R 
NON_DIFF 

Definition at line 85 of file G4Reggeons.hh.

Constructor & Destructor Documentation

◆ G4Reggeons()

G4Reggeons::G4Reggeons ( const G4ParticleDefinition particle)

Definition at line 37 of file G4Reggeons.cc.

38{
39 // Kaidalov&Piskunova Orig
40 Alpha_pomeron = 1.12; //0.9808;
41 Alphaprime_pomeron = 0.22/GeV/GeV; //0.25/GeV/GeV;
42 S0_pomeron = 1.0*GeV*GeV; //2.7*GeV*GeV;
43
44 Alpha_pomeronHard = 1.47;
46
47 G4int PDGcode = particle->GetPDGEncoding();
48 G4int absPDGcode = std::abs(PDGcode);
49
50 //-------------------------------------------------------
51 // Kaidalov&Piskunova Orig
52 G4double C_pomeron_NN = 1.5;
53 G4double C_pomeron_N = std::sqrt(C_pomeron_NN);
54
55 G4double Gamma_pomeron_NN = 2.14/GeV/GeV; //(2.6+3.96)
56 G4double Gamma_pomeron_N = std::sqrt(Gamma_pomeron_NN);
57 G4double Gamma_pomeron_Pr(0.), Gamma_pomeron_Tr(0.);
58
59 G4double Rsquare_pomeron_NN = 3.30/GeV/GeV; //3.56
60 G4double Rsquare_pomeron_N = Rsquare_pomeron_NN/2.;
61 G4double Rsquare_pomeron_Pr(0.), Rsquare_pomeron_Tr(0.);
62 //-------------------------------------------------------
63
64 // Copied from G4HadronNucleonXsc::HyperonNucleonXscNS(...)
65 G4double coeff = 1.0;
66 static const G4double lBarCof1S = 0.88;
67 static const G4double lBarCof2S = 0.76;
68 static const G4double lBarCof3S = 0.64;
69 static const G4double lBarCof1C = 0.784378;
70 static const G4double lBarCofSC = 0.664378;
71 static const G4double lBarCof2SC = 0.544378;
72 static const G4double lBarCof1B = 0.740659;
73 static const G4double lBarCofSB = 0.620659;
74 static const G4double lBarCof2SB = 0.500659;
75 // End of Copied from G4HadronNucleonXsc::HyperonNucleonXscNS(...)
76
77 // Copied from G4HadronNucleonXsc::SCBMesonNucleonXscNS(...)
78 static const G4double llMesCof1C = 0.676568;
79 static const G4double llMesCof1B = 0.610989;
80 static const G4double llMesCof2C = 0.353135;
81 static const G4double llMesCof2B = 0.221978;
82 static const G4double llMesCofSC = 0.496568;
83 static const G4double llMesCofSB = 0.430989;
84 static const G4double llMesCofCB = 0.287557;
85 static const G4double llMesCofEtaP = 0.88;
86 static const G4double llMesCofEta = 0.76;
87 // End of Copied from G4HadronNucleonXsc::SCBMesonNucleonXscNS(...)
88
89 if ( absPDGcode > 1000 ) { // Projectile is baryon or anti_baryon --------
90
91 Cpr_pomeron = C_pomeron_N; // Shower enhancement coefficient for projectile
92 Ctr_pomeron = C_pomeron_N; // Shower enhancement coefficient for target
94
95 Gamma_pomeron_Pr = Gamma_pomeron_N; // vertex constant for projectile
96 Gamma_pomeron_Tr = Gamma_pomeron_N; // vertex constant for target
97 Gamma_pomeron = Gamma_pomeron_Pr * Gamma_pomeron_Tr;
98
99 Rsquare_pomeron_Pr = Rsquare_pomeron_N; // R^2 of pomeron-projectile interaction
100 Rsquare_pomeron_Tr = Rsquare_pomeron_N; // R^2 of pomeron-target interaction
101 Rsquare_pomeron = Rsquare_pomeron_Pr + Rsquare_pomeron_Tr;
102
103 Freggeon_Alpha = 0.7; // Intersept of f-trajectory
104 Freggeon_Alphaprime = 0.8/GeV/GeV; // Slope of f-trajectory
105 Freggeon_Gamma = sqr(2.871)/GeV/GeV; // Vertex constant of f-meson - nucleon interactions
106 Freggeon_Rsquare = 2*0.916/GeV/GeV; // R^2 of f-meson - nucleon interactions
107 Freggeon_C = 1.0; // Shower enhancement coefficient
108 FParity = +1; // Parity of the trajectory
109
110 Wreggeon_Alpha = 0.4; // Intersept of omega-trajectory (w)
111 Wreggeon_Alphaprime = 0.9/GeV/GeV; // Slope of w-trajectory
112 Wreggeon_Gamma = sqr(2.241)/GeV/GeV; // Vertex constant of w-meson - nucleon interactions
113 Wreggeon_Rsquare = 2*0.945/GeV/GeV *0.5; // R^2 of w-meson - nucleon interactions
114 Wreggeon_C = 1.0; // Shower enhancement coefficient
115 if (PDGcode > 0) WParity = -1; // Parity +1 for Pbar P, and -1 for PP interactions
116 if (PDGcode < 0) WParity = +1;
117
118 // Copied from G4HadronNucleonXsc::HyperonNucleonXscNS(...)
119 if ( PDGcode == 3122 || PDGcode == 3222 || // Lambda or Sigma+ or
120 PDGcode == 3112 || PDGcode == 3212 || // Sigma- or Sigma0 or
121 PDGcode ==-3122 || PDGcode ==-3222 || // anti_Lambda or anti_Sigma+ or
122 PDGcode ==-3112 || PDGcode ==-3212 ) { // anti_Sigma- or anti_Sigma0
123 coeff = lBarCof1S;
124 }
125 if ( PDGcode == 3312 || PDGcode == 3322 || // Xi- or Xi0 or
126 PDGcode ==-3312 || PDGcode ==-3322 ) { // anti_Xi- or anti_Xi0
127 coeff = lBarCof2S;
128 }
129 if ( PDGcode == 3334 || PDGcode ==-3334 ) { // Omega- or anti_Omega-
130 coeff = lBarCof3S;
131 }
132 if ( PDGcode == 4122 || PDGcode ==-4122 || // Lambda_c+ or anti_Lambda_c+ or
133 PDGcode == 4222 || PDGcode ==-4222 || // Sigma_c++ or anti_Sigma_c++ or
134 PDGcode == 4212 || PDGcode ==-4212 || // Sigma_c+ or anti_Sigma_c+ or
135 PDGcode == 4112 || PDGcode ==-4112 ) { // Sigma_c0 or anti_Sigma_c0
136 coeff = lBarCof1C;
137 }
138 if ( PDGcode == 4332 || PDGcode ==-4332 ) { // Omega_c0 or anti_Omega_c0
139 coeff = lBarCof2SC;
140 }
141 if ( PDGcode == 4232 || PDGcode == 4132 || // Xi_c+ or Xi_c0 or
142 PDGcode ==-4232 || PDGcode ==-4132 ) { // anti_Xi_c+ or anti_Xi_c0
143 coeff = lBarCofSC;
144 }
145 if ( PDGcode == 5122 || PDGcode ==-5122 || // Lambda_b0 or anti_Lambda_b0 or
146 PDGcode == 5222 || PDGcode ==-5222 || // Sigma_b+ or anti_Sigma_b+ or
147 PDGcode == 5112 || PDGcode ==-5112 || // Sigma_b- or anti_Sigma_b- or
148 PDGcode == 5212 || PDGcode ==-5212 ) { // Sigma_b0 or anti_Sigma_b0
149 coeff = lBarCof1B;
150 }
151 if ( PDGcode == 5332 || PDGcode ==-5332 ) { // Omega_b- or anti_Omega_b-
152 coeff = lBarCof2SB;
153 }
154 if ( PDGcode == 5132 || PDGcode == 5232 || // Xi_b- or Xi_b0 or
155 PDGcode ==-5132 || PDGcode ==-5232 ) { // anti_Xi_b- or anti_Xi_b0
156 coeff = lBarCofSB;
157 }
158 // End of Copied from G4HadronNucleonXsc::HyperonNucleonXscNS(...)
159
160 Gamma_pomeron_Pr *= coeff;
161
162 } else if ( absPDGcode == 211 || PDGcode == 111 || absPDGcode >= 400 ) { // Projectile is a nonstrange meson
163
164 Cpr_pomeron = 1.352;
165 Ctr_pomeron = C_pomeron_N;
167 // KP
168 Gamma_pomeron_Pr = 0.89/GeV; // 0.85 -> 0.89 // Uzhi
169 Gamma_pomeron_Tr = Gamma_pomeron_N;
170 Gamma_pomeron = Gamma_pomeron_Pr * Gamma_pomeron_Tr;
171
172 Rsquare_pomeron_Pr = 0.5/GeV/GeV;
173 Rsquare_pomeron_Tr = Rsquare_pomeron_N;
174 Rsquare_pomeron = Rsquare_pomeron_Pr + Rsquare_pomeron_Tr;
175
176 Freggeon_Alpha = 0.7;
178 Freggeon_Gamma = 3.524/GeV/GeV;
180 Freggeon_C = 1.0;
181 FParity = +1;
182
183 Wreggeon_Alpha = 0.5;
184 Wreggeon_Gamma = 0.56/GeV/GeV; // 1.12 -> 0.56 Uzhi
185 Wreggeon_Rsquare = 9.19/GeV/GeV;
187 Wreggeon_C = 1.0;
188 if (PDGcode > 0) WParity = -1;
189 if (PDGcode < 0) WParity = +1;
190
191 // Copied from G4HadronNucleonXsc::SCBMesonNucleonXscNS(...)
192 if ( PDGcode == 511 || PDGcode ==-511 || // B0 or anti_B0 or
193 PDGcode == 521 || PDGcode ==-521 ) { // B+ or B-
194 coeff = llMesCof1B;
195 }
196 if ( PDGcode == 421 || PDGcode ==-421 || // D0 or anti_D0 or
197 PDGcode == 411 || PDGcode ==-411 ) { // D+ or D-
198 coeff = llMesCof1C;
199 }
200 if ( PDGcode == 531 || PDGcode ==-531 ) { // Bs0 or anti_Bs0 or
201 coeff = llMesCofSB;
202 }
203 if ( PDGcode == 541 || PDGcode ==-541 ) { // Bc+ or Bc-
204 coeff = llMesCofCB;
205 }
206 if ( PDGcode == 431 || PDGcode ==-431 ) { // D_s+ or D_s-
207 coeff = llMesCofSC;
208 }
209 if ( PDGcode == 441 || PDGcode == 443 ) { // Eta_c or J/psi
210 coeff = llMesCof2C;
211 }
212 if ( PDGcode == 553 ) { // Upsilon
213 coeff = llMesCof2B;
214 }
215 if ( PDGcode == 221 ) { // Eta
216 coeff = llMesCofEta;
217 }
218 if ( PDGcode == 331 ) { // Eta'
219 coeff = llMesCofEtaP;
220 }
221 // End of Copied from G4HadronNucleonXsc::SCBMesonNucleonXscNS(...)
222
223 Gamma_pomeron_Pr *= coeff;
224
225 } else if ( absPDGcode == 321 || absPDGcode == 311 ||
226 PDGcode == 130 || PDGcode == 310 ) { // Projectile is a Kaon
227
228 Cpr_pomeron = 1.522;
229 Ctr_pomeron = C_pomeron_N;
231
232 Gamma_pomeron_Pr = 0.90/GeV;
233 Gamma_pomeron_Tr = Gamma_pomeron_N;
234 Gamma_pomeron = Gamma_pomeron_Pr * Gamma_pomeron_Tr;
235
236 Rsquare_pomeron_Pr = 0.31/GeV/GeV;
237 Rsquare_pomeron_Tr = Rsquare_pomeron_N;
238 Rsquare_pomeron = Rsquare_pomeron_Pr + Rsquare_pomeron_Tr;
239
240 Freggeon_Alpha = 0.7;
242 Freggeon_Gamma = 1.32/GeV/GeV;
244
245 Freggeon_C = 1.0;
246 FParity = +1;
247
248 Wreggeon_Alpha = 0.4;
250 Wreggeon_Gamma = 1.68/GeV/GeV;
251 Wreggeon_Rsquare = 9.19/GeV/GeV;
252 Wreggeon_C = 1.0;
253
254 if (PDGcode > 0) WParity = -1;
255 if (PDGcode < 0) WParity = +1;
256
257 } else if ( absPDGcode == 22 ) { // Projectile is Gamma
258
259 Cpr_pomeron = 1.437;
260 Ctr_pomeron = C_pomeron_N;
262
263 Gamma_pomeron_Pr = 0.0035/GeV; // 1.415
264 Gamma_pomeron_Tr = Gamma_pomeron_N;
265 Gamma_pomeron = Gamma_pomeron_Pr * Gamma_pomeron_Tr;
266
267 Rsquare_pomeron_Pr = 0.51/GeV/GeV;
268 Rsquare_pomeron_Tr = Rsquare_pomeron_N;
269 Rsquare_pomeron = Rsquare_pomeron_Pr + Rsquare_pomeron_Tr;
270
271 Freggeon_Alpha = 0.7;
273 Freggeon_Gamma = 0.011/GeV/GeV;
275 Freggeon_C = 1.0;
276 FParity = +1;
277
278 Wreggeon_Alpha = 0.;
280 Wreggeon_Gamma = 0.01/GeV/GeV;
282 Wreggeon_C = 1.0;
283 WParity = +1;
284
285 } else { // Projectile is undefined, Nucleon assumed
286
287 Cpr_pomeron = C_pomeron_N;
288 Ctr_pomeron = C_pomeron_N;
290
291 Gamma_pomeron_Pr = Gamma_pomeron_N;
292 Gamma_pomeron_Tr = Gamma_pomeron_N;
293 Gamma_pomeron = Gamma_pomeron_Pr * Gamma_pomeron_Tr;
294
295 Rsquare_pomeron_Pr = Rsquare_pomeron_N;
296 Rsquare_pomeron_Tr = Rsquare_pomeron_N;
297 Rsquare_pomeron = Rsquare_pomeron_Pr + Rsquare_pomeron_Tr;
298
299 Freggeon_Alpha = 0.723;
300 Freggeon_Gamma = 8.801/GeV/GeV;
301 Freggeon_Rsquare = 0.396/GeV/GeV;
303 Freggeon_C = 1.0;
304 FParity = +1;
305
306 Wreggeon_Alpha = 0.353;
307 Wreggeon_Gamma = 8.516/GeV/GeV;
308 Wreggeon_Rsquare = 24.40/GeV/GeV;
310 Wreggeon_C = 1.0;
311 WParity = -1;
312
313 }
314
315 chiPin=0.;
316 Xtotal =0.; XtotalP=0.; XtotalR=0.;
317 Xelastic=0.; Xpr_Diff=0.; Xtr_Diff=0.; XDDiff=0.;
318 Xinel =0.; Xnd=0.; XndP=0.; XndR=0.;
319 /*
320 G4cout<<G4endl<<"Reggeon's parameters for Particle "<<particle->GetParticleName()<<" "<<PDGcode<<G4endl<<G4endl;
321 G4cout<<"Alpha_pomeron "<<Alpha_pomeron;
322 G4cout<<" Alphaprime_pomeron "<<Alphaprime_pomeron*GeV*GeV;
323 G4cout<<" S0_pomeron "<<S0_pomeron/GeV/GeV<<G4endl;
324 G4cout<<"Gamma_pomeron "<<Gamma_pomeron*GeV*GeV;
325 G4cout<<" Rsquare_pomeron "<<Rsquare_pomeron*GeV*GeV;
326 G4cout<<" C_pomeron "<<C_pomeron<<G4endl<<G4endl;
327 G4int Uzhi; G4cin>>Uzhi;
328 */
329}
static constexpr double GeV
Definition: G4SIunits.hh:203
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
G4double Alpha_pomeronHard
Definition: G4Reggeons.hh:90
G4double Gamma_pomeronHard
Definition: G4Reggeons.hh:90
G4double Wreggeon_Rsquare
Definition: G4Reggeons.hh:93
G4double Freggeon_C
Definition: G4Reggeons.hh:92
G4double chiPin
Definition: G4Reggeons.hh:101
G4double C_pomeron
Definition: G4Reggeons.hh:95
G4double Wreggeon_C
Definition: G4Reggeons.hh:93
G4double FParity
Definition: G4Reggeons.hh:92
G4double Freggeon_Alpha
Definition: G4Reggeons.hh:92
G4double Xnd
Definition: G4Reggeons.hh:105
G4double Rsquare_pomeron
Definition: G4Reggeons.hh:89
G4double Xtr_Diff
Definition: G4Reggeons.hh:104
G4double XtotalP
Definition: G4Reggeons.hh:103
G4double Wreggeon_Alphaprime
Definition: G4Reggeons.hh:93
G4double Xelastic
Definition: G4Reggeons.hh:104
G4double Gamma_pomeron
Definition: G4Reggeons.hh:89
G4double XDDiff
Definition: G4Reggeons.hh:104
G4double Xtotal
Definition: G4Reggeons.hh:103
G4double Alpha_pomeron
Definition: G4Reggeons.hh:89
G4double Xinel
Definition: G4Reggeons.hh:105
G4double Cpr_pomeron
Definition: G4Reggeons.hh:96
G4double Freggeon_Alphaprime
Definition: G4Reggeons.hh:92
G4double Freggeon_Gamma
Definition: G4Reggeons.hh:92
G4double S0_pomeron
Definition: G4Reggeons.hh:89
G4double Alphaprime_pomeron
Definition: G4Reggeons.hh:89
G4double Ctr_pomeron
Definition: G4Reggeons.hh:97
G4double Wreggeon_Alpha
Definition: G4Reggeons.hh:93
G4double XndR
Definition: G4Reggeons.hh:105
G4double WParity
Definition: G4Reggeons.hh:93
G4double Freggeon_Rsquare
Definition: G4Reggeons.hh:92
G4double XtotalR
Definition: G4Reggeons.hh:103
G4double Wreggeon_Gamma
Definition: G4Reggeons.hh:93
G4double Xpr_Diff
Definition: G4Reggeons.hh:104
G4double XndP
Definition: G4Reggeons.hh:105
T sqr(const T &x)
Definition: templates.hh:128

References Alpha_pomeron, Alpha_pomeronHard, Alphaprime_pomeron, C_pomeron, chiPin, Cpr_pomeron, Ctr_pomeron, FParity, Freggeon_Alpha, Freggeon_Alphaprime, Freggeon_C, Freggeon_Gamma, Freggeon_Rsquare, Gamma_pomeron, Gamma_pomeronHard, G4ParticleDefinition::GetPDGEncoding(), GeV, Rsquare_pomeron, S0_pomeron, sqr(), WParity, Wreggeon_Alpha, Wreggeon_Alphaprime, Wreggeon_C, Wreggeon_Gamma, Wreggeon_Rsquare, XDDiff, Xelastic, Xinel, Xnd, XndP, XndR, Xpr_Diff, Xtotal, XtotalP, XtotalR, and Xtr_Diff.

◆ ~G4Reggeons()

G4Reggeons::~G4Reggeons ( )

Definition at line 338 of file G4Reggeons.cc.

338{}

Member Function Documentation

◆ CalculateXs()

void G4Reggeons::CalculateXs ( )

Definition at line 344 of file G4Reggeons.cc.

345{
346 Xtotal =0.; XtotalP=0.; XtotalR=0.;
347 Xelastic=0.; Xpr_Diff=0.; Xtr_Diff=0.; XDDiff=0.; G4double XDiff=0.;
348 Xinel =0.; Xnd=0.; XndP=0.; XndR=0.;
349
350 G4double AmplitudeP(0.), AmplitudeR(0.);
351
352 G4double B_max = 10.*fermi;
353 G4double dB = B_max/10000.;
354
355 G4double B =-dB/2.;
356
357 G4double chiP(0.), chiR(0.), chiRin(0.); // chiPin Pomeron inelastic phase is a data member
358 chiPin=0.;
359 for(G4int i=0; i<10000;i++)
360 {
361 B += dB;
362
363 chiP = Chi_pomeron(1.,B); chiR = Chi_reggeon(1.,B);
364 chiPin = Chi_pomeron(2.,B); chiRin = Chi_reggeon(2.,B);
365
366 AmplitudeP = (1.0/C_pomeron)*(1.0 - G4Exp(-chiP))*G4Exp(-chiR);
367 AmplitudeR = (1.0 - G4Exp(-chiR));
368
369 Xtotal += 2 * (AmplitudeP + AmplitudeR) * B * dB;
370 XtotalP += 2 * (AmplitudeP + 0. ) * B * dB;
371 XtotalR += 2 * (0. + AmplitudeR) * B * dB;
372
373 Xelastic += sqr(AmplitudeP + AmplitudeR) * B * dB;
374 Xpr_Diff += (Cpr_pomeron - 1.0) * sqr(AmplitudeP) * B * dB;
375 Xtr_Diff += (Ctr_pomeron - 1.0) * sqr(AmplitudeP) * B * dB;
376 XDiff += (Cpr_pomeron - 1.0) * (Ctr_pomeron - 1.0) * sqr(AmplitudeP) * B * dB;
377
378 // ----------------------------------
379 AmplitudeP = (1.0/C_pomeron)*(1.0 - G4Exp(-chiPin))*G4Exp(-chiRin);
380 AmplitudeR = (1.0 - G4Exp(-chiRin));
381
382 Xnd += (AmplitudeP + AmplitudeR) * B * dB;
383 XndP += (AmplitudeP + 0. ) * B * dB;
384 XndR += (0. + AmplitudeR) * B * dB;
385 }
386
389 Xinel = Xtotal - Xelastic;
390 (void)Xinel; // To avoid compiler warning "variable not used"
391
392 Xnd *=twopi; XndP *=twopi; XndR *=twopi;
393 XDDiff = XDiff-Xpr_Diff-Xtr_Diff;
394
395 /*
396 G4cout<<"Total totalP totalR "<<Xtotal/millibarn <<" "<<XtotalP/millibarn <<" "<<XtotalR/millibarn<<" mb"<<G4endl;
397 G4cout<<"Elastic "<<Xelastic/millibarn <<G4endl;
398 G4cout<<"PrDiff TrDiff W_Diff "<<Xpr_Diff/millibarn<<" "<<Xtr_Diff/millibarn<<" "<<XDiff/millibarn<<G4endl;
399 G4cout<<"Inelastic "<<Xinel/millibarn <<G4endl;
400 G4cout<<"NonDiff Pom & Reg "<<Xnd/millibarn <<" "<<XndP/millibarn <<" "<<XndR/millibarn <<G4endl;
401 */
402}
G4double B(G4double temperature)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
static constexpr double twopi
Definition: G4SIunits.hh:56
static constexpr double fermi
Definition: G4SIunits.hh:83
G4double Chi_reggeon(G4double Mult, G4double B)
Definition: G4Reggeons.cc:415
G4double Chi_pomeron(G4double Mult, G4double B)
Definition: G4Reggeons.cc:405

References B(), C_pomeron, Chi_pomeron(), Chi_reggeon(), chiPin, Cpr_pomeron, Ctr_pomeron, fermi, G4Exp(), sqr(), twopi, XDDiff, Xelastic, Xinel, Xnd, XndP, XndR, Xpr_Diff, Xtotal, XtotalP, XtotalR, and Xtr_Diff.

◆ Chi_pomeron()

G4double G4Reggeons::Chi_pomeron ( G4double  Mult,
G4double  B 
)

Definition at line 405 of file G4Reggeons.cc.

406{
408 G4double Eikonal = Mult * C_pomeron * Gamma_pomeron/R2 *
410 G4Exp(-sqr(B)/4.0/R2/hbarc_squared);
411 return Eikonal;
412}
G4double G4Log(G4double x)
Definition: G4Log.hh:226
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230
G4double Sint
Definition: G4Reggeons.hh:99
float hbarc_squared
Definition: hepunit.py:265

References Alpha_pomeron, Alphaprime_pomeron, B(), C_pomeron, G4Exp(), G4Log(), Gamma_pomeron, G4Pow::GetInstance(), source.hepunit::hbarc_squared, G4Pow::powA(), Rsquare_pomeron, S0_pomeron, Sint, and sqr().

Referenced by CalculateXs(), and GetProbabilities().

◆ Chi_reggeon()

G4double G4Reggeons::Chi_reggeon ( G4double  Mult,
G4double  B 
)

◆ Get_Cprojectile()

G4double G4Reggeons::Get_Cprojectile ( )

Definition at line 332 of file G4Reggeons.cc.

332{return Cpr_pomeron;}

References Cpr_pomeron.

◆ Get_Ctarget()

G4double G4Reggeons::Get_Ctarget ( )

Definition at line 335 of file G4Reggeons.cc.

335{return Ctr_pomeron;}

References Ctr_pomeron.

◆ GetDDiffX()

G4double G4Reggeons::GetDDiffX ( )

Definition at line 438 of file G4Reggeons.cc.

438{ return XDDiff; }

References XDDiff.

◆ GetElasticX()

G4double G4Reggeons::GetElasticX ( )

Definition at line 435 of file G4Reggeons.cc.

435{ return Xelastic; }

References Xelastic.

◆ GetInelX()

G4double G4Reggeons::GetInelX ( )

Definition at line 440 of file G4Reggeons.cc.

440{ return Xinel; }

References Xinel.

◆ GetND_X()

G4double G4Reggeons::GetND_X ( )

Definition at line 442 of file G4Reggeons.cc.

442{ return Xnd; }

References Xnd.

◆ GetNDp_X()

G4double G4Reggeons::GetNDp_X ( )

Definition at line 443 of file G4Reggeons.cc.

443{ return XndP; }

References XndP.

◆ GetNDr_X()

G4double G4Reggeons::GetNDr_X ( )

Definition at line 444 of file G4Reggeons.cc.

444{ return XndR; }

References XndR.

◆ GetPrDiffX()

G4double G4Reggeons::GetPrDiffX ( )

Definition at line 436 of file G4Reggeons.cc.

436{ return Xpr_Diff; }

References Xpr_Diff.

◆ GetProbabilities()

void G4Reggeons::GetProbabilities ( G4double  B,
G4int  Mode,
G4double Pint,
G4double Pprd,
G4double Ptrd,
G4double Pdd,
G4double Pnd,
G4double Pnvr 
)

Definition at line 448 of file G4Reggeons.cc.

452{
453 // Puprose of the method is a calculation of inelastic interaction probability (Pint),
454 // probability of projectile diffraction (Pprd),
455 // probability of target diffraction (Ptrd),
456 // probability of double diffraction (Pdd ),
457 // probability of non-diffractive inter. (Pnd ),
458 // probability of quark-exc. inter. (Pnvr),
459 // number of cutted pomerons (NcutPomerons).
460 // The input parameters are B - impact parameter, and Mode = All/WITHOUT_R/NON_DIFF
461 //
462 if ( B > 2.* fermi ) { Pint=0.; Pprd=0.; Ptrd=0.; Pdd=0.; Pnd=0.; Pnvr=0.; return;}
463 // At large B for hN collisions it is better to return zero inter. probability
464
465 G4double chiP = Chi_pomeron(1.,B); G4double chiR = Chi_reggeon(1.,B);
466 chiPin = Chi_pomeron(2.,B); G4double chiRin = Chi_reggeon(2.,B);
467 //chiPin is data member of the class
468
469 G4double Exp_ChiR = G4Exp(-chiR);
470
471 G4double AmplitudeP = (1.0/C_pomeron)*(1.0 - G4Exp(-chiP))*Exp_ChiR;
472 G4double AmplitudeR = (1.0 - Exp_ChiR);
473
474 G4double AmplitudeP2, Apr_Diff, Atr_Diff, ADiff;
475
476 // Aelastic = sqr(AmplitudeP + AmplitudeR);
477 AmplitudeP2 = sqr(AmplitudeP);
478 Apr_Diff = (Cpr_pomeron - 1.0) * AmplitudeP2;
479 Atr_Diff = (Ctr_pomeron - 1.0) * AmplitudeP2;
480 ADiff = (Cpr_pomeron - 1.0) * (Ctr_pomeron - 1.0) * AmplitudeP2;
481
482 // ----------------------------------
483 Exp_ChiR = G4Exp(-chiRin);
484 AmplitudeP = (1.0/C_pomeron)*(1.0 - G4Exp(-chiPin))*Exp_ChiR;
485 AmplitudeR = (1.0 - Exp_ChiR);
486
487 G4double And, AndP, AndR;
488
489 And = (AmplitudeP + AmplitudeR);
490 AndP = (AmplitudeP + 0. );
491 AndR = (0. + AmplitudeR);
492
493 // ----------------------------------
494 if ( Mode == ALL)
495 {
496 Pint = Apr_Diff + Atr_Diff + ADiff + And;
497 Pprd = Apr_Diff/Pint; // Probability of projectile diffraction
498 Ptrd = Atr_Diff/Pint; // Probability of target diffraction
499 Pdd = ADiff /Pint; // Probability of double diffraction
500 Pnd = AndP /Pint; // Probability of non-diffractive inelastic interaction
501 Pnvr = AndR /Pint; // Probability of non-vacuum reggeon (nvr) inelastic interaction
502 }
503 else if ( Mode == WITHOUT_R)
504 {
505 Pint = Apr_Diff + Atr_Diff + ADiff + AndP;
506 Pprd = Apr_Diff/Pint;
507 Ptrd = Atr_Diff/Pint;
508 Pdd = ADiff /Pint;
509 Pnd = AndP /Pint;
510 Pnvr = 0.;
511 }
512 else
513 { // Mode == NON_DIFF (of projectile)
514 Pint = Atr_Diff + AndP;
515 Pprd = 0.;
516 Ptrd = Atr_Diff/Pint;
517 Pdd = 0.;
518 Pnd = AndP /Pint;
519 Pnvr = 0.;
520 }
521 return;
522}

References ALL, B(), C_pomeron, Chi_pomeron(), Chi_reggeon(), chiPin, Cpr_pomeron, Ctr_pomeron, fermi, G4Exp(), sqr(), and WITHOUT_R.

Referenced by G4QGSParticipants::GetList().

◆ GetTotalX()

G4double G4Reggeons::GetTotalX ( )

Definition at line 431 of file G4Reggeons.cc.

431{ return Xtotal; }

References Xtotal.

◆ GetTotalXp()

G4double G4Reggeons::GetTotalXp ( )

Definition at line 432 of file G4Reggeons.cc.

432{ return XtotalP; }

References XtotalP.

◆ GetTotalXr()

G4double G4Reggeons::GetTotalXr ( )

Definition at line 433 of file G4Reggeons.cc.

433{ return XtotalR; }

References XtotalR.

◆ GetTrDiffX()

G4double G4Reggeons::GetTrDiffX ( )

Definition at line 437 of file G4Reggeons.cc.

437{ return Xtr_Diff; }

References Xtr_Diff.

◆ ncPomerons()

G4int G4Reggeons::ncPomerons ( )

Definition at line 525 of file G4Reggeons.cc.

526{
527 if ( chiPin < 0.001 ) return 0; // At small average multiplicity of cutted pomerons
528 // it is better to return 0 to avoid problems with
529 // calculation exactness.
530 G4double ksi = G4UniformRand() * (1.0-G4Exp(-chiPin)) * G4Exp(chiPin);
531 G4double Term = chiPin;
532 G4double Sum = Term;
533 G4int nCuts = 1;
534
535 while ( Sum < ksi) {
536 nCuts++;
537 Term *= chiPin/(G4double) nCuts;
538 Sum += Term;
539 }
540
541 return nCuts;
542}
#define G4UniformRand()
Definition: Randomize.hh:52

References chiPin, G4Exp(), and G4UniformRand.

Referenced by G4QGSParticipants::GetList().

◆ SetS()

void G4Reggeons::SetS ( G4double  S)

Definition at line 341 of file G4Reggeons.cc.

341{Sint = S;}
G4double S(G4double temp)

References S(), and Sint.

Referenced by G4QGSParticipants::GetList().

Field Documentation

◆ Alpha_pomeron

G4double G4Reggeons::Alpha_pomeron
private

Definition at line 89 of file G4Reggeons.hh.

Referenced by Chi_pomeron(), and G4Reggeons().

◆ Alpha_pomeronHard

G4double G4Reggeons::Alpha_pomeronHard
private

Definition at line 90 of file G4Reggeons.hh.

Referenced by G4Reggeons().

◆ Alphaprime_pomeron

G4double G4Reggeons::Alphaprime_pomeron
private

Definition at line 89 of file G4Reggeons.hh.

Referenced by Chi_pomeron(), and G4Reggeons().

◆ C_pomeron

G4double G4Reggeons::C_pomeron
private

Definition at line 95 of file G4Reggeons.hh.

Referenced by CalculateXs(), Chi_pomeron(), G4Reggeons(), and GetProbabilities().

◆ chiPin

G4double G4Reggeons::chiPin
private

Definition at line 101 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), GetProbabilities(), and ncPomerons().

◆ Cpr_pomeron

G4double G4Reggeons::Cpr_pomeron
private

Definition at line 96 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), Get_Cprojectile(), and GetProbabilities().

◆ Ctr_pomeron

G4double G4Reggeons::Ctr_pomeron
private

Definition at line 97 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), Get_Ctarget(), and GetProbabilities().

◆ FParity

G4double G4Reggeons::FParity
private

Definition at line 92 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Freggeon_Alpha

G4double G4Reggeons::Freggeon_Alpha
private

Definition at line 92 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Freggeon_Alphaprime

G4double G4Reggeons::Freggeon_Alphaprime
private

Definition at line 92 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Freggeon_C

G4double G4Reggeons::Freggeon_C
private

Definition at line 92 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Freggeon_Gamma

G4double G4Reggeons::Freggeon_Gamma
private

Definition at line 92 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Freggeon_Rsquare

G4double G4Reggeons::Freggeon_Rsquare
private

Definition at line 92 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Gamma_pomeron

G4double G4Reggeons::Gamma_pomeron
private

Definition at line 89 of file G4Reggeons.hh.

Referenced by Chi_pomeron(), and G4Reggeons().

◆ Gamma_pomeronHard

G4double G4Reggeons::Gamma_pomeronHard
private

Definition at line 90 of file G4Reggeons.hh.

Referenced by G4Reggeons().

◆ Rsquare_pomeron

G4double G4Reggeons::Rsquare_pomeron
private

Definition at line 89 of file G4Reggeons.hh.

Referenced by Chi_pomeron(), and G4Reggeons().

◆ S0_pomeron

G4double G4Reggeons::S0_pomeron
private

Definition at line 89 of file G4Reggeons.hh.

Referenced by Chi_pomeron(), Chi_reggeon(), and G4Reggeons().

◆ Sint

G4double G4Reggeons::Sint =0.
private

Definition at line 99 of file G4Reggeons.hh.

Referenced by Chi_pomeron(), Chi_reggeon(), and SetS().

◆ Target

G4ParticleDefinition* G4Reggeons::Target =G4Proton::Proton()
private

Definition at line 87 of file G4Reggeons.hh.

◆ WParity

G4double G4Reggeons::WParity
private

Definition at line 93 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Wreggeon_Alpha

G4double G4Reggeons::Wreggeon_Alpha
private

Definition at line 93 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Wreggeon_Alphaprime

G4double G4Reggeons::Wreggeon_Alphaprime
private

Definition at line 93 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Wreggeon_C

G4double G4Reggeons::Wreggeon_C
private

Definition at line 93 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Wreggeon_Gamma

G4double G4Reggeons::Wreggeon_Gamma
private

Definition at line 93 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ Wreggeon_Rsquare

G4double G4Reggeons::Wreggeon_Rsquare
private

Definition at line 93 of file G4Reggeons.hh.

Referenced by Chi_reggeon(), and G4Reggeons().

◆ XDDiff

G4double G4Reggeons::XDDiff
private

Definition at line 104 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetDDiffX().

◆ Xelastic

G4double G4Reggeons::Xelastic
private

Definition at line 104 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetElasticX().

◆ Xinel

G4double G4Reggeons::Xinel
private

Definition at line 105 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetInelX().

◆ Xnd

G4double G4Reggeons::Xnd
private

Definition at line 105 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetND_X().

◆ XndP

G4double G4Reggeons::XndP
private

Definition at line 105 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetNDp_X().

◆ XndR

G4double G4Reggeons::XndR
private

Definition at line 105 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetNDr_X().

◆ Xpr_Diff

G4double G4Reggeons::Xpr_Diff
private

Definition at line 104 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetPrDiffX().

◆ Xtotal

G4double G4Reggeons::Xtotal
private

Definition at line 103 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetTotalX().

◆ XtotalP

G4double G4Reggeons::XtotalP
private

Definition at line 103 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetTotalXp().

◆ XtotalR

G4double G4Reggeons::XtotalR
private

Definition at line 103 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetTotalXr().

◆ Xtr_Diff

G4double G4Reggeons::Xtr_Diff
private

Definition at line 104 of file G4Reggeons.hh.

Referenced by CalculateXs(), G4Reggeons(), and GetTrDiffX().


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