feat: implement Geant Material class, add object registration, and update PropertyWidget signal handling and read-only state

This commit is contained in:
AndreaRigoni
2026-04-01 11:13:47 +00:00
parent e1bd7eb44f
commit 8e6e332217
10 changed files with 148 additions and 21 deletions

11
docs/geant_integration.md Normal file
View File

@@ -0,0 +1,11 @@
# 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 ).