45 fFirstProcess(0), fLastProcess(0),
55 ed <<
" Particle `" << particleName <<
"' not found !" <<
G4endl;
56 G4Exception(
" G4BOptrForceCollision::G4BOptrForceCollision(...)",
65 fFirstProcess(0), fLastProcess(0),
75 for ( std::map< const G4BiasingProcessInterface*, G4BOptnForceFreeFlight* >::iterator it = fFreeFlightOperations.begin() ;
76 it != fFreeFlightOperations.end() ;
77 it++ )
delete (*it).second;
78 delete fSharedForceInteractionOperation;
79 delete fCloningOperation;
92 if ( fLastProcess == 0 )
94 fProcesses.push_back(callingProcess);
99 fLastProcess = callingProcess;
119 if ( callingProcess == fFirstProcess )
130 fSharedForceInteractionOperation->
Initialize( track );
151 if ( currentInteractionLength <
DBL_MAX/10. )
154 operationToReturn = fSharedForceInteractionOperation;
159 if ( ( callingProcess == fLastProcess ) &&
161 fSharedForceInteractionOperation->
Sample();
164 return operationToReturn;
180 if ( fPreviousOperationApplied == fCloningOperation )
196 return fFreeFlightOperations[callingProcess];
218 fInitialTrackWeight = track->
GetWeight();
220 return fCloningOperation;
230 fPreviousOperationApplied = 0;
236 fPreviousOperationApplied = 0;
245 fPreviousOperationApplied = operationApplied;
246 if ( operationApplied == fCloningOperation )
virtual void OperationApplied(const G4BiasingProcessInterface *callingProcess, G4BiasingAppliedCase biasingCase, G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
G4ParticleDefinition * GetDefinition() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
virtual void StartTracking(const G4Track *track)
std::ostringstream G4ExceptionDescription
void UpdateForStep(const G4Step *)
void Initialize(const G4Track *)
G4StepStatus GetStepStatus() const
void AddCrossSection(const G4VProcess *, G4double)
G4double GetMaximumDistance() const
const G4ThreeVector & GetInitialMomentum() const
const G4Step * GetStep() const
G4BOptrForceCollision(G4String particleToForce, G4String name="ForceCollision")
G4VProcess * GetWrappedProcess() const
G4bool GetIsFirstPostStepGPILInterface(G4bool physOnly=true) const
G4StepPoint * GetPreStepPoint() const
void ResetInitialTrackWeight(G4double w)
G4int GetCurrentStepNumber() const
G4bool GetIsLastPostStepGPILInterface(G4bool physOnly=true) const
G4double GetCurrentInteractionLength() const
G4bool GetInteractionOccured() const
const G4String & GetProcessName() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4int GetNumberOfSharing() const
void ForgetTrack(const G4Track *track)
void SetCloneWeights(G4double clone1Weight, G4double clone2Weight)
G4ThreeVector GetMomentum() const
static G4ParticleTable * GetParticleTable()
void RememberSecondaries(const G4BiasingProcessInterface *callingProcess, const G4VBiasingOperation *operationApplied, const G4VParticleChange *particleChangeProduced)
G4double GetWeight() const
G4ILawCommonTruncatedExp * GetCommonTruncatedExpLaw()
const G4VBiasingOperation * GetBirthOperation(const G4Track *)
void SetInteractionOccured(G4bool b)
G4VBiasingOperation * GetPreviousOccurenceBiasingOperation() const
virtual void ExitBiasing(const G4Track *, const G4BiasingProcessInterface *)