Geant4 무작정 따라하기 시리즈의 첫번째. 기본 틀이 이미 짜여져있는 템플릿 코드를 다운받아서 실행해봅시다.
Geant4 코드 작성을 여러번 하다 보면 시뮬레이션의 내용이 다소 바뀌더라도, 기본적인 틀에 해당하는 부분은 크게 달라지지 않는다는 사실을 깨닫게 됩니다. 그래서 저는 미리 짜두었던 기본 틀을 복사해와서 실제 시뮬레이션의 요구사항에 맞추어 세부적인 부분만 조정하는 식으로 작업을 수행함으로써 작업시간을 단축시키곤 합니다. PPT나 워드 프로세싱등에서 사용되는 샘플 문서인 템플릿(Template)과 유사한 용도이기에, 이 기본 틀을 저는 템플릿 코드라고 부릅니다.
이 시리즈에서는 여러분에게 제가 직접 만든 템플릿 코드를 제공해드리려 합니다. 이 템플릿 코드는 Geant4 공식 예제 중 기본 예제 수준의 시뮬레이션을 작성하기에 적합하도록 하되, 불필요한 부분을 최소화하여 작성했습니다. 여러분은 이 시리즈를 통해, 제가 제공해드린 템플릿 코드에 여러분이 원하는 구조물, 선원항, 데이터기록방식을 정의하게 될 것이고, 이를 통해 여러분만의 Geant4 시뮬레이션 코드를 만들어 결과를 얻어볼 수 있을 것입니다.
다음 세 가지 방법 중 본인에게 편한 방법을 통해 다운받으시기 바랍니다.
템플릿 코드는 이 링크를 통해 다운받을 수 있습니다. g4_minimal-main.zip
파일이 다운받아질 것입니다. 압축을 풀어 사용하시면 됩니다.
혹은, 리눅스 환경에서 wget
명령어를 통해 다음과 같이 진행하셔도 됩니다. (Linux에서는 unzip
명령어로 zip 형식의 압축을 풀 수 있습니다)
1wget https://github.com/evandde/g4_minimal/archive/refs/heads/main.zip
2unzip main.zip
또는, 여러분이 git
을 사용하실 줄 안다면, 다음의 명령어를 통해 repository 자체를 클론해가셔도 됩니다.
1git clone https://github.com/evandde/g4_minimal
이 글은 Linux 혹은 WSL에서 gcc 기반으로 Geant4를 설치한 분을 대상으로 작성되었습니다.
Windows에서 MSVC 기반으로 Geant4를 설치하신 분은 이 링크의 예제 실행방법과 동일하게 실행해보시면 됩니다.
아래에 적은 과정과 유사합니다만, 다음의 두 과정을 지켜주시는 것이 핵심입니다.
CMakeLists.txt의 맨 위에 다음 내용 추가
1#----------------------------------------------------------------------------
2# Set build output directory to be ./build
3# rather than ./build/Release or ./build/RelWithDebInfo
4set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_BINARY_DIR}")
5set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_BINARY_DIR}")
make
명령어 대신 cmake --build . --config Release
명령어 사용
압축을 풀고 해당 디렉토리 안에 들어가면 다음과 같은 파일들이 있을 것입니다.
먼저, 컴파일 결과를 담을 build 디렉토리를 생성해준 뒤, build 디렉토리로 들어갑니다.
1mkdir build
2cd build
이어서, cmake
와 make
를 통해 컴파일을 수행합니다.
1cmake ..
2make
퍼센트가 쭉 올라가서 100%까지 진행된 뒤에 다음과 같은 파일들이 만들어짐을 확인하시면 됩니다.
이제 다음 명령어를 입력하여 실행이 되는지 확인합니다. 아래 그림과 같이 문구가 주르륵 올라간 뒤에 Good bye :) 인사를 받아내었다면 성공입니다.
1./g4_minimal run.mac
그래픽을 사용할 수 있는 환경이라면, 다음 명령어로도 실행해봅니다. Qt 라이브러리를 연동하여 설치하셨다면, 아래 그림과 같이 마우스로 조작가능한 3D 화면을 볼 수 있습니다.
1./g4_minimal
이 모든 화면을 확인하셨다면 이번 글의 목표는 달성한 것입니다.
실행해보기에서 입력한 cmake
와 make
명령어는 C++ 언어로 작성된 코드를 빌드하기 위해 수행한 작업입니다.
최근의 Geant4는 CMake를 활용하는 방식을 채용하고 있으므로, 해당 프로젝트의 디렉토리 안에 CMakeLists.txt 파일이 제대로 구비되어 있어야 합니다. Geant4 공식 홈페이지에서 사용자를 위한 CMakeLists.txt의 작성법을 제공하고 있습니다(링크). 대부분의 경우 CMakeLists.txt 파일을 수정할 일은 없으므로, 여기서는 이에 대한 설명을 생략하겠습니다.
cmake
명령어를 입력하면, make
를 수행하기 위해 필요한 Makefile이 생성됩니다. 이어서 make
명령어를 입력하여 빌드를 수행하면 g4_minimal이라는 실행파일이 만들어집니다.
Geant4는 프로그램을 실행하는 방식으로 다음의 두 가지를 제공합니다.
UI모드 실행
프로그램이 실행된 뒤 IDLE상태로 대기. 사용자가 명령어를 입력하면 이에 따라 명령어가 실행되는 구조.
그래픽 관련 라이브러리를 연동하여 Geant4를 설치한 경우, 지오메트리 및 입자 수송을 그래픽 형태로 보거나 저장할 수도 있음.
일반적으로 실제 시뮬레이션을 수행하여 결과를 얻기 전에, 지오메트리/선원항/데이터기록 등을 테스트하고 확인하는 목적으로 이용함.
batch모드 실행
시뮬레이션을 수행하는 데에 필요한 명령어를, 프로그램을 실행하는 시점에 일괄적으로(batch) 함께 입력해주어 바로 시뮬레이션을 수행하는 구조.
일반적으로 충분한 수의 초기입자를 발생시켜 실제 시뮬레이션을 수행하고 이에 대한 결과를 얻는 목적으로 이용함.
main함수를 어떻게 작성하느냐에 따라 위의 두 실행방식을 자유롭게 선택할 수 있습니다.
다만, Geant4 기반으로 작성한 대부분의 코드에서 다음의 방식을 따르도록 main함수를 작성하는 것이 일반적인 관습입니다.
실행파일명만 입력하여 실행한 경우에는 UI모드로 실행
예를 들어, 위에서 ./g4_minimal
만 입력하여 실행한 경우에는 UI창이 뜨는 것을 확인할 수 있음.
실행파일명 뒤에 .mac
형식의 파일을 함께 입력하여 실행한 경우에는, 해당 .mac
파일의 내용을 일괄적으로 입력하여 batch모드로 실행
예를 들어, 위에서 ./g4_minimal run.mac
을 입력하여 실행한 경우에는 run.mac
파일의 내용이 일괄적으로 입력되어 시뮬레이션이 batch모드로 수행되고, 최종적으로 Good bye :)가 출력되며 시뮬레이션이 종료되는 것을 확인할 수 있음.
※ .mac
파일에 어떤 내용을 작성하는지에 대해서는 이 시리즈에서 추후에 다루도록 하겠습니다.
고생하셨습니다.
다음 글에서는 지오메트리를 정의하는 방법에 대해 알아보겠습니다.