Geant4 UI command 소개 - 반복문

Geant4 UI command 소개 - 반복문

Geant4 UI command에서 활용 가능한 반복문. /control/loop/control/foreach에 대해 알아봅니다.

개요

Geant4에서 built-in UI command로 제공하는 반복문은 두 가지입니다.

  • /control/loop
  • /control/foreach

이 반복문의 중요한 특징은 “다른 매크로파일을 반복적으로 실행시킨다“는 점입니다.

각각의 용법과 함께 좀 더 자세히 살펴보겠습니다.


/control/loop

/control/loop 반복문은 대개의 프로그래밍 언어가 제공하는 for문과 유사합니다.

시작, , 간격을 입력하여 카운터를 증감시키며 다른 매크로파일을 실행시켜줍니다.

사용법

/control/loop 매크로파일명 카운터변수명 시작값 끝값 간격의 형태로 입력합니다.

이 때, 매크로파일명카운터변수명은 문자열(string)로 인식하고, 시작값, 끝값, 간격은 실수형(double)으로 인식합니다.

이렇게 입력하면, 매크로파일에서 카운터변수시작~값으로 aliasing 시켜줍니다. 즉, 매크로파일 내에서는 {카운터변수}와 같이 입력하면 되는 것이죠.

간격 값은 생략 가능합니다. 생략할 경우 기본값으로 1이 사용됩니다.

사용예시

다음과 같은 example.mac 파일을 만든다고 생각해봅시다.

 1/gun/energy 10. MeV
 2/run/beamOn 10000
 3
 4/gun/energy 12. MeV
 5/run/beamOn 10000
 6
 7/gun/energy 14. MeV
 8/run/beamOn 10000
 9
10/gun/energy 16. MeV
11/run/beamOn 10000
12
13/gun/energy 18. MeV
14/run/beamOn 10000
15
16/gun/energy 20. MeV
17/run/beamOn 10000

여기서 에너지 값이 10~20으로 2씩 바뀌고 있을 뿐, 나머지는 반복됩니다.

이 경우 다음과 같이 두 개의 파일로 나누어 작성하면 동일하게 동작합니다.

  • example.mac

    1/control/loop myRun.mac ene 10. 20. 2.
    
  • myRun.mac

    1/gun/energy {ene} MeV
    2/run/beamOn 10000
    

/control/foreach

/control/foreach 반복문은 대개의 프로그래밍 언어가 제공하는 range-based for문과 유사합니다.

카운터제시된 목록의 각 값으로 바꾸어가며 다른 매크로파일을 반복적으로 실행합니다.

사용법

/control/foreach 매크로파일명 카운터변수명 "반복할값목록"의 형태로 입력합니다.

여기서 "반복할값목록"입력할 때 주의점이 두 가지 있습니다.

  • 목록 전체를 반드시 ""(double-quote)로 감쌀 것
  • 목록의 각 값은 띄어쓰기로 구분할 것

이렇게 입력하면, 매크로파일에서 카운터변수"반복할값목록"에 적힌 각각의 값으로 aliasing 시켜줍니다. 즉, 매크로파일 내에서는 {카운터변수}와 같이 입력하면 되는 것이죠.

사용예시

다음과 같은 example.mac 파일을 만든다고 생각해봅시다.

 1/gun/particle p
 2/run/beamOn 10000
 3
 4/gun/particle e-
 5/run/beamOn 10000
 6
 7/gun/particle e+
 8/run/beamOn 10000
 9
10/gun/particle gamma
11/run/beamOn 10000

여기서는 입자가 p, e-, e+, gamma로 바뀌고 있을 뿐, 나머지는 반복됩니다.

이 경우 다음과 같이 두 개의 파일로 나누어 작성하면 동일하게 동작합니다.

  • example.mac

    1/control/foreach myRun.mac pname "p e- e+ gamma"
    
  • myRun.mac

    1/gun/particle {pname}
    2/run/beamOn 10000