49 if ( fParticleToBias == 0 )
52 ed <<
"Particle `" << particleName <<
"' not found !" <<
G4endl;
53 G4Exception(
"GB05BOptrSplitAndKillByCrossSection(...)",
59 fSplitAndKillByCrossSection =
68 delete fSplitAndKillByCrossSection;
89 for (
size_t i = 0 ; i < fProcessesToEquipoise.size() ; i++ )
91 G4bool processFound(
false);
98 if ( fProcessesToEquipoise[i] ==
108 G4String particleName =
"(unknown)";
109 if ( fParticleToBias !=
nullptr )
114 ed <<
"Process `" << fProcessesToEquipoise[i]
115 <<
"' not found for particle `" << particleName <<
"'"
117 G4Exception(
"GB05BOptrSplitAndKillByCrossSection::StartRun(...)",
127 if ( fProcessesToEquipoise.size() == 0 || fProcesses.size() == 0 )
130 ed <<
"No processes to counterbalance for defined or found ! "
131 <<
"Biasing will do nothing."
133 G4Exception(
"GB05BOptrSplitAndKillByCrossSection::StartRun(...)",
144 GB05BOptrSplitAndKillByCrossSection::
145 ProposeNonPhysicsBiasingOperation(
const G4Track* track,
162 for (
size_t i = 0 ; i < fProcesses.size() ; i++ )
164 G4double interactionLength = fProcesses[i]->GetCurrentInteractionLength();
165 if ( interactionLength <
DBL_MAX/10. )
166 totalCrossSection += 1./interactionLength;
168 if ( totalCrossSection <
DBL_MIN )
return 0;
170 G4double totalInteractionLength = 1./totalCrossSection;
178 return fSplitAndKillByCrossSection;
185 fProcessesToEquipoise.push_back( processName );
G4ParticleDefinition * GetDefinition() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
std::ostringstream G4ExceptionDescription
virtual ~GB05BOptrSplitAndKillByCrossSection()
const std::vector< const G4BiasingProcessInterface * > & GetPhysicsBiasingProcessInterfaces() const
Definition of the GB05BOptnSplitAndKillByCrossSection class.
const G4String & GetParticleName() const
G4VProcess * GetWrappedProcess() const
GB05BOptrSplitAndKillByCrossSection(G4String particleToBias, G4String name="SplitAndKillByXS")
void SetInteractionLength(G4double interactionLength)
const G4String & GetProcessName() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static G4ParticleTable * GetParticleTable()
G4ProcessManager * GetProcessManager() const
void AddProcessToEquipoise(G4String processName)
Definition of the GB05BOptrSplitAndKillByCrossSection class.
const G4BiasingProcessSharedData * GetSharedData() const