Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/biasing/GB06/

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Name Size       Last modified (GMT) Description
Back Parent directory       2024-12-05 15:16:16
Folder include/       2024-12-05 15:16:16
Folder src/       2024-12-05 15:16:16
File CMakeLists.txt 2359 bytes       2024-12-05 15:16:16
File GNUmakefile 368 bytes       2024-12-05 15:16:16
File History 1307 bytes       2024-12-05 15:16:16
File README 5063 bytes       2024-12-05 15:16:16
C++ file exampleGB06.cc 6036 bytes       2024-12-05 15:16:16
File exampleGB06.in 71 bytes       2024-12-05 15:16:16
File exampleGB06.out 96967 bytes       2024-12-05 15:16:16
File vis.mac 1863 bytes       2024-12-05 15:16:16

  1               Example GB06: parallel geometries with generic biasing
  2               ------------------------------------------------------
  3 
  4 
  5     This example demonstrates the use of parallel geometries in generic biasing,
  6 on a classical shield problem, using geometry-based importance biasing.
  7 
  8 1) Geometry and activation of navigation in parallel world:
  9    --------------------------------------------------------
 10    
 11     The geometry is made of two parts:
 12       - the mass (standard) geometry, which is made of a single block of
 13     concrete ; this is implemented in GB06DetectorConstuction ;
 14   - a parallel geometry, in which a series of slices is defined, these
 15     slices being created using a replica volume ; this is implemeted in
 16     GB06ParallelGeometryForSlices, which derives from the base class
 17     G4VUserParallelWorld .
 18 
 19     The navigation in the parallel geometry is activated for neutrons. This is
 20 done in the main program exampleGB06.cc. The activation is made using the
 21 facilities of the G4GenericBiasingPhysics class, as:
 22 
 23     biasingPhysics->AddParallelGeometry("neutron",
 24                                         "parallelWorldForSlices");
 25 
 26 where the first name is for the particle type to be aware of the parallel word,
 27 the second argument is the name of the parallel world.
 28 
 29     When checking the process list of neutrons (/particle/select neutron and
 30 then /particle/process dump ) a new process, `biasingLimiter', is visible. This
 31 process handles the step limitation in the parallel geometry. This process can
 32 handle several parallel geometries, these being passed to the process as
 33 biasingPhysics->AddParallelGeometry("neutron", "parallelWorld1") ,
 34 biasingPhysics->AddParallelGeometry("neutron", "parallelWorld2") , etc.
 35 
 36     The geometry-based importance technique utilizes only splitting and killing,
 37 hence techniques which are "non-physics biasing" techniques, in the sense they
 38 don't modify the behavior of physics processes. For this reason, only a process
 39 making the interface between the tracking and the biaising is inserted in the
 40 physics list, the physics processes themselves being untouched, this is made as:
 41 
 42              biasingPhysics->NonPhysicsBias("neutron");
 43 
 44     Finally, the volume (ie the slice) importances are defined in a simple
 45 "importance map" that is created in the GB06ParallelGeometryForSlices class, this
 46 map associating a replica number to a volume importance. The map is hold by the
 47 biasing operator.
 48         
 49 
 50 2) Biasing classes:
 51    ----------------
 52 
 53     As usual, with the generic biasing scheme, a biasing operator and a biasing
 54 operation are defined, these are, respectively the
 55 
 56                 GB06BOptrSplitAndKillByImportance and
 57                 GB06BOptnSplitAndKillByImportance
 58     
 59 classes. The operator here only handles one particle type. In the StartRun()
 60 method, it configures the biasing operation GB06BOptnSplitAndKillByImportance
 61 passing it the information related to the parallel geometry, and passing it the
 62 importance map.
 63 
 64     The biasing operation GB06BOptnSplitAndKillByImportance applies a classical
 65 importance-based geometry technique, with spliting / killing at the slice
 66 bondaries. Splitting is made if the track goes from a smaller importance to a
 67 volume of larger importance, and killing (Russian roulette) is applied in the
 68 other case.
 69     The particularity of this biasing operation is its handling of the parallel
 70 geometry information. It has to get by itself geometry information that, in the
 71 case of information of the mass geometry, are provided in the G4StepPoint objects
 72 (pre step point, post step point) of the G4Step. Here, in the
 73 DistanceToApplyOperation(...), which is called at the beginning of the step, it
 74 gets a "snapshot" of the geometry state keeping a G4TouchableHandle. Then
 75 in the GenerateBiasingFinalState, which is called at the end of the step, it gets
 76 the new geometry state, with an other G4TouchableHandle. For a step that
 77 ends on the boundary, this last touchable history will logically point to the
 78 next volume. In this case, the biasing is applied, and the importances are
 79 obtained from the replica numbers taken from the two touchable histories, and
 80 then from the importance map.
 81 
 82 3) Output:
 83    -------
 84 
 85     A simple sensitive detector is defined (GB06SD) and is attached to a thin
 86 volume ("meas.logical") placed after the concrete shield. This sensitive
 87 detector simply prints the information (particle type, kinetic energy, etc,
 88 and weight) leaving the shield.
 89 
 90 
 91 4) Known problems:
 92    ---------------
 93 
 94     In exampleGB06.in the neutron killer process, nKiller, is de-activated
 95 (process that kills neutrons after some time), for two reasons. First, killing
 96 neutrons in a shield problem is not desirable because neutrons may fly for some
 97 time before leaving the shield, and hence must be accounted for. Second, if
 98 nKiller is left active, an exception message about a spurious displacement by
 99 1e-7mm will appear sometimes : this happens when a neutron is killed on a volume
100 boundary, and the navigation "sees" a (tiny) displacement, that should not exist.