|Message: Re: Modifying Geometry using Messenger||Not Logged In (login)|
Click on the Forum title, e.g. on the "Forums by Category" page, to read a sequence of postings to the Forum and its threads all in one page. If you are only interested in one thread or the thread following a specific posting, click the thread or the posting, which takes you to a smaller page, which contains only the part you are interested in and may be easier to navigate.
Messages are "chained" if there are only replies at the first level, i.e. 1/1.html, 1/1/1.html etc. In case of "chained" messages the message number is replaced by the icon and there is no indentation.
Inline: Display the subject line only or also the text of the posting(s); for the choice "All" the "Outline" choices are switched off.
|1||0||1||no text / full text of posting|
|2||1||All||text for level 1 only / text for All postings|
Outline: Choose the depth of the posting thread, successive toggle controls provide increasing detail.
|1||2||1||2 levels / 1 level (original posting)|
|2||3||2||3 levels / 2 levels|
|3||3||All||3 levels / all levels (all postings)|
I have recently been trying to update my geometry using a messenger as well. I was using the exact same code as you mention to clear the old geometry and trying to reinitialize it. In my case, it did work in the sense that the geometry got updated, but it introduced a memory leak.
Therefore, I tried it in a different way without deleting the whole geometry and reinitializing, following the Geant4 example extended/runAndEvent/RE06.
I ended up doing the following steps for everything that was changing in the geometry:
- setting the new dimensions of the solids (for instance solidBox->SetXHalfLength(newLength))
- removing the physical volumes from the logical volume (logicVolume->RemoveDaughter(physicalVolume))
- deleting the physical volume
- replace the volume
- after all changes, run: G4RunManager::GetRunManager()->GeometryHasBeenModified();
This also worked similarly for replica and parameterisations, where replica or parameterisations take the role of the physical volume. I placed this in a function in my detector construction and called it from the messenger.
I guess you can adapt this for your SiPMs. But I don't know, if and how this works with sensitive detectors. I don't know, if you have to delete the multifunctional detector and rebuild, or if you can update the sensitive detectors. Maybe somebody else has an idea.
Good luck and let me know how you fixed it!
|Inline Depth:||Outline Depth:||Add message:|