42 verboseLevel(0), theMinEnergy(0.0),
43 isBlocked(false), recoilEnergyThreshold(0.0), theModelName(modelName),
86 if(!theMinEnergyListElements.empty()) {
87 for(
auto const& elmlist : theMinEnergyListElements) {
88 if( anElement == elmlist.second )
89 {
return elmlist.first; }
92 if(!theMinEnergyList.empty()) {
93 for(
auto const & matlist : theMinEnergyList) {
94 if( aMaterial == matlist.second )
95 {
return matlist.first; }
105 if(!theMinEnergyListElements.empty()) {
106 for(
auto & elmlist : theMinEnergyListElements) {
107 if( anElement == elmlist.second ) {
108 elmlist.first = anEnergy;
113 theMinEnergyListElements.push_back(std::pair<G4double, const G4Element *>(anEnergy, anElement));
120 if(!theMinEnergyList.empty()) {
121 for(
auto & matlist : theMinEnergyList) {
122 if( aMaterial == matlist.second ) {
123 matlist.first = anEnergy;
128 theMinEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
136 if(!theMaxEnergyListElements.empty()) {
137 for(
auto const& elmlist : theMaxEnergyListElements) {
138 if( anElement == elmlist.second )
139 {
return elmlist.first; }
142 if(!theMaxEnergyList.empty()) {
143 for(
auto const& matlist : theMaxEnergyList) {
144 if( aMaterial == matlist.second )
145 {
return matlist.first; }
155 if(!theMaxEnergyListElements.empty()) {
156 for(
auto & elmlist : theMaxEnergyListElements) {
157 if( anElement == elmlist.second ) {
158 elmlist.first = anEnergy;
163 theMaxEnergyListElements.push_back(std::pair<G4double, const G4Element *>(anEnergy, anElement));
169 if(!theMaxEnergyList.empty()) {
170 for(
auto & matlist: theMaxEnergyList) {
171 if( aMaterial == matlist.second ) {
172 matlist.first = anEnergy;
177 theMaxEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
183 theBlockedList.push_back(aMaterial);
189 theBlockedListElements.push_back(anElement);
195 for (
auto const& mat : theBlockedList) {
196 if (aMaterial == mat)
return true;
204 for (
auto const& elm : theBlockedListElements) {
205 if (anElement == elm)
return true;
213 return std::pair<G4double, G4double>(2.*perCent, 1. * GeV);
216std::pair<G4double, G4double>
219 return epCheckLevels;
224 outFile <<
"The description for this model has not been written yet.\n";
void RegisterMe(G4HadronicInteraction *aModel)
void RemoveMe(G4HadronicInteraction *aModel)
static G4HadronicInteractionRegistry * Instance()
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
void DeActivateFor(const G4Material *aMaterial)
virtual ~G4HadronicInteraction()
virtual void InitialiseModel()
virtual const std::pair< G4double, G4double > GetFatalEnergyCheckLevels() const
void SetMinEnergy(G4double anEnergy)
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
virtual std::pair< G4double, G4double > GetEnergyMomentumCheckLevels() const
G4HadronicInteraction(const G4String &modelName="HadronicModel")
virtual void ModelDescription(std::ostream &outFile) const
G4double GetMinEnergy() const
virtual G4bool IsApplicable(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
void SetMaxEnergy(const G4double anEnergy)
virtual G4double SampleInvariantT(const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
G4double GetMaxEnergy() const
static G4HadronicParameters * Instance()
G4double GetMaxEnergy() const