77 if (etot < 0.0) etot = 0.0;
80 G4cout <<
" BigBanger: target\n" << target
81 <<
"\n etot " << etot <<
G4endl;
86 PEXrest.boost(-toTheLabFrame);
87 G4cout <<
" target rest frame: px " << PEXrest.px() <<
" py "
88 << PEXrest.py() <<
" pz " << PEXrest.pz() <<
" E " << PEXrest.e()
101 G4cerr <<
" >>> G4BigBanger unable to process fragment "
119 mom.boost(toTheLabFrame);
122 ipart->setMomentum(mom);
131 G4cout <<
" In SCM: total outgoing momentum " << G4endl
132 <<
" E " << totscm.e() <<
" px " << totscm.x()
133 <<
" py " << totscm.y() <<
" pz " << totscm.z() <<
G4endl;
134 G4cout <<
" In Lab: mom cons " << G4endl
135 <<
" E " <<
PEX.e() - totlab.e()
136 <<
" px " <<
PEX.x() - totlab.x()
137 <<
" py " <<
PEX.y() - totlab.y()
138 <<
" pz " <<
PEX.z() - totlab.z() <<
G4endl;
146 G4cout <<
" >>> G4BigBanger::generateBangInSCM" <<
G4endl;
150 const G4int itry_max = 1000;
159 G4int knd = (z>0) ? 1 : 2;
172 while(bad && itry < itry_max) {
186 for(
G4int i = 0; i < a-2; i++) {
201 if(std::fabs(ct) < ang_cut) {
207 G4double a_tr = std::sqrt(apr.x()*apr.x() + apr.y()*apr.y());
209 mom.setX(mom2.z()*apr.x() + ( mom2.x()*apr.y() + mom2.y()*apr.z()*apr.x())/a_tr);
210 mom.setY(mom2.z()*apr.y() + (-mom2.x()*apr.x() + mom2.y()*apr.z()*apr.y())/a_tr);
211 mom.setZ(mom2.z()*apr.z() - mom2.y()*a_tr);
226 for(
G4int i = 0; i <
a; i++) {
227 G4int knd = i < z ? 1 : 2;
233 if (itry == itry_max)
G4cout <<
" BigBanger -> can not generate bang " <<
G4endl;
241 G4cout <<
" >>> G4BigBanger::generateMomentumModules" <<
G4endl;
256 for(
G4int i = 0; i <
a; i++) {
270 for(
G4int i = 0; i <
a; i++) {
290 if(x < 1.0 || x > 0.0) {
294 ekpr *= std::sqrt(1.0 - x) * theG4Pow->
powN((1.0 - x), (3*a-6)/2);
297 ekpr *= theG4Pow->
powN((1.0 - x), (3*a-5)/2);
315 const G4int itry_max = 1000;
319 while(itry < itry_max) {
326 G4cout <<
" BigBanger -> can not generate x " <<
G4endl;
static G4Pow * GetInstance()
G4double xProbability(G4double x, G4int a) const
G4double powN(G4double x, G4int n) const
CLHEP::Hep3Vector G4ThreeVector
std::vector< G4InuclElementaryParticle > particles
static G4double getParticleMass(G4int type)
void generateMomentumModules(G4double etot, G4int a, G4int z)
void getTargetData(const G4Fragment &target)
G4GLOB_DLL std::ostream G4cout
std::vector< G4LorentzVector > scm_momentums
std::vector< G4double > momModules
G4LorentzVector generateWithRandomAngles(G4double p, G4double mass=0.)
void addOutgoingParticles(const std::vector< G4InuclElementaryParticle > &particles)
G4LorentzVector generateWithFixedTheta(G4double ct, G4double p, G4double mass=0.)
G4double maxProbability(G4int a) const
void generateBangInSCM(G4double etot, G4int a, G4int z)
std::vector< G4InuclElementaryParticle >::iterator particleIterator
virtual G4bool validateOutput(const G4Fragment &target, G4CollisionOutput &output)
G4double generateX(G4int ia, G4double promax) const
G4double bindingEnergy(G4int A, G4int Z)
virtual void deExcite(const G4Fragment &target, G4CollisionOutput &output)
G4GLOB_DLL std::ostream G4cerr
CLHEP::HepLorentzVector G4LorentzVector