43 verboseLevel(0), theMinEnergy(0.0), theMaxEnergy(25.0*
GeV),
44 isBlocked(false), recoilEnergyThreshold(0.0), theModelName(modelName),
79 if(
IsBlocked(aMaterial) ) {
return 0.0; }
80 if(
IsBlocked(anElement) ) {
return 0.0; }
83 for(
size_t i=0; i<length; ++i ) {
90 for(
size_t i=0; i<length; ++i ) {
97 G4cout <<
"*** Warning from HadronicInteraction::GetMinEnergy" <<
G4endl
98 <<
" material " << aMaterial->
GetName()
99 <<
" not found in min energy List" <<
G4endl;
108 G4cout <<
"*** Warning from HadronicInteraction::SetMinEnergy" <<
G4endl
109 <<
" The model is not active for the Element "
114 for(
size_t i=0; i<length; ++i ) {
129 G4cout <<
"*** Warning from HadronicInteraction::SetMinEnergy" <<
G4endl
130 <<
" The model is not active for the Material "
135 for(
size_t i=0; i<length; ++i ) {
143 theMinEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
149 if(
IsBlocked(aMaterial) ) {
return 0.0; }
150 if(
IsBlocked(anElement) ) {
return 0.0; }
153 for(
size_t i=0; i<length; ++i ) {
160 for(
size_t i=0; i<length; ++i ) {
167 G4cout <<
"*** Warning from HadronicInteraction::GetMaxEnergy" <<
G4endl
168 <<
" material " << aMaterial->
GetName()
169 <<
" not found in min energy List" <<
G4endl;
178 G4cout <<
"*** Warning from HadronicInteraction::SetMaxEnergy" <<
G4endl
179 <<
"Warning: The model is not active for the Element "
184 for(
size_t i=0; i<length; ++i ) {
199 G4cout <<
"*** Warning from HadronicInteraction::SetMaxEnergy" <<
G4endl
200 <<
"Warning: The model is not active for the Material "
205 for(
size_t i=0; i<length; ++i ) {
213 theMaxEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
247 return std::pair<G4double, G4double>(2.*
perCent, 1. *
GeV);
250 std::pair<G4double, G4double>
259 outFile <<
"The description for this model has not been written yet.\n";
void SetMinEnergy(G4double anEnergy)
void SetMaxEnergy(const G4double anEnergy)
std::vector< std::pair< G4double, const G4Element * > > theMinEnergyListElements
const G4String & GetName() const
G4double GetMinEnergy() const
G4HadronicInteraction(const G4String &modelName="HadronicModel")
static constexpr double perCent
virtual G4bool IsApplicable(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
std::vector< const G4Material * > theBlockedList
virtual ~G4HadronicInteraction()
static constexpr double second
std::vector< const G4Element * > theBlockedListElements
std::vector< std::pair< G4double, const G4Material * > > theMaxEnergyList
std::vector< std::pair< G4double, const G4Material * > > theMinEnergyList
virtual void InitialiseModel()
const G4String & GetName() const
static G4HadronicInteractionRegistry * Instance()
virtual std::pair< G4double, G4double > GetEnergyMomentumCheckLevels() const
virtual G4double SampleInvariantT(const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
void DeActivateFor(const G4Material *aMaterial)
G4HadronicInteractionRegistry * registry
virtual void ModelDescription(std::ostream &outFile) const
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
void RegisterMe(G4HadronicInteraction *aModel)
G4double GetMaxEnergy() const
std::pair< G4double, G4double > epCheckLevels
G4GLOB_DLL std::ostream G4cout
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const
std::vector< std::pair< G4double, const G4Element * > > theMaxEnergyListElements
static constexpr double GeV
G4bool isBlocked(ParticleList const &p, Nucleus const *const n)
Check Pauli blocking.
void RemoveMe(G4HadronicInteraction *aModel)