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

#include <G4LowEGammaNuclearModel.hh>

Inheritance diagram for G4LowEGammaNuclearModel:

Public Member Functions

 G4LowEGammaNuclearModel ()
 ~G4LowEGammaNuclearModel () override
G4HadFinalStateApplyYourself (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus) final
void InitialiseModel () final
Public Member Functions inherited from G4HadronicInteraction
 G4HadronicInteraction (const G4String &modelName="HadronicModel")
virtual ~G4HadronicInteraction ()
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 &)
 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 Member Functions inherited from G4HadronicInteraction
void SetModelName (const G4String &nam)
G4bool IsBlocked () const
void Block ()
Protected Attributes inherited from G4HadronicInteraction
G4HadFinalState theParticleChange
G4int verboseLevel
G4double theMinEnergy
G4double theMaxEnergy
G4bool isBlocked

Detailed Description

Definition at line 46 of file G4LowEGammaNuclearModel.hh.

Constructor & Destructor Documentation

◆ G4LowEGammaNuclearModel()

G4LowEGammaNuclearModel::G4LowEGammaNuclearModel ( )
explicit

Definition at line 47 of file G4LowEGammaNuclearModel.cc.

48 : G4HadronicInteraction("GammaNPreco"),lab4mom(0.,0.,0.,0.), secID(-1)
49{
51 SetMinEnergy( 0.0*CLHEP::GeV );
53
54 // reuse existing pre-compound model
57 fPreco = static_cast<G4PreCompoundModel*>(p);
58 if(!fPreco) { fPreco = new G4PreCompoundModel(); }
59}
G4HadronicInteraction * FindModel(const G4String &name)
static G4HadronicInteractionRegistry * Instance()
void SetMinEnergy(G4double anEnergy)
G4HadronicInteraction(const G4String &modelName="HadronicModel")
const G4String & GetModelName() const
void SetMaxEnergy(const G4double anEnergy)
static G4HadronicParameters * Instance()
static G4int GetModelID(const G4int modelIndex)

◆ ~G4LowEGammaNuclearModel()

G4LowEGammaNuclearModel::~G4LowEGammaNuclearModel ( )
override

Definition at line 61 of file G4LowEGammaNuclearModel.cc.

62{}

Member Function Documentation

◆ ApplyYourself()

G4HadFinalState * G4LowEGammaNuclearModel::ApplyYourself ( const G4HadProjectile & aTrack,
G4Nucleus & targetNucleus )
finalvirtual

Reimplemented from G4HadronicInteraction.

Definition at line 67 of file G4LowEGammaNuclearModel.cc.

69{
70 theParticleChange.Clear();
71
72 G4int A = theNucleus.GetA_asInt();
73 G4int Z = theNucleus.GetZ_asInt();
74
75 // Create initial state
76 lab4mom.set(0.,0.,0.,G4NucleiProperties::GetNuclearMass(A, Z));
77 lab4mom += aTrack.Get4Momentum();
78
79 G4Fragment frag(A, Z, lab4mom);
80
81 frag.SetCreatorModelID(secID);
82
83 if (verboseLevel > 1) {
84 G4cout << "G4LowEGammaNuclearModel::ApplyYourself initial G4Fragmet:"
85 << G4endl;
86 G4cout << frag << G4endl;
87 }
88 G4ReactionProductVector* res = fPreco->DeExcite(frag);
89
90 // secondaries produced
91 if(res) {
92
93 theParticleChange.SetStatusChange(stopAndKill);
94 std::size_t nsec = res->size();
95 if (verboseLevel > 1) {
96 G4cout << "G4LowEGammaNuclearModel: " << nsec << " secondaries" << G4endl;
97 }
98 for(std::size_t i=0; i<nsec; ++i) {
99 if((*res)[i]) {
100 G4double ekin = (*res)[i]->GetKineticEnergy();
101 G4ThreeVector dir(0.,0.,1.);
102 if(ekin > 0.0) { dir = (*res)[i]->GetMomentum().unit(); }
103 G4HadSecondary* news = new G4HadSecondary(
104 new G4DynamicParticle((*res)[i]->GetDefinition(), dir, ekin));
105 news->SetTime((*res)[i]->GetTOF());
106 news->SetCreatorModelID(secID);
107 theParticleChange.AddSecondary(*news);
108 if (verboseLevel > 1) {
109 G4cout << i << ". " << (*res)[i]->GetDefinition()->GetParticleName()
110 << " Ekin(MeV)= " << ekin/MeV
111 << " dir: " << dir << G4endl;
112 }
113 delete (*res)[i];
114 delete news;
115 }
116 }
117 delete res;
118 }
119 return &theParticleChange;
120}
@ stopAndKill
std::vector< G4ReactionProduct * > G4ReactionProductVector
CLHEP::Hep3Vector G4ThreeVector
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
const G4double A[17]
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
const G4LorentzVector & Get4Momentum() const
void SetTime(G4double aT)
void SetCreatorModelID(G4int id)
static G4double GetNuclearMass(const G4double A, const G4double Z)

◆ InitialiseModel()

void G4LowEGammaNuclearModel::InitialiseModel ( )
finalvirtual

Reimplemented from G4HadronicInteraction.

Definition at line 64 of file G4LowEGammaNuclearModel.cc.

65{}

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