66 lines
3.4 KiB
Plaintext
66 lines
3.4 KiB
Plaintext
-------------------------------------------------------------------
|
|
|
|
=========================================================
|
|
Geant4 - an Object-Oriented Toolkit for Simulation in HEP
|
|
=========================================================
|
|
|
|
Example DICOM2
|
|
--------------
|
|
|
|
|
|
---> 1) Introduction
|
|
|
|
This example demonstrates how to inherit from the DICOM example.
|
|
For more information on the DICOM example, see the README in
|
|
the DICOM example. In addition to demonstrating inheritance from DICOM,
|
|
this example demonstrates method for memory savings, scoring into a sequential
|
|
container instead of an associative container, accumulating the scoring
|
|
with a statistics class instead of a simple floating point, and generic iteration
|
|
over the variety of scoring container storage variants provided by Geant4
|
|
|
|
---> 2) Configuration and Building
|
|
|
|
The DICOM example should be built and installed. By default, the CMake configuration
|
|
for the DICOM example will install to the same directory as ${Geant4_DIR}.
|
|
|
|
When configurating this example, provide DICOM_DIR=<path-to-cmake-configuration>, e.g.
|
|
|
|
$ cmake -DGeant4_DIR=/usr/local/lib/Geant4-10.5.0 -DDICOM_DIR=/usr/local/lib/Geant4-10.5.0 <path-to-source>
|
|
|
|
This example will enable DCMTK and/or DICOM_HEAD based on the configuration set when
|
|
the DICOM example was installed. The files "Data.dat.old" and "Data.dat.new" follow
|
|
the same pattern of being copied to "Data.dat" in the binary directory that is detailed
|
|
out in Section 4 of the DICOM README.
|
|
|
|
---> 3) Class Overview
|
|
|
|
- Dicom2Run:
|
|
- How to save memory with G4VTHitsVector instead of G4THitsMap
|
|
- How to implement G4VTHitsVector with objects instead of pointers (saving more memory)
|
|
- How to use G4StatAnalysis within G4VTHitsVector (or G4VTHitsMap) to obtain per-voxel
|
|
statistics
|
|
- G4StatAnalysis provides standard deviation, mean, variance, relative error,
|
|
FOM, r2int, r2eff, coefficient of variant, and efficiency in a class that
|
|
consumes significantly less memory than G4ConvergenceTester
|
|
- Implements scoring accumulation over the course of a run in
|
|
G4VTHitsVector<G4StatAnalysis, std::vector<G4StatAnalysis>> Dicom2RunVector
|
|
- The first template parameter is the type of the data (i.e. double, G4StatAnalysis, etc.)
|
|
and the second template parameter is the underlying storage type -- by
|
|
specifying std::vector<G4StatAnalysis>, we override the default storage
|
|
format of std::vector<G4StatAnalysis*> which results in memory savings
|
|
- Dicom2RunAction:
|
|
- Overloads EndOfRunAction(const G4Run*) to print out the same quantities
|
|
as DICOM but with the G4StatAnalysis class
|
|
- Demonstrates generic iteration of hits containers
|
|
- The new iteration scheme over hits containers works
|
|
regardless of whether the underlying storage type is a map, multimap, unordered_map,
|
|
unordered_multimap, vector, or deque and regardless of whether the data
|
|
type stored in the sequential container types (vector and deque) are an object or
|
|
or a pointer to an object
|
|
- Dicom2PrimaryGeneratorAction:
|
|
- Minor variation of DicomPrimaryGeneratorAction that randomizes the initial
|
|
direction of the particle
|
|
- Dicom2ActionInitialization:
|
|
- In addition Dicom2RunAction and Dicom2PrimaryGeneratorAction, this class
|
|
instantiates DicomEventAction
|