83 G4cout <<
" >>> G4LightTargetCollider::collide" <<
G4endl;
92 G4cout <<
" InuclCollider -> particle on particle collision" <<
G4endl;
103 G4Exception(
"G4LightTargetCollider::collide()",
"HAD_BERT_201",
104 JustWarning,
"Projectile energy below reaction threshold");
118 G4double totalDXS = gammaPXS + gammaNXS + gammaDXS;
119 probP = gammaPXS/totalDXS;
120 probN = (gammaPXS+gammaNXS)/totalDXS;
135 protonMomentum.
boost(toProtonRest);
136 bulletMomentum.
boost(toProtonRest);
146 globalOutput.
reset();
148 for (
G4int i = 0; i <
G4int(products.size()); i++) {
149 temp = products[i].getMomentum();
151 products[i].setMomentum(temp);
158 }
else if (rndm < probN) {
168 neutronMomentum.
boost(toNeutronRest);
169 bulletMomentum.
boost(toNeutronRest);
180 globalOutput.
reset();
182 for (
G4int i = 0; i <
G4int(products.size()); i++) {
183 temp = products[i].getMomentum();
185 products[i].setMomentum(temp);
194 globalOutput.
reset();
213 G4Exception(
"G4LightTargetCollider::collide()",
"HAD_BERT_203",
228 if (gammaEnergy > 0.144 && gammaEnergy < 0.42) {
229 term = (gammaEnergy - 0.24)/0.155;
230 sigma = 0.065*std::exp(-term*term);
231 }
else if (gammaEnergy >= 0.42) {
232 sigma = 0.000526/gammaEnergy/gammaEnergy/gammaEnergy/gammaEnergy;
258 qcm = std::sqrt( (S - (
mP +
mN)*(
mP +
mN)) * (S - (
mP -
mN)*(
mP -
mN))/S/4.);
259 Mom1.
setE(std::sqrt(
mP*
mP + qcm*qcm) );
261 Mom2.
setE(std::sqrt(
mN*
mN + qcm*qcm) );
265 qcm = std::sqrt( (S - 4.*
mP*
mP)/4.);
266 Mom1.
setE(std::sqrt(mP*mP + qcm*qcm) );
268 Mom2.
setE(std::sqrt(mP*mP + qcm*qcm) );
272 qcm = std::sqrt( (S - 4.*
mN*
mN)/4.);
273 Mom1.
setE(std::sqrt(mN*mN + qcm*qcm) );
275 Mom2.
setE(std::sqrt(mN*mN + qcm*qcm) );
279 G4Exception(
"G4LightTargetCollider::collide()",
"HAD_BERT_204",
314 G4int mult = xsecTable->getMultiplicity(ke);
316 std::vector<G4double> masses;
321 std::vector<G4LorentzVector> cmMomenta;
322 std::vector<G4int> particle_kinds;
324 G4int itry_max = 200;
330 while (generate && itry < itry_max) {
331 particle_kinds.clear();
332 xsecTable->getOutgoingParticleTypes(particle_kinds, mult, ke);
334 for (
G4int i = 0; i < mult; i++) {
336 masses.push_back(mass);
339 fsGen.
Configure(const_cast<G4InuclElementaryParticle*>(&projectile),
340 const_cast<G4InuclElementaryParticle*>(&nucleon),
348 if (itry == itry_max) mult--;
355 G4Exception(
"G4LightTargetCollider::SingleNucleonScattering()",
"HAD_BERT_202",
358 finalState.push_back(projectile);
359 finalState.push_back(nucleon);
362 for (
G4int i = 0; i < mult; i++) {
364 finalState.push_back(fsPart);