|Message: Re: Changing geometry between runs with GDML (Ex-G02 not allowing update)||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)|
Jonathan Wrobel writes: > Thanks again for your suggestions and I did give your code modifications a > try, adding: > > G4RunManager::GetRunManager()->GeometryHasBeenModified(); // Note that > GeometryHasBeenChanged() does not exist Yeah, sorry. That's what I get for typing directly, rather than cut-and-paste. > both after the clean commands and after the fParser.Read line, but neither > way seemed to make any difference. The order shouldn't matter. That flag sits in the Run Manager until the next Initialize() call (e.g., at the next beamOn, or you manually call it). > Also, if I just proceed to issuing /run/beamOn after trying to modify > the geometry (but not getting any visual confirmation) I will get a > segmentation fault and Geant4 will exit. Okay, that implies that there's memory corruption or null pointers cached somewhere. Did you get any kind of useful G4Exception output before the seg fault? Can you run in the debugger and see what the traceback looks like? > Any other thoughts? Is it permissible for the materials list to change > between GDML files? Something else that is subtle? Are you using a physics list which includes NeutronHP? If so, then the materials must *NOT* change after Initialize(). HP builds a lookup table using the pointers in the G4MaterialsTable. If those change, or if new materials are added, then HP won't have a self-consistent mapping and you'll get a segfault eventually. I have a GDML write/read interface in my own collaboration's application, and this system had been working in the past, including reloading the geometry in a job. We don't use it much, as we maintain most of the geometry models in C++ classes. I've just tried the GDML stuff again, as part of our discussion, and I have discovered a "new" problem. I added support for optical physics, and apparently GDML doesn't like it. During the _second_ geometry reading, my job crashed with: G4GDML: Reading definitions... -------- EEEE ------- G4Exception-START -------- EEEE ------- *** G4Exception : InvalidExpression issued by : G4GDMLEvaluator::DefineConstant() Redefinition of constant or variable: RINDEX_0_0 *** Fatal Exception *** core dump *** -------- EEEE -------- G4Exception-END --------- EEEE ------- What I take away from this is that doing geometry reloading with GDML is probably going to be fragile, even if you get it working. -- Mike Kelsey
|Inline Depth:||Outline Depth:||Add message:|