55 {
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
86
90 }
91 else{
94 }
95
97
98
99 const std::vector<G4double> BFMM121 = {2.379, -2.738, -1.260, -1.915, 0.430, 1.437};
100
101 const std::vector<G4double> BFMM113 = {-0.105, 0.000, -5.099, 0.188, -0.050, 1.820};
102
103 const std::vector<G4double> BFMM139 = {0.142, -0.291, -1.702, -0.058, 0.001, 1.851};
104
105 const std::vector<G4double> BFMM149 = {1.855, -2.238, -1.002, -1.279, 0.252, 1.896};
106
107 const std::vector<G4double> BFMM136 = {1.749, -2.506, -1.222, -1.262, 0.274, 2.042};
108
109 const std::vector<G4double> BFMM146 = {1.037, -1.437, -1.155, -0.709, 0.138, 2.065};
110
111 const std::vector<G4double> BFMM143 = {0.652, -1.006, -1.805, -0.537, 0.121, 1.653};
112
113
114
115
116
118 if(plab > 2.0) BFMM144 = 0.008;
119 else BFMM144 = 0.0;
121 if(plab > 2.8) BFMM101 = 0.002;
122 else BFMM101 = 0.0;
123
124
126 if(plab > 2.1) BFMM487 = 0.048;
127 else BFMM487 = 0.0;
129 if(plab > 2.0) BFMM488 = 0.139;
130 else BFMM488 = 0.0;
131
137 +BFMM144 +BFMM101;
138 const G4double totalpnbar = BFMM487 + BFMM488;
140
141 G4bool thirdparticle =
false;
143
149 }
153 }
157 }
162 thirdparticle = true;
164 }
168 if(rdm2 > 0.5){
171 thirdparticle = true;
173 }
174 else{
177 thirdparticle = true;
179 }
180 }
185 if(rdm2 > 0.5){
188 thirdparticle = true;
190 }
191 else{
194 thirdparticle = true;
196 }
197 }
202 if(rdm2 > 0.5){
205 }
206 else{
209 }
210 }
217 }
224 }
225 else{
226 INCL_ERROR(
"out of total ppbar sum in LLbar channel");
227 }
228 }
229 else{
230 if(rdm*totalpnbar < BFMM488){
232 if(rdm2 > 0.5){
235 }
236 else{
239 }
240 }
241 else{
244 thirdparticle = true;
246 }
247 }
248 }
249 else{
254 }
258 }
262 }
267 thirdparticle = true;
269 }
273 if(rdm2 > 0.5){
276 thirdparticle = true;
278 }
279 else{
282 thirdparticle = true;
284 }
285 }
290 if(rdm2 > 0.5){
293 thirdparticle = true;
295 }
296 else{
299 thirdparticle = true;
301 }
302 }
307 if(rdm2 > 0.5){
310 }
311 else{
314 }
315 }
322 }
329 }
330 else{
331 INCL_ERROR(
"out of total nnbar sum in LLbar channel");
332 }
333 }
334 else{
335 if(rdm*totalpnbar < BFMM488){
337 if(rdm2 > 0.5){
340 }
341 else{
344 }
345 }
346 else{
349 thirdparticle = true;
351 }
352 }
353 }
354
355
356
357 if(thirdparticle){
358 ParticleList list;
359 list.push_back(nucleon);
360 list.push_back(antinucleon);
361 const ThreeVector &rcol =
nucleon->getPosition();
362 const ThreeVector zero;
363 Particle *
pion =
new Particle(PionType,zero,rcol);
364 list.push_back(pion);
365
367
368 fs->addModifiedParticle(nucleon);
369 fs->addModifiedParticle(antinucleon);
370 fs->addCreatedParticle(pion);
371 }
372 else{
375
376 G4double ey=(sqrtS*sqrtS+my*my-mn*mn)/(2*sqrtS);
377 G4double en=std::sqrt(ey*ey-my*my+mn*mn);
381
383
385 nucleon->setMomentum(-mom_antinucleon);
386
387 fs->addModifiedParticle(nucleon);
388 fs->addModifiedParticle(antinucleon);
389 }
390
391 }
G4double compute_xs(const std::vector< G4double > coefficients, const G4double pLab)
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
void generate(const G4double sqrtS, ParticleList &particles)
Generate an event in the CM system.
ThreeVector normVector(G4double norm=1.)
G4bool antinucleon(G4int ityp)
G4bool nucleon(G4int ityp)