Geant4 가이드

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

메인 매크로와 Action Initialization

새롭게 추가해볼 Action Initialization 클래스를 소개한다. Action Initialization 클래스는 G4VUserActionInitialization 클래스를 상속한다. 유저는 마스터 스레드에 생성할 Action 클래스를 정하는 BuildForMaster(), 하위 스레드에 생성할 Action 클래스를 정하는 Build() 함수를 만들어주면 된다.

Multi-threading은 이전 까지와는 다르게 스레드 별로 Action 클래스를 생성한다. 따라서 메인 매크로 example.cc의 Action 클래스들을 Action Initialization 클래스로 옮기고 Action Initialization 클래스를 메인 매크로에서 초기화 한다.

메인 매크로 바꾸기

먼저 클래스 이름을 OTActionInitialization 을 정하고 메인 매크로에서 SetUserAction() 함수를 모두 지운 후 다음과 같이 적자.

runManager -> SetUserInitialization(new OTActionInitialization());

다음, G4RunManager를 지우고 multi-threading을 지원하는 런 메니저인  G4MTRunManager로 바꿔주자.

G4MTRunManager* runManager = new G4MTRunManager;

물론 헤더 도 추가해야 한다.

#include "G4MTRunManager.hh"
#include "OTActionInitialization.hh"

사용자가 사용하고 싶은 스레드의 개수는 (예를 들어서 4개일 때)

runManager -> SetNumberOfThreads(4);

와 같이 설정한다.

OTActionInitialization

앞의 토픽에서 이야기 했듯이 마스터 스레드는 Run Action 클래스 만 생성하고 하위 스레드는 모든 Action 클래스를 생성하므로 OTActionInitialization(소스, 헤더) 클래스의 본체는 다음과 같다.

void OTActionInitialization::BuildForMaster() const
{
  SetUserAction(new OTMasterRunAction("../primaries.gen"));
}

void OTActionInitialization::Build() const         
{
  SetUserAction(new OTPrimaryGeneratorAction);
  SetUserAction(new OTRunAction);
  SetUserAction(new OTEventAction);
  SetUserAction(new OTSteppingAction);
}

BuildMaster() 함수에서 OTRunAction이 아닌 OTMasterRunAction을 사용한 점을 유의하자(다음 토픽에서 다룰 예정).

댓글

댓글 본문
작성자
비밀번호
  1. ejungwoo
    아래와 같이 메크로 파일을 불러 올 수 있습니다.
    /control/execute run.mac
    대화보기
    • macro 사용자
      안녕하세요

      시뮬레이션을 돌리고 실시간으로 동영상으로 확인을 하고싶은데 확인이 잘안되어 문의드립니다.

      먼저 제가 하는 방식을 설명을 드리겠습니다.

      ./example 이라는 명령어로 실행파일을 실행하면 자동으로 quty가 뜨게 됩니다.

      그럼 quty 내부의 명령어 창에 /run/beamOn 100 이런식으로 하면 particle이 100번 쏴지는게 잘보입니다.

      하지만 제가 macro 파일을 불러서 quty 내부에서 실행하는 방법은 잘되이가 않네요

      /run/baemOn run.mac 이런식으로 실행하는 자꾸 오타가 나서 매크로 파일을 불러서 /run/beamOn 명령어로 실행하는 방법이 있는지 궁긍해서 문의드립니다.

      감사합니다
    버전 관리
    ejungwoo
    현재 버전
    선택 버전
    graphittie 자세히 보기