Geant4 가이드

Geant4 Coding Convension

Coding convention 이란 비공식적으로 약속된 코딩 스타일을 의미한다. Geant4 와 이 모듈의 경우 아래와 같은 convention을 사용하므로 참고하자.

  • globals.hh 를 include 하면 아래와 같은 타입을 사용할 수 있다.
    • Geant4 데이터 타입.
      • G4int
      • G4long
      • G4float
      • G4double
      • G4bool
    • Geant4 입출력 함수 사용. Geant4 G4UImanger 를 통해서 관리된다.
      • G4cout
      • G4cerr
      • G4endl
  • Geant4 의 대부분의 클래스는 G4로 시작한다. 예) G4RunManager
  • Geant4 는 CLHEP (A Class Library For High Energy Physics) 를 인용하여 코드의 많은 부분에서 CLHEP 을 볼 수 있다. 아래에 그 일부분을 적는다.
    • Geant4 는 아래와 같이 기본 설정 단위가 존재하지만 G4SystemOfUnits.hh 에 정의 되어있는 CLEHP 단위를 사용하여 코딩하는 것을 권장한다. 기본 설정 단위는 프로그램 상에서 그 값이 1 이다.
      • 길이: mm (milimeter)
      • 시간: ns (nanosecond)
      • 에너지: MeV (Mega electron Volt)
      • 온도: kelvin
      • 물질의 양: mole
      • 각도: radian
    • 기본 물리 상수는 CLEHP 에서 가져와서 G4PhysicalConstants.hh 에 정의 되어있다.
  • 이 모듈에서 만들어 볼 클래스는 OT(OpenTutorials)로 시작하는 이름을 사용한다.
  • 모든 소스파일은 .cc, 헤더파일은 .hh의 확장자를 사용한다.
  • Geant4 매크로는 .mac 확장자를 사용한다.
  • 모든 함수는 대문자로 시작한다.
  • 모든 로컬 변수는 소문자로 시작한다.
  • 모든 멤버 변수는 field를 의미하는 "f"로 시작한다.
  • 함수 또는 변수의 이름이 하나 이상의 단어로 이루어질 때 첫 단어를 제외한 각 단어의 첫글자를 대문자로, 나머지는 소문자로 사용한다. 예) mySpecialVariable, fMemberVariable, WhatToDoWithThisFunction() etc.

댓글

댓글 본문
  1. ejungwoo
    거의 대부분 기능은 Geant4 Documentation (https://geant4.web.cern.ch/docs/) 특히 For Application Developers (https://geant4-userdoc.web.cern.ch......tml) 에 설명이 되어 있습니다. 그리고 이걸 다 읽었다 하더라도 사용자마다 원하는 것이 다양해서 특정한 질문들은 Geant4 Forum (https://geant4-forum.web.cern.ch/) 에서 찾아보거나 직접 물어볼 수 있습니다. 질문분이 어느 정도로 하시는지 모르겠지만 Geant4 외에 C++ 도 많은 경험이 없다면 C++를 공부하는 것도 도움이 될 것입니다.
    대화보기
    • 안녕하세요, 지안트를 막 시작하는 초보이고,
      지안트 공부 방법에 대해 조금 더 구체적으로 알고 싶어 글 올려봅니다.

      공부를 하는데 매뉴얼이 잘 이해 안 되는 것도 있고, 지안트가 전반적으로 돌아가는 매커니즘 도 있지만 지금 가장 큰 문제는 클래스의 매소드를 어떻게 써야하는지, 이 매소드가 뭘 의미하는지, 이걸 어떻게 알아봐야하는지를 잘 모르겠습니다.

      구글에 검색해서 나오는 class reference (예를들어 https://apc.u-paris.fr......tml )는 어떤 종류의 맴버함수가 있는지만 알려주고 이것들이 어떤 역할을 하는지 알려주지는 않고, 그 안에 좀 더 세부적인 코드의 정의하고 설명이 있긴 하지만 (가령 https://apc.u-paris.fr......tml ) 이것도 설명으로는 좀 부족한 것 같습니다.
      지안트 예제들도 자세하지는 않아서 지금까지는 예제나 매뉴얼 등을 보면서 이 함수가 무슨 역할을 할 것 같다하고 뇌피셜을 써서 해왔는데... 이것도 점점 한계가 보이는 것 같습니다.

      이런 맴버함수들의 구체적인 쓰임새나 사용법은 어떻게 알 수 있는거고, 제가 추가적으로 뭘 더 공부해야하는지 알 수 있을까요?
    • ejungwoo
      저도 자세히 알지 못하는 부분이라서 알려드릴 수가 없을 것 같습니다. ㅜㅜ
      대화보기
      • geant4 입문
        안녕하세요, gean4에서 어떻게 매번충돌마다 충돌환경이 바뀌는지 궁금합니다.
        문헌을 찾아본결과 자유행로수(number of mean free path)를 구하고 NMFP를 HEPJamesRandom이라는 random함수를 통해 매번 얻는 것으로 알고 있습니다.

        사용자가 정해진 물리모델에 따라 NMFP를 매번 계산하고, NMFP를 주어진 물질에서의 산란단면적을 통해 실제로 진행하는 물리적 거리로 환산합니다. 그다음 geant4에서는 이렇게 나온 NMFP중 가장 짧은 단계를 진행단계로 간주하고 입자를 그거 리만큼 이동시키면서 충돌을 한다고 문헌에서 확인하였는데...........

        이과정이 쉽게 머리속에 떠올려지지않아 문의 드립니다........
        질문을 드리면1) NMFP의 물리적의미?
        2) NMFP와 cross section과의 관계
        3) geant4에서 실제 충돌이 일어나는 과정이 어떻게 되는지?

        답변해주시면 감사하겠습니다.
      버전 관리
      ejungwoo
      현재 버전
      선택 버전
      graphittie 자세히 보기