[Gate-users] How to compile a new geometry class?

Andreas Menzel am at crystal-photonics.com
Thu Jul 20 11:07:25 CEST 2017


Dear Gate community,

in the meantime I finally succeeded in importing individual logical 
volumes from a GDML file. I am not entirely sure yet if the simulation 
works as intended, i.e. with assigning the correct materials and such 
things, but the tessellated object I imported is shown correctly and can 
be translated, moved etc. I created a class GateGDMLVolume to achieve 
this which inherits from GateVVolume and whose objects are inserted into 
the GateObjectChild list.

Now, in some situations, it would be helpful to import the entire 
geometry described by a GDML file, i.e. replace the world volume 
provided by GateDetectorConstruction on startup by default. Which way to 
do this would you think is the cleanest and easiest-to-use later? What I 
would like to do is to import everything by means of two commands or 
even one, i.e. setting the GDML file name and perhaps stating that I 
want to import everything from it (using G4GDMLParser::GetWorldVolume).

Thanks a lot for your help!

Andreas


Am 01.06.2017 um 14:44 schrieb Andreas Menzel:
> Dear David Sarrut, der David Boersma,
>
> thanks a lot for your really quick and detailed answers.
> From a programming side, it turns out I had been doing exactly the 
> right thing.
> I just setup the necessary git(Hub) infrastructure and, thanks to your 
> quick replies, I will see very soon if it works.
>
> Thanks again!
>
> Andreas Menzel
>
>
> Am 01.06.2017 um 10:39 schrieb David Boersma:
>> Hi Andreas,
>>
>> Den 01/06/2017 kl. 09:39, skrev Andreas Menzel:
>>> Dear Gate community,
>>>
>>> probably this has been asked before, but it seems I cannot use the 
>>> mailing list's archive.
>>>
>>> So, can someone please tell me where to find instructions on how to 
>>> compile a newly added class in Gate? I don't seem to find it in the 
>>> online documentation, either.
>>>
>>> To be specific, I am supposed to do a simulation which contains a 
>>> rather complex collimator. As the Gate scripting language does not 
>>> seem to support what I am trying to do, I decided to use two 
>>> different ways and try out which one works better: The first one is 
>>> to use Geant4's boolean solids and do subtractions of geometry 
>>> primitives. The second would be to load a GDML file containing the 
>>> geometry which also can be done in Geant4. I only started the first 
>>> one and I wrote a Gate geometry class and a messenger connected to 
>>> it as well as the necessary header files.
>>>
>>> Now, is there some template makefile / CMakeLists.txt I could use to 
>>> actually compile these and test them? Or do I just put the sources 
>>> into the location of the other Gate sources and re-make the whole 
>>> thing so that the new files are compiled?
>>
>> I think that is the most straightforward way. Since you are 
>> developing something new, you should use the head of the "develop" 
>> branch on GitHub. Our official repository is here:
>>
>> https://github.com/OpenGATE/Gate
>>
>> (On the "Git" page of our website we still advertise an outdated git 
>> server. I hope we can update/clean that outdated web page soon. For 
>> now it's better to get all your git documentation & tutorials from 
>> the github website.)
>>
>> (If you just would like to retrieve & build the latest greatest 
>> development version of gate then you can just "clone" directly from 
>> there. But since you are planning to develop your own thing, it's 
>> recommended to get your own (free) github account and make a "fork" 
>> first, "clone" your "fork", make a new "branch", then when you are 
>> happy with your new feature you "push" that "branch" back to your 
>> "fork" on github and then you submit a "pull request" so that your 
>> new feature may (or may not) be included into the official Gate 
>> development. On the GitHub website you can find extensive help and 
>> tutorials for all the "quoted operations". It takes some time to get 
>> used to all these git things, but in the medium/long term it's a good 
>> system. And GitHub is used by a very large developer community, so 
>> it's a very useful skill to learn.)
>>
>> You shouldn't need to edit anything in the CMakeLists.txt file unless 
>> you are doing exotic things with external libraries of 
>> platform-dependent features. Just add your new geometry classes in 
>> the "include" and "src" subdirectories of Gate/source/geometry, then 
>> run ccmake and make, etc, as described on our wiki.
>>
>>>
>>> Thanks for your help!
>>
>> Good luck!
>> David B.
>>
>>>
>>> Andreas Menzel
>>>
>> _______________________________________________
>> Gate-users mailing list
>> Gate-users at lists.opengatecollaboration.org
>> http://lists.opengatecollaboration.org/mailman/listinfo/gate-users
>

-- 
Dr. Andreas Menzel

Crystal Photonics GmbH
Albert Einstein Straße 16
D - 12489 Berlin
Germany

FAX.: +49 (0) 30 34669299

am at crystal-photonics.com
www.crystal-photonics.com
-------------------------
Geschäftsführer: Klaus Schwenkenbecher
Amtsgericht Berlin-Charlottenburg HRB 99822B
Steuer-Nr.: 37/109/21041
VAT-No.: DE 814612031



More information about the Gate-users mailing list