설치 상세: Ubuntu 20.04 LTS, Geant4-10.7.1, ccmake를 활용한 설정방법 소개, Qt5 연동, CLHEP 별도 설치, 크로스섹션 DATA 별도 준비, Multi-threading 활성화
설치 환경
sudo
) 이용 가능설치 조건
설치 경로
/opt/clhep/2.4.4.0
/opt/clhep
하위에 버전별로 디렉토리를 만들고 그 하위에 설치 진행/opt/geant4/10.7.p01
/opt/geant4
하위에 버전별로 디렉토리를 만들고 그 하위에 설치 진행apt
패키지 매니저 최신화
1sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y
apt
를 이용하여 다음 항목 설치
1sudo apt install -y build-essential cmake libexpat1-dev qt5-default libxmu-dev
CLHEP 라이브러리를 설치할 디렉토리 생성
1sudo mkdir -p /opt/clhep
1에서 생성한 디렉토리로 이동하여, CLHEP 소스코드 다운로드 (소스코드 용량 약 1.5 MB)
1cd /opt/clhep
2sudo wget https://proj-clhep.web.cern.ch/proj-clhep/dist1/clhep-2.4.4.0.tgz
2에서 다운받은 압축파일을 압축해제
1sudo tar -xf clhep-2.4.4.0.tgz
압축해제로 생성된 2.4.4.0
디렉토리로 이동한 뒤, build
라는 이름의 디렉토리를 생성하고 그 안으로 이동
1cd 2.4.4.0
2sudo mkdir build
3cd build
컴파일 수행 (make
명령은 인터넷 속도 및 cpu 성능에 따라 수 분가량 소요될 수 있음)
CMAKE_INSTALL_PREFIX
(설치경로): /opt/clhep/2.4.4.0
1sudo cmake ../CLHEP -DCMAKE_INSTALL_PREFIX=/opt/clhep/2.4.4.0
2sudo make -j `grep -c processor /proc/cpuinfo` && sudo make install
Geant4용 cross-section data를 넣을 디렉토리 생성
1sudo mkdir -p /opt/geant4/geant4data
1에서 생성한 디렉토리로 이동하여, cross-section data 다운로드 (전체 데이터 용량 약 928 MB)
1cd /opt/geant4/geant4data
2sudo wget https://geant4-data.web.cern.ch/datasets/G4NDL.4.6.tar.gz
3sudo wget https://geant4-data.web.cern.ch/datasets/G4EMLOW.7.13.tar.gz
4sudo wget https://geant4-data.web.cern.ch/datasets/G4PhotonEvaporation.5.7.tar.gz
5sudo wget https://geant4-data.web.cern.ch/datasets/G4RadioactiveDecay.5.6.tar.gz
6sudo wget https://geant4-data.web.cern.ch/datasets/G4SAIDDATA.2.0.tar.gz
7sudo wget https://geant4-data.web.cern.ch/datasets/G4PARTICLEXS.3.1.1.tar.gz
8sudo wget https://geant4-data.web.cern.ch/datasets/G4ABLA.3.1.tar.gz
9sudo wget https://geant4-data.web.cern.ch/datasets/G4INCL.1.0.tar.gz
10sudo wget https://geant4-data.web.cern.ch/datasets/G4PII.1.3.tar.gz
11sudo wget https://geant4-data.web.cern.ch/datasets/G4ENSDFSTATE.2.3.tar.gz
2에서 다운받은 압축파일을 압축해제하고, 압축파일을 삭제
1sudo find -name "*.gz" -exec tar -xf {} \;
2sudo rm -rf *.gz
Geant4 툴킷을 설치할 디렉토리 생성
1sudo mkdir -p /opt/geant4/10.7.p01
1에서 생성한 디렉토리로 이동하여, Geant4 소스코드 다운로드 (소스코드 용량 약 35 MB)
1cd /opt/geant4/10.7.p01
2sudo wget http://geant4-data.web.cern.ch/geant4-data/releases/geant4.10.07.p01.tar.gz
2에서 다운받은 압축파일을 압축해제 후 디렉토리명을 source
로 변경
1sudo tar -xf geant4.10.07.p01.tar.gz
build
라는 이름의 디렉토리를 만들고 안으로 이동
1sudo mkdir build
2cd build
컴파일 수행 (make
명령은 인터넷 속도 및 cpu 성능에 따라 수 분~수 십분 소요될 수 있음)
CMAKE_INSTALL_PREFIX
(설치경로): /opt/geant4/10.7.p01
GEANT4_BUILD_MULTITHREADED
(multi-threading 사용 여부): ON
GEANT4_INSTALL_DATADIR
(크로스섹션 데이터 경로): /opt/geant4/geant4data
GEANT4_USE_OPENGL_X11
(X11 OpenGL 라이브러리 연동 여부): ON
GEANT4_USE_QT
(QT 라이브러리 연동 여부): ON
GEANT4_USE_SYSTEM_CLHEP
(직접 설치한 CLHEP 라이브러리 연동 여부): ON
CLHEP_DIR
(CLHEP 경로): /opt/clhep/2.4.4.0/lib/CLHEP-2.4.4.0
1sudo cmake ../geant4.10.07.p01 -DCMAKE_INSTALL_PREFIX=/opt/geant4/10.7.p01 -DGEANT4_BUILD_MULTITHREADED=ON -DGEANT4_INSTALL_DATADIR=/opt/geant4/geant4data -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_USE_QT=ON -DGEANT4_USE_SYSTEM_CLHEP=ON -DCLHEP_DIR=/opt/clhep/2.4.4.0/lib/CLHEP-2.4.4.0
2sudo make -j `grep -c processor /proc/cpuinfo` && sudo make install
환경변수 세팅을 위해 ~/.bashrc
에 내용 추가
1echo "source /opt/geant4/10.7.p01/bin/geant4.sh" >> ~/.bashrc
인터넷이 안된다거나, 관리자 권한을 사용할 수 없다거나, Ubuntu가 아니라면 이야기가 좀 달라지겠지만…
앞서 말한 5가지 준비물은 모두 Ubuntu에서 제공하는 패키지 관리자 apt
를 통해 설치할 수 있습니다.
(RedHat 계열의 리눅스에서도 패키지 관리자 yum
을 통해 유사한 명령어로 설치할 수 있습니다)
1sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y
1sudo apt install -y build-essential
1sudo apt install -y cmake cmake-curses-gui
1sudo apt install -y libexpat1-dev
1sudo apt install -y qt5-default
1sudo apt install -y libxmu-dev
이어서 CLHEP을 설치합니다. CLHEP 라이브러리의 경우에는, apt 레포지토리에 원하는 버전이 없는 경우가 대부분이므로 직접 소스코드를 컴파일하여 설치합니다.
Geant4 10.7 버전은 CLHEP 2.4.4.0 버전을 요구합니다만, Geant4 버전이 바뀜에 따라 상응하는 CLHEP 버전도 변경되므로 버전별 관리를 하는 것이 추후 심신이 편합니다. 따라서, 여기서는 /opt/clhep/2.4.4.0
과 같이 버전별로 경로를 만들어 설치하도록 하겠습니다.
우선 CLHEP 라이브러리를 설치할 디렉토리 생성합니다. (/opt
는 sudo
권한이 있어야 수정할 수 있음)
1sudo mkdir -p /opt/clhep
1에서 생성한 디렉토리로 이동하여, CLHEP 소스코드를 다운로드합니다. (소스코드 용량 약 1.5 MB)
1cd /opt/clhep
2sudo wget https://proj-clhep.web.cern.ch/proj-clhep/dist1/clhep-2.4.4.0.tgz
wget
명령어를 사용하지 않고, CLHEP 다운로드 페이지에서 직접 받아서 옮겨오셔도 괜찮습니다.2번 과정을 통해 받은 압축파일 clhep-2.4.4.0.tgz
을 압축해제합니다.
1sudo tar -xf clhep-2.4.4.0.tgz
2.4.4.0
디렉토리가 생성되며 압축이 해제됩니다.
생성된 2.4.4.0
디렉토리로 이동합니다. 이어서, 빌드를 수행하며 생기는 부산물을 보관하기 위한 build
라는 이름의 디렉토리를 생성하고 그 안으로 이동합니다.
1cd 2.4.4.0
2sudo mkdir build
3cd build
ccmake
명령어를 통해 Makefile 생성 작업을 진행합니다.
우선 ccmake를 실행하기 위해 다음 명령어를 입력합니다.
sudo ccmake ../CLHEP
다음과 같은 화면이 뜰 것입니다.
맨 처음 ccmake 프로그램을 실행하면, 기존 작업내용이 없어서 EMPTY CACHE가 출력되고, 화면 아래에 보이는 바와 같이 키보드 c를 누르면 configure 작업이 수행되고, q를 누르면 종료되는 식입니다.
c를 눌러 configure 작업을 수행합니다.
이어서 다음의 화면이 뜰 것입니다.
여기서 CMAKE_INSTALL_PREFIX
항목이 CLHEP을 설치할 경로를 설정하는 인자입니다. 우리는 이 값을 /opt/clhep/2.4.4.0
으로 변경하겠습니다.
↑, ↓ 화살표 키로 항목 간 이동이 가능하며, ENTER를 한 번 누르면 수정 모드로 변경되고, 내용 입력 후 다시 ENTER를 누르면 확정됩니다.
입력을 마친 뒤 c 키를 한번 더 누르면 다음과 같이 화면이 바뀝니다.
새로 생긴 g를 눌러 Makefile을 생성합니다.
이제 컴파일 및 설치작업을 진행합니다.
1sudo make -j `grep -c processor /proc/cpuinfo` && sudo make install
make
명령어는 -j <쓰레드 수>
옵션을 주면, 여러 쓰레드를 동시에 이용하여 좀 더 빨리 설치됩니다.make
명령어에서 -j
옵션을 주고 돌릴 때, 메모리가 부족한데 쓰레드 수가 너무 과하게 잡히면 cc1plus
관련 에러가 발생할 수 있습니다. -j
옵션에 적절한 숫자는 자신의 쓰레드 수 * 1.2 입니다. 여기서는 사용자 컴퓨터의 쓰레드 수를 가져오는 명령어인 grep -c processor /proc/ cpuinfo
를 이용하여 자동으로 숫자가 입력되게 하였습니다.make
명령을 수행하면 퍼센트가 올라가며 컴파일이 수행될 것입니다. 이는 CPU 성능에 따라 수십 초 ~ 수 분 가량 소요될 수 있으니 잠시 휴식을 취하시면 됩니다.
Geant4를 설치하려면 cross-section data가 필요합니다. 이를 준비하는 방법은 두 가지 있습니다.
무엇을 택하든 크게 상관은 없습니다만, 여기서는 1번 방법에 해당하는 직접 준비를 해보겠습니다.
Cross-section data가 저장될 디렉토리를 생성한 뒤 이동합니다.
1sudo mkdir -p /opt/geant4/geant4data
2cd /opt/geant4/geant4data
Cross-section data를 다운로드합니다. (총 10가지. 전체 데이터 용량 약 928 MB)
1sudo wget https://geant4-data.web.cern.ch/datasets/G4NDL.4.6.tar.gz
2sudo wget https://geant4-data.web.cern.ch/datasets/G4EMLOW.7.13.tar.gz
3sudo wget https://geant4-data.web.cern.ch/datasets/G4PhotonEvaporation.5.7.tar.gz
4sudo wget https://geant4-data.web.cern.ch/datasets/G4RadioactiveDecay.5.6.tar.gz
5sudo wget https://geant4-data.web.cern.ch/datasets/G4SAIDDATA.2.0.tar.gz
6sudo wget https://geant4-data.web.cern.ch/datasets/G4PARTICLEXS.3.1.1.tar.gz
7sudo wget https://geant4-data.web.cern.ch/datasets/G4ABLA.3.1.tar.gz
8sudo wget https://geant4-data.web.cern.ch/datasets/G4INCL.1.0.tar.gz
9sudo wget https://geant4-data.web.cern.ch/datasets/G4PII.1.3.tar.gz
10sudo wget https://geant4-data.web.cern.ch/datasets/G4ENSDFSTATE.2.3.tar.gz
wget
명령어를 사용하지 않고, Geant4 다운로드 페이지에서 직접 받아서 옮겨오셔도 괜찮습니다.위에 적힌 10가지 외에 G4RealSurface, G4TENDL, LEND 데이터가 있습니다만, 이는 필수가 아닌 선택사항이므로 여기서는 생략하겠습니다.
10개의 파일을 하나하나 압축 해제하기 귀찮으므로, find
명령어를 활용하여 일괄 해제 하는 명령어를 적어드립니다.
이후 불필요한 압축파일(*.gz
)은 삭제해도 괜찮습니다.
1sudo find -name "*.gz" -exec tar -xf {} \;
2sudo rm -rf *.gz
이제 준비가 다 되었습니다. 이어서 Geant4를 설치해봅시다.
우리가 설치하고자 하는 경로는 /opt/geant4/10.7.p01
입니다. 앞서 말씀드린 것처럼, 여러 버전의 Geant4를 설치할 경우를 고려하여 /opt/geant4
하위에 버전명에 해당하는 디렉토리를 두어 세분화한 것입니다.
우선 해당 디렉토리를 생성하기 위해 다음 명령어를 입력합니다. (/opt
는 관리자 권한이 있어야 수정할 수 있음)
1sudo mkdir -p /opt/geant4/10.7.p01
이어서, 해당 디렉토리로 이동한 뒤 Geant4 소스코드를 다운 받겠습니다.
1cd /opt/geant4/10.7.p01
2sudo wget http://geant4-data.web.cern.ch/geant4-data/releases/geant4.10.07.p01.tar.gz
wget
명령어를 사용하지 않고, Geant4 다운로드 페이지에서 직접 받아서 옮겨오셔도 괜찮습니다.위 과정을 통해 geant4.10.07.p01.tar.gz
라는 압축파일을 다운받으셨을 것입니다.
다음 명령어를 통해 해당 파일의 압축을 해제합니다.
1sudo tar -xf geant4.10.07.p01.tar.gz
geant4.10.07.p01
라는 디렉토리가 생성되고 그 안에 압축이 풀리게 됩니다.
빌드를 수행하면 CMake와 관련된 잡다한 부산물이 생성됩니다. 관리의 용이성을 위해, 별도의 build
라는 디렉토리를 만들고 이 안에서 컴파일을 수행하겠습니다.
1sudo mkdir build
2cd build
ccmake
명령어를 통해 Makefile 생성 작업을 진행합니다.
우선 ccmake를 실행하기 위해 다음 명령어를 입력합니다.
sudo ccmake ../geant4.10.07.p01
다음과 같은 화면이 뜰 것입니다.
CLHEP때와 마찬가지 모습입니다. c를 눌러 configure 작업을 수행합니다.
이어서 다음의 화면이 뜰 것입니다.
Geant4 설치를 위한 cross-section data가 어디있는지 못찾겠다는 문구입니다.
e를 눌러 설정화면으로 돌아옵니다.
이 화면에서 우리는 Geant4 설치에 관한 여러가지 인자를 조정할 수 있습니다. 이 글에서는 앞서 설명했던 설치조건에 맞추어 다음 항목들을 변경할 것입니다. 그림의 빨간 체크표시 된 값들을 참고하세요.
CMAKE_INSTALL_PREFIX
(설치경로): /opt/geant4/10.7.p01
GEANT4_BUILD_MULTITHREADED
(multi-threading 사용 여부): ONGEANT4_INSTALL_DATADIR
(크로스섹션 데이터 경로): /opt/geant4/geant4data
GEANT4_USE_OPENGL_X11
(X11 OpenGL 라이브러리 연동 여부): ONGEANT4_USE_QT
(QT 라이브러리 연동 여부): ONGEANT4_USE_SYSTEM_CLHEP
(직접 설치한 CLHEP 라이브러리 연동 여부): ON이후 c를 눌러 configure 작업을 수행합니다.
또 다른 에러가 뜰 것입니다. CLHEP을 직접 설치한 것으로 연동하겠다고 하였는데, CLHEP이 어디에 있는지 못찾겠다는 에러입니다.
다음 그림과 같이 CLHEP_DIR
을 변경해줍니다.
CLHEP_DIR
(CLHEP 경로): /opt/clhep/2.4.4.0/lib/CLHEP-2.4.4.0
이제 다시 c를 눌러 configure 작업을 수행하면, 에러는 뜨지 않고 Qt5 관련 경로가 알아서 잡힌 모습이 뜨게 됩니다.
마지막으로 한번 더 c를 눌러 configure 작업을 수행합니다. 이제 드디어 g 버튼이 나타났습니다.
g를 눌러 Makefile을 생성합니다.
이제 컴파일 및 설치작업을 진행합니다.
1sudo make -j `grep -c processor /proc/cpuinfo` && sudo make install
make
명령어는 -j <쓰레드 수>
옵션을 주면, 여러 쓰레드를 동시에 이용하여 좀 더 빨리 설치됩니다.make
명령어에서 -j
옵션을 주고 돌릴 때, 메모리가 부족한데 쓰레드 수가 너무 과하게 잡히면 cc1plus
관련 에러가 발생할 수 있습니다. -j
옵션에 적절한 숫자는 자신의 쓰레드 수 * 1.2 입니다. 여기서는 사용자 컴퓨터의 쓰레드 수를 가져오는 명령어인 grep -c processor /proc/cpuinfo
를 이용하여 자동으로 숫자가 입력되게 하였습니다.make
명령을 수행하면 퍼센트가 올라가며 컴파일이 수행될 것입니다. 이는 CPU 성능에 따라 수 분 ~ 수십 분 가량 소요될 수 있으니 푹 쉬고 오세요.
Geant4 툴킷을 설치하고나면 마지막으로 할 일이 있습니다. 바로 환경변수를 설정하는 것입니다.
Geant4 사용을 위해 컴퓨터에게 알려줘야 하는 초기값들이 몇 가지 있습니다만, 이를 정리하여 한 번에 자동으로 설정이 되게끔하는 파일을 Geant4에서 제공하고 있습니다.
설치경로의 내부에 있는 bin/geant4.sh
라는 파일입니다. (C-shell을 이용하시는 분은 bin/geant4.csh
를 이용합니다)
bin/geant4.sh
를 실행함으로써 해당 버전으로 동작하도록 설정할 수 있습니다.실행을 위해서는 다음 명령어를 입력합니다. (source
명령어 뒤에 오는 경로는 Geant4를 설치한 경로에 따라 바뀔 수 있습니다)
1source /opt/geant4/10.7.p01/bin/geant4.sh
다만, 이 명령어는 실행한 이후 해당 shell이 종료될 때까지만 그 효과가 지속됩니다. 즉, 터미널을 새로 연다거나 하면 다시 환경변수 설정이 사라지게 되죠.
그래서 일반적으로는 터미널을 켤 때마다 자동으로 한 번 실행되는 파일인 ~/.bashrc
맨 밑에 위의 명령줄을 적어둡니다. vim이나 gedit 등을 이용하여 직접 입력하셔도 되고, 다음 명령줄을 이용하여 ~/.bashrc
파일 맨 밑에 해당 내용이 추가되도록 하셔도 됩니다.
1echo "source /opt/geant4/10.7.p01/bin/geant4.sh" >> ~/.bashrc
~/.bashrc
에 추가된 내용을 새로고침하기 위해 다음 줄까지 실행하고 넘어가겠습니다.
1source ~/.bashrc
드디어 Geant4 설치가 끝났습니다!
정상적으로 설치가 완료되고 geant.sh
파일이 제대로 실행되었다면, G4...
와 같은 형태의 환경변수가 크로스섹션 데이터를 담은 경로를 가리키고 있어야 합니다.
다음 명령어를 통해 제대로 그 경로가 출력되는지 확인할 수 있습니다.
1env | grep G4
예제코드는 소스 코드를 압축해제한 디렉토리 안에 examples
이라는 디렉토리에 있습니다.
우리의 경우에는 /opt/geant4/10.7.p01/geant4.10.07.p01/examples
이 되겠군요.
테스트를 위해 basic/B1
이라는 예제를 복사해오고, 복사해온 디렉토리 안으로 들어가봅시다.
1cp -r /opt/geant4/10.7.p01/geant4.10.07.p01/examples/basic/B1 .
2cd B1
예제 코드 B1에는 다음과 같은 파일 및 디렉토리들이 있을 것입니다.
이 글에서는 코드를 살펴보지는 않고, 그냥 실행만 하겠습니다.
우선 빌드를 하기 위해 다음 명령어를 입력합니다.
cmake .
make -f Makefile
다음 그림과 같이 많은 줄이 출력된 뒤, [100%] Built target exampleB1
까지 나오면 성공입니다.
이어서 실행을 해봅니다.
1./exampleB1 run1.mac
다음 그림처럼 또 무언가 잔뜩 출력된 뒤, RunManagerKernel is deleted. Good bye :)
가 출력되었다면 잘 실행된 것입니다.
Geant4 설치 시 Qt5와 OpenGL 설치도 함께 진행했으므로, 여러분의 우분투에 X window 관련 설정이 잘 되어있다면 다음 명령어로 GUI창도 띄워볼 수 있습니다.
1./exampleB1
잘 실행되었다면 다음과 같은 창이 나타날 것입니다.
여기까지 되셨다면 설치와 테스트까지 성공적으로 하신 것입니다! 고생하셨습니다.