63 fWeightSurvival(wsurvival),
65 fSourceImportance(isource),
68 fGhostWorldName(
"NoParallelWorld"), fGhostWorld(0),
69 fGhostNavigator(0), fNavigatorID(-1), fFieldTrack(
'0')
73 G4Exception(
"G4WeightCutOffProcess::G4WeightCutOffProcess()",
75 "Failed to allocate G4ParticleChange !");
98 delete fParticleChange;
114 fGhostWorldName = parallelWorldName;
116 fGhostNavigator = fTransportationManager->
GetNavigator(fGhostWorld);
126 fGhostWorldName = parallelWorld->
GetName();
127 fGhostWorld = parallelWorld;
128 fGhostNavigator = fTransportationManager->
GetNavigator(fGhostWorld);
149 G4Exception(
"G4WeightCutOffProcess::StartTracking",
151 "G4WeightCutOffProcess is used for tracking without having a parallel world assigned");
167 fNewGhostTouchable = fOldGhostTouchable;
219 fNewGhostTouchable = fOldGhostTouchable;
244 if (w<R*fWeightLimit)
274 if (w<R*fWeightLimit)
289 return fParticleChange;
310 if (previousStepSize > 0.)
311 { fGhostSafety -= previousStepSize; }
314 if (fGhostSafety < 0.) fGhostSafety = 0.0;
319 if (currentMinimumStep <= fGhostSafety && currentMinimumStep > 0.)
322 returnedStep = currentMinimumStep;
324 proposedSafety = fGhostSafety - currentMinimumStep;
333 = fPathFinder->
ComputeStep(fFieldTrack,currentMinimumStep,fNavigatorID,
341 fGhostSafety = fGhostNavigator->
ComputeSafety(endTrack.GetPosition());
347 proposedSafety = fGhostSafety;
353 returnedStep *= (1.0 + 1.0e-9);
398 void G4WeightCutOffProcess::CopyStep(
const G4Step & step)
void PrepareNewTrack(const G4ThreeVector &position, const G4ThreeVector &direction, G4VPhysicalVolume *massStartVol=0)
static G4PathFinder * GetInstance()
G4double condition(const G4ErrorSymMatrix &m)
void SetStepLength(G4double value)
virtual void Initialize(const G4Track &)
void SetTrack(G4Track *value)
G4double GetStepLength() const
G4StepStatus GetStepStatus() const
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
const G4ThreeVector & GetPosition() const
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
G4TouchableHandle CreateTouchableHandle(G4int navId) const
G4SteppingControl GetControlFlag() const
const G4VTouchable * GetTouchable() const
void SetStepStatus(const G4StepStatus aValue)
virtual G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &)
virtual ~G4WeightCutOffProcess()
const G4String & GetName() const
G4StepPoint * GetPreStepPoint() const
void ProposeWeight(G4double finalWeight)
G4WeightCutOffProcess(G4double wsurvival, G4double wlimit, G4double isource, G4VIStore *istore, const G4String &aName="WeightCutOffProcess", G4bool para=false)
G4GLOB_DLL std::ostream G4cout
G4int GetCurrentStepNumber() const
G4VPhysicalVolume * GetPhysicalVolume() const
const G4String & GetName() const
void SetControlFlag(G4SteppingControl StepControlFlag)
G4double ComputeStep(const G4FieldTrack &pFieldTrack, G4double pCurrentProposedStepLength, G4int navigatorId, G4int stepNo, G4double &pNewSafety, ELimited &limitedStep, G4FieldTrack &EndState, G4VPhysicalVolume *currentVolume)
const G4String & GetProcessName() const
virtual G4double GetImportance(const G4GeometryCell &gCell) const =0
G4double GetTotalEnergyDeposit() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
static G4TransportationManager * GetTransportationManager()
virtual void Initialize(const G4Track &)
G4VPhysicalVolume * GetParallelWorld(const G4String &worldName)
G4int ActivateNavigator(G4Navigator *aNavigator)
const G4ThreeVector & GetMomentumDirection() const
virtual G4VParticleChange * AlongStepDoIt(const G4Track &, const G4Step &)
G4Navigator * GetNavigator(const G4String &worldName)
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &, G4ForceCondition *)
G4StepPoint * GetPostStepPoint() const
virtual G4int GetReplicaNumber(G4int depth=0) const
G4VParticleChange * pParticleChange
G4VPhysicalVolume * GetVolume() const
G4double GetWeight() const
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &, G4double, G4double, G4double &, G4GPILSelection *)
void SetTotalEnergyDeposit(G4double value)
void ProposeTrackStatus(G4TrackStatus status)
virtual G4double ComputeSafety(const G4ThreeVector &globalpoint, const G4double pProposedMaxLength=DBL_MAX, const G4bool keepState=true)
G4Track * GetTrack() const
void StartTracking(G4Track *)
void SetTouchableHandle(const G4TouchableHandle &apValue)
void SetParallelWorld(G4String parallelWorldName)
const G4TouchableHandle & GetTouchableHandle() const
static void Update(G4FieldTrack *, const G4Track *)