Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4InteractionCase Class Reference

#include <G4InteractionCase.hh>

Public Member Functions

 G4InteractionCase ()
 
 G4InteractionCase (G4InuclParticle *part1, G4InuclParticle *part2)
 
void set (G4InuclParticle *part1, G4InuclParticle *part2)
 
void clear ()
 
G4InuclParticlegetBullet () const
 
G4InuclParticlegetTarget () const
 
G4bool valid () const
 
G4bool twoNuclei () const
 
G4bool hadNucleus () const
 
G4int hadrons () const
 
G4int code () const
 

Detailed Description

Definition at line 40 of file G4InteractionCase.hh.

Constructor & Destructor Documentation

◆ G4InteractionCase() [1/2]

G4InteractionCase::G4InteractionCase ( )
inline

Definition at line 42 of file G4InteractionCase.hh.

42: bullet(0), target(0), inter_case(0) {}

◆ G4InteractionCase() [2/2]

G4InteractionCase::G4InteractionCase ( G4InuclParticle part1,
G4InuclParticle part2 
)
inline

Definition at line 44 of file G4InteractionCase.hh.

44 {
45 set(part1, part2);
46 }
void set(G4InuclParticle *part1, G4InuclParticle *part2)

Member Function Documentation

◆ clear()

void G4InteractionCase::clear ( )
inline

Definition at line 50 of file G4InteractionCase.hh.

50 {
51 bullet = target = 0;
52 inter_case = 0;
53 }

Referenced by set().

◆ code()

G4int G4InteractionCase::code ( ) const
inline

Definition at line 65 of file G4InteractionCase.hh.

65{ return ((inter_case<0) ? -inter_case : 0); }

Referenced by G4InuclCollider::collide(), and G4IntraNucleiCascader::newCascade().

◆ getBullet()

G4InuclParticle * G4InteractionCase::getBullet ( ) const
inline

◆ getTarget()

G4InuclParticle * G4InteractionCase::getTarget ( ) const
inline

◆ hadNucleus()

G4bool G4InteractionCase::hadNucleus ( ) const
inline

Definition at line 61 of file G4InteractionCase.hh.

61{ return inter_case == -1; }

Referenced by G4InuclCollider::collide(), and G4IntraNucleiCascader::setupCascade().

◆ hadrons()

G4int G4InteractionCase::hadrons ( ) const
inline

Definition at line 62 of file G4InteractionCase.hh.

62{ return inter_case; } // "rtype" or "is" code

Referenced by G4ElementaryParticleCollider::collide().

◆ set()

void G4InteractionCase::set ( G4InuclParticle part1,
G4InuclParticle part2 
)

Definition at line 39 of file G4InteractionCase.cc.

40 {
41 clear(); // Reset everything in case of failure
42
43 // See which one of the two (or both) is a nucleus
44 G4InuclNuclei* nucl1 = dynamic_cast<G4InuclNuclei*>(part1);
45 G4InuclNuclei* nucl2 = dynamic_cast<G4InuclNuclei*>(part2);
46
47 G4InuclElementaryParticle* had1 = dynamic_cast<G4InuclElementaryParticle*>(part1);
48 G4InuclElementaryParticle* had2 = dynamic_cast<G4InuclElementaryParticle*>(part2);
49
50 if (nucl1 && nucl2) { // Nuclear collision, lighter is projectile
51 inter_case = -2;
52 if (nucl2->getA() >= nucl1->getA()) {
53 bullet = part1;
54 target = part2;
55 } else {
56 bullet = part2;
57 target = part1;
58 }
59 } else if (nucl1 || nucl2) { // Hadron on nucleus, hadron projectile
60 inter_case = -1;
61 if (nucl1 && had2) {
62 bullet = part2;
63 target = part1;
64 } else {
65 bullet = part1;
66 target = part2;
67 }
68 } else if (had1 && had2) { // Hadron-hadron interaction, order irrelevant
69 inter_case = had1->type() * had2->type();
70 bullet = part1;
71 target = part2;
72 }
73}
G4int getA() const

Referenced by G4InuclCollider::collide(), G4ElementaryParticleCollider::collide(), G4InteractionCase(), and G4IntraNucleiCascader::initialize().

◆ twoNuclei()

G4bool G4InteractionCase::twoNuclei ( ) const
inline

Definition at line 60 of file G4InteractionCase.hh.

60{ return inter_case == -2; }

◆ valid()

G4bool G4InteractionCase::valid ( ) const
inline

Definition at line 58 of file G4InteractionCase.hh.

58{ return inter_case != 0; }

Referenced by G4InuclCollider::collide().


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