Message: Re: Changing geometry between runs with GDML (Ex-G02 not allowing update) Not Logged In (login)
 Next-in-Thread Next-in-Thread
 Next-in-Forum Next-in-Forum

None Re: Changing geometry between runs with GDML (Ex-G02 not allowing update) 

Forum: Persistency
Re: Question Changing geometry between runs with GDML (Ex-G02 not allowing update) (Jonathan Wrobel)
Re: None Re: Changing geometry between runs with GDML (Ex-G02 not allowing update) (Michael H. Kelsey)
Re: None Re: Changing geometry between runs with GDML (Ex-G02 not allowing update) (Jonathan Wrobel)
Re: None Re: Changing geometry between runs with GDML (Ex-G02 not allowing update) (Michael H. Kelsey)
Re: None Re: Changing geometry between runs with GDML (Ex-G02 not allowing update) (Jonathan Wrobel)
Date: 03 Nov, 2014
From: Michael H. Kelsey <Michael H. Kelsey>

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:
 1 1
 All All
Outline Depth:
 1 1
 2 2
 All All
Add message: (add)

1 Question: Re: Changing geometry between runs with GDML (Ex-G02 not allowing update)   (Jonathan Wrobel - 03 Nov, 2014)
(_ None: Re: Changing geometry between runs with GDML (Ex-G02 not allowing update)   (Makoto Asai - 03 Nov, 2014)
(_ Question: Re: Changing geometry between runs with GDML (Ex-G02 not allowing update)   (Jonathan Wrobel - 03 Nov, 2014)
 Add Message Add Message
to: "Re: Changing geometry between runs with GDML (Ex-G02 not allowing update)"

 Subscribe Subscribe

This site runs SLAC HyperNews version 1.11-slac-98, derived from the original HyperNews


[ Geant 4 Home | Geant 4 HyperNews | Search | Request New Forum | Feedback ]