129 const G4int itry_max = 100;
134 G4cout <<
" InuclCollider -> particle on particle collision" <<
G4endl;
147 G4cerr <<
" InuclCollider -> no collision possible " <<
G4endl;
156 G4cerr <<
" InuclCollider -> ERROR target is not a nucleus " <<
G4endl;
171 G4cerr <<
" InuclCollider -> ERROR bullet is not a hadron " <<
G4endl;
177 G4cerr <<
" InuclCollider -> ERROR can not collide with "
183 btype = pbullet->
type();
188 G4cerr <<
" InuclCollider -> ERROR bullet is not a nucleus " <<
G4endl;
193 ab = nbullet->
getA();
194 zb = nbullet->
getZ();
204 G4cout <<
" InuclCollider -> inelastic interaction is impossible\n"
205 <<
" due to the coulomb barirer " <<
G4endl;
214 G4cout <<
" degenerated? " << convertToTargetRestFrame.
trivial()
229 while (itry < itry_max) {
234 globalOutput.
reset();
245 G4cout <<
" itry " << itry <<
" finished, moving to lab frame" <<
G4endl;
257 G4cout <<
" InuclCollider output after trials " << itry <<
G4endl;
262 G4cerr <<
" InuclCollider setOnShell failed." <<
G4endl;
267 G4cout <<
" InuclCollider -> can not generate acceptable inter. after "
268 << itry_max <<
" attempts " <<
G4endl;
289 globalOutput.
reset();
303 G4cout <<
" InuclCollider output after trials " << itry <<
G4endl;
315 const G4int itry_max = 10;
G4bool hadNucleus() const
void trivialise(G4InuclParticle *bullet, G4InuclParticle *target)
void rescatter(G4InuclParticle *bullet, G4KineticTrackVector *theSecondaries, G4V3DNucleus *theNucleus, G4CollisionOutput &globalOutput)
void setVerboseLevel(G4int verbose)
static const G4CascadeChannel * GetTable(G4int initialState)
G4double getTRSMomentum() const
G4CollisionOutput DEXoutput
virtual G4bool useEPCollider(G4InuclParticle *bullet, G4InuclParticle *target) const
void removeRecoilFragment(G4int index=-1)
void collide(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &output)
const G4ParticleDefinition * getDefinition() const
virtual G4bool inelasticInteractionPossible(G4InuclParticle *bullet, G4InuclParticle *target, G4double ekin) const
virtual ~G4InuclCollider()
void deexcite(const G4Fragment &fragment, G4CollisionOutput &globalOutput)
G4ElementaryParticleCollider * theElementaryParticleCollider
const G4String & GetParticleName() const
G4bool acceptable() const
virtual void setVerboseLevel(G4int verbose=0)
virtual void deExcite(const G4Fragment &fragment, G4CollisionOutput &output)=0
void add(const G4CollisionOutput &right)
void useCascadeDeexcitation()
G4GLOB_DLL std::ostream G4cout
void setVerboseLevel(G4int verbose=0)
void rescatter(G4InuclParticle *bullet, G4KineticTrackVector *theSecondaries, G4V3DNucleus *theNucleus, G4CollisionOutput &globalOutput)
void boostToLabFrame(const G4LorentzConvertor &convertor)
void collide(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &globalOutput)
G4double getKinEnergyInTheTRS() const
void collide(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &globalOutput)
G4InteractionCase interCase
void set(G4InuclParticle *part1, G4InuclParticle *part2)
virtual G4bool validateOutput(G4InuclParticle *bullet, G4InuclParticle *target, G4CollisionOutput &output)
G4IntraNucleiCascader * theIntraNucleiCascader
G4InuclParticle * getBullet() const
virtual void setVerboseLevel(G4int verbose=0)
void setVerboseLevel(G4int verbose=0)
const G4Fragment & getRecoilFragment(G4int index=0) const
void toTheTargetRestFrame()
G4InuclParticle * getTarget() const
void usePreCompoundDeexcitation()
G4VCascadeDeexcitation * theDeexcitation
void setOnShell(G4InuclParticle *bullet, G4InuclParticle *target)
G4GLOB_DLL std::ostream G4cerr
CLHEP::HepLorentzVector G4LorentzVector