49 lines
2.2 KiB
Plaintext
49 lines
2.2 KiB
Plaintext
Example GB02 : force collision biasing
|
|
--------------------------------------
|
|
|
|
This example illustrates how to make a force collision biasing in a way
|
|
that is essentially the same than the MCNP one.
|
|
|
|
Generally speaking, the scheme consists of a G4VBiasingOperator that takes
|
|
decisions on what sort of biasing is to be applied. The operator makes these
|
|
decision on requests of the G4BiasingProcessInterface process. This process
|
|
wraps an actual physics process and asks to the operator about what sort of
|
|
biasing it should apply. This operator selects G4VBiasingOperation objects that
|
|
implement the actual biasing content.
|
|
|
|
In the present case, we make use of the biasing operator
|
|
|
|
G4BOptrForceCollision
|
|
|
|
that implements an "a la MCNP" force collision scheme for one particle type.
|
|
This operator is defined in processes/biasing/generic. It is a non-trivial
|
|
operator.
|
|
It starts by "splitting" the track at the volume entrance. Then this
|
|
track is forced to fly through the volume with no interaction. The
|
|
G4OptnForceFreeFlight biasing operation is used for that.
|
|
The second copy is then forced to interact within the volume, which is
|
|
handled by the G4BOptnForceCommonTruncatedExp operation : it is common as it
|
|
takes care of several processes by itself, and it applies a truncated
|
|
exponential law : ie and exponential law limited to the [0,L] range, L being
|
|
the volume width along the track flight.
|
|
|
|
To allow several particle types to undergo this force interaction scheme,
|
|
an other operator is defined
|
|
|
|
GB02BOptrMultiParticleForceCollision
|
|
|
|
which holds one G4BOptrForceCollision per particle type, and which
|
|
delegates then everything to it.
|
|
|
|
The geometry is simple : a single volume to which an instance of
|
|
GB02BOptrMultiParticleForceCollision is attached to.
|
|
|
|
The wrapping of physics processes by G4BiasingProcessInterface processes
|
|
is simply handled by the G4GenericBiasingPhysics physics constructor, as shown
|
|
in the main program.
|
|
|
|
|
|
Then, at whatever level (stepping action, or sensitive detector) the
|
|
statistical weight of the track can be obtained as:
|
|
|
|
w = track->GetWeight() ; |