Geant4 무작정 따라하기 시리즈를 시작하며

Geant4가 뭔지도 모르겠는데… Geant4를 사용은 해야하는 상황에 처한 여러분!

묻지도 따지지도 않고 따라만 하면 일단 Geant4를 사용할 수 있게 해드립니다.


Geant4

Geant4는 1994년에 개발을 시작하여 1998년에 첫 버전이 출시된 이래로, 20년이 넘게 지난 현재까지도 활발하게 사용되고 있는 입자 수송 시뮬레이션 툴킷입니다.

유사한 목적으로 사용되는 다른 몬테칼로 시뮬레이션 코드들(MCNP, PHITS, EGS, FLUKA 등)과 비교해볼 때 다음과 같은 장점을 가지고 있습니다.

  • 어마어마한 자유도
  • 전기장/자기장 내 하전입자의 거동 모사가 가능
  • 시간의 흐름에 따라 구조물이 움직이며 방사선이 수송되는 4D 시뮬레이션이 가능
  • 수송 가능한 입자 종류가 수 백 가지 (가상의 입자를 정의하여 추가도 가능)
  • 이 모든 기능이 무료!

참좋은데합본


그런데 이 좋은 툴의 큰 단점은 바로 사용하기가 어렵다는 점입니다. 원래 자유도가 높다고 소문난 것들은 대개 사용 난이도가 높은 편이죠.

코드진입장벽


저는…

제가 Geant4를 처음 접한 것은 2010년도 즈음이었습니다. 프로그래밍이라는 것에 조금이나마 관심이 있긴 했지만, 얕은 지식으로 Geant4를 처음 접했을 때에는 너무 어렵고 큰 산으로 보였지요. 이후 방사선계측기 관련 연구를 수행하며 다양한 시뮬레이션을 Geant4 툴킷으로 수행했었고, 경험치가 점점 쌓이다보니 그 유용성과 가치가 보이기 시작했던 것 같습니다.

2014년부터는 한양대학교 방사선신기술연구소에서 매 해마다 주최하는 Geant4 초급자 교육과정의 강사로서 일부 강의를 맡아 진행하고 있습니다. 비록 제가 개발자나 CS전공자는 아니지만, Geant4를 10년가량 사용해온 연구자로서의 저의 경험이 이 프로그램을 필요로 하는 다른 연구자분들께 도움이 되면 좋겠습니다.


이 시리즈의 목표

이 시리즈에서는 Geant4가 어떻게 구동되고, 최적화를 하려면 어떻게 해야하고… 이런 것을 깊게 다루지는 않으려 합니다. 당장 프로젝트를 수행해야 하는데 어찌되었든 Geant4라는 툴킷을 사용을 해야하는 상황에 처한 분, 우선 뭐라도 돌아가게끔 해서 간단하게라도 결과를 얻어내고 싶은 분에게 적합한 글이 될 것입니다.

Geant4는 몬테칼로 시뮬레이션용 툴킷으로, 프레임워크1처럼 이용하는 경우가 많습니다. 그래서 Geant4를 처음 이용하는 단계에서는, Geant4의 모든 내용을 다 이해하는 것보다 내가 원하는 작업을 위해 필요한 내용을 어디에 어떻게 작성해야 하는지 숙지하는 편이 효율적입니다. 이 시리즈에서는 이 부분에 초점을 맞추어 진행할 것입니다.

여러분이 준비해야할 것은 다음과 같습니다.

  • 간단한 Linux 터미널 사용 지식 (ls, cd, cp,… 등 간단한 명령어의 사용)

  • 어느정도의 C++ 지식 (많이 알수록 좋습니다)

    • 최소: 주석(//, /* */) 사용방법. for, if 등의 조건문/반복문 사용방법. 함수 정의하고 사용하는 법. 클래스의 기본적인 개념과 사용방법. 포인터의 개념과 사용방법.
    • 알면 매우 유용한 것: std::vector, std::map의 개념과 사용방법. 헤더파일/소스파일의 분리와 활용. 변수의 scope 개념.
  • Geant4가 설치된 환경

    • 여러분이 이미 Geant4가 설치된 환경이 있다면, 그 환경을 그대로 사용하시면 됩니다.
    • Geant4 설치방법을 모르신다면 이 시리즈를 참고하세요. 여러분의 작업 환경에 맞는 글로 설치를 진행해보시기 바랍니다.
  • Geant4 코드 작성을 위한 통합개발환경(IDE)


  1. 어떤 문제해결에 적합한 코드를 재사용 가능하게끔 제공해둔 것. 단, 일반적으로 프레임워크의 코드 자체가 주가 되고, 사용자는 프레임워크의 규약과 형식에 맞추어 본인이 원하는 세부사항을 이 프레임워크에 끼워넣는 식으로 사용하게 됨. ↩︎