설명
입자 생성 컷이란 트랙이 진행을 하면서 입자의 생성을 어느정도로 제한 할 것인가를 결정하는 컷이다. Geant4는 이 입자 생성컷을 범위 컷(생성된 입자가 진행할 수 있는 거리 컷) 형태로 설정한다(영어로 'range cut' 이라 한다). 따라서 범위 컷에 해당하는 입자의 에너지 컷은 입자와 물질의 종류에 따라서 달라진다. 입자 생성 컷을 조금 더 쉽게 설명하면 아래와 같다.
예를 들어서 감마의 범위 컷을 1 mm 로 설정했다고 하자. Geant4는 트랙이 진행하면서 생성된 입자들을 임시로 저장한다. 이렇게 저장된 새로운 감마들 중 해당 물질에서 1 mm 이상 진행 할 수 있는 에너지를 가진 감마들만 시뮬레이션 상에서 새로 생성된 입자(secondary particle)로 (스택에) 추가된다.
만약에 A라는 물질에서 1 mm 이상 진행하기 위한 감마의 에너지가 1 MeV 인데, 한 트랙에서 10개의 감마가 생성되었고 그 중 2개의 감마가 1 MeV 이상, 나머지는 1 MeV 이하일 때 시뮬레이션 상에서 새로 생성 되는 감마는 2개가 되는 식이다. 나머지 8개의 감마는 잃어버린 에너지로 남는다.
설정
입자 생성 컷을 설정하는 방법에는 두가지가 있다. 따로 설정하지 않는 경우 범위 컷의 기본 값은 1 mm 이다.
a. PhysicsList를 작성하는 경우
G4UserPhysicsList 클래스를 이용하여 PhysicsList를 작성하는 경우, SetCuts() 함수안에서 설정한다.
void MyPhysicsList::SetCuts() { SetCutValue(1.*mm, "gamma"); SetCutValue(2.*mm, "e-"); SetCutValue(3.*mm, "e+"); SetCutValue(4.*mm, "proton"); }
혹은 간단하게 클래스 생성자 안에서 기본값(defaultCutValue)을 바꾸는 방법도 있다.
MyPhysicsList::MyPhysicsList() { defaultCutValue = 10.*mm; }
특정 볼륨(아래 코드에서 A 혹은 B)안에서 컷을 설정하려면 다음과 같은 방법이 있다.
void MyPhysicsList::SetCuts() { G4ProductionCuts *cuts; G4Region *region; region = G4RegionStore::GetInstance() -> GetRegion("A"); cuts = new G4ProductionCuts; cuts -> SetProductionCut(0.01*mm); region -> SetProdutionCuts(cuts); }
혹은
void MyPhysicsList::SetCuts() { G4ProductionCuts *cuts; G4Region *region; region = G4RegionStore::GetInstance() -> GetRegion("B"); cuts = new G4ProductionCuts; cuts -> SetProductionCut(10.*mm, G4ProductionCuts::GetIndex("gamma")); cuts -> SetProductionCut(20.*mm, G4ProductionCuts::GetIndex("e-")); cuts -> SetProductionCut(30.*mm, G4ProductionCuts::GetIndex("e+")); cuts -> SetProductionCut(40.*mm, G4ProductionCuts::GetIndex("proton")); region -> SetProdutionCuts(cuts); }
b. 커맨드 라인 혹은 매크로 이용
/run/setCut [cut] [Unit]
Range : cut >=0.0
Available Geant4 state(s) : PreInit Idle
Parameters
cut | type d | ||
Unit | type s | Omittable : default value = mm | Parameter candidates : pc km m cm mm um nm Ang fm parsec kilometer meter centimeter millimeter micrometer nanometer angstrom fermi |
/run/setCutForAGivenParticle [particleName] [cut] [unit]
Set a cut value to a specific particle
Usage: /run/setCutForAGivenParticle gamma 1. mm
Available Geant4 state(s) : PreInit Idle
Parameters
particleName | type s | Parameter candidates : e- e+ gamma proton | |
cut | type d | Parameter range : cut >=0.0 | |
Unit | type s | Omittable : default value = mm | Parameter candidates : pc km m cm mm um nm Ang fm parsec kilometer meter centimeter millimeter micrometer nanometer angstrom fermi |
/run/SetCutForRegion [Region] [cut] [Unit]
Set cut value for a region
Availalble Geant4 state(s) : Idle
Parameters
Region | type s | ||
cut | type d | Parameter range : cut >=0.0 | |
Unit | type s | Omittable : default value = mm | Parameter candidates : pc km m cm mm um nm Ang fm parsec kilometer meter centimeter millimeter micrometer nanometer angstrom fermi |
예시)
/run/setCutForAGivenParticle e- 7. mm
/run/setCutForRegion detector 8. cm