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

#include <G4RPGProtonInelastic.hh>

+ Inheritance diagram for G4RPGProtonInelastic:

Public Member Functions

 G4RPGProtonInelastic ()
 
 ~G4RPGProtonInelastic ()
 
G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
 
- Public Member Functions inherited from G4RPGNucleonInelastic
 G4RPGNucleonInelastic (const G4String &modelName="RPGNucleonInelastic")
 
 ~G4RPGNucleonInelastic ()
 
- Public Member Functions inherited from G4RPGInelastic
 G4RPGInelastic (const G4String &modelName="RPGInelastic")
 
virtual ~G4RPGInelastic ()
 
- Public Member Functions inherited from G4HadronicInteraction
 G4HadronicInteraction (const G4String &modelName="HadronicModel")
 
virtual ~G4HadronicInteraction ()
 
virtual G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
 
virtual G4double SampleInvariantT (const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
 
virtual G4bool IsApplicable (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
 
G4double GetMinEnergy () const
 
G4double GetMinEnergy (const G4Material *aMaterial, const G4Element *anElement) const
 
void SetMinEnergy (G4double anEnergy)
 
void SetMinEnergy (G4double anEnergy, const G4Element *anElement)
 
void SetMinEnergy (G4double anEnergy, const G4Material *aMaterial)
 
G4double GetMaxEnergy () const
 
G4double GetMaxEnergy (const G4Material *aMaterial, const G4Element *anElement) const
 
void SetMaxEnergy (const G4double anEnergy)
 
void SetMaxEnergy (G4double anEnergy, const G4Element *anElement)
 
void SetMaxEnergy (G4double anEnergy, const G4Material *aMaterial)
 
G4int GetVerboseLevel () const
 
void SetVerboseLevel (G4int value)
 
const G4StringGetModelName () const
 
void DeActivateFor (const G4Material *aMaterial)
 
void ActivateFor (const G4Material *aMaterial)
 
void DeActivateFor (const G4Element *anElement)
 
void ActivateFor (const G4Element *anElement)
 
G4bool IsBlocked (const G4Material *aMaterial) const
 
G4bool IsBlocked (const G4Element *anElement) const
 
void SetRecoilEnergyThreshold (G4double val)
 
G4double GetRecoilEnergyThreshold () const
 
virtual const std::pair< G4double, G4doubleGetFatalEnergyCheckLevels () const
 
virtual std::pair< G4double, G4doubleGetEnergyMomentumCheckLevels () const
 
void SetEnergyMomentumCheckLevels (G4double relativeLevel, G4double absoluteLevel)
 
virtual void ModelDescription (std::ostream &outFile) const
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
virtual void InitialiseModel ()
 
 G4HadronicInteraction (const G4HadronicInteraction &right)=delete
 
const G4HadronicInteractionoperator= (const G4HadronicInteraction &right)=delete
 
G4bool operator== (const G4HadronicInteraction &right) const =delete
 
G4bool operator!= (const G4HadronicInteraction &right) const =delete
 

Additional Inherited Members

- Protected Types inherited from G4RPGInelastic
enum  {
  pi0 , pip , pim , kp ,
  km , k0 , k0b , pro ,
  neu , lam , sp , s0 ,
  sm , xi0 , xim , om ,
  ap , an
}
 
- Protected Member Functions inherited from G4RPGNucleonInelastic
G4int GetMultiplicityT1 (G4double KE) const
 
G4int GetMultiplicityT0 (G4double KE) const
 
std::vector< G4intGetFSPartTypesForT1 (G4int mult, G4double KE, G4int tindex) const
 
std::vector< G4intGetFSPartTypesForT0 (G4int mult, G4double KE) const
 
std::vector< G4intGetFSPartTypesForPP (G4int mult, G4double KE) const
 
std::vector< G4intGetFSPartTypesForNN (G4int mult, G4double KE) const
 
std::vector< G4intGetFSPartTypesForPN (G4int mult, G4double KE) const
 
std::vector< G4intGetFSPartTypesForNP (G4int mult, G4double KE) const
 
- Protected Member Functions inherited from G4RPGInelastic
G4double Pmltpc (G4int np, G4int nm, G4int nz, G4int n, G4double b, G4double c)
 
G4int Factorial (G4int n)
 
G4bool MarkLeadingStrangeParticle (const G4ReactionProduct &currentParticle, const G4ReactionProduct &targetParticle, G4ReactionProduct &leadParticle)
 
void SetUpPions (const G4int np, const G4int nm, const G4int nz, G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen)
 
void GetNormalizationConstant (const G4double availableEnergy, G4double &n, G4double &anpn)
 
void CalculateMomenta (G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen, const G4HadProjectile *originalIncident, const G4DynamicParticle *originalTarget, G4ReactionProduct &modifiedOriginal, G4Nucleus &targetNucleus, G4ReactionProduct &currentParticle, G4ReactionProduct &targetParticle, G4bool &incidentHasChanged, G4bool &targetHasChanged, G4bool quasiElastic)
 
void SetUpChange (G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen, G4ReactionProduct &currentParticle, G4ReactionProduct &targetParticle, G4bool &incidentHasChanged)
 
std::pair< G4int, G4doubleinterpolateEnergy (G4double ke) const
 
G4int sampleFlat (std::vector< G4double > sigma) const
 
void CheckQnums (G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen, G4ReactionProduct &currentParticle, G4ReactionProduct &targetParticle, G4double Q, G4double B, G4double S)
 
- Protected Member Functions inherited from G4HadronicInteraction
void SetModelName (const G4String &nam)
 
G4bool IsBlocked () const
 
void Block ()
 
- Protected Attributes inherited from G4RPGInelastic
G4RPGFragmentation fragmentation
 
G4RPGTwoCluster twoCluster
 
G4RPGPionSuppression pionSuppression
 
G4RPGStrangeProduction strangeProduction
 
G4RPGTwoBody twoBody
 
G4ParticleDefinitionparticleDef [18]
 
- Protected Attributes inherited from G4HadronicInteraction
G4HadFinalState theParticleChange
 
G4int verboseLevel
 
G4double theMinEnergy
 
G4double theMaxEnergy
 
G4bool isBlocked
 
- Static Protected Attributes inherited from G4RPGNucleonInelastic
static const G4int pPindex [8][2]
 
static const G4int pNindex [8][2]
 
static const G4int T1_2bfs [2][1][2]
 
static const G4int T1_3bfs [2][6][3]
 
static const G4int T1_4bfs [2][18][4]
 
static const G4int T1_5bfs [2][32][5]
 
static const G4int T1_6bfs [2][7][6]
 
static const G4int T1_7bfs [2][8][7]
 
static const G4int T1_8bfs [2][10][8]
 
static const G4int T1_9bfs [2][11][9]
 
static const G4int T0_2bfs [1][2]
 
static const G4int T0_3bfs [9][3]
 
static const G4int T0_4bfs [22][4]
 
static const G4int T0_5bfs [38][5]
 
static const G4int T0_6bfs [7][6]
 
static const G4int T0_7bfs [9][7]
 
static const G4int T0_8bfs [10][8]
 
static const G4int T0_9bfs [12][9]
 
static G4ThreadLocal G4double pPtot [30]
 
static G4ThreadLocal G4double pNtot [30]
 
static G4ThreadLocal G4double t1_dSigma_dMult [8][30]
 
static G4ThreadLocal G4double t0_dSigma_dMult [8][30]
 
static const G4float pPCrossSections [93][30]
 
static const G4float pNCrossSections [108][30]
 

Detailed Description

Definition at line 42 of file G4RPGProtonInelastic.hh.

Constructor & Destructor Documentation

◆ G4RPGProtonInelastic()

G4RPGProtonInelastic::G4RPGProtonInelastic ( )
inline

Definition at line 46 of file G4RPGProtonInelastic.hh.

46 : G4RPGNucleonInelastic("RPGProtonInelastic")
47 {}

◆ ~G4RPGProtonInelastic()

G4RPGProtonInelastic::~G4RPGProtonInelastic ( )
inline

Definition at line 49 of file G4RPGProtonInelastic.hh.

50 {}

Member Function Documentation

◆ ApplyYourself()

G4HadFinalState * G4RPGProtonInelastic::ApplyYourself ( const G4HadProjectile aTrack,
G4Nucleus targetNucleus 
)
virtual

Reimplemented from G4HadronicInteraction.

Definition at line 33 of file G4RPGProtonInelastic.cc.

35{
37 const G4HadProjectile *originalIncident = &aTrack;
38 if (originalIncident->GetKineticEnergy()<= 0.1)
39 {
43 return &theParticleChange;
44 }
45
46 //
47 // create the target particle
48 //
49 G4DynamicParticle *originalTarget = targetNucleus.ReturnTargetParticle();
50
51 if (originalIncident->GetKineticEnergy()/GeV < 0.01+2.*G4UniformRand()/9. )
52 {
53 SlowProton( originalIncident, targetNucleus );
54 delete originalTarget;
55 return &theParticleChange;
56 }
57
58 // Fermi motion and evaporation
59 // As of Geant3, the Fermi energy calculation had not been Done
60
61 G4double ek = originalIncident->GetKineticEnergy();
62 G4double amas = originalIncident->GetDefinition()->GetPDGMass();
63 G4ReactionProduct modifiedOriginal;
64 modifiedOriginal = *originalIncident;
65
66 G4double tkin = targetNucleus.Cinema( ek );
67 ek += tkin;
68 modifiedOriginal.SetKineticEnergy(ek);
69 G4double et = ek + amas;
70 G4double p = std::sqrt( std::abs((et-amas)*(et+amas)) );
71 G4double pp = modifiedOriginal.GetMomentum().mag();
72 if (pp > 0.0) {
73 G4ThreeVector momentum = modifiedOriginal.GetMomentum();
74 modifiedOriginal.SetMomentum( momentum * (p/pp) );
75 }
76 //
77 // calculate black track energies
78 //
79 tkin = targetNucleus.EvaporationEffects(ek);
80 ek -= tkin;
81 modifiedOriginal.SetKineticEnergy(ek);
82 et = ek + amas;
83 p = std::sqrt( std::abs((et-amas)*(et+amas)) );
84 pp = modifiedOriginal.GetMomentum().mag();
85 if (pp > 0.0) {
86 G4ThreeVector momentum = modifiedOriginal.GetMomentum();
87 modifiedOriginal.SetMomentum( momentum * (p/pp) );
88 }
89 const G4double cutOff = 0.1;
90 if (modifiedOriginal.GetKineticEnergy() < cutOff) {
91 SlowProton( originalIncident, targetNucleus );
92 delete originalTarget;
93 return &theParticleChange;
94 }
95
96 G4ReactionProduct currentParticle = modifiedOriginal;
97 G4ReactionProduct targetParticle;
98 targetParticle = *originalTarget;
99 currentParticle.SetSide( 1 ); // incident always goes in forward hemisphere
100 targetParticle.SetSide( -1 ); // target always goes in backward hemisphere
101 G4bool incidentHasChanged = false;
102 G4bool targetHasChanged = false;
103 G4bool quasiElastic = false;
104 G4FastVector<G4ReactionProduct,256> vec; // vec will contain the sec. particles
105 G4int vecLen = 0;
106 vec.Initialize( 0 );
107
108 InitialCollision(vec, vecLen, currentParticle, targetParticle,
109 incidentHasChanged, targetHasChanged);
110
111 CalculateMomenta(vec, vecLen,
112 originalIncident, originalTarget, modifiedOriginal,
113 targetNucleus, currentParticle, targetParticle,
114 incidentHasChanged, targetHasChanged, quasiElastic);
115
116 SetUpChange( vec, vecLen,
117 currentParticle, targetParticle,
118 incidentHasChanged );
119
120 delete originalTarget;
121 return &theParticleChange;
122}
@ isAlive
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
#define G4UniformRand()
Definition: Randomize.hh:52
Hep3Vector unit() const
double mag() const
Hep3Vector vect() const
void Initialize(G4int items)
Definition: G4FastVector.hh:59
void SetStatusChange(G4HadFinalStateStatus aS)
void SetEnergyChange(G4double anEnergy)
void SetMomentumChange(const G4ThreeVector &aV)
const G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
const G4LorentzVector & Get4Momentum() const
G4double EvaporationEffects(G4double kineticEnergy)
Definition: G4Nucleus.cc:278
G4double Cinema(G4double kineticEnergy)
Definition: G4Nucleus.cc:382
G4DynamicParticle * ReturnTargetParticle() const
Definition: G4Nucleus.cc:241
void CalculateMomenta(G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen, const G4HadProjectile *originalIncident, const G4DynamicParticle *originalTarget, G4ReactionProduct &modifiedOriginal, G4Nucleus &targetNucleus, G4ReactionProduct &currentParticle, G4ReactionProduct &targetParticle, G4bool &incidentHasChanged, G4bool &targetHasChanged, G4bool quasiElastic)
void SetUpChange(G4FastVector< G4ReactionProduct, 256 > &vec, G4int &vecLen, G4ReactionProduct &currentParticle, G4ReactionProduct &targetParticle, G4bool &incidentHasChanged)
void SetMomentum(const G4double x, const G4double y, const G4double z)
G4double GetKineticEnergy() const
G4ThreeVector GetMomentum() const
void SetSide(const G4int sid)
void SetKineticEnergy(const G4double en)

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