Geant4 Version에 따라 동작을 달리하도록 코딩하는 법
Geant4 코드 작성 시, 연동되는 Geant4의 버전을 확인하고 버전에 따라 동작을 달리 하도록 코딩하는 방법을 알아봅니다.
TL;DR
-
G4Version.hh 헤더를 포함시킴
-
#define
전처리기를 통해 정의되는 G4VERSION_NUMBER
매크로상수를 이용하여 Geant4의 버전 번호 확인
버전 번호는 정수값으로 부여되며 다음의 규칙을 따름
ABC
A: Major version number
B: Minor version number
C: patch number
-
예시
Geant4 Version 9.6의 G4VERSION_NUMBER
는 960
Geant4 Version 10.7 patch 02의 G4VERSION_NUMBER
는 1072
-
이 외, G4VERSION_TAG
매크로상수나, G4String 자료형의 G4Version
, G4Date
변수를 이용할 수도 있음
G4Version.hh
G4Version.hh 헤더를 포함시킴
#define
전처리기를 통해 정의되는 G4VERSION_NUMBER
매크로상수를 이용하여 Geant4의 버전 번호 확인
버전 번호는 정수값으로 부여되며 다음의 규칙을 따름
ABC
A: Major version number
B: Minor version number
C: patch number
예시
Geant4 Version 9.6의 G4VERSION_NUMBER
는 960
Geant4 Version 10.7 patch 02의 G4VERSION_NUMBER
는 1072
이 외, G4VERSION_TAG
매크로상수나, G4String 자료형의 G4Version
, G4Date
변수를 이용할 수도 있음
Geant4에서는 현재 이용중인 Geant4 라이브러리의 버전 정보를 담고있는 G4Version.hh 헤더를 제공합니다.
사용자는, 코드 어느 곳에서든 이 헤더를 포함시켜서 Geant4의 버전 정보를 이용할 수 있습니다.
G4VERSION_NUMBER
가장 많이 쓰일 것으로 생각되는 매크로상수입니다.
G4Version.hh 파일 내에서, 다음과 같은 코드를 통해 정의되어 있습니다. (Version 10.7 patch 02 기준)
#ifndef G4VERSION_NUMBER
#define G4VERSION_NUMBER 1072
#endif
G4VERSION_NUMBER
라는 매크로상수는 Geant4의 버전 번호를 의미하는 정수값으로 부여되며 다음의 규칙을 따릅니다.
ABC
A: Major version number
B: Minor version number
C: patch number
예를 들어 Geant4 Version 9.6의 G4VERSION_NUMBER
는 960이 됩니다. (patch 번호가 없으면 0번으로 붙게됩니다)
또 다른 예로, Geant4 Version 10.7 patch 02의 G4VERSION_NUMBER
는 1072가 됩니다. (10.x 버전 이후의 경우에는 major version number가 두자리수가 됩니다)
사용자는 이 매크로상수를 다음과 같이 활용할 수 있습니다.
#include "G4Version.hh"
// ...
if(G4VERSION_NUMBER >= 1000)
{
// What to do when the version is 10.x
}
else
{
// What to do when the version is 9.x
}
G4VERSION_TAG
이 매크로상수는 G4Version.hh 파일 내에서, 다음과 같은 코드를 통해 정의되어 있습니다. (Version 10.7 patch 02 기준)
#ifndef G4VERSION_TAG
#define G4VERSION_TAG "$Name: geant4-10-07-patch-02 $"
#endif
Geant4의 버전명이 보다 상세하게 풀어서 쓰여있습니다.
G4Version
G4Version
은 G4Version.hh에 정의된 G4String형 변수입니다. 다음과 같은 코드를 통해 정의되어 있습니다. (Version 10.7 patch 02 기준)
#ifdef G4MULTITHREADED
static const G4String G4Version = "$Name: geant4-10-07-patch-02 [MT]$";
#else
static const G4String G4Version = "$Name: geant4-10-07-patch-02 $";
#endif
G4VERSION_TAG
매크로상수와 기본적으로 같은 값을 가집니다만, Multi-threading 옵션을 켜고 설치한 Geant4의 경우에는 G4Version
변수의 끝에 [MT]
표시가 추가됩니다.
G4Date
G4Date
은 G4Version.hh에 정의된 G4String형 변수입니다. 다음과 같은 코드를 통해 정의되어 있습니다. (Version 10.7 patch 02 기준)
static const G4String G4Date = "(11-June-2021)";
해당 버전이 출시된 날짜가 저장되어 있습니다.
Author And Source
이 문제에 관하여(Geant4 Version에 따라 동작을 달리하도록 코딩하는 법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@evanote/Geant4-Version에-따라-동작을-달리하도록-코딩하는-법저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)