1.5 KiB
Geant integration
Geant4 integration in uLib is done through the HEP/Geant module.
The module represets a set of wrapper for geant objects that are also deriving from uLib::Object so they can be used in the uLib::Object tree and visualized with the uLib::Vtk module and driven py properties.
Geant Solid integration
Geant solid in uLib is represented by the uLib::Geant::Solid class and mainly BoxSolid and TessellatedSolid. The solids in Geant does not have the possibility to set properties on the fly so we need to create a new solid every time we want to change the properties of a solid. This is done by creating a new uLib::Geant::Solid object and setting the properties of the new solid. The new solid is then added to the uLib::Geant::Solid object as a child. The old solid is then removed from the uLib::Geant::Solid object as a child. The old solid is then deleted. However id some of the properties can be set then the library will drive the change in the solid update.
The idea is to have a mapping of solid properties that can be used in uLib for Qt representation or vtk representation. then when the property is changed the signaling will update the property in uLib and then the solid will be updated. If the Geant property can be applied to the G4 object underneath then the update will apply the change, in case it is not possible to apply the change to the G4 object underneath then the G4 element will be recreated. In any case a updated singal is emitted and the related element that use that solid is updated ( for instance the scene ).