Use multiple different engines in VMC
This is an extension allowing the VMC package to run a simulation with multiple different engines at a time. Tracks can be transferred among engines during a simulation run based on conditions specified by the user. Important notes on the extensions: 1) This extension preserves backward-compatibility in the sense that user code relying on the former version of VMC is still running with the extended version. Was tested with GEANT3_VMC@v2-6 and GEANT4_VMC@v3-6-p1. 2) A shared simulation is only possible when TGeo is used for geometry construction and navigation. 3) A TMCManager singleton object is responsible for handling multiple engines and can be obtained on request calling TVirtualMCApplication::RequestManager() during construction of the user application class. 4) The introduced TMCParticleStatus objects hold additional information to keep track of properties when a track is transferred between engines. 5) When a track is interrupted in one engine to be transferred to another, the geometry state is cached in the form of a TGeoBranchArray object. It will be used to initialize the navigator when this track is picked up for further transport in the next engine. This is especially useful/required when a track is transferred at a volume boundary in order to be picked up in the entered volume and not in the one just left. This is a main reason why geometry management is forced to be done via TGeo. A more comprehensive introduction concerning the usage and implementation in the user code can be found in the montecarlo/vmc/README.md Further note: This commit also applies the clang format to the modified and new files.
Showing
- montecarlo/vmc/CMakeLists.txt 8 additions, 0 deletionsmontecarlo/vmc/CMakeLists.txt
- montecarlo/vmc/README.md 55 additions, 0 deletionsmontecarlo/vmc/README.md
- montecarlo/vmc/inc/LinkDef.h 4 additions, 0 deletionsmontecarlo/vmc/inc/LinkDef.h
- montecarlo/vmc/inc/TGeoMCBranchArrayContainer.h 76 additions, 0 deletionsmontecarlo/vmc/inc/TGeoMCBranchArrayContainer.h
- montecarlo/vmc/inc/TMCManager.h 194 additions, 0 deletionsmontecarlo/vmc/inc/TMCManager.h
- montecarlo/vmc/inc/TMCManagerStack.h 161 additions, 0 deletionsmontecarlo/vmc/inc/TMCManagerStack.h
- montecarlo/vmc/inc/TMCParticleStatus.h 103 additions, 0 deletionsmontecarlo/vmc/inc/TMCParticleStatus.h
- montecarlo/vmc/inc/TMCVerbose.h 17 additions, 9 deletionsmontecarlo/vmc/inc/TMCVerbose.h
- montecarlo/vmc/inc/TVirtualMC.h 237 additions, 211 deletionsmontecarlo/vmc/inc/TVirtualMC.h
- montecarlo/vmc/inc/TVirtualMCApplication.h 39 additions, 13 deletionsmontecarlo/vmc/inc/TVirtualMCApplication.h
- montecarlo/vmc/src/TGeoMCBranchArrayContainer.cxx 123 additions, 0 deletionsmontecarlo/vmc/src/TGeoMCBranchArrayContainer.cxx
- montecarlo/vmc/src/TMCManager.cxx 469 additions, 0 deletionsmontecarlo/vmc/src/TMCManager.cxx
- montecarlo/vmc/src/TMCManagerStack.cxx 318 additions, 0 deletionsmontecarlo/vmc/src/TMCManagerStack.cxx
- montecarlo/vmc/src/TMCVerbose.cxx 0 additions, 3 deletionsmontecarlo/vmc/src/TMCVerbose.cxx
- montecarlo/vmc/src/TVirtualMC.cxx 158 additions, 35 deletionsmontecarlo/vmc/src/TVirtualMC.cxx
- montecarlo/vmc/src/TVirtualMCApplication.cxx 65 additions, 13 deletionsmontecarlo/vmc/src/TVirtualMCApplication.cxx
Loading
Please register or sign in to comment