Geant4 Version에 따라 동작을 달리하도록 코딩하는 법

Geant4 코드 작성 시, 연동되는 Geant4의 버전을 확인하고 버전에 따라 동작을 달리 하도록 코딩하는 방법을 알아봅니다.


TL;DR

  1. G4Version.hh 헤더를 포함시킴

  2. #define 전처리기를 통해 정의되는 G4VERSION_NUMBER 매크로상수를 이용하여 Geant4의 버전 번호 확인

    버전 번호는 정수값으로 부여되며 다음의 규칙을 따름

    ABC

    A: Major version number

    B: Minor version number

    C: patch number

  3. 예시

    Geant4 Version 9.6G4VERSION_NUMBER960

    Geant4 Version 10.7 patch 02G4VERSION_NUMBER1072

  4. 이 외, G4VERSION_TAG 매크로상수나, G4String 자료형의 G4Version, G4Date 변수를 이용할 수도 있음


G4Version.hh

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.6G4VERSION_NUMBER960이 됩니다. (patch 번호가 없으면 0번으로 붙게됩니다)

또 다른 예로, Geant4 Version 10.7 patch 02G4VERSION_NUMBER1072가 됩니다. (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)";

해당 버전이 출시된 날짜가 저장되어 있습니다.

좋은 웹페이지 즐겨찾기