45 fParallelWorldIndex ( -1 ),
46 fBiasingSharedData ( nullptr ),
48 fDummyParticleChange()
68 fPreStepTouchableHistory =
70 ->GetNavigator( fParallelWorldIndex )
71 ->CreateTouchableHistoryHandle();
94 G4bool isLimiting = fBiasingSharedData
102 return &fDummyParticleChange;
111 fPostStepTouchableHistory =
112 biasingLimiterProcess
113 ->GetNavigator( fParallelWorldIndex )
114 ->CreateTouchableHistoryHandle();
123 if ( fPreStepTouchableHistory ->GetVolume() !=
129 return &fDummyParticleChange;
144 G4int preImportance = (*fImportanceMap)[ preReplicaNumber];
145 G4int postImportance = (*fImportanceMap)[postReplicaNumber];
155 if ( postImportance > preImportance )
158 G4int splittingFactor = postImportance/preImportance;
161 G4double weightOfTrack = initialWeight/splittingFactor;
183 if ( random > survivingProbability )
196 return &fParticleChange;
virtual void Initialize(const G4Track &track)
G4double condition(const G4ErrorSymMatrix &m)
virtual ~GB06BOptnSplitAndKillByImportance()
G4VPhysicalVolume * GetVolume(G4int depth=0) const
virtual G4VParticleChange * GenerateBiasingFinalState(const G4Track *, const G4Step *) final
void ProposeParentWeight(G4double finalWeight)
void SetWeight(G4double aValue)
void SetSecondaryWeightByProcess(G4bool)
const G4ParallelGeometriesLimiterProcess * GetParallelGeometriesLimiterProcess() const
G4int GetReplicaNumber(G4int depth=0) const
GB06BOptnSplitAndKillByImportance(G4String name)
const std::vector< G4bool > & GetIsLimiting() const
virtual void Initialize(const G4Track &)
void AddSecondary(G4Track *aSecondary)
G4double GetWeight() const
virtual G4double DistanceToApplyOperation(const G4Track *, G4double, G4ForceCondition *condition) final
void ProposeTrackStatus(G4TrackStatus status)
Definition of the GB06BOptnSplitAndKillByImportance class.