84 delete fElementSelector;
149 G4bool nuclearCapture =
true;
159 G4int nEmCascadeSec = nSecondaries;
176 nuclearCapture =
false;
178 resultDecay->
Clear();
195 ed <<
"Target element "<<elm->
GetName()<<
" Z= "
198 DumpState(track,
"ChooseHadronicInteraction",ed);
199 ed <<
" No HadronicInteraction found out" <<
G4endl;
200 G4Exception(
"G4HadronStoppingProcess::AtRestDoIt",
"had005",
205 G4int reentryCount = 0;
217 ed <<
"Target element "<<elm->
GetName()<<
" Z= "
221 ed <<
" ApplyYourself failed" <<
G4endl;
222 G4Exception(
"G4HadronStoppingProcess::AtRestDoIt",
"had006",
229 if(reentryCount>100) {
232 ed <<
"Target element "<<elm->
GetName()<<
" Z= "
236 ed <<
" ApplyYourself does not completed after 100 attempts" <<
G4endl;
237 G4Exception(
"G4HadronStoppingProcess::AtRestDoIt",
"had006",
247 for(
size_t i=0; i<nnuc; ++i) {
252 nSecondaries += nnuc;
264 for(
G4int i=0; i<nSecondaries; ++i) {
269 if(time < 0.0) { time = 0.0; }
279 if (i<nEmCascadeSec) {
281 }
else if (nuclearCapture) {
302 outFile <<
"Base process for negatively charged particle capture at rest.\n";
G4double condition(const G4ErrorSymMatrix &m)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
virtual G4Element * SelectZandA(const G4Track &track, G4Nucleus *)
const G4String & GetName() const
G4HadFinalStateStatus GetStatusChange() const
G4double GetLocalEnergyDeposit() const
void AddSecondaries(const std::vector< G4HadSecondary > &addSecs)
std::size_t GetNumberOfSecondaries() const
G4HadSecondary * GetSecondary(size_t i)
void Initialise(const G4Track &aT)
void SetGlobalTime(G4double t)
void SetBoundEnergy(G4double e)
G4double GetGlobalTime() const
G4DynamicParticle * GetParticle()
G4double GetWeight() const
void SetTime(G4double aT)
virtual ~G4HadronStoppingProcess()
virtual G4bool IsApplicable(const G4ParticleDefinition &)
virtual void ProcessDescription(std::ostream &outFile) const
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
G4HadronStoppingProcess(const G4String &name="hadronCaptureAtRest")
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &track, G4ForceCondition *condition)
virtual void PreparePhysicsTable(const G4ParticleDefinition &)
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
virtual G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &)
virtual G4HadFinalState * ApplyYourself(const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
const G4String & GetModelName() const
void RegisterExtraProcess(G4VProcess *)
void RegisterParticleForExtraProcess(G4VProcess *, const G4ParticleDefinition *)
static G4HadronicProcessStore * Instance()
void PrintInfo(const G4ParticleDefinition *)
G4Nucleus * GetTargetNucleusPointer()
G4HadFinalState * CheckResult(const G4HadProjectile &thePro, const G4Nucleus &targetNucleus, G4HadFinalState *result)
G4ParticleChange * theTotalResult
G4HadronicInteraction * ChooseHadronicInteraction(const G4HadProjectile &aHadProjectile, G4Nucleus &aTargetNucleus, const G4Material *aMaterial, const G4Element *anElement)
void CheckEnergyMomentumConservation(const G4Track &, const G4Nucleus &)
void DumpState(const G4Track &, const G4String &, G4ExceptionDescription &)
void AddSecondary(G4Track *aSecondary)
virtual void Initialize(const G4Track &)
G4double GetPDGCharge() const
static G4int Register(const G4String &)
G4double GetWeight() const
void SetWeight(G4double aValue)
const G4ThreeVector & GetPosition() const
void SetTouchableHandle(const G4TouchableHandle &apValue)
G4double GetGlobalTime() const
G4Material * GetMaterial() const
const G4TouchableHandle & GetTouchableHandle() const
void SetCreatorModelIndex(G4int idx)
void ProposeTrackStatus(G4TrackStatus status)
void ProposeWeight(G4double finalWeight)
void ProposeLocalEnergyDeposit(G4double anEnergyPart)
void SetNumberOfSecondaries(G4int totSecondaries)
G4bool enablePostStepDoIt
const G4String & GetProcessName() const