101
Nhóm NMTP (Tài li»u lưu hành nºi bº) Hưng d¤n sß dng GEANT4 cho h» đi•u hành Windows Đng Nguyên Phương (tŒng hæp) TP. H Chí Minh - 10/2013

Hướng dẫn GEANT4 cho Windows

Embed Size (px)

Citation preview

Page 1: Hướng dẫn GEANT4 cho Windows

Nhóm NMTP

(Tài liệu lưu hành nội bộ)

Hướng dẫn sử dụng GEANT4 cho hệ điềuhành Windows

Đặng Nguyên Phương (tổng hợp)

TP. Hồ Chí Minh − 10/2013

Page 2: Hướng dẫn GEANT4 cho Windows

Mục lục

Lời nói đầu 4

1 Giới thiệu về GEANT4 5

1.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2 Lịch sử hình thành . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.3 Các chức năng chính và ưu nhược điểm . . . . . . . . . . . . . . . . . . . . 6

1.3.1 Chức năng chính . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3.2 Ưu nhược điểm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.4 Cấu trúc của GEANT4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5 Một số lưu ý khi sử dụng GEANT4 . . . . . . . . . . . . . . . . . . . . . . 8

2 Cách thức cài đặt GEANT4 10

2.1 Cài đặt CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2 Cài đặt Microsoft Visual C++ . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.3 Cài đặt GEANT4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.1 Cài đặt chương trình . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.3.2 Cài đặt các file dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . 14

2.3.3 Sử dụng trực tiếp file cài đặt . . . . . . . . . . . . . . . . . . . . . . 17

2.4 Biên dịch ứng dụng với GEANT4 . . . . . . . . . . . . . . . . . . . . . . . 18

3 Xây dựng và thực thi chương trình 21

3.1 Hệ thống các đơn vị . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1.1 Đơn vị cơ bản . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1.2 Cách khai báo đơn vị . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2 Cách thức xây dựng một ứng dụng trong GEANT4 . . . . . . . . . . . . . 22

3.2.1 Các bước cần thiết . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.2.2 Hàm main() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.3 G4RunManager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2.4 G4UImanager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2.5 G4cout và G4cerr . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.2.6 Xây dựng hình học detector . . . . . . . . . . . . . . . . . . . . . . 25

3.2.7 Xác định quá trình vật lý . . . . . . . . . . . . . . . . . . . . . . . 25

3.2.8 Tạo event sơ cấp . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1

Page 3: Hướng dẫn GEANT4 cho Windows

MỤC LỤC Đặng Nguyên Phương

3.2.9 Cấu trúc mã nguồn của một ứng dụng . . . . . . . . . . . . . . . . 26

3.3 Cách thực thi ứng dụng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.3.1 Batch mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.3.2 Batch mode với macro . . . . . . . . . . . . . . . . . . . . . . . . . 28

3.3.3 Interactive mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

4 Xây dựng hệ detector 31

4.1 Xây dựng hình học . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4.1.1 Tạo các khối hình học . . . . . . . . . . . . . . . . . . . . . . . . . 32

4.1.2 Tạo các khối luận lý . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.1.3 Tạo các khối vật lý . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4.2 Định nghĩa vật liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2.1 Định nghĩa vật liệu đơn . . . . . . . . . . . . . . . . . . . . . . . . 43

4.2.2 Định nghĩa phân tử . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4.2.3 Định nghĩa hỗn hợp theo tỉ lệ khối lượng . . . . . . . . . . . . . . . 44

4.2.4 Định nghĩa vật liệu dựa vào cơ sở dữ liệu của GEANT4 . . . . . . . 45

4.2.5 Định nghĩa vật liệu mới từ vật liệu có sẵn . . . . . . . . . . . . . . 45

4.3 Khai báo trường điện từ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.3.1 Từ trường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.3.2 Điện trường . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

5 Các quá trình vật lý 48

5.1 Khai báo hạt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.1.1 Định nghĩa hạt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

5.1.2 Động học hạt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.2 Khai báo quá trình vật lý . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

5.2.1 Tương tác điện từ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

5.2.2 Tương tác hadronic . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.2.3 Quá trình phân rã hạt nhân . . . . . . . . . . . . . . . . . . . . . . 52

5.3 Thiết lập ngưỡng cắt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.3.1 Ngưỡng tạo hạt và vết . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.3.2 Ngưỡng cắt theo vùng . . . . . . . . . . . . . . . . . . . . . . . . . 55

6 Mô phỏng event 56

6.1 Tạo các hạt ban đầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6.1.1 G4ParticleGun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

6.1.2 G4GeneralParticleSource . . . . . . . . . . . . . . . . . . . . . . . . 57

6.2 Hits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

6.2.1 Vùng nhạy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

6.2.2 Ghi nhận đại lượng . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

2

Page 4: Hướng dẫn GEANT4 cho Windows

MỤC LỤC Đặng Nguyên Phương

6.3 Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

7 Xử lý dữ liệu 61

7.1 Các lớp xử lý dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

7.2 Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

7.3 Ntuple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

Lời kết 65

Tài liệu tham khảo 66

A Một số lệnh thực thi cơ bản 67

B Các khối hình học cơ bản 70

C Cơ sở dữ liệu vật liệu của GEANT4 76

3

Page 5: Hướng dẫn GEANT4 cho Windows

Lời nói đầu

Tiếp theo sau tập tài liệuHướng dẫn sử dụng ROOT cho hệ điều hành Windows,

tôi muốn tiếp tục giới thiệu đến các bạn thành viên nhóm NMTP một trong những bộ

công cụ mô phỏng Monte Carlo rất mạnh trong lĩnh vực hạt nhân và hạt cơ bản. Nếu các

bạn đã làm quen với ROOT, sẽ không khó khăn gì cho các bạn để làm quen với bộ công

cụ này, đó chính là chương trình GEANT4. Đây là một bộ công cụ dùng để mô phỏng

vận chuyển của các hạt qua môi trường vật chất. Các lĩnh vực ứng dụng của GEANT4

rất rộng, từ vật lý năng lượng cao, khoa học không gian, hạt nhân, lò phản ứng cho tới

y học hạt nhân, xạ trị,...

Tập tài liệu này nhằm mục đích trình bày sơ lược cho các bạn những kiến thức và kĩ

năng cơ bản nhất trong việc sử dụng GEANT4 cho công việc của mình. Do đó, nội dung

của bài viết khá cô đọng và không đi quá sâu vào chi tiết. Các kiến thức được trình

bày trong tập tài liệu này được tổng hợp từ nhiều nguồn khác nhau. Để có thể tìm

hiểu về GEANT4 một cách trọn vẹn hơn, các bạn có thể vào trang web của GEANT4

tại http://geant4.cern.ch/; hoặc tham gia trao đổi, thảo luận với các chuyên gia tại

http://hypernews.slac.stanford.edu/HyperNews/geant4/cindex.

Nếu các bạn thích thú với việc sử dụng ROOT và mong muốn có một chương trình mô

phỏng để đi kèm với ROOT một cách đồng bộ, thì đây chính là chương trình mà tôi

khuyên các bạn nên tìm hiểu...

Đặng Nguyên Phương

4

Page 6: Hướng dẫn GEANT4 cho Windows

Chương 1

Giới thiệu về GEANT4

1.1 Giới thiệu

GEANT4 (GEometry ANd Tracking) là một bộ công cụ miễn phí, được sử dụng để mô

phỏng sự vận chuyển của các hạt qua môi trường vật chất bằng phương pháp Monte

Carlo. Đây là một chương trình mô phỏng mã nguồn mở, cung cấp một tập hợp các quá

trình vật lý đa dạng để mô phỏng tương tác của các hạt với môi trường trên một dải năng

lượng rộng.

GEANT4 được xây dựng trên nền tảng ngôn ngữ lập trình C++, khai thác và ứng dụng

các tiến bộ của kỹ thuật lập trình hướng đối tượng, hỗ trợ người dùng trong việc xây

dựng và sử dụng các thành phần cần thiết. Chương trình được phát triển và sử dụng bởi

một cộng đồng rộng lớn các nhà khoa học hiện đang tham gia nhiều thí nghiệm lớn ở

Châu Âu, Mỹ, Nhật, Nga,...

Các lĩnh vực ứng dụng của GEANT4 rất rộng, bao gồm:

• Vật lý hạt nhân và hạt cơ bản

• Khoa học không gian

• Y học hạt nhân, xạ trị

• ...

1.2 Lịch sử hình thành

Ý tưởng cho việc xây dựng GEANT4 được xuất hiện một cách độc lập tại CERN và KEK

vào năm 1993, thông qua việc nghiên cứu các kĩ thuật tính toán mới thay thế cho các

công cụ mô phỏng dựa trên nền tảng FORTRAN đã có trước đó ở GEANT3. Năm 1994,

dự án RD44 được tiến hành tại CERN nhằm xây dựng một chương trình hoàn toàn mới

dựa trên kĩ thuật lập trình hướng đối tượng (object-oriented technology). Dự án này được

5

Page 7: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 1. GIỚI THIỆU VỀ GEANT4 Đặng Nguyên Phương

sự tham gia của rất nhiều nhà khoa học máy tính cũng như kĩ sư lập trình tại các quốc

gia Châu Âu, Nhật, Canada và Mĩ. Mục tiêu của dụ án là xây dựng một chương trình

mô phỏng hệ đo có đầy đủ chức năng và linh hoạt phù hợp với các yêu cầu của các thí

nghiệm vật lý hạt trong tương lai. Việc nghiên cứu và phát triển hoàn thành vào năm

1998 với sự ra đời phiên bản đầu tiên của GEANT4, và từ đó về sau trung bình hàng

năm có 2 phiên bản nâng cấp được công bố.

Các cột mốc chính trong lịch sử hình thành và phát triển của GEANT4:

• 12/1994: dự án RD44 được bắt đầu.

• 04/1997: phiên bản alpha đầu tiên được công bố.

• 07/1998: phiên bản beta đầu tiên được công bố.

• 12/1998: phiên bản GEANT4 đầu tiên được công bố.

• 12/2004: phiên bản 7.0

• 12/2005: phiên bản 8.0

• 02/2008: phiên bản 9.0

• 10/2012: phiên bản 9.5 (patch-02)

1.3 Các chức năng chính và ưu nhược điểm

1.3.1 Chức năng chính

Bộ công cụ GEANT4 có thể được sử dụng để

• Mô phỏng các hạt cơ bản (lepton, hadron, boson,...) cũng như các hạt ion.

• Tính toán các vết vả tương tác của hạt với các quá trình vật lý khác nhau.

• Tạo ra các hạt mới sau tương tác và cho phép truy cập tất cả thông tin trong mỗi

tương tác.

• Tổng hợp các thông tin, cho kết quả đầu ra ghi nhận bởi các detector.

1.3.2 Ưu nhược điểm

Ưu điểm

• Có khả năng mô phỏng các thí nghiệm có cấu hình phức tạp.

6

Page 8: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 1. GIỚI THIỆU VỀ GEANT4 Đặng Nguyên Phương

• Có thể được sử dụng để nghiên cứu và tối ưu hóa các thiết bị ghi nhận, các kĩ thuật

xử lý,... giúp so sánh giữa kết quả thực nghiệm và lý thuyết.

• Được xây dựng trên nền tảng lập trình hướng đối tượng, có độ linh động cao nên

dễ dàng cho việc nâng cấp.

• Được sự đóng góp của một cộng đồng lớn các nhà khoa học và kĩ thuật, các tính

năng mới và mô hình vật lý mới được cập nhật thường xuyên.

Nhược điểm

• Khá tốn tài nguyên máy tính trong quá trình mô phỏng.

• Cấu trúc chương trình khá phức tạp, gồm nhiều phần kết nối với nhau.

• Đòi hỏi việc nghiên cứu chi tiết và kiểm tra kĩ càng các quá trình vật lý khi đưa vào

trong mô phỏng.

1.4 Cấu trúc của GEANT4

Bô công cụ GEANT4 bao gồm nhiều thành phần nhỏ được xây dựng một các độc lập với

nhau, tuy nhiên vẫn có sự phụ thuộc, liên kết lẫn nhau. Hình 1.1 trình bày mối liên hệ

phụ thuộc giữa các thành phần với nhau trong GEANT4. Các thành phần chính gồm có:

• Global: chứa hệ thống các đơn vị, hằng số, các phép gieo số ngẫu nhiên.

• Run và Event: liên quan tới việc tạo các event, các hạt sơ cấp và thứ cấp cần thiết

trong quá trình mô phỏng.

• Processes, Tracking và Track: xác định vết của hạt, các quãng chạy, tương tác,...

• Geometry và Material: mô tả detector, vật liệu, tính toán khoảng các đến các

mặt biên.

• Physics và Particles: chứa tất cả các mô hình vật lý, tính chất của hạt.

• Hits và Digits: liên quan đến việc tạo ra tín hiệu ghi nhận khi hạt đập vào detector

• Readout: xử lý tín hiệu đầu ra, pile-up,...

• Visualization, Persistency và Interfaces: các công cụ đồ họa hiển thị hình học

và vết của hạt, giao diện tương tác với người dùng và các chương trình xử lý số liệu

khác (vd: ROOT).

7

Page 9: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 1. GIỚI THIỆU VỀ GEANT4 Đặng Nguyên Phương

Hình 1.1: Sơ đồ liên kết giữa các lớp trong GEANT4

1.5 Một số lưu ý khi sử dụng GEANT4

• Tất cả các lớp (class) cơ bản trong GEANT4 đều được bắt đầu bằng G4.

Ví dụ: G4double, G4UIManager,...

• Khi xây dựng bài toán mô phỏng, người dùng phải đảm bảo tối thiểu 3 lớp sau đây

được sử dụng:

– G4VUserDetectorConstruction: mô tả hình học và vật liệu của hệ đo.

– G4VUserPhysicsList: mô tả khoảng giá trị được mô phỏng, loại hạt và các

quá trình vật lý.

– G4VUserPrimaryGeneratorAction: mô tả nguồn phát hạt, năng lượng, phân

bố góc,...

• Các lớp vừa được nhắc tới là các lớp cơ bản (base class) hay còn gọi là lớp trừu

8

Page 10: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 1. GIỚI THIỆU VỀ GEANT4 Đặng Nguyên Phương

tượng (abstract class), không thể dùng trực tiếp các lớp này trong xây dựng ứng

dụng mô phỏng cũng như không thể tạo đối tượng (object) thuộc lớp này bằng lệnh

new. Người dùng phải tự xây dựng lớp riêng cho mình (lớp dẫn xuất hay còn gọi

là lớp con) dựa trên cơ sở của các lớp này và tạo các đối tượng thuộc các lớp vừa

được xây dựng. Ví dụ như để xây dựng hệ đo detector, người dùng phải xây dựng

một lớp MyG4DetectorConstruction dựa trên lớp G4VUserDetectorConstruction,

điều này sẽ được trình bày chi tiết hơn ở những phần sau.

9

Page 11: Hướng dẫn GEANT4 cho Windows

Chương 2

Cách thức cài đặt GEANT4

GEANT4 có thể được cài đặt trên nhiều hệ điều hành khác nhau, tuy nhiên tài liệu

này chỉ tập trung vào việc cài đặt trên hệ điều hành Windows. Cách thức cài đặt

được trình bày dựa theo hướng dẫn tại trang http://geant4.web.cern.ch/geant4/

UserDocumentation/UserGuides/InstallationGuide/html/index.html. Để cài đặt được

GEANT4 cho hệ điều hành Windows, ta cần có:

• Công cụ hỗ trợ biên dịch CMake.

• Trình biên dịch Microsoft Visual C++.

• Mã nguồn GEANT4.

2.1 Cài đặt CMake

CMake (Cross-platform Makefile Generator) là công cụ hỗ trợ quản lý các quá trình biên

dịch các mã nguồn. Cách thức cài đặt CMake như sau:

• Tải file cài đặt CMake về từ trang web http://www.cmake.org (trong tài liệu này

phiên bản CMake 2.8.11 được sử dụng).

• Sau khi đã tải file cài đặt cho hệ điều hành Windows về (cmake-2.8.11.1-win32-

x86.exe), double click vào file để thực hiện quá trình cài đặt, giao diện cài đặt của

chương trình CMake như trong Hình 2.1.

• Chọn option thứ 2 hoặc thứ 3 để đưa đường dẫn CMake vào trong biến môi trường

PATH của hệ thống.

• Thực hiện theo hướng dẫn của chương trình để kết thúc cài đặt.

10

Page 12: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

Hình 2.1: Giao diện cài đặt của CMake

2.2 Cài đặt Microsoft Visual C++

Microsoft Visual C++ là một phần trong bộ Microsoft Visual Studio, tuy nhiên ta chỉ cần

tải phiên bản miễn phí Visual C++ tại http://www.microsoft.com/express/Downloads

là được. Trong phần hướng dẫn này, phiên bản Visual C++ 2008 Express được sử dụng.

Các bước thực hiện việc cài đặt như sau:

• Sau khi download thành công file setup (vcsetup.exe), double click để chạy chương

trình setup (Hình 2.2).

Hình 2.2: Giao diện cài đặt của Visual C++ 2008 Express

• Ở Welcome to setup, nhấp Next.

11

Page 13: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

• Ở License Terms, nhấp chọn I have read and accept the license terms và nhấp Next.

• Ở Installation Options, bỏ dấu chọn ở Microsoft SQL và bấm Next.

• Ở Destination Folder, giữa nguyên đường dẫn mặc định và bấm Install.

• Sau khi cài đặt hoàn tất, bấm Exit để thoát.

• Ngoài ra, Microsoft còn yêu cầu đăng kí để được sử dụng sản phẩm. Vào Start →All Programs, mở Visual C++ 2008 Express, trên thanh menu nhấp vào Help và

làm theo các hướng dẫn đăng kí.

2.3 Cài đặt GEANT4

Để cài đặt được chương trình GEANT4, trước tiên ta cần tải mã nguồn và các file dữ

liệu (data files) từ trang web của chương trình (http://geant4.cern.ch). Tại giao diện

chính của trang web, ta nhấp vào nút Download (Hình 2.3) để vào được trang download.

Hình 2.3: Giao diện trang web GEANT4, nút Download được đánh dấu màu đỏ

2.3.1 Cài đặt chương trình

• Tại trang download, trong phần Source files, nhấp chọn nút Download tương ứng

với ZIP format (Hình 2.4).

• Sau khi đã tải được file mã nguồn dùng WinZip hay WinRar để giải nén.

• Chạy CMake, sử dụng nút Browse Source chọn đường dẫn đến thư mục mã nguồn, và

nút Browse Build để chỉ đường dẫn đến thư mục muốn cài đặt GEANT4 (Hình 2.5).

12

Page 14: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

Hình 2.4: Tải file mã nguồn

Sau đó bấm nút Configure, chương trình sẽ hiện ra thông báo đề nghị chọn trình

biên dịch, chọn như trong Hình 2.6 và bấm Finish.

Hình 2.5: Giao diện CMake khi biên dịch GEANT4

• Sau khi cấu hình xong (thể hiện qua dòng chữ Configuring done), CMake sẽ yêu

cầu xác định lại một số tham số cho cấu hình như trong Hình 2.5, bật tắt các tham

số bằng cách nhấp vào ô trống tướng ứng.

– CMAKE_INSTALL_PREFIX (mặc định C:/Program Files/Geant4) chỉnh lại như

đường dẫn tới thư mục cài đặt chương trình.

– GEANT4_INSTALL_DATA (mặc định OFF) nếu chọn ON, chương trình sẽ tải và cài

đặt các file dữ liệu vào thự mục được khai báo trong GEANT4_INSTALL_DATADIR.

– GEANT4_USE_GDML (mặc định OFF) cài đặt thư viện G4persistency; yêu cầu

có sẵn thư viện và các header của Xerces-C++.

– GEANT4_USE_INVENTOR (mặc định OFF) cài đặt driver cho OpenInventor; yêu

13

Page 15: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

Hình 2.6: Chọn trình biên dịch

cầu có sẵn SoWin (Windows), thư viện và header của OpenGL.

– GEANT4_USE_OPENGL_WIN32 (mặc định OFF) cài đặt driver cho Win32 OpenGL;

yêu cầu có thư viện và header của OpenGL.Nên chọn ON khi biên dịch trên

Windows.

– GEANT4_USE_QT (mặc định OFF) cài đặt giao diện và driver cho Qt4 User In-

terface; yêu cầu có thư viện và header của Qt4 và OpenGL.

– GEANT4_SYSTEM_CLHEP (mặc định OFF) biên dịch GEANT4 với thư viện ngoài

CLHEP. Không nên chọn.

• Sau khi chỉnh sửa cấu hình, bấm Configure lần nữa để cấu hình lại, sau đó bấm

Generate để tạo Makefile. Khi dòng chữ Generating done hiện lên có nghĩa là quá

trình tạo Makefile đã hoàn tất.

• Mở Visual C++, chọn File → Open → Project/Solution và chọn file solution

của GEANT4 (Geant4.sln) như trong Hình 2.7. Trong khung bên trái, kéo xuống

và nhấp chuột phải vào INSTALL và chọn Build.

• Hoàn tất việc cài đặt.

2.3.2 Cài đặt các file dữ liệu

Trong trường hợp không chọn GEANT4_INSTALL_DATA trong quá trình cài đặt GEANT4,

ta có thể cài đặt các file dữ liệu sau khi quá trình cài đặt GEANT4 đã hoàn tất, cách

thức tiến hành như sau:

• Tại trang download của GEANT4, trong phần Data files (Hình 2.8), tải các file dữ

14

Page 16: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

Hình 2.7: Cấu hình GEANT4 trong CMake

liệu cần thiết:

– G4NDL (có hoặc không có neutron nhiệt) dữ liệu tương tác của neutron với

năng lượng dưới 10MeV (từ thư viện ENDF/B-VI).

– G4EMLOW dữ liệu tương tác điện từ ở năng lượng thấp (từ các thư viện

EPDL97, EEDL, EADL).

– G4PhotonEvaporation dữ liệu các chuyển dời photon (từ thư viện ENSDF).

– G4RadioactiveDecay dữ liệu phân rã hạt nhân (từ thư viện ENSDF).

– G4SAID dữ liệu từ SAID cho proton, neutron, tán xạ pion, trao đổi điện tích

của các nucleon năng lượng dưới 3GeV.

– G4NEUTRONXS dữ liệu tiết diện neutron với năng lượng trên 20MeV.

– G4PII dữ liệu tiết diện ion hóa trong môi trường vật chất.

– RealSurface dữ liệu tán xạ trên các bề mặt quang học.

• Tạo thư mục data bên trong thư mục cài đặt GEANT4, copy các file dữ liệu nén

vào trong thư mục này và giải nén.

• Sau khi đã giai nén các file dữ liệu, ta tiến hành cài đặt các biến môi trường cho

các dữ liệu này. Nhấp chuột phải vào biểu tượng My Computer trên màn hình

15

Page 17: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

Hình 2.8: Tải file dữ liệu

Desktop và chọn Properties. Trong cửa sổ Properties chọn tab Advanced, sau đó

chọn Environment Variables như trong Hình 2.9.

Hình 2.9: Giao diện System Properties

• Trong khung User variables chọn New, nhập vào các biến môi trường tương ứng với

các thư mục chứa dữ liệu (Hình 2.10)

– G4LEDATA (G4EMLOW)

– G4LEVELGAMMADATA (PhotonEvaporation)

– G4NEUTRONHPDATA (G4NDL)

– G4NEUTRONXSDATA (G4NEUTRONXS)

– G4PIIDATA (G4PII)

– G4RADIOACTIVEDATA (G4RadioactiveDecay)

16

Page 18: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

– G4REALSURFACEDATA (RealSurface)

– G4SAIDXSDATA (G4SAIDDATA)

Hình 2.10: Giao diện nhập biến môi trường

• Trong khung System variables chọn biến PATH và nhấp chọn nút Edit, thêm vào

đường dẫn của thư mục chứa các thư viện động .dll của GEANT4 (thư mục bin)

như trong Hình 2.11 và bấm OK.

Hình 2.11: Giao diện nhập thêm đường dẫn vào PATH

• Hoàn tất việc cài đặt các file dữ liệu.

2.3.3 Sử dụng trực tiếp file cài đặt

Bên cạnh việc biên dịch GEANT4 từ mã nguồn, ta cũng có thể cài đặt bằng cách sử dụng

trực tiếp các chương trình cài đặt đã được biên dịch sẵn trước đó. Các bước thực hiện

như sau:

• Tại trang download của GEANT4, trong phần Pre-compiled Libraries (Hình 2.12),

tải file installer (lưu ý tới sự tương thích giữa cấu hình biên dịch và cấu hình máy

đang sử dụng).

• Chạy file cài đặt và làm theo các hướng dẫn trong quá trình cài đặt, lưu ý việc chọn

option để đường dẫn GEANT4 được đặt trong PATH (Hình 2.13).

17

Page 19: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

Hình 2.12: Giao diện tải thư viện đã được biên dịch sẵn

Hình 2.13: Giao diện chương trình cài đặt GEANT4

2.4 Biên dịch ứng dụng với GEANT4

Sau khi hoàn tất các file khai báo cấu hình cho bài toán, để thực hiện được việc mô phỏng

ta cần phải biên dịch các file đó thành file thực thi (.exe). Giả sử ta chọn ví dụ B1 trong

thư mục examples của GEANT4 để biên dịch, cách thức làm như sau:

• Mở CMake, thiết lập đường dẫn tới thư mục chứa mã nguồn và thư mục chứa phần

biên dịch (hai thư mục này không nhất thiết phai giống nhau nhưng trong đây tôi

sử dụng chung), sau đó bấm Add Entry và nhập đường dẫn cho biến Geant4_DIR

(tới thư mục có chứa file Geant4Config.cmake) như Hình 2.14.

• Tương tự như việc biên dịch GEANT4 ở phần trước, nhấp Configure để thiết lập

cấu hình biên dịch. Sau khi kiểm tra các tham số của CMake nhấp Configure lần

nữa, sau đó nhấp Generate.

• Mở Visual C++, mở solution của B1, tại khung bên trái nhấp chuột phải vào

ALL_BUILD và chọn Build (Hình 2.15).

18

Page 20: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

Hình 2.14: Giao diện CMake biên dịch ví dụ B1

Hình 2.15: Giao diện Visual C++ biên dịch ví dụ B1

• File thực thi (exampleB1.exe) sẽ được tạo ra trong thư mục Debug, copy file này

ra ngoài thư mục B1 và double click để chạy chương trình, kết quả thu được như

trong Hình 2.16. Trong trường hợp có sử dụng GEANT4_USE_OPENGL_WIN32, giao

diện G4UIWin32 sẽ hiện ra. Một cách khác để chạy chương trình vào mở ứng dụng

19

Page 21: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 2. CÁCH THỨC CÀI ĐẶT GEANT4 Đặng Nguyên Phương

Command Prompt, di chuyển đến thư mục chứa ví dụ B1 và gõ exampleB1.exe

để chạy chương trình.

Hình 2.16: Chạy ví dụ B1

20

Page 22: Hướng dẫn GEANT4 cho Windows

Chương 3

Xây dựng và thực thi chương trình

3.1 Hệ thống các đơn vị

3.1.1 Đơn vị cơ bản

Các đơn vị cơ bản trong GEANT4 gồm có:

• millimet (mm)

• nano giây (ns)

• Mega electron volt (MeV)

• điện tích positron (eplus)

• độ Kelvin (kelvin)

• lượng vật chất tính bằng đơn vị mole (mole)

• cường độ sáng (candela)

• radian (radian)

• steradian (steradian)

Danh sách các đơn vị sử dụng trong GEANT4 được cho trong source/global/management/

include/G4SystemOfUnits.hh.

3.1.2 Cách khai báo đơn vị

Khi khai báo một giá trị trong GEANT4, tốt nhất là ta nên khai báo đơn vị kèm theo

bằng cách "nhân" với giá trị khai báo, ví dụ như:

G4double Step = 10∗km , KineEnergy = 3.0∗ GeV , density = 1.5∗ mg/cm3 ;

21

Page 23: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 3. XÂY DỰNG VÀ THỰC THI CHƯƠNG TRÌNH Đặng Nguyên Phương

Trong trường hợp đọc dữ liệu từ bảng hay file ngoài không có đơn vị đi kèm, ta nên lập

tức gán đơn vị cho dữ liệu vừa đọc được, ví dụ:

f o r ( i n t j=0, j<jmax , j++) CrossSection [ j ] ∗= millibarn ;

Trong trường hợp muốn trình bày kết quả theo đơn vị mình muốn, ta "chia" kết quả cho

đơn vị đó.

G4cout << KineEnergy/keV << " keV" ;

G4cout << density /(g/cm3 ) << " g/cm3" ;

Ngoài ra, ta cũng có thể để cho GEANT4 tự lựa chọn đơn vị trình bày phù hợp với giá

trị được cho bằng cách:

G4cout << G4BestUnit ( StepSize , "Length" ) ;

Trong trường hợp này, giá trị StepSize sẽ được trình bày theo một trong các đơn vị km,

m, mm, fermi,... tùy theo độ lớn của giá trị này.

Để khai báo một đơn vị mới không có trong danh sách của GEANT4, ta có thể làm 1

trong hai cách sau:

Cách 1: Sử dụng SystemOfUnits.h

#inc lude "SystemOfUnits . h"

s t a t i c const G4double inch = 2.54∗ cm ;

Cách 2: Sử dụng hàm định nghĩa đơn vị:

G4UnitDefinition (name, symbol, category, value)

G4UnitDefinition ( "km/hour" , "km/h" , "Speed" , km /(3600∗s ) ) ;

G4UnitDefinition ( "meter/ns" , "m/ns" , "Speed" , m/ns ) ;

3.2 Cách thức xây dựng một ứng dụng trong GEANT4

3.2.1 Các bước cần thiết

GEANT4 chỉ là một công cụ, để có thể thực hiện mô phỏng một thí nghiệm hay đo đạc

nào đó ta phải tự xây dựng và biên dịch ứng dụng từ mã nguồn. Để xây dựng một ứng

dụng mô phỏng, cần thực hiện các bước sau đây:

• Xây dựng hình học (hình dạng, thể tích, vật liệu).

• Xác định các quá trình vật lý liên quan.

22

Page 24: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 3. XÂY DỰNG VÀ THỰC THI CHƯƠNG TRÌNH Đặng Nguyên Phương

• Xác định một event được bắt đầu như thế nào.

• Xác định những thông tin cần thu nhận trong quá trình mô phỏng.

Ngoài ra, tùy trường hợp cũng cần thực hiện một số công việc như:

• Vẽ hình học, các vết của hạt.

• Xây dựng các lệnh cho giao diện tương tác.

• ...

Các thành phần cụ thể trong việc xây dựng một ứng dụng sẽ được trình bày ở những

phần sau.

3.2.2 Hàm main()

Là thành phần chính để xây dựng nên ứng dụng mô phỏng, có chức năng tổ chức các thực

thi các tính toán trong quá trình mô phỏng. Nội dung của main() sẽ thay đổi theo nhu

cầu của ứng dụng mô phỏng được đưa ra và do đó phải được cung cấp bởi người dùng.

Một ví dụ đơn giản cho hàm main():

#include "G4RunManager . hh"

#include "G4UImanager . hh"

#include "ExG4DetectorConstruction01 . hh"

#include "ExG4PhysicsList00 . hh"

#include "ExG4PrimaryGeneratorAction01 . hh"

i n t main ( )

{

// xay dung Run Manager

G4RunManager∗ runManager = new G4RunManager ;

// t h i e t lap cac lop ban dau can t h i e t

runManager−>SetUserInitialization (new ExG4DetectorConstruction01 ) ;

runManager−>SetUserInitialization (new ExG4PhysicsList00 ) ;

// t h i e t lap user ac t i on

runManager−>SetUserAction (new ExG4PrimaryGeneratorAction01 ) ;

// khoi dong G4 ke rne l

runManager−>Initialize ( ) ;

// lay con t ro cho UI Manager va t h i e t lap cac bao cao

G4UImanager∗ UI = G4UImanager : : GetUIpointer ( ) ;

UI−>ApplyCommand ( "/run/ verbose 1" ) ;

UI−>ApplyCommand ( "/ event / verbose 1" ) ;

UI−>ApplyCommand ( "/ t ra ck ing / verbose 1" ) ;

// bat dau chay chuong t r i nh

23

Page 25: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 3. XÂY DỰNG VÀ THỰC THI CHƯƠNG TRÌNH Đặng Nguyên Phương

i n t numberOfEvent = 3 ;

runManager−>BeamOn ( numberOfEvent ) ;

// ket thuc

d e l e t e runManager ;

r e turn 0 ;

}

Trong ví dụ trên, hàm main() được xây dựng bằng cách sử dụng 2 lớp công cụ có sẵn trong

GEANT4 (G4RunManager, G4UImanager) và 3 lớp được xây dựng từ các lớp công cụ có sẵn

(ExG4DetectorConstruction01, ExG4PhysicsList00 và ExG4PrimaryGeneratorAction01).

Mỗi lớp sẽ được trình bày cụ thể ơ những phần sau.

3.2.3 G4RunManager

Đây là lớp quan trọng cần phải có khi xây dựng ứng dụng. Lớp này quản lý quá trình

thực thi của toàn bộ chương trình mô phỏng, đồng thời quản lý vòng lặp event trong mỗi

lần chạy chương trình. Khi lớp G4RunManager được tạo ra, các lớp quản lý chủ yếu khác

cũng được khởi tạo và các lớp này cũng bị xóa khi G4RunManager bị xóa.

G4RunManager cũng đảm nhận vai trò quản lý các khởi tạo ban đầu, cung cấp những

thông tin cần thiết để vận hành mô phỏng, bao gồm cấu trúc của detector, các loại hạt,

các quá trình vật lý được mô phỏng, cách tạo ra hạt sơ cấp trong mỗi event, và các yêu

cầu cần thiết khác trong quá trình mô phỏng.

Trong ví dụ hàm main() ở trên, các dòng

runManager−>SetUserInitialization (new ExG4DetectorConstruction01 ) ;

runManager−>SetUserInitialization (new ExG4PhysicsList00 ) ;

tạo các đối tượng (object) mô tả hình học detector (ExG4DetectorConstruction01) và

các quá trình vật lý (ExG4PhysicsList00) và chuyển con trỏ của các đối tượng này cho

runManager. Các lớp ExG4DetectorConstruction01 và ExG4PhysicsList00 được xây

dựng từ các lớp công cụ G4VUserDetectorConstruction và G4VUserPhysicsList tương

ứng. Điều này cũng tương tự cho lớp ExG4PrimaryGeneratorAction01.

Dòng lệnh

runManager−>Initialize ( ) ;

thực hiện việc xây dựng detector, tạo các quá trình vật lý, tính toán tiết diện tương tác

tương ứng và các thiết lập khác cho việc chạy chương trình. Việc chạy chương trình được

thực hiện bằng dòng lệnh

i n t numberOfEvent = 3 ;

runManager−>BeamOn ( numberOfEvent ) ;

24

Page 26: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 3. XÂY DỰNG VÀ THỰC THI CHƯƠNG TRÌNH Đặng Nguyên Phương

Với các dòng lệnh này, 3 event được bắt đầu mô phỏng, các cấu hình detector và quá

trình vật lý sẽ được giữ nguyên trong suốt quá trình mô phỏng.

3.2.4 G4UImanager

G4UImanager là lớp kiểm soát các thao tác lệnh và giao diện người dùng. Trong hàm

main(), con trỏ đến phần quản lý giao diện có thể thu được bằng lệnh

G4UImanager∗ UI = G4UImanager : : GetUIpointer ( ) ;

để thực thi các câu lệnh cho ứng dụng, ta có thể sử dụng phương thức ApplyCommand().

3.2.5 G4cout và G4cerr

G4cout và G4cerr là các lớp cho dòng xuất nhập (iostream) trong GEANT4, công dụng

của các đối tượng này cũng tương tự như cout và cerr tuy nhiên được điều khiển bằng

G4UImanager.

3.2.6 Xây dựng hình học detector

Người dùng phải xây dựng một lớp từ G4VUserDetectorConstruction để mô tả toàn bộ

cấu trúc của detector (sẽ được nói rõ hơn trong Chương 4), bao gồm

• Cấu trúc hình học.

• Vật liệu được sử dụng.

• Định nghĩa các vùng mật độ.

• Đọc các sơ đồ các vùng mật độ.

3.2.7 Xác định quá trình vật lý

Người dùng phải xây dựng một lớp từ G4VUserPhysicsList khai báo các thông tin về

hạt và quá trình vật lý (sẽ được nói rõ hơn trong Chương 5), bao gồm

• Loại hạt sử dụng trong mô phỏng.

• Tiết diện đối với từng loại hạt.

• Quá trình vật lý đối với từng loại hạt được mô phỏng.

• Ngưỡng cắt.

25

Page 27: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 3. XÂY DỰNG VÀ THỰC THI CHƯƠNG TRÌNH Đặng Nguyên Phương

3.2.8 Tạo event sơ cấp

Người dùng phải xây dựng một lớp từ G4VUserPrimaryGeneratorAction. Trong lớp này,

người dùng cần khai báo trạng thái ban đầu của sự kiện sơ cấp (sẽ được nói rõ hơn trong

Chương 6), chẳng hạn như

• Hoạt độ nguồn

• Phổ năng lượng phát

• Phân bố góc phát

3.2.9 Cấu trúc mã nguồn của một ứng dụng

Để tìm hiểu cấu trúc mã nguồn của một ứng dụng trong GEANT4, ta sẽ xem xét trường

hợp ví dụ B1 (examples/basic/B1), Hình 3.1 liệt kê tất cả các file và thư mục con chứa

trong thư mục của ví dụ B1.

Hình 3.1: Cấu trúc các file mã nguồn của ví dụ B1

Trong đó, các thành phần quan trọng gồm có:

• File exampleB1.cc là file chứa hàm main() của ứng dụng.

• Các thư mục include/ và src/ chứa các header và source code của các lớp mà ta

xây dựng như đã nói ở các phần trên.

26

Page 28: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 3. XÂY DỰNG VÀ THỰC THI CHƯƠNG TRÌNH Đặng Nguyên Phương

• Các file có đuôi .mac là các file macro, chức năng của các file này sẽ được đề cập

đến ở phần sau.

• File CMakeLists.txt chứa các lệnh điều khiển việc biên dịch ứng dụng B1.

3.3 Cách thực thi ứng dụng

Một ứng dụng GEANT4 có thể được thực thi theo một trong những cách sau:

• Chạy hàng loạt (batch mode) cố định

• Chạy hàng loạt nhưng đọc lệnh từ macro

• Chạy theo điều khiển của dòng lệnh (interactive mode).

• Chạy theo điều khiển của dòng lệnh thông qua GUI (Graphical User Interface)

3.3.1 Batch mode

Đây là chế độ thực thi ứng dụng một cách cố định, tất cả các lệnh điều khiển đều được

xây dựng trong mã nguồn.

Ví dụ:

i n t main ( )

{

G4RunManager∗ runManager = new G4RunManager ;

runManager−>SetUserInitialization (new B1DetectorConstruction ) ;

runManager−>SetUserInitialization (new QGSP_BIC_EMY ) ;

runManager−>SetUserAction (new B1PrimaryGeneratorAction ) ;

runManager−>SetUserAction (new B1SteppingAction ( ) ) ;

runManager−>SetUserAction (new B1EventAction ( ) ) ;

runManager−>SetUserAction (new B1RunAction ( ) ) ;

runManager−>Initialize ( ) ;

i n t numberOfEvent = 1000 ;

runManager−>BeamOn ( numberOfEvent ) ;

d e l e t e runManager ;

r e turn 0 ;

27

Page 29: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 3. XÂY DỰNG VÀ THỰC THI CHƯƠNG TRÌNH Đặng Nguyên Phương

}

Trong trường hợp này, số event là cố định (int numberOfEvent = 1000), nếu muốn thay

đổi số event ta buộc phải biên dịch lại ứng dụng. Đây cũng là một điểm bất lợi cho phương

pháp này trong trường hợp người dùng muốn they đổi số event theo từng lần chạy.

3.3.2 Batch mode với macro

Khác với cách thực thi ứng dụng trước đó, trong cách này, các câu lệnh thực thi được

viết riêng ra trong 1 file khác, gọi là file macro (.mac).

Ví dụ: hàm main() trong ví dụ này cũng tương tự như trong ví dụ với batch mode, chỉ

khác ở điểm là các phương thức thực thi như BeamOn() sẽ không được viết trong hàm

main() mà chương trình sẽ đọc đối số (argument variable) từ file macro và thực thi các

lệnh trong file này thông qua lệnh /control/execute.

i n t main ( i n t argc , char ∗∗ argv )

{

G4RunManager∗ runManager = new G4RunManager ;

runManager−>SetUserInitialization (new B1DetectorConstruction ) ;

runManager−>SetUserInitialization (new QGSP_BIC_EMY ) ;

runManager−>SetUserAction (new B1PrimaryGeneratorAction ) ;

runManager−>SetUserAction (new B1SteppingAction ( ) ) ;

runManager−>SetUserAction (new B1EventAction ( ) ) ;

runManager−>SetUserAction (new B1RunAction ( ) ) ;

runManager−>Initialize ( ) ;

G4UImanager∗ UI = G4UImanager : : GetUIpointer ( ) ;

G4String command = "/ con t r o l / execute " ;

G4String fileName = argv [ 1 ] ;

UI−>ApplyCommand ( command+fileName ) ;

d e l e t e runManager ;

r e turn 0 ;

}

Hàm macro (run1.mac) có nội dung như sau

# Macro f i l e f o r myProgram

#

# se t verbose l e v e l f o r t h i s run

28

Page 30: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 3. XÂY DỰNG VÀ THỰC THI CHƯƠNG TRÌNH Đặng Nguyên Phương

#

/run/verbose 2

/event/verbose 0

/tracking/verbose 1

#

# Set the i n i t i a l k inemat ic and run 100 events

# e l e c t r o n 1 GeV to the d i r e c t i o n ( 1 . , 0 . , 0 . )

#

/gun/particle e−/gun/energy 1 GeV

/run/beamOn 100

Ví dụ B1 được thực thi cùng với macro run1.mac bằng cách gõ dòng lệnh sau trong

Command Prompt

> exampleB1 . exe run1 . mac

3.3.3 Interactive mode

Trong phương thức thực thi ứng dụng này, một đối tượng thuộc lớp giao diện tương tác

với người dùng G4UIsession sẽ được khai báo và xử lý các lệnh được nhập từ bàn phím.

Ví dụ:

i n t main ( i n t argc , char ∗∗ argv )

{

G4RunManager∗ runManager = new G4RunManager ;

runManager−>SetUserInitialization (new B1DetectorConstruction ) ;

runManager−>SetUserInitialization (new QGSP_BIC_EMY ) ;

runManager−>SetUserAction (new B1PrimaryGeneratorAction ) ;

runManager−>SetUserAction (new B1SteppingAction ( ) ) ;

runManager−>SetUserAction (new B1EventAction ( ) ) ;

runManager−>SetUserAction (new B1RunAction ( ) ) ;

runManager−>Initialize ( ) ;

G4UIsession ∗ session = new G4UIterminal ;

session−>SessionStart ( ) ;

d e l e t e session ;

29

Page 31: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 3. XÂY DỰNG VÀ THỰC THI CHƯƠNG TRÌNH Đặng Nguyên Phương

de l e t e runManager ;

r e turn 0 ;

}

Khi thực thi ứng dụng exampleB1.exe, trên cửa sổ sẽ xuất hiện dấu nhắc để nhập các câu

lệnh

Idle>

Người dùng có thể nhập vào các câu lệnh tương tự như các câu lệnh trong file macro ở ví

dụ trước, ví dụ như:

Idle> /run/beamOn 10

hay

Idle> /gun/particle mu+

Idle> /gun/energy 10 GeV

Idle> /run/beamOn 1

Idle> /gun/particle proton

Idle> /gun/energy 100 MeV

Idle> /run/beamOn 3

Idle> exit

Gõ exit để thoát khỏi giao diện tương tác.

Một số câu lệnh cơ bản cho việc thực thi ứng dụng được liệt kê trong Phụ lục A.

30

Page 32: Hướng dẫn GEANT4 cho Windows

Chương 4

Xây dựng hệ detector

Để xây dựng hệ detector, người dùng trước tiên cần xây dựng một lớp cụ thể (concrete

class) hay còn gọi là lớp dẫn xuất (derived class) của lớp G4VUserDetectorConstruction

và đưa vào đó phương thức Construct(), trong đó mô tả:

• Hình học của hệ đo

• Vật liệu cấu thành

• Từ trường hoặc điện trường (nếu có)

• Các vùng ghi nhận

4.1 Xây dựng hình học

Hình học trong GEANT4 được tạo ra từ những “khối” (volume), trong đó khối lớn nhất

được gọi là world (thông thường là khối hộp) chứa tất cả các khối thể tích khác. Mỗi

một khối được tạo ra bằng cách mô tả hình dạng và các tính chất vật lý của nó; và sau

đó đặt vào bên trong khối thể tích chứa nó. Ta gọi các khối thể tích này là các khối con

(daughter volume) và khối chứa nó được gọi là khối mẹ (mother volume), vị trí của khối

con đặt bên trong được xác định dựa trên hệ trục tọa độ của khối mẹ.

Để mô tả hình dạng của các khối người ta sử dụng các khối hình học cơ bản được gọi là

solid. Đồng thời, khi thêm vào khối hình học cơ bản các tính chất vật lý (chẳng hạn như

vật liệu cấu tạo nên khối đó, từ trường,...) ta thu được khối luận lý (logical volume). Và

cuối cùng khi đặt các khối luận lý vào trong các khối lớn hơn chứa nó, ta thu được khối

vật lý (physical volume).

Để xây dựng hình học hoàn chỉnh cho hệ detector, ta cần thực hiện các bước sau

31

Page 33: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

4.1.1 Tạo các khối hình học

Các khối hình học (solid) trong GEANT4 được chia làm 4 loại chính:

• CSG (Constructed Solid Geometry): được xác định bằng cách khai báo các tham số

của khối dạng 3D.

Ví dụ: G4Box, G4Tubs, G4Cons, G4Trd,... (xem thêm Phụ lục B)

• CSG like: tương tự như các khối CSG.

Ví dụ: G4Polycone, G4Polyhedra, G4Hype,... (xem thêm Phụ lục B)

• BREP (Boundary REPresented): được xác định thông qua việc mô tả các mặt biên.

Ví dụ: G4BREPSolidPolycone, G4BSplineSurface,...

• Boolean solid: được tạo thành từ việc kết hợp các khối trên thông qua qua các

phương thức giao (intersection), hợp (union), bù (subtraction).

Ví dụ:

G4Box∗ box = new G4Box ( "Box" ,20∗mm , 30∗ mm , 40∗ mm ) ;

G4Tubs∗ cyl = new G4Tubs ( "Cyl inder " ,0 ,50∗mm , 50∗ mm , 0 , twopi ) ;

// Tao khoi moi ban cach ket hop hai khoi vua xay dung

G4UnionSolid∗ union =

new G4UnionSolid ( "Box+Cyl inder " , box , cyl ) ;

G4IntersectionSolid∗ intersection =

new G4IntersectionSolid ( "Box∗Cyl inder " , box , cyl ) ;

G4SubtractionSolid∗ subtraction =

new G4SubtractionSolid ( "Box−Cyl inder " , box , cyl ) ;

Trong trường hợp muốn kết hợp hai khối mà khối thứ 2 không nằm ở trục tọa độ của

khối thứ 1, ta có thể thực hiện theo 1 trong 2 cách sau:

• Cách 1: sử dụng các ma trận quay và dịch chuyển trục tọa độ để dịch chuyển trục

tọa độ của khối thứ 2 đối với hệ trục tọa độ của khối thứ 1.

• Cách 2: tạo sự dịch chuyển khối thứ hai trong hệ trục tọa độ của nó sau đó đặt vào

hệ trục tọa độ của khối thứ 1.

G4RotationMatrix∗ yRot = new G4RotationMatrix ;

yRot−>rotateY ( M_PI /4 .∗ rad ) ; // quay quanh truc Y 45 degree s

G4ThreeVector zTrans (0 , 0 , 50) ; // dich chuyen theo truc Z

// Cach 1

G4UnionSolid∗ unionMoved =

new G4UnionSolid ( "Box+CylinderMoved" , box , cyl , yRot , zTrans ) ;

// Cach 2

G4RotationMatrix invRot = ∗(yRot−>invert ( ) ) ;

32

Page 34: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

G4Transform3D transform ( invRot , zTrans ) ;

G4UnionSolid∗ unionMoved =

new G4UnionSolid ( "Box+CylinderMoved" , box , cyl , transform ) ;

Để ước lượng thể tích và diện tích của các khối hình học, ta có thể dùng các phương thức

G4double GetCubicVolume()

G4double GetSurfaceArea()

Ngoài ra, ta cũng có thể gieo các điểm giả ngẫu nhiên (pseudo-random) trên bề mặt của

các khối bằng cách sử dụng phương thức

G4ThreeVector GetPointOnSurface() const

Ví dụ: để tạo ra một khối hình học “World” có dạng hình hộp, ta có thể khai báo với lớp

G4Box như sau

G4double world_hx = 3.0∗ m ;

G4double world_hy = 1.0∗ m ;

G4double world_hz = 1.0∗ m ;

G4Box∗ worldBox = new G4Box ( "World" , world_hx , world_hy , world_hz ) ;

Hình hộp được tạo ra có kích thước 6m×2m×2m, chiều dài theo trục x từ −3m đến +3m,

theo trục y từ −1m đến +1m và theo trục z từ −1m đến +1m.

Tương tự như vậy, để khai báo 1 khối hình trụ đặc (tên là “Tracker”), ta sử dụng lớp

G4Tubs

G4double innerRadius = 0.∗ cm ;

G4double outerRadius = 60.∗ cm ;

G4double hz = 25.∗ cm ;

G4double startAngle = 0.∗ deg ;

G4double spanningAngle = 360.∗ deg ;

G4Tubs∗ trackerTube = new G4Tubs ( "Tracker " ,

innerRadius , outerRadius , hz ,

startAngle , spanningAngle ) ;

4.1.2 Tạo các khối luận lý

Các khối luận lý được tạo ra bằng cách kết hợp các thông tin được cho bởi các khối hình

học và vật liệu (material). Các khối luận lý chứa hầu hết các thông tin của một khối hoàn

chỉnh, tuy nhiên không chứa các thông tin chẳng hạn như vị trí vật lý của nó trong hệ

detector. Cấu trúc khai báo một khối luận lý như sau:

G4LogicalVolume ( G4VSolid∗ pSolid ,

G4Material∗ pMaterial ,

33

Page 35: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

const G4String& Name ,

G4FieldManager∗ pFieldMgr=0,

G4VSensitiveDetector∗ pSDetector=0,

G4UserLimits∗ pULimits=0,

G4bool Optimise=true )

Các khối luận lý cũng cung cấp thông tin về khối lượng (mass) của các khối detector hay

sub-detector thông qua phương thức

G4double GetMass(G4bool forced=false)

Dựa theo ví dụ khai báo hình học các khối “World” và “Tracker” trong Phần 4.1.1, để tạo

các khối luận lý, ta phải lấp đầy vật chất vào trong các khối hình học cơ bản vừa được

tạo ra

G4LogicalVolume∗ worldLog

= new G4LogicalVolume ( worldBox , Ar , "World" ) ;

G4LogicalVolume∗ trackerLog

= new G4LogicalVolume ( trackerTube , Al , "Tracker " ) ;

Theo ví dụ trên, khối luận lý worldLog được tạo ra bằng cách lấp đầy khối hình học

worldBox bởi khí Argon (Ar) và được đặt tên là “World”, tương tự như vậy cho khối luận

lý trackerLog được tạo ra từ khối hình học trackerTube được lấp đầy bởi vật liệu nhôm

(Al).

Sub-detector Trong các cấu trúc hệ detector phức tạp, ta nên định nghĩa một khối

luận lý ứng với một thành phần của hệ detector (sub-detector) thay vì chỉ định nghĩa duy

nhất 1 khối luận lý cho cả hệ đo. Với cách thức như vậy, ta có thể thiết lập các ngưỡng

cắt cho từng thành phần của detector nhằm làm giảm bớt các mô phỏng chi tiết đối với

những thành phần mà ta không quan tâm. Nhờ đó mô phỏng tốc độ mô phỏng sẽ có thể

được cải thiện một cách đáng kể.

Để làm được điều này, ta sử dụng khai báo Region

G4Region( const G4String& rName )

Ví dụ:

G4Region∗ emCalorimeter = new G4Region ( "EM−Calor imeter " ) ;

emCalorimeterLV−>SetRegion ( emCalorimeter ) ;

emCalorimeter−>AddRootLogicalVolume ( emCalorimeterLV ) ;

34

Page 36: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

4.1.3 Tạo các khối vật lý

Sau khi mô tả từng thành phần của hệ đo thông qua các khối luận lý, ta sẽ tiếp tục tiến

hành xây dựng các khối vật lý, các khối này mô tả vị trí không gian của từng thành phân

hệ đo. Để làm được điều này, ta có thể sử dụng một số kĩ thuật

• Sắp đặt các khối (placement)

• Lặp các khối (replica, parameterization, division,...)

• Kết hợp các khối (assembly)

• Phản chiếu các khối (reflection)

Sắp đặt các khối (Placement volume) Việc sắp đặt các khối được thực hiện thông

qua lớp G4PVPlacement, trong đó một khối vật lý được tạo ra bằng cách kết hợp một khối

luận lý với một ma trận quay (rotation matrix ) và một ma trận chuyển dời (translation

matrix ) (xem Hình 4.1). Ma trận quay mô tả sự quay của hệ trục tọa độ khối con so với

hệ trục tọa độ của khối mẹ, còn ma trận chuyển dời xác định vị trí của khối con bên trong

khối mẹ. Cú pháp như sau:

G4PVPlacement ( G4RotationMatrix∗ pRot ,

const G4ThreeVector& tlate ,

G4LogicalVolume∗ pCurrentLogical ,

const G4String& pName ,

G4LogicalVolume∗ pMotherLogical ,

G4bool pMany ,

G4int pCopyNo ,

G4bool pSurfChk=f a l s e )

trong đó:

pRot ma trận quay

tlate ma trận chuyển dời

pCurrentLogical khối luận lý con được sử dụng

pName tên của đối tượng G4PVPlacement được tạo

pMotherLogical khối mẹ

pMany để sử dụng tiếp theo (mặc định: 0)

pCopyNo số ID của phương thức sắp đặt này

pSurfChk đặt true nếu muốn kiểm tra có bị chồng lên khối đã có trước

hay không

Ví dụ: Trong ví dụ ở Phần 4.1.2, ta đã tạo các khối luận lý “World” và “Tracker”, tiếp

theo ta sẽ tạo khối vật lý “Tracker” bằng cách đặt nó vào bên trong khối “World”

35

Page 37: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

Hình 4.1: Ví dụ sắp đặt khối

G4double pos_x = −1.0∗meter ;

G4double pos_y = 0.0∗ meter ;

G4double pos_z = 0.0∗ meter ;

G4VPhysicalVolume∗ trackerPhys

= new G4PVPlacement (0 , // khong quay

G4ThreeVector ( pos_x , pos_y , pos_z ) , // v i t r i dat

trackerLog , // khoi luan ly

"Tracker " , // ten cua khoi

worldLog , // khoi me

f a l s e , // khong boolean

0) ; // ch i so

Khối vật lý trackerPhys được tạo ra bằng cách đặt khối luận lý trackerLog vào trong

khối mẹ worldLog tại vị trí có tọa độ (−1m,0m,0m) theo hệ trục tọa độ của khối mẹ.

Khối vật lý trackerPhys này được đặt tên là “Tracker” và có chỉ số là 0.

Ngoài ra, ta cũng có thể thay thế hai ma trận quay và chuyển dời bằng ma trận chuyển

đổi 3D (G4Transform3D)

G4PVPlacement ( G4Transform3D solidTransform ,

G4LogicalVolume∗ pCurrentLogical ,

const G4String& pName ,

G4LogicalVolume∗ pMotherLogical ,

G4bool pMany ,

G4int pCopyNo ,

G4bool pSurfChk=f a l s e )

Replica Trong trường hợp này, một khối vật lý sẽ đại diện cho một chuỗi các khối luận

lý đồng nhất (có cùng kích thước và hình dạng) bên trong khối mẹ. Việc này thường được

36

Page 38: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

thực hiện khi sự phân bố các khối con có sự đối xứng theo trục tọa độ Decartes hay trục

tọa trụ, theo đó các khối con sẽ được lấp đầy bên trong khối mẹ như ví dụ trong Hình 4.2.

Cú pháp khai báo như sau:

G4PVReplica ( const G4String& pName ,

G4LogicalVolume∗ pCurrentLogical ,

G4LogicalVolume∗ pMotherLogical ,

const EAxis pAxis ,

const G4int nReplicas ,

const G4double width ,

const G4double offset=0 )

trong đó:

pName tên

pCurrentLogical khối luận lý con được sử dụng

pMotherLogical khối mẹ

pAxis trục sắp xếp các khối con

nReplicas số lượng khối được lặp

width bề dày

offset offset dọc theo trục

Hình 4.2: Ví dụ replica

Hình 4.3 trình bày các kiểu lặp theo trục trong replica, gồm có:

• Lặp theo các trục tọa độ Cartesian (kXAxis, kYAxis, kZAxis): ví dụ trong trường

hợp lặp theo trục x, tâm của khối con thứ n sẽ có tọa độ (−width ∗ (nReplicas −1) ∗ 0.5 + n ∗ width, 0, 0) (hình ngoài cùng bên trái).

• Lặp theo bán kính trong hệ trục tọa độ trụ (kRho): sử dụng cho các khối con có

dạng ống hay dạng nón, tâm của khối con thứ n có vị trí width ∗ (n+ 0.5) + offset

(hình ở giữa). Trong trường hợp này offset phải là bán kính trong của khối mẹ.

37

Page 39: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

• Lặp theo góc trong hệ trục tọa độ trụ (kPhi): sử dụng cho các khối con có dạng

ống hay dạng nón, tâm của khối con thứ n có vị trí width ∗ (n+ 0.5) + offset (hình

ngoài cùng bên phải). Trong trường hợp này offset phải là góc bắt đầu của khối mẹ.

Hình 4.3: Ví dụ replica

Ví dụ:

G4PVReplica repX ( " Linear Array" ,

pRepLogical ,

pContainingMother ,

kXAxis , 5 , 10∗mm ) ;

G4PVReplica repR ( " RS l i c e s " ,

pRepRLogical ,

pContainingMother ,

kRho , 5 , 10∗mm , 0) ;

G4PVReplica repRZ ( " RZSl ices " ,

pRepRZLogical ,

&repR ,

kZAxis , 5 , 10∗mm ) ;

G4PVReplica repRZPhi ( "RZPhiSl ices " ,

pRepRZPhiLogical ,

&repRZ ,

kPhi , 4 , M_PI ∗0 .5∗ rad , 0) ;

repX là một dãy 5 khối con có bề dày 10mm dọc theo trục X, khối mẹ của repX phải có

bề dày 50mm theo trục X. Trong trường hợp khối mẹ là một ống hình trụ có bán kính

50mm và dài 50mm, repR sẽ chia khối mẹ thành 5 ống trụ con, mỗi ống trụ có bề dày

10mm và có chiều dài 50mm như khối mẹ; trong khi đó repRZ sẽ chia khối mẹ thành 5

ống trụ con có bề dày như khối mẹ nhưng có chiều dài 10mm. Cuối cùng, repRZPhi chia

khối mẹ thành 4 phần, mỗi phần 90 (M_PI*0.5*rad).

Parameterisation Khác với replica, các khối con được lặp lại bên trong khối mẹ có

thể có kích thước, hình dạng, hay vật chất khác nhau (Hình 4.4). Tất cả các thông số về

kích thước, hình dạng,... sẽ được tham số hóa theo các chỉ số copy (copy number). Cú

pháp khai báo như sau:

38

Page 40: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

G4PVParameterised ( const G4String& pName ,

G4LogicalVolume∗ pCurrentLogical ,

G4LogicalVolume∗ pMotherLogical ,

const EAxis pAxis ,

const G4int nReplicas ,

G4VPVParameterisation∗ pParam ,

G4bool pSurfChk=f a l s e )

trong đó:

pName tên

pCurrentLogical khối luận lý con được sử dụng

pMotherLogical khối mẹ

pAxis trục sắp xếp các khối con

nReplicas số lượng khối được lặp

pParam bề dày

pSurfChk đặt true nếu muốn kiểm tra có bị chồng lên khối đã có trước

hay không

Hình 4.4: Ví dụ parameterisation

Một số lưu ý khi khai báo tham số hóa:

• Các thay đổi theo chỉ số copy bao gồm: vị trí, quay, kích thước, hình dạng, vật

liệu,...

• Chỉ áp dụng cho các khối con dạng CSG đơn giản.

• Các khối con phải hoàn toàn nằm trong khối mẹ.

• Các khối con không được che phủ, chồng lấn lên nhau.

• Các khối con được tham số hóa được xem là các khối “lá” (leaf volume).

• Trong phần lớn các trường hợp, các khối tham số hóa không thể chứa khối con bên

trong nó.

39

Page 41: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

Ví dụ:

G4VSolid∗ solidChamber =

new G4Box ( "chamber" , 100∗cm , 100∗cm , 10∗cm ) ;

G4LogicalVolume∗ logicChamber =

new G4LogicalVolume ( solidChamber , ChamberMater ,

"Chamber" , 0 , 0 , 0) ;

G4VPVParameterisation∗ chamberParam =

new ChamberParameterisation ( ) ;

G4VPhysicalVolume∗ physChamber =

new G4PVParameterised ( "Chamber" , logicChamber ,

logicMother , kZAxis , NbOfChambers , chamberParam ) ;

Các tính chất của khối con được tham số hóa thông qua lớp ChamberParameterisation

được xây dựng bởi người dùng:

c l a s s ChamberParameterisation : pub l i c G4VPVParameterisation

{

pub l i c :

ChamberParameterisation ( ) ;

v i r t u a l ~ChamberParameterisation ( ) ;

v i r t u a l void ComputeTransformation // v i t r i , quay truc

( const G4int copyNo , G4VPhysicalVolume∗ physVol ) const ;

v i r t u a l void ComputeDimensions // k ich thuoc

( G4Box& trackerLayer , const G4int copyNo ,

const G4VPhysicalVolume∗ physVol ) const ;

v i r t u a l G4VSolid∗ ComputeSolid // hinh dang

( const G4int copyNo , G4VPhysicalVolume∗ physVol ) ;

v i r t u a l G4Material∗ ComputeMaterial // vat l i e u , vung nhay

( const G4int copyNo , G4VPhysicalVolume∗ physVol ,

const G4VTouchable ∗parentTouch=0) ;

// khong nen dung G4VTouchable cho truong hop tham so hoa

thong thuong

} ;

void ChamberParameterisation : : ComputeTransformation

( const G4int copyNo , G4VPhysicalVolume∗ physVol ) const

{

G4double Xposition = . . . // theo copyNo

G4ThreeVector origin ( Xposition , Yposition , Zposition ) ;

physVol−>SetTranslation ( origin ) ;

physVol−>SetRotation (0 ) ;

}

40

Page 42: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

void ChamberParameterisation : : ComputeDimensions

( G4Box& trackerChamber , const G4int copyNo ,

const G4VPhysicalVolume∗ physVol ) const

{

G4double XhalfLength = . . . // theo copyNo

trackerChamber . SetXHalfLength ( XhalfLength ) ;

trackerChamber . SetYHalfLength ( YhalfLength ) ;

trackerChamber . SetZHalfLength ( ZHalfLength ) ;

}

G4VSolid∗ ChamberParameterisation : : ComputeSolid

( const G4int copyNo , G4VPhysicalVolume∗ physVol )

{

G4VSolid∗ solid ;

i f ( copyNo == . . . ) solid = myBox ;

e l s e i f ( copyNo == . . . ) solid = myTubs ;

. . .

r e turn solid ;

}

G4Material∗ ComputeMaterial // vat l i e u , vung nhay , v i sAtt

( const G4int copyNo , G4VPhysicalVolume∗ physVol ,

const G4VTouchable ∗parentTouch=0) ;

{

G4Material∗ mat ;

i f ( copyNo == . . . )

{

mat = material1 ;

physVol−>GetLogicalVolume ( )−>SetVisAttributes ( att1 ) ;

}

. . .

r e turn mat ;

}

Division Đây là một dạng đặc biệt của tham số hóa, nó chia khối mẹ thành những khối

con giống hệt nhau (và có cùng dạng với khối mẹ) dọc theo một trục nhất định, tương tự

như replica. Tuy nhiên, nó khác replica ở một điểm là ở đây cung cấp một hệ số offset,

khối con đầu tiên sẽ cách biên của khối mẹ khoảng offset này (xem Hình 4.5). Các dạng

hình học và trục tương ứng được sử dụng division bao gồm

• G4Box: kXAxis, kYAxis, kZAxis

41

Page 43: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

• G4Tubs : kRho, kPhi, kZAxis

• G4Cons : kRho, kPhi, kZAxis

• G4Trd : kXAxis, kYAxis, kZAxis

• G4Para : kXAxis, kYAxis, kZAxis

• G4Polycone : kRho, kPhi, kZAxis

• G4Polyhedra : kRho, kPhi, kZAxis

Có 3 cách để khai báo division:

Cách 1: chỉ khai báo số lượng khối con được chia (hình đầu tiên trong Hình 4.5)

G4PVDivision ( const G4String& pName ,

G4LogicalVolume∗ pCurrentLogical ,

G4LogicalVolume∗ pMotherLogical ,

const EAxis pAxis ,

const G4int nDivisions ,

const G4double offset )

Cách 2: chỉ khai báo bề rộng khối con (width) (hình thứ hai trong Hình 4.5)

G4PVDivision ( const G4String& pName ,

G4LogicalVolume∗ pCurrentLogical ,

G4LogicalVolume∗ pMotherLogical ,

const EAxis pAxis ,

const G4double width ,

const G4double offset )

Cách 3: khai báo cả số lượng lẫn bề rộng khối con (width) (hình cuối cùng trong Hình 4.5)

G4PVDivision ( const G4String& pName ,

G4LogicalVolume∗ pCurrentLogical ,

G4LogicalVolume∗ pMotherLogical ,

const EAxis pAxis ,

const G4int nDivisions ,

const G4double width ,

const G4double offset )

trong đó:

pName tên

pCurrentLogical khối luận lý con được sử dụng

pMotherLogical khối mẹ

pAxis trục sắp xếp các khối con

42

Page 44: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

nDivisions số lượng khối được lặp

width bề dày

offset offset

Hình 4.5: Ví dụ division

4.2 Định nghĩa vật liệu

Vật liệu trong GEANT4 được định nghĩa thông qua việc sử dụng ba lớp chính:

• G4Isotope mô tả các tính chất của nguyên tử (số nguyên tử, số hạt nucleon, khối

lượng 1 mole,...)

• G4Element mô tả các tính chất của nguyên tử (số nguyên tử hiệu dụng, số hạt

nucleon hiệu dụng, khối lượng hiệu dụng 1 mole, năng lượng liên kết, tiết diện tính

trên 1 nguyên tử,...)

• G4Material mô tả các tính chất của vật chất (mật độ, trạng thái, nhiệt độ, áp

suất,...)

Tùy từng trường hợp, ta có thể định nghĩa vật liệu theo một trong những cách sau

4.2.1 Định nghĩa vật liệu đơn

Trong trường hợp vật liệu sử dụng là đơn nguyên tử, ta có thể định nghĩa bằng cách khai

báo tên, mật độ, khối lượng theo mole và nguyên tử số của vật liệu đó; ví dụ như trường

43

Page 45: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

hợp khai báo Argon lỏng

G4double z , a , density ;

density = 1.390∗g/cm3 ;

a = 39.95∗g/mole ;

G4Material∗ lAr = new G4Material ( name=" l iqu idArgon " , z=18. , a ,

density ) ;

Từ đó, ta có thể khai báo khối luận lý bằng cách sử dụng vật liệu vừa mới khai báo

G4LogicalVolume∗ myLbox = new G4LogicalVolume (aBox , lAr , "Lbox" , 0 , 0 , 0 ) ;

4.2.2 Định nghĩa phân tử

Trong trường hợp vật liệu sử dụng là phân tử, ta có thể định nghĩa bằng cách sử dụng

lớp G4Element khai báo lần lượt các nguyên tố và sử dụng phương thức AddElement()

để đưa vào trong vật liệu cần định nghĩa, ví dụ như trường hợp định nghĩa H2O.

G4double z , a , density ;

G4String name , symbol ;

G4int ncomponents , natoms ;

a = 1.01∗ g/mole ;

G4Element∗ elH = new G4Element ( name="Hydrogen" , symbol="H" ,z= 1 . , a ) ;

a = 16.00∗g/mole ;

G4Element∗ elO = new G4Element ( name="Oxygen" , symbol="O" , z= 8 . , a ) ;

density = 1.000∗g/cm3 ;

G4Material∗ H2O = new G4Material ( name="Water" , density , ncomponents

=2) ;

H2O−>AddElement (elH , natoms=2) ;

H2O−>AddElement (elO , natoms=1) ;

4.2.3 Định nghĩa hỗn hợp theo tỉ lệ khối lượng

Trong trường hợp vật liệu là hỗn hợp của nhiều loại thành phần khác nhau, ta có thể

khai báo tương tự như trên với việc thay thế số lượng nguyên tử (natoms) bằng tỉ lệ khối

lượng (fractionmass); như ví dụ bên dưới định nghĩa không khí có tỉ lệ khối lượng giữa

nitơ và oxi là 70% và 30%.

G4double z , a , fractionmass , density ;

G4String name , symbol ;

G4int ncomponents ;

a = 14.01∗g/mole ;

44

Page 46: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

G4Element∗ elN = new G4Element ( name="Nitrogen " , symbol="N" ,z= 7 . , a ) ;

a = 16.00∗g/mole ;

G4Element∗ elO = new G4Element ( name="Oxygen" , symbol="O" , z= 8 . , a ) ;

density = 1.290∗ mg/cm3 ;

G4Material∗ Air = new G4Material ( name="Air " , density , ncomponents=2) ;

Air−>AddElement (elN , fractionmass=70∗perCent ) ;

Air−>AddElement (elO , fractionmass=30∗perCent ) ;

4.2.4 Định nghĩa vật liệu dựa vào cơ sở dữ liệu của GEANT4

Ngoài ra ta còn có thể tận dụng cơ sở dữ liệu vật liệu có sẵn trong GEANT4 (NIST

database)

G4NistManager∗ man = G4NistManager : : Instance ( ) ;

G4Material∗ H2O = man−>FindOrBuildMaterial ( "G4_WATER" ) ;

G4Material∗ Air = man−>FindOrBuildMaterial ( "G4_AIR" ) ;

Phụ lục C liệt kê một số vật liệu có sẵn trong cơ sở dữ liệu của GEANT4.

4.2.5 Định nghĩa vật liệu mới từ vật liệu có sẵn

Ta cũng có thể định nghĩa một vật liệu mới bằng cách sử dụng vật liệu đã được định

nghĩa sẵn trước đó. Trong ví dụ bên dưới, ta định nghĩa vật liệu water2 có khối lượng

riêng 1.05mg/cm3 từ vật liệu water1 có khối lượng riêng 1.03mg/cm3.

G4double density ;

density = 1.05∗ mg/cm3 ;

G4Material∗ water1 = new G4Material ( "Water_1 .05 " , density , "G4_WATER" ) ;

density = 1.03∗ mg/cm3 ;

G4NistManager∗ man = G4NistManager : : Instance ( ) ;

G4Material∗ water2 = man−>BuildMaterialWithNewDensity ( "Water_1 .03 " , "

G4_WATER" , density ) ;

4.3 Khai báo trường điện từ

GEANT4 có khả năng mô tả nhiều loại trường khác nhau như điện trường, từ trường,

điện từ trường, trọng trường,... đồng nhất hoặc không đồng nhất. Từ đó tính toán các

chuyển động của hạt trong các trường này với độ chính xác do người dùng quyết định

thông qua việc lấy tích phân phương trình chuyển động của hạt trong trường.

45

Page 47: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

Thông thường phương pháp Runge-Kutta được sử dụng để tính tích phân của các phương

trình vi phân chuyển động thông thường, tuy nhiên trong một số trường hợp đặc biệt các

kết quả giải tích có sẵn, chúng sẽ được sử dụng thay thế cho phương pháp Runge-Kutta.

Trong tính toán, đường cong chuyển động của hạt sẽ bị ngắt thành các đoạn thẳng (chord)

như trong Hình 4.6. Độc chính xác của các chord so với đường cong chuyển động của hạt

sẽ được điều khiển thông qua một tham số đặc trưng cho khoảng cách lệch được gọi là

miss distance hay chord distance.

Ngoài tham số miss distance còn có hai tham số mà người dùng có thể hiệu chỉnh để thay

đổi độ chính xác của việc xấp xỉ chuyển động hạt

• Tham số delta intersection là độ chính xác của điểm giao nhau với biên của khối

(volume boundary).

• Tham số delta one step là độ chính xác của điểm cuối cùng (endpoint) của mỗi bước

chạy (step).

Hình 4.6: Đường cong chuyển động được xấp xỉ bới các chord

4.3.1 Từ trường

Các bước khai báo từ trường gồm có:

1. Tạo từ trường

G4UniformMagField∗ magField

= new G4UniformMagField ( G4ThreeVector ( 0 . , 0 . , fieldValue ) ) ;

2. Đặt nó là trường mặc định

G4FieldManager∗ fieldMgr

= G4TransportationManager : : GetTransportationManager ( )

−>GetFieldManager ( ) ;

fieldMgr−>SetDetectorField ( magField ) ;

3. Tạo các object để tính vết

46

Page 48: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR Đặng Nguyên Phương

fieldMgr−>CreateChordFinder ( magField ) ;

Để thay đổi độ chính xác của vị trí giao với khối, ta có thể dùng phương thức

SetDeltaChord

fieldMgr−>GetChordFinder ( )−>SetDeltaChord ( G4double newValue ) ;

4.3.2 Điện trường

Cũng tương tự như với việc khai báo từ trường nhưng thay lớp G4UniformMagField bằng

lớp G4UniformEMField trong bước khai báo trường

G4ElectricField∗ fEMfield

= new G4UniformElectricField ( G4ThreeVector ( 0 . , 0 . , fieldValue ) ) ;

47

Page 49: Hướng dẫn GEANT4 cho Windows

Chương 5

Các quá trình vật lý

Lớp G4VUserPhysicsList là một trong những lớp cơ bản cần thiết trong quá trình xây

dựng ứng dụng mô phỏng. Lớp này có nhiệm vụ mô tả tất cả các hạt và quá trình vật

lý tham gia vào trong mô phỏng. Các thông số cho ngưỡng cắt (cut-off ) cũng được khai

báo trong lớp này.

Người dùng phải tạo một lớp từ lớp G4VUserPhysicsList và đưa vào đó các phương thức

ảo

ConstructParticle ( ) ; // xay dung cac hat

ConstructProcess ( ) ; // xay dung cac qua t r i nh vat ly

SetCuts ( ) ; // t h i e t lap cac g ia t r i nguong cat

5.1 Khai báo hạt

Để mô tả một hạt, người dùng có thể sử dụng 3 lớp sau

• G4ParticleDefinition định nghĩa hạt

• G4DynamicParticle mô tả tương tác của hạt với vật chất

• G4Track mô tả cách thức hạt di chuyển trong không gian và thời gian, sẽ được trình

bày đầy đủ hơn trong Phần 6.3.

5.1.1 Định nghĩa hạt

GEANT4 cung cấp nhiều loại hạt khác nhau phục vụ cho các mục đích mô phỏng:

• Các hạt thông thường: electron, proton, photon,...

• Các hạt cộng hưởng có thời gian sống ngắn chẳng hạn như pion, delta,...

• Các hạt nhân chẳng hạn như deuteron, alpha, các ion nặng,...

48

Page 50: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 5. CÁC QUÁ TRÌNH VẬT LÝ Đặng Nguyên Phương

Bảng 5.1: Các phương thức lấy thông tin của hạt

G4String GetParticleName() tên hạtG4double GetPDGMass() khối lượngG4double GetPDGWidth() bề rộng phân rãG4double GetPDGCharge() điện tíchG4double GetPDGSpin() spinG4double GetPDGMagneticMoment() moment từG4int GetPDGiParity() tính chẵn lẻ (= 0 nếu không xác định)G4int GetPDGiConjugation() liên hợp điện tích (= 0 nếu không xác định)G4double GetPDGIsospin() isospinG4double GetPDGIsospin3() thành phần thứ 3 của isospinG4int GetPDGiGParity() G-parity (= 0 nếu không xác định)G4String GetParticleType() loại hạtG4String GetParticleSubType() loại hạtG4int GetLeptonNumber() số leptonG4int GetBaryonNumber() số baryonG4int GetPDGEncoding() mã số PDGG4int GetAntiPDGEncoding() mã số PDG của phản hạt

• quark, gluon,...

Mỗi loại hạt được đặc trưng bằng một lớp dành riêng cho nó được xây dựng từ lớp

G4ParticleDefinition (trừ lớp G4Ions cho các hạt nhân nặng). Các hạt được phân làm

6 nhóm chính: lepton, meson, baryon, boson, shortlived và ion.

Các thông tin về hạt được cung cấp trong GEANT4 gồm có: mã số PDG, khối lượng, điện

tích, spin, isospin, tính chẵn lẻ, thời gian sống, kênh phân rã,... Để lấy được các thông tin

này, ta sử dụng các phương thức được liệt kê trong Bảng 5.1.

5.1.2 Động học hạt

Lớp G4DynamicParticle chứa các thông tin động học của hạt và được sử dụng để mô tả

động lực học của các quá trình vật lý. Các tính chất trong G4DynamicParticle được liệt

kê tại Bảng 5.2.

49

Page 51: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 5. CÁC QUÁ TRÌNH VẬT LÝ Đặng Nguyên Phương

Bảng 5.2: Các phương thức lấy thông tin động học của hạt

G4double theDynamicalMass khối lượng động họcG4ThreeVector theMomentumDirection vector xung lượng được chuẩn hóaG4ParticleDefinition* theParticleDefinition định nghĩa của hạtG4double theDynamicalSpin spin động họcG4ThreeVector thePolarization vector phân cựcG4double theMagneticMoment moment từ động họcG4double theKineticEnergy động năngG4double theProperTime thời gianG4double theDynamicalCharge điện tích động họcG4ElectronOccupancy* theElectronOccupancy quỹ đạo electron trong ion

5.2 Khai báo quá trình vật lý

Các quá trình vật lý mô tả cách thức tương tác của hạt với vật chất trong môi trường.

GEANT4 cung cấp các loại quá trình tương tác chính như sau:

• điện từ

• hadronic

• vận chuyển hạt

• phân rã

• quang học

• photolepton_hadron

• tham số hóa

Tất cả các quá trình vật lý đều được xây dựng thừ lớp G4VProcess thông qua các phương

thức ảo

• AtRestDoIt

• AlongStepDoIt

• PostStepDoIt

và các phương thức tương ứng

• AtRestGetPhysicalInteractionLength

• AlongStepGetPhysicalInteractionLength

• PostStepGetPhysicalInteractionLength

50

Page 52: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 5. CÁC QUÁ TRÌNH VẬT LÝ Đặng Nguyên Phương

Lớp G4ProcessManager chứa danh sách các quá trình tương tác mà hạt có thể tham

gia. Để tạo hiệu lực cho quá trình tương tác, người dùng phải khai báo một đối tượng

thuộc G4ProcessManager ứng với mỗi loại hạt được sử dụng thông qua các phương

thức AddProcess() và SetProcessOrdering(). Để khai báo các quá trình đơn giản, các

phương thức AddAtRestProcess(), AddContinuousProcess() và AddDiscreteProcess()

có thể được sử dụng.

Các quá trình cũng có thể được bật/tắt thông qua các phương thức ActivateProcess()

và InActivateProcess() trong lớp G4ProcessManager.

Lớp ActivateProcess() tạo ra các đối tượng G4ProcessManager và gắn chúng vào các

lớp hạt được định nghĩa trong phương thức ConstructParticle(). Để khai báo các quá

trình vật lý, người ta sử dụng phương thức ConstructProcess(), ví dụ như để khai báo

các quá trình tương tác cho tia gamma ta có thể khai báo như sau

void MyPhysicsList : : ConstructProcess ( )

{

// Dinh nghia cac qua t r i nh van chuyen

AddTransportation ( ) ;

// Cac qua t r i nh dien tu

ConstructEM ( ) ;

}

void MyPhysicsList : : ConstructEM ( )

{

// Lay con t ro cho G4Phys icsListHelper

G4PhysicsListHelper∗ ph

= G4PhysicsListHelper : : GetPhysicsListHelper ( ) ;

// Lay con t ro cho gamma

G4ParticleDefinition∗ particle = G4Gamma : : GammaDefinition ( ) ;

// Xay dung va khai bao cac qua t r i nh cho gamma

ph−>RegisterProcess (new G4PhotoElectricEffect ( ) , particle ) ;

ph−>RegisterProcess (new G4ComptonScattering ( ) , particle ) ;

ph−>RegisterProcess (new G4GammaConversion ( ) , particle ) ;

}

5.2.1 Tương tác điện từ

Trong phần này chỉ trình bày các lớp cho tương tác điện từ “chuẩn” (Bảng 5.3), các lớp

cho tương tác điện từ ở năng lượng thấp có thể được xem trong các tài liệu khác về

GEANT4.

51

Page 53: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 5. CÁC QUÁ TRÌNH VẬT LÝ Đặng Nguyên Phương

Bảng 5.3: Các tương tác điện từ

Loại hạt Tương tác Lớp

Photon

tán xạ Compton G4ComptonScattering

tạo cặp G4GammaConversion

quang điện G4PhotoElectricEffect

tạo cặp muon G4GammaConversionToMuons

Electron /Positron

ion hóa G4eIonisation

bremsstrahlung G4eBremsstrahlung

tán xạ nhiều lần G4eMultipleScattering

hủy positron phát 2 gamma G4eplusAnnihilation

hủy positron phát 2 muon G4AnnihiToMuPair

hủy positron phát hadron G4eeToHadrons

Muon

ion hóa G4MuIonisation

bremsstrahlung G4MuBremsstrahlung

tạo cặp e+e− G4MuPairProduction

tán xạ nhiều lần G4MuMultipleScattering

Hadron/Ion

ion hóa G4hIonisation

ion hóa cho ion G4ionIonisation

ion hóa cho các hạt nặng G4hhIonisation

ion hóa cho đơn cực từ G4mplIonisation

tán xạ nhiều lần G4hMultipleScattering

bremsstrahlung G4hBremsstrahlung

tạo cặp e+e− G4hPairProduction

Tia X /photonquang

bức xạ synchrotron G4SynchrotronRadiation

bức xạ transition G4TransitionRadiation

bức xạ Cerenkov G4Cerenkov

huỳnh quang G4Scintillation

5.2.2 Tương tác hadronic

Các lớp cho quá trình tương tác của hadron trong trang thái nghỉ (at rest) và chuyển

động (in flight) được trình bày lần lượt trong Bảng 5.4 và Bảng 5.5.

5.2.3 Quá trình phân rã hạt nhân

Các quá trình phân rã hạt nhân được xây dựng thông qua lớp G4Decay cho các hạt trong

cả trạng thái nghỉ hoặc đang chuyển động, ngoại trừ trường hợp các hạt không có khối

lượng, có thời gian sống ngắn hoặc âm.

Ví dụ khai báo quá trình phân rã cho hạt:

#inc lude "G4Decay . hh"

void MyPhysicsList : : ConstructGeneral ( )

{

52

Page 54: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 5. CÁC QUÁ TRÌNH VẬT LÝ Đặng Nguyên Phương

Bảng 5.4: Tương tác cho hadron trong trạng thái nghỉ

Tương tác Lớp

Hấp thụ π− G4PionMinusAbsorptionAtRest

G4PiMinusAbsorptionAtRest

Hấp thụ K− G4KaonMinusAbsorptionAtRest

G4KaonMinusAbsorption

Bắt neutron G4NeutronCaptureAtRest

Hủy anti-proton G4AntiProtonAnnihilationAtRest

Hủy anti-neutron G4AntiNeutronAnnihilationAtRest

Bắt µ− G4MuonMinusCaptureAtRest

Mô hình CHIPS cho các hạtđiện tích âm

G4QCaptureAtRest

Bảng 5.5: Tương tác cho hadron trong trạng thái chuyển động

Tương tác Loại hạt

G4HadronElasticProcess hạt và phản hạt của p,n,π,K,Λ,Σ,...G4HadronInelasticProcess hạt và phản hạt của p,n,π,K,Λ,Σ,...G4HadronFissionProcess tất cảG4CaptureProcess hạt và phản hạt của n

// Them qua t r i nh phan ra

G4Decay∗ theDecayProcess = new G4Decay ( ) ;

theParticleIterator−>reset ( ) ;

whi l e ( (∗ theParticleIterator ) ( ) ) {

G4ParticleDefinition∗ particle = theParticleIterator−>value ( ) ;

G4ProcessManager∗ pmanager = particle−>GetProcessManager ( ) ;

i f ( theDecayProcess−>IsApplicable (∗ particle ) ) {

pmanager −>AddProcess ( theDecayProcess ) ;

// t h i e t lap thu tu cho PostStepDoIt va AtRestDoIt

pmanager −>SetProcessOrdering ( theDecayProcess , idxPostStep ) ;

pmanager −>SetProcessOrdering ( theDecayProcess , idxAtRest ) ;

}

}

}

Lớp G4DecayTable lưu trữ tất cả thông tin về các kênh (mode) phân rã của hạt. Mỗi

kênh phân rã, tỉ số nhánh (branching ratio) tương ứng với các đối tượng xây dựng từ

các lớp dẫn xuất của G4VDecayChannel, ví dụ như bảng phân rã của π0 có các lớp

G4PhaseSpaceDecayChannel và G4DalitzDecayChannel như sau

// Tao mot kenh phan ra

G4VDecayChannel∗ mode ;

// pi0 −> gamma + gamma

53

Page 55: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 5. CÁC QUÁ TRÌNH VẬT LÝ Đặng Nguyên Phương

mode = new G4PhaseSpaceDecayChannel ( " p i0 " , 0 . 988 , 2 , "gamma" , "gamma" ) ;

table−>Insert ( mode ) ;

// pi0 −> gamma + e+ + e−mode = new G4DalitzDecayChannel ( " p i0 " , 0 . 012 , "e−" , "e+" ) ;

table−>Insert ( mode ) ;

Tỉ số nhánh và thời gian sống có thể được khai báo như ví dụ sau

// Thiet lap tho i g ian song

G4Neutron : : Neutron ( )−>SetPDGLifeTime (885 .7∗ second ) ;

// Cho phep phan ra neutron

G4Neutron : : Neutron ( )−>SetPDGStable ( f a l s e ) ;

5.3 Thiết lập ngưỡng cắt

5.3.1 Ngưỡng tạo hạt và vết

Việc thiết lập ngưỡng cắt được thực hiện qua phương thức SetCut(). Trên nguyên tắc,

GEANT4 thực hiện việc mô phỏng các quá trình vận chuyển hạt như sau

• Mỗi quá trình tương tác có ngưỡng riêng của nó trong việc tạo hạt thứ cấp (secondary

particle).

• Mỗi hạt được tạo ra sẽ được theo dõi tới khoảng cách zero (năng lượng zero).

• Các ngưỡng cắt của mỗi hạt có thể được thiết lập thông qua phương thức SetCut().

Ví dụ: Trong ví dụB2, để ép cho mỗi bước chạy không vượt quá bề dày của buồng detector,

ta có thể đưa đoạn code sau vào trong B2aDetectorConstruction::DefineVolumes()

G4double maxStep = 0.5∗ chamberWidth ;

fStepLimit = new G4UserLimits ( maxStep ) ;

trackerLV−>SetUserLimits ( fStepLimit ) ;

và trong PhysicsList, quá trình G4StepLimiter cần được kèm với process manager với

yêu cầu về giới hạn bước chạy trong vùng detector

// Gioi han buoc chay

G4StepLimiter∗ stepLimiter = new G4StepLimiter ( ) ;

pmanager−>AddDiscreteProcess ( StepLimiter ) ;

54

Page 56: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 5. CÁC QUÁ TRÌNH VẬT LÝ Đặng Nguyên Phương

5.3.2 Ngưỡng cắt theo vùng

Trong một hệ detector phức tạp, người dùng có thể chỉ quan tâm đến việc mô phỏng chi

tiết ở một số vùng nào đó hơn là những vùng khác. Việc thiết lập ngưỡng cắt theo vùng

sẽ giúp tăng hiệu quả tính toán do ta có thể lược bớt việc mô phỏng ở những vùng không

quan tâm.

Ví dụ:

void BeamTestPhysicsList : : SetCuts ( )

{

SetCutValue ( defaultCutValue , "gamma" ) ;

SetCutValue ( defaultCutValue , "e−" ) ;

SetCutValue ( defaultCutValue , " e+" ) ;

// Chon vung

G4Region∗ aRegion =

G4RegionStore : : GetInstance ( )−>GetRegion ( "NewRegion" ) ;

// Khai bao doi tuong cut va t h i e t lap g ia t r i cho no

G4ProductionCuts∗ cuts = new G4ProductionCuts ;

cuts−>SetProductionCut (0 . 01∗ mm ) ; // cung g ia t r i cho gamma, e+, e−// Gan cut cho vung

aRegion−>SetProductionCuts ( cuts ) ;

}

55

Page 57: Hướng dẫn GEANT4 cho Windows

Chương 6

Mô phỏng event

Lớp G4VuserPrimaryGeneratorAction là một trong những lớp cần thiết cho việc xây

dựng các lớp trong ứng dụng mô phỏng.

6.1 Tạo các hạt ban đầu

Việc tạo event ban đầu được tiến hành nhờ vào lớp G4VPrimaryGenerator. Trong đây ta

sẽ thảo luận về hai lớp G4ParticleGun và G4GeneralParticleSource.

6.1.1 G4ParticleGun

Lớp này tạo ra các hạt ban đầu cùng với xung lượng và vị trí của chúng. Cấu trúc của

G4ParticleGun giúp tạo ra một hay nhiều hạt ban đầu có động học hoàn toàn giống nhau.

Ngoài ra người dùng cũng có thể tạo ra các hạt ban đầu có vi trí, xung lượng hay năng

lượng một cách ngẫu nhiên bằng cách gọi các phương thức thích hợp được cung cấp bởi lớp

này. Các phương thức này nên được khai báo trong generatePrimaries() của lớp tương

ứng với G4VUserPrimaryGeneratorAction trước khi được gọi bởi generatePrimaryVertex()

thuộc lớp G4ParticleGun.

Các phương thức trong G4ParticleGun gồm có

• SetParticleDefinition(G4ParticleDefinition*)

• SetParticleMomentum(G4ParticleMomentum)

• SetParticleMomentumDirection(G4ThreeVector)

• SetParticleEnergy(G4double)

• SetParticleTime(G4double)

• SetParticlePosition(G4ThreeVector)

56

Page 58: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 6. MÔ PHỎNG EVENT Đặng Nguyên Phương

• SetParticlePolarization(G4ThreeVector)

• SetNumberOfParticles(G4int)

Ví dụ:

void T01PrimaryGeneratorAction : :

GeneratePrimaries ( G4Event∗ anEvent )

{

G4ParticleDefinition∗ particle ;

G4int i = ( in t ) ( 5 .∗ G4UniformRand ( ) ) ;

switch (i )

{ case 0 : particle = positron ; break ; . . . }

particleGun−>SetParticleDefinition ( particle ) ;

G4double pp = momentum+(G4UniformRand ( ) −0.5)∗sigmaMomentum ;

G4double mass = particle−>GetPDGMass ( ) ;

G4double Ekin = sqrt (pp∗pp+mass∗mass )−mass ;

particleGun−>SetParticleEnergy ( Ekin ) ;

G4double angle = ( G4UniformRand ( ) −0.5)∗sigmaAngle ;

particleGun−>SetParticleMomentumDirection

( G4ThreeVector ( sin ( angle ) , 0 . , cos ( angle ) ) ) ;

particleGun−>GeneratePrimaryVertex ( anEvent ) ;

}

6.1.2 G4GeneralParticleSource

Trong nhiều ứng dụng, việc sử dụng lớp G4ParticleGun là đủ để tạo các hạt ban đầu,

tuy nhiên trường hợp người dùng muốn tạo các hạt ban đầu một cách phức tạp hơn, ta

có thể sử dụng lớp G4GeneralParticleSource. Với lớp này, ta có thể xây dựng các tính

chất sau cho các hạt ban đầu:

• Phổ: tuyến tính, exponential, hàm mũ, dạng Gauss,...

• Phân bố góc: đẳng hướng, đơn hướng, theo hàm cosin,...

• Lấy mẫu theo không gian: trên các bề mặt 2D, 3D như dạng đĩa, cầu, hộp,...

• Nguồn hỗn hợp: nhiều nguồn độc lập trong cùng 1 lần mô phỏng.

Ví dụ:

MyPrimaryGeneratorAction : :

MyPrimaryGeneratorAction ( )

{ generator = new G4GeneralParticleSource ; }

void MyPrimaryGeneratorAction : :

57

Page 59: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 6. MÔ PHỎNG EVENT Đặng Nguyên Phương

GeneratePrimaries ( G4Event∗ anEvent )

{ generator−>GeneratePrimaryVertex ( anEvent ) ; }

6.2 Hits

Hit có thể xem như là một “ảnh chụp” của một (hay một tập hợp) tương tác vật lý của

hạt bên trong vùng nhạy (vùng ghi nhận hay vùng quan tâm) của hệ detector. Tập hợp

các hit được tự động lưu trữ trong đối tượng G4Event.

6.2.1 Vùng nhạy

Vùng nhạy hay vùng ghi nhận (sensitive detector) được xây dựng ra bằng cách sử dụng

lớp G4VSensitiveDetector và gán cho một khối luận lý được tạo ra với chức năng ghi

nhận.

Ví dụ:

G4LogicalVolume∗ myLogCalor = . . . ;

G4VSensitiveDetector∗ pSensetivePart =

new MyDetector ( "/mydet" ) ;

G4SDManager∗ SDMan = G4SDManager : : GetSDMpointer ( ) ;

SDMan−>AddNewDetector ( pSensitivePart ) ;

myLogCalor−>SetSensitiveDetector ( pSensetivePart ) ;

6.2.2 Ghi nhận đại lượng

Việc ghi nhận đại lượng có thể được thực hiện thông qua các primitive scorer, trong

trường hợp người dùng không quan tâm đến việc ghi nhận ở từng bước chạy mà chỉ muốn

ghi nhận các đại lượng vật lý cho mỗi event.

Một số đại lượng thường được ghi nhận:

• Độ dài vết: G4PSTrackLength, G4PSPassageTrackLength

• Năng lượng để lại: G4PSEnergyDepsit, G4PSDoseDeposit

• Thông lượng: G4PSFlatSurfaceFlux, G4PSCellFlux, G4PSPassageCellFlux

• Dòng: G4PSFlatSurfaceCurrent, G4PSSphereSurfaceCurrent, G4PSPassageCurrent

• Khác: G4PSMinKinEAtGeneration, G4PSNofSecondary, G4PSNofStep,...

58

Page 60: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 6. MÔ PHỎNG EVENT Đặng Nguyên Phương

Ví dụ:

MyDetectorConstruction : : Construct ( )

{ . . .

G4LogicalVolume∗ myCellLog = new G4LogicalVolume ( . . . ) ;

G4VPhysicalVolume∗ myCellPhys = new G4PVParametrised ( . . . ) ;

G4MultiFunctionalDetector∗ myScorer = new G4MultiFunctionalDetector

( "myCel lScorer " ) ;

G4SDManager : : GetSDMpointer ( )−>AddNewDetector ( myScorer ) ;

myCellLog−>SetSensitiveDetector ( myScorer ) ;

G4VPrimitiveSensitivity∗ totalSurfFlux = new G4PSFlatSurfaceFlux ( "

TotalSur fFlux " ) ;

myScorer−>Register ( totalSurfFlux ) ;

G4VPrimitiveSensitivity∗ totalDose = new G4PSDoseDeposit ( "TotalDose

" ) ;

myScorer−>Register ( totalDose ) ;

}

6.3 Tracking

Sự kiện (event) là đơn vị cơ bản trong mô phỏng GEANT4. Khi mô phỏng các sự kiện,

ban đầu các vết chính (primary track) được tạo ra, các vết chính này, cùng với các vết

thứ cấp được tạo ra trong quá trình mô phỏng, được sắp xếp theo thứ tự vào trong một

cụm (stack) ứng với mỗi sự kiện (xem ví dụ trong Hình 6.1). Khi không còn track nào

được xếp vào cụm nữa, quá trình mô phỏng cho một sự kiện sẽ kết thúc.

Hình 6.1: Thứ tự của các vết: T1 > T4 > T3 > T6 > T7 > T5 > T8 > T2

Lớp G4Event quản lý thông tin của các event, bao gồm

• Danh sách các hạt và vị trí tương tác

59

Page 61: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 6. MÔ PHỎNG EVENT Đặng Nguyên Phương

• Các hit và đường đi của hạt

Trong khi đó, lớp G4EventManager quản lý các quá trình tương tác của một sự kiện. Mỗi

sự kiện bao gồm nhiều vết, các vết này được quản lý thông qua lớp G4Track. Các vết sẽ

được xóa khi xảy ra một trong các trường hợp sau

• Đi ra ngoài khối world

• Biến mất thông qua các quá trình phân rã, tán xạ không đàn hồi

• Động năng giảm xuống 0 và không có quá trình trong trạng thái nghỉ nào được sử

dụng

• Bị ngưng bởi người dùng

60

Page 62: Hướng dẫn GEANT4 cho Windows

Chương 7

Xử lý dữ liệu

7.1 Các lớp xử lý dữ liệu

Các lớp xử lý dữ liệu trong GEANT4 giúp người dùng có thể xuất các dữ liệu tính toán

mô phỏng ra theo nhiều dạng khác nhau (ROOT, AIDA XML, CSV và HBOOK) để có

thể thực hiện các xử lý tiếp theo. Các lớp tương ứng với các dạng dữ liệu đầu ra khác

nhau gồm có

• G4CsvAnalysisManger (CSV)

• G4RootAnalysisManger (ROOT)

• G4XmlAnalysisManger (XML)

• G4HbookAnalysisManger (HBOOK)

Tất cả các lớp này đều được tích hợp các giao diện tương tác chung từ lớp cơ sở

G4VAnalysisManager và có phương thức truy cập Instance(). Ngoài ra để tránh sự

phụ thuộc của GEANT4 vào các thư viện trong CERNLIB, lớp G4HbookAnalysisManger

không được đưa vào trong GEANT4 nhưng được đặt trong thư mục examples/extended/

common/analysis cùng với các file cấu hình cần thiệt để xây dựng thư viện CERNLIB.

Dữ liệu đầu ra từ GEANT4 gồm 2 dạng: histogram và ntuple. Một số yêu cầu và tính

chất của file output được tạo ra từ GEANT4, gồm có

• Dạng histogram: H1, H2 (double)

• Dạng cột ntuple: int, float, double

• Chỉ có 1 ntuple được tạo ra trong mỗi lần mô phỏng

• Không giới hạn số lượng histogram

• Cách thức truy cập trực tiếp các đối tượng của ntuple không được cung cấp

61

Page 63: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 7. XỬ LÝ DỮ LIỆU Đặng Nguyên Phương

• Cấu trúc thư mục của file ouput là cố định, 1 thư mục cho ntuple và 1 thư mục cho

các histogram, có thể thay đổi tên các thư mục

• Lớp G4CsvAnalysisManger chỉ được sử dụng với ntuple

7.2 Histogram

Phần định nghĩa và hướng dẫn về histrogram đã được đề cập đến trong tập tài liệuHướng

dẫn sử dụng ROOT cho hệ điều hành Windows. Bên dưới là ví dụ cho cách thức

sử dụng các lớp xử lý số liệu để ghi nhận năng lượng để lại vào các histogram 1 chiều

(H1) được lấy từ ví dụ B4, các khai báo được thực hiện trong 2 file B4Analysis.hh và

B4Analysis.cc.

B4Analysis.hh

#i f n d e f B4Analysis_h

#de f i n e B4Analysis_h 1

#inc lude " g4ana ly s i s_de f s . hh"

us ing namespace G4Root ;

// us ing namespace G4Xml ;

// us ing namespace G4Csv ;

#end i f

B4Analysis.cc

#inc lude "B4Analysis . hh"

void B4RunAction : : BeginOfRunAction ( const G4Run∗ run )

{

// Tao Ana lys i s Manager

G4AnalysisManager∗ man = G4AnalysisManager : : Instance ( ) ;

// Mo f i l e output

man−>OpenFile ( "B4" ) ;

// Tao histogram

man−>CreateH1 ( "0" , "Edep in absorber " , 100 , 0 . , 800∗MeV ) ;

man−>CreateH1 ( "1" , "Edep in gap" , 100 , 0 . , 100∗MeV ) ;

}

void N4EventAction : : EndOfEventAction ( const G4Run∗ aRun )

{

// Luu g ia t r i vao histogram

G4AnalysisManager∗ man = G4AnalysisManager : : Instance ( ) ;

man−>FillH1 (0 , fEnergyAbs ) ;

man−>FillH1 (1 , fEnergyGap ) ;

62

Page 64: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 7. XỬ LÝ DỮ LIỆU Đặng Nguyên Phương

}

void N4RunAction : : EndOfRunAction ( const G4Run∗ aRun )

{

// Luu histogram

G4AnalysisManager∗ man = G4AnalysisManager : : Instance ( ) ;

man−>Write ( ) ;

man−>CloseFile ( ) ;

// Ket thuc

d e l e t e G4AnalysisManager : : Instance ( ) ;

}

Ta cũng có thể truy xuất trực tiếp các đối tượng histogram, như trong ví dụ bên dưới

ta truy xuất giá trị trung bình và độ lệch chuẩn của phân bố histogram 1 thông qua các

hàm mean() và rms().

G4AnalysisManager∗ analysisManager = G4AnalysisManager : : Instance ( ) ;

i f ( analysisManager−>GetH1 (1 ) ) {

G4cout << "\n −−−−> pr in t histograms s t a t i s t i c \n" << G4endl ;

G4cout << " EAbs : mean = " << analysisManager−>GetH1 (1 )−>mean ( )

<< " rms = " << analysisManager−>GetH1 (1 )−>rms ( ) ,

<< G4endl ;

}

7.3 Ntuple

Tương tự như với histogram, phần định nghĩa và hướng dẫn về ntuple cũng đã được đề cập

đến trong tập tài liệu Hướng dẫn sử dụng ROOT cho hệ điều hành Windows,

bên dưới là một ví dụ cho việc sử dụng ntuple.

#inc lude "B4Analysis . hh"

void B4RunAction : : BeginOfRunAction ( const G4Run∗ run )

{

// Tao Ana lys i s Manager

G4AnalysisManager∗ man = G4AnalysisManager : : Instance ( ) ;

// Mo f i l e output

man−>OpenFile ( "B4" ) ;

// Tao ntuple

man−>CreateNtuple ( "B4" , "Edep and TrackL" ) ;

man−>CreateNtupleDColumn ( "Eabs" ) ;

man−>CreateNtupleDColumn ( "Egap" ) ;

63

Page 65: Hướng dẫn GEANT4 cho Windows

CHƯƠNG 7. XỬ LÝ DỮ LIỆU Đặng Nguyên Phương

man−>FinishNtuple ( ) ;

}

void N4EventAction : : EndOfEventAction ( const G4Run∗ aRun )

{

G4AnalysisManager∗ man = G4AnalysisManager : : Instance ( ) ;

man−>FillNtupleDColumn (0 , fEnergyAbs ) ;

man−>FillNtupleDColumn (1 , fEnergyGap ) ;

man−>AddNtupleRow ( ) ;

}

64

Page 66: Hướng dẫn GEANT4 cho Windows

Lời kết

Bộ công cụ GEANT4 hiện đang được sử dụng rộng rãi trong việc mô phỏng tương tác

của các hạt với các hệ detector tại rất nhiều thí nghiệm trên thế giới, từ các hệ detector

đo tia phóng xạ trong các phòng thí nghiệm phục vụ cho sinh viên các trường Đại học

cho đến các hệ detector lớn ATLAS, CMS,... phục vụ cho mục đích phát hiện các hạt và

mô hình vật lý mới tại LHC.

Trong phạm vi của tài liệu này, tác giả chỉ có thể trình bày một cách sơ lược các nội dung

cần thiết về cách thức sử dụng chương trình GEANT4 trong mô phỏng vận chuyển hạt.

Dù cho còn nhiều thiếu sót, tác giả hi vọng tài liệu này sẽ cung cấp cho người đọc một

cái nhìn tổng quát về chương trình GEANT4 và những bước căn bản trong việc xây dựng

một ứng dụng mô phỏng với chương trình này. Đồng thời, tác giả cũng mong nhận được

sự đóng góp ý kiến, thảo luận nhằm giúp cho tập tài liệu này ngày càng hoàn thiện hơn.

65

Page 67: Hướng dẫn GEANT4 cho Windows

Tài liệu tham khảo

[1] Geant4 Collaboration, Introduction to Geant4, 2011.

[2] Geant4 Collaboration, Geant4 User’s Guide for Application Developers, 2011.

[3] Geant4 Tutorial Notes, McGill University, Montreal, September 25-28 2006.

[4] Héctor Alvarez Pol, An introduction to Geant4, GENP, Univ. Santiago de Com-

postela.

66

Page 68: Hướng dẫn GEANT4 cho Windows

Phụ lục A

Một số lệnh thực thi cơ bản

Lệnh cơ bản

pwd hiển thị vi trí thư mục hiện hành

cd chuyển đổi thư mục

ls liệt kê các lệnh và thư mục con đang có trong thư mục hiện hành

history xem lại các lệnh đã sử dụng

!historyID sử dụng lại lệnh trước đó

?command xem các tham số của lệnh

help command xem phần giúp đỡ sử dụng lệnh

exit thoát

Lệnh UI control (trong thư mục /control)

execute [macroFile] thực thi file macro

loop [macroFile] [counterName] [initialValue] [finalValue] [stepSize]

thực thi file macro nhiều hơn 1 lần

verbose [switch] hiển thị các lệnh được sử dụng

switch = 0 không hiển thị

switch = 1 chỉ hiển thị các lệnh có hiệu lực

switch = 2 hiển thị cả các lệnh ẩn

saveHistory [fileName] lưu các câu lệnh đã sử dụng vào 1 file macro;

tên file mặc định là G4history.macro

stopSavingHistory dừng việc lưu các lệnh sử dụng

alias [aliasName] [aliasValue] thiết lập định nghĩa; khi được gọi, aliasName

phải được bao lại bởi cặp ngoặc {}

unalias [aliasName] bỏ thiết lập định nghĩa

shell [] thực thi lệnh Unix

createHTML [dirPath] tạo file html cho tất cả các lệnh và thư mục con

trong dirPath (đường dẫn tuyệt đối)

maximumStoredHistory [max] thiết lập số lượng tối đa các lệnh được lưu trữ

trong bộ nhớ; mặc định: 20

Lệnh điều khiển thực thi (trong thư mục /run)

initialize khởi tạo lõi G4

beamOn [numberOfEvent] [macroFile] [nSelect]

67

Page 69: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC A. MỘT SỐ LỆNH THỰC THI CƠ BẢN Đặng Nguyên Phương

chạy chương trình; trong trường hợp đối số thứ

ba nSelect được cho, file macro chỉ thực thi với

nSelect event đầu tiên

verbose [level] thiết lập các mức độ giải thích cho G4RunManager

optimizeGeometry [optimizeFlag] nếu optimizeFlag là TRUE, G4GeometryManager

sẽ tối ưu các định nghĩa hình học

abort [softAbort] nếu softAbort là FALSE, chương trình sẽ ngừng

ngay lập tức, nếu là TRUE chương trình sẽ ngừng

sau khi kết thúc event đang chạy

abortCurrentEvent ngừng event đang chạy

setCut [cut] [Unit] thiết lập giá trị cắt mặc định

setCutForRegion [Region] [cut] [Unit]

thiết lập giá trị cắt cho từng vùng

geometryModified sử dụng trong trường hợp có thay đổi hình học

sau khi bắt đầu chạy chương trình

physicsModified sử dụng trong trường hợp có thay đổi các quá

trình vật lý sau khi bắt đầu chạy chương trình

Lệnh hiển thị (trong thư mục /vis)

initialize khởi động trình quản lý visual

open mở ứng dụng điều khiển vẽ hình (ATree, OGL,

DAWNFILE, RayTracer,...)

drawTree [physical-volume-name] [system] tạo hình ảnh chứa khối vật lý có tên

physical-volume-name (mặc định là khối world)

drawView [theta-degrees] [phi-degrees] [pan-right] [pan-up] [pan-unit]

[zoom-factor] [dolly] [dolly-unit]

vẽ hình dưới góc nhìn được thiết lập

drawVolume [physical-volume-name] vẽ khối vật lý (mặc định có tên là world)

vis/ASCIITree/verbose < 10: không in các khối con trong cấu trúc lặp

>= 10: in tất cả các khối vật lý

Các mức độ tiếp theo quyết định bằng verbose%10:

>= 0: hiển thị tên của khối vật lý

>= 1: hiển thị tên của khối luận lý

>= 2: hiển thị tên của khối hình học và dạng

>= 3: hiển thị thể tích và mật độ

>= 4: hiển thị khối lượng (bao gồm khối con)

>= 5: hiển thị khối lượng (không gồm khối con)

set/colour [red] [green] [blue] [alpha] thiết lập màu

set/lineWidth [lineWidth] thiết lập bề dày nét

set/textColour [red] [green] [blue] [alpha] thiết lập màu cho chữ

68

Page 70: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC A. MỘT SỐ LỆNH THỰC THI CƠ BẢN Đặng Nguyên Phương

set/textLayout [layout] thiết lập định dạng chữ

scene/create tạo khung hình vẽ trống

scene/add/arrow [x1] [y1] [z1] [x2] [y2] [z2] [unit] vẽ mũi tên

scene/add/arrow2D [x1] [y1] [x2] [y2] vẽ mũi tên 2 chiều

scene/add/axes [x0] [y0] [z0] [length] [unit] [unitcolour]

vẽ trục tọa độ

scene/add/date [size] [x-position] [y-position] [layout] [date]

thêm ngày tháng

scene/add/eventID [size] [x-position] [y-position] [layout]

thêm ID của sự kiện

scene/add/frame [size] vẽ khung

scene/add/hits vẽ các hit

scene/add/line [x1] [y1] [z1] [x2] [y2] [z2] [unit] vẽ đường thẳng

scene/add/line2D [x1] [y1] [x2] [y2] vẽ đường thẳng 2 chiều

scene/add/logicalVolume [logical-volume-name] [depth-of-descent]

[booleans-flag] [voxels-flag] [readout-flag]

vẽ khối luận lý

scene/add/text [x] [y] [z] [unit] [font_size] [x_offset] [y_offset]

[text] thêm văn bản

scene/add/text2D [x] [y] [font_size] [x_offset] [y_offset] [text]

thêm văn bản 2 chiều

scene/add/trajectories [default-trajectory-type] vẽ vết

scene/add/volume [physical-volume-name] [copy-no] [depth-of-descent]

[clip-volume-type] [parameter-unit] [parameter-1] [parameter-2]

[parameter-3] [parameter-4] [parameter-5] [parameter-6]

vẽ khối vật lý

viewer/zoom phóng to

viewer/panTo [right] [up] [unit] dịch chuyển điểm nhìn qua bên phải (right) và

lên phía trên (up)

viewer/reset khởi động lại viewer

viewer/set/style [style] chọn kiểu vẽ (wireframe hay surface)

viewer/set/viewpointThetaPhi [theta] [phi] [unit] chọn góc nhìn

viewer/set/viewpointVector [x] [y] [z] chọn góc nhìn

69

Page 71: Hướng dẫn GEANT4 cho Windows

Phụ lục B

Các khối hình học cơ bản

G4Box(const G4String& pName,G4double pX,G4double pY,G4double pZ)

pX = 30, pY = 40, pZ = 60

G4Tubs(const G4String& pName,G4double pRMin,G4double pRMax,G4double pDz,G4double pSPhi,G4double pDPhi)

pRMin = 10, pRMax = 15, pDz = 20

G4CutTubs(const G4String& pName,G4double pRMin,G4double pRMax,G4double pDz,G4double pSPhi,G4double pDPhi,G4ThreeVector pLowNorm,G4ThreeVector pHighNorm)

pRMin = 12, pRMax = 20, pDz = 30, pSPhi = 0, pDPhi =

1.5*pi,pLowNorm = (0,-0.7,-0.71), pHighNorm =

(0.7,0,0.71)

G4Para(const G4String& pName,G4double dx,G4double dy,G4double dz,G4double alpha,G4double theta,G4double phi)

dx = 30, dy = 40, dz = 60

70

Page 72: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC B. CÁC KHỐI HÌNH HỌC CƠ BẢN Đặng Nguyên Phương

G4Trd(const G4String& pName,G4double dx1,G4double dx2,G4double dy1,G4double dy2,G4double dz)

dx1 = 30, dx2 = 10, dy1 = 40, dy2 = 15, dz

= 60

G4Trap(const G4String& pName,G4double pZ,G4double pY,G4double pX,G4double pLTX)

G4Trap(const G4String& pName,G4double pDz, G4double pTheta,G4double pPhi, G4double pDy1,G4double pDx1, G4double pDx2,G4double pAlp1,G4double pDy2,G4double pDx3, G4double pDx4,G4double pAlp2)

pDx1=30, pDx2=40, pDy1=40, pDx3=10, pDx4=14,

pDy2=16, pDz=60, pTheta=20*Degree, pPhi=5*Degree,

pAlp1=pAlp2=10*Degree

G4Cons(const G4String& pName,G4double pRmin1,G4double pRmax1,G4double pRmin2,G4double pRmax2,G4double pDz,G4double pSPhi,G4double pDPhi)

pRmin1 = 5, pRmax1 = 10, pRmin2 = 20,

pRmax2 = 25, pDz = 40, pSPhi = 0, pDPhi =

43*Pi

G4Sphere(const G4String& pName,G4double pRmin,G4double pRmax,G4double pSPhi,G4double pDPhi,G4double pSTheta,G4double pDTheta) pRmin = 100, pRmax = 120, pSPhi =

0*Degree, pDPhi = 180*Degree, pSTheta = 0

Degree, pDTheta = 180*Degree

71

Page 73: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC B. CÁC KHỐI HÌNH HỌC CƠ BẢN Đặng Nguyên Phương

G4Orb(const G4String& pName,G4double pRmax)

pRmax = 100

G4Torus(const G4String& pName,G4double pRmin,G4double pRmax,G4double pRtor,G4double pSPhi,G4double pDPhi) pRmin = 40, pRmax = 60, pRtor = 200, pSPhi

= 0, pDPhi = 90*Degree

G4Polycone(const G4String& pName,G4double phiStart,G4double phiTotal,G4int numZPlanes,const G4double zPlane[],const G4double rInner[],const G4double rOuter[])

G4Polycone(const G4String& pName,G4double phiStart,G4double phiTotal,G4int numRZ,const G4double r[],const G4double z[])

phiStart = 1/4*Pi, phiTotal = 3/2*Pi, numZPlanes =

9, rInner = { 0, 0, 0, 0, 0, 0, 0, 0, 0}, rOuter = {

0, 10, 10, 5 , 5, 10 , 10 , 2, 2}, z = { 5, 7, 9,

11, 25, 27, 29, 31, 35 }

G4Polyhedra(const G4String& pName,G4double phiStart,G4double phiTotal,G4int numSide,G4int numZPlanes,

const G4double zPlane[],const G4double rInner[],const G4double rOuter[] )

G4Polyhedra(const G4String& pName,G4double phiStart,G4double phiTotal,G4int numSide,G4int numRZ,

const G4double r[],const G4double z[] )

phiStart = -1/4*Pi, phiTotal= 5/4*Pi, numSide = 3,

nunZPlanes = 7, rInner = { 0, 0, 0, 0, 0, 0, 0 },

rOuter = { 0, 15, 15, 4, 4, 10, 10 }, z = { 0, 5, 8,

13 , 30, 32, 35 }

72

Page 74: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC B. CÁC KHỐI HÌNH HỌC CƠ BẢN Đặng Nguyên Phương

G4EllipticalTube(const G4String& pName,G4double Dx,G4double Dy,G4double Dz)

Dx = 5, Dy = 10, Dz = 20

G4Ellipsoid(const G4String& pName,G4double pxSemiAxis,G4double pySemiAxis,G4double pzSemiAxis,G4double pzBottomCut=0,G4double pzTopCut=0)

pxSemiAxis = 10, pySemiAxis = 20,

pzSemiAxis = 50, pzBottomCut = -10,

pzTopCut = 40

G4EllipticalCone(const G4String& pName,G4double pxSemiAxis,G4double pySemiAxis,G4double zMax,G4double pzTopCut)

pxSemiAxis = 30/75, pySemiAxis = 60/75,

zMax = 50, pzTopCut = 25

G4Paraboloid(const G4String& pName,G4double Dz,G4double R1,G4double R2)

R1 = 20, R2 = 35, Dz = 20

73

Page 75: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC B. CÁC KHỐI HÌNH HỌC CƠ BẢN Đặng Nguyên Phương

G4Hype(const G4String& pName,G4double innerRadius,G4double outerRadius,G4double innerStereo,G4double outerStereo,G4double halfLenZ) innerStereo = 0.7, outerStereo = 0.7,

halfLenZ = 50, innerRadius = 20,

outerRadius = 30

G4Tet(const G4String& pName,G4ThreeVector anchor,G4ThreeVector p2,G4ThreeVector p3,G4ThreeVector p4,G4bool *degeneracyFlag=0)

anchor = {0, 0, sqrt(3)}, p2 = { 0, 2*sqrt(2/3),

-1/sqrt(3) }, p3 = { -sqrt(2), -sqrt(2/3),-1/sqrt(3)

}, p4 = { sqrt(2), -sqrt(2/3) , -1/sqrt(3) }

G4ExtrudedSolid(const G4String& pName,std::vector<G4TwoVector> polygon,std::vector<ZSection> zsections)

G4ExtrudedSolid(const G4String& pName,std::vector<G4TwoVector> polygon,G4double hz,G4TwoVector off1, G4double scale1,G4TwoVector off2, G4double scale2)

poligon = {-30,-30},{-30,30},{30,30},{30,-30},

{15,-30},{15,15},{-15,15},{-15,-30}

zsections = [-60,{0,30},0.8], [-15, {0,-30},1.],

[10,{0,0},0.6], [60,{0,30},1.2]

G4TwistedBox(const G4String& pName,G4double twistedangle,G4double pDx,G4double pDy,G4double pDz)

twistedangle = 30*Degree, pDx = 30, pDy

=40, pDz = 60

74

Page 76: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC B. CÁC KHỐI HÌNH HỌC CƠ BẢN Đặng Nguyên Phương

G4TwistedTrap(const G4String& pName,G4double twistedangle,G4double pDxx1,G4double pDxx2,G4double pDy,G4double pDz)

G4TwistedTrap(const G4String& pName,G4double twistedangle,G4double pDz,G4double pTheta,G4double pPhi,G4double pDy1,G4double pDx1,G4double pDx2,G4double pDy2,G4double pDx3,G4double pDx4,G4double pAlph)

pDx1 = 30, pDx2 = 40, pDy1 = 40, pDx3 = 10, pDx4 =

14, pDy2 = 16, pDz = 60, pTheta = 20*Degree, pDphi =

5*Degree, pAlph = 10*Degree, twistedangle =

30*Degree

G4TwistedTrd(const G4String& pName,G4double pDx1,G4double pDx2,G4double pDy1,G4double pDy2,G4double pDz,G4double twistedangle)

dx1 = 30, dx2 = 10, dy1 = 40, dy2 = 15, dz

= 60, twistedangle = 30*Degree

G4GenericTrap(const G4String& pName,G4double pDz,

const std::vector<G4TwoVector>& vertices)

pDz = 25 vertices = {-30, -30}, {-30, 30}, {30, 30},

{30, -30} {-5, -20}, {-20, 20}, {20, 20}, {20, -20}

G4TwistedTubs(const G4String& pName,G4double twistedangle,G4double endinnerrad,G4double endouterrad,G4double halfzlen,G4double dphi)

endinnerrad = 10, endouterrad = 15, halfzlen = 20,

dphi = 90*Degree, twistedangle = 60*Degree

75

Page 77: Hướng dẫn GEANT4 cho Windows

Phụ lục C

Cơ sở dữ liệu vật liệu của GEANT4

Đơn chất

=========================================================

Z Name ChFormula density(g/cm^3) I(eV)

=========================================================

1 G4_H 8.3748e-05 19.2

2 G4_He 0.000166322 41.8

3 G4_Li 0.534 40

4 G4_Be 1.848 63.7

5 G4_B 2.37 76

6 G4_C 2 81

7 G4_N 0.0011652 82

8 G4_O 0.00133151 95

9 G4_F 0.00158029 115

10 G4_Ne 0.000838505 137

11 G4_Na 0.971 149

12 G4_Mg 1.74 156

13 G4_Al 2.699 166

14 G4_Si 2.33 173

15 G4_P 2.2 173

16 G4_S 2 180

17 G4_Cl 0.00299473 174

18 G4_Ar 0.00166201 188

19 G4_K 0.862 190

20 G4_Ca 1.55 191

21 G4_Sc 2.989 216

22 G4_Ti 4.54 233

23 G4_V 6.11 245

24 G4_Cr 7.18 257

25 G4_Mn 7.44 272

26 G4_Fe 7.874 286

27 G4_Co 8.9 297

28 G4_Ni 8.902 311

76

Page 78: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

29 G4_Cu 8.96 322

30 G4_Zn 7.133 330

31 G4_Ga 5.904 334

32 G4_Ge 5.323 350

33 G4_As 5.73 347

34 G4_Se 4.5 348

35 G4_Br 0.0070721 343

36 G4_Kr 0.00347832 352

37 G4_Rb 1.532 363

38 G4_Sr 2.54 366

39 G4_Y 4.469 379

40 G4_Zr 6.506 393

41 G4_Nb 8.57 417

42 G4_Mo 10.22 424

43 G4_Tc 11.5 428

44 G4_Ru 12.41 441

45 G4_Rh 12.41 449

46 G4_Pd 12.02 470

47 G4_Ag 10.5 470

48 G4_Cd 8.65 469

49 G4_In 7.31 488

50 G4_Sn 7.31 488

51 G4_Sb 6.691 487

52 G4_Te 6.24 485

53 G4_I 4.93 491

54 G4_Xe 0.00548536 482

55 G4_Cs 1.873 488

56 G4_Ba 3.5 491

57 G4_La 6.154 501

58 G4_Ce 6.657 523

59 G4_Pr 6.71 535

60 G4_Nd 6.9 546

61 G4_Pm 7.22 560

62 G4_Sm 7.46 574

63 G4_Eu 5.243 580

64 G4_Gd 7.9004 591

65 G4_Tb 8.229 614

66 G4_Dy 8.55 628

67 G4_Ho 8.795 650

77

Page 79: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

68 G4_Er 9.066 658

69 G4_Tm 9.321 674

70 G4_Yb 6.73 684

71 G4_Lu 9.84 694

72 G4_Hf 13.31 705

73 G4_Ta 16.654 718

74 G4_W 19.3 727

75 G4_Re 21.02 736

76 G4_Os 22.57 746

77 G4_Ir 22.42 757

78 G4_Pt 21.45 790

79 G4_Au 19.32 790

80 G4_Hg 13.546 800

81 G4_Tl 11.72 810

82 G4_Pb 11.35 823

83 G4_Bi 9.747 823

84 G4_Po 9.32 830

85 G4_At 9.32 825

86 G4_Rn 0.00900662 794

87 G4_Fr 1 827

88 G4_Ra 5 826

89 G4_Ac 10.07 841

90 G4_Th 11.72 847

91 G4_Pa 15.37 878

92 G4_U 18.95 890

93 G4_Np 20.25 902

94 G4_Pu 19.84 921

95 G4_Am 13.67 934

96 G4_Cm 13.51 939

97 G4_Bk 14 952

98 G4_Cf 10 966

Hợp chất

==========================================================

Ncomp Name density(g/cm^3) I(eV)

==========================================================

6 G4_A-150_TISSUE 1.127 65.1

1 0.101327

78

Page 80: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

6 0.7755

7 0.035057

8 0.0523159

9 0.017422

20 0.018378

3 G4_ACETONE 0.7899 64.2

1 0.104122

6 0.620405

8 0.275473

2 G4_ACETYLENE 0.0010967 58.2

1 0.077418

6 0.922582

3 G4_ADENINE 1.35 71.4

1 0.037294

6 0.44443

7 0.518276

13 G4_ADIPOSE_TISSUE_ICRP 0.92 63.2

1 0.119477

6 0.63724

7 0.00797

8 0.232333

11 0.0005

12 2e-05

15 0.00016

16 0.00073

17 0.00119

19 0.00032

20 2e-05

26 2e-05

30 2e-05

4 G4_AIR 0.00120479 85.7

6 0.000124

7 0.755268

8 0.231781

18 0.012827

4 G4_ALANINE 1.42 71.9

1 0.0791899

6 0.404439

7 0.157213

79

Page 81: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

8 0.359159

2 G4_ALUMINUM_OXIDE Al_2O_3 3.97 145.2

8 0.470749

13 0.529251

3 G4_AMBER 1.1 63.2

1 0.10593

6 0.788974

8 0.105096

2 G4_AMMONIA 0.000826019 53.7

1 0.177547

7 0.822453

3 G4_ANILINE 1.0235 66.2

1 0.075759

6 0.773838

7 0.150403

2 G4_ANTHRACENE 1.283 69.5

1 0.05655

6 0.94345

6 G4_B-100_BONE 1.45 85.9

1 0.0654709

6 0.536944

7 0.0215

8 0.032085

9 0.167411

20 0.176589

3 G4_BAKELITE 1.25 72.4

1 0.057441

6 0.774591

8 0.167968

2 G4_BARIUM_FLUORIDE 4.89 375.9

9 0.21672

56 0.78328

3 G4_BARIUM_SULFATE 4.5 285.7

8 0.274212

16 0.137368

56 0.58842

2 G4_BENZENE 0.87865 63.4

1 0.077418

6 0.922582

80

Page 82: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

2 G4_BERYLLIUM_OXIDE 3.01 93.2

4 0.36032

8 0.63968

3 G4_BGO 7.13 534.1

8 0.154126

32 0.17482

83 0.671054

14 G4_BLOOD_ICRP 1.06 75.2

1 0.101866

6 0.10002

7 0.02964

8 0.759414

11 0.00185

12 4e-05

14 3e-05

15 0.00035

16 0.00185

17 0.00278

19 0.00163

20 6e-05

26 0.00046

30 1e-05

8 G4_BONE_COMPACT_ICRU 1.85 91.9

1 0.063984

6 0.278

7 0.027

8 0.410016

12 0.002

15 0.07

16 0.002

20 0.147

9 G4_BONE_CORTICAL_ICRP 1.85 106.4

1 0.047234

6 0.14433

7 0.04199

8 0.446096

12 0.0022

15 0.10497

16 0.00315

81

Page 83: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

20 0.20993

30 0.0001

2 G4_BORON_CARBIDE 2.52 84.7

5 0.78261

6 0.21739

2 G4_BORON_OXIDE 1.812 99.6

5 0.310551

8 0.689449

13 G4_BRAIN_ICRP 1.03 73.3

1 0.110667

6 0.12542

7 0.01328

8 0.737723

11 0.00184

12 0.00015

15 0.00354

16 0.00177

17 0.00236

19 0.0031

20 9e-05

26 5e-05

30 1e-05

2 G4_BUTANE 0.00249343 48.3

1 0.173408

6 0.826592

3 G4_N-BUTYL_ALCOHOL 0.8098 59.9

1 0.135978

6 0.648171

8 0.215851

5 G4_C-552 1.76 86.8

1 0.02468

6 0.501611

8 0.004527

9 0.465209

14 0.003973

2 G4_CADMIUM_TELLURIDE 6.2 539.3

48 0.468355

52 0.531645

3 G4_CADMIUM_TUNGSTATE 7.9 468.3

82

Page 84: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

8 0.177644

48 0.312027

74 0.510329

3 G4_CALCIUM_CARBONATE 2.8 136.4

6 0.120003

8 0.479554

20 0.400443

2 G4_CALCIUM_FLUORIDE 3.18 166

9 0.486659

20 0.513341

2 G4_CALCIUM_OXIDE 3.3 176.1

8 0.285299

20 0.714701

3 G4_CALCIUM_SULFATE 2.96 152.3

8 0.470095

16 0.235497

20 0.294408

3 G4_CALCIUM_TUNGSTATE 6.062 395

8 0.22227

20 0.139202

74 0.638528

2 G4_CARBON_DIOXIDE CO_2 0.00184212 85

6 0.272916

8 0.727084

2 G4_CARBON_TETRACHLORIDE 1.594 166.3

6 0.078083

17 0.921917

3 G4_CELLULOSE_CELLOPHANE 1.42 77.6

1 0.062162

6 0.444462

8 0.493376

3 G4_CELLULOSE_BUTYRATE 1.2 74.6

1 0.067125

6 0.545403

8 0.387472

4 G4_CELLULOSE_NITRATE 1.49 87

1 0.029216

6 0.271296

7 0.121276

83

Page 85: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

8 0.578212

5 G4_CERIC_SULFATE 1.03 76.7

1 0.107596

7 0.0008

8 0.874976

16 0.014627

58 0.002001

2 G4_CESIUM_FLUORIDE 4.115 440.7

9 0.125069

55 0.874931

2 G4_CESIUM_IODIDE 4.51 553.1

53 0.488451

55 0.511549

3 G4_CHLOROBENZENE 1.1058 89.1

1 0.044772

6 0.640254

17 0.314974

3 G4_CHLOROFORM 1.4832 156

1 0.008443

6 0.100613

17 0.890944

10 G4_CONCRETE 2.3 135.2

1 0.01

6 0.001

8 0.529107

11 0.016

12 0.002

13 0.033872

14 0.337021

19 0.013

20 0.044

26 0.014

2 G4_CYCLOHEXANE 0.779 56.4

1 0.143711

6 0.856289

3 G4_1,2-DICHLOROBENZENE 1.3048 106.5

1 0.027425

6 0.490233

17 0.482342

84

Page 86: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

4 G4_DICHLORODIETHYL_ETHER 1.2199 103.3

1 0.0563811

6 0.335942

8 0.111874

17 0.495802

3 G4_1,2-DICHLOROETHANE 1.2351 111.9

1 0.04074

6 0.242746

17 0.716514

3 G4_DIETHYL_ETHER 0.71378 60

1 0.135978

6 0.648171

8 0.215851

4 G4_N,N-DIMETHYL_FORMAMIDE 0.9487 66.6

1 0.096523

6 0.492965

7 0.191625

8 0.218887

4 G4_DIMETHYL_SULFOXIDE 1.1014 98.6

1 0.077403

6 0.307467

8 0.204782

16 0.410348

2 G4_ETHANE 0.00125324 45.4

1 0.201115

6 0.798885

3 G4_ETHYL_ALCOHOL 0.7893 62.9

1 0.131269

6 0.521437

8 0.347294

3 G4_ETHYL_CELLULOSE 1.13 69.3

1 0.090027

6 0.585182

8 0.324791

2 G4_ETHYLENE 0.00117497 50.7

1 0.143711

6 0.856289

4 G4_EYE_LENS_ICRP 1.1 73.3

1 0.099269

85

Page 87: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

6 0.19371

7 0.05327

8 0.653751

2 G4_FERRIC_OXIDE 5.2 227.3

8 0.300567

26 0.699433

2 G4_FERROBORIDE 7.15 261

5 0.162174

26 0.837826

2 G4_FERROUS_OXIDE 5.7 248.6

8 0.222689

26 0.777311

7 G4_FERROUS_SULFATE 1.024 76.4

1 0.108259

7 2.7e-05

8 0.878636

11 2.2e-05

16 0.012968

17 3.4e-05

26 5.4e-05

3 G4_FREON-12 1.12 143

6 0.099335

9 0.314247

17 0.586418

3 G4_FREON-12B2 1.8 284.9

6 0.057245

9 0.181096

35 0.761659

3 G4_FREON-13 0.95 126.6

6 0.114983

9 0.545621

17 0.339396

3 G4_FREON-13B1 1.5 210.5

6 0.080659

9 0.382749

35 0.536592

3 G4_FREON-13I1 1.8 293.5

6 0.061309

9 0.290924

86

Page 88: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

53 0.647767

3 G4_GADOLINIUM_OXYSULFIDE 7.44 493.3

8 0.084528

16 0.08469

64 0.830782

2 G4_GALLIUM_ARSENIDE 5.31 384.9

31 0.482019

33 0.517981

5 G4_GEL_PHOTO_EMULSION 1.2914 74.8

1 0.08118

6 0.41606

7 0.11124

8 0.38064

16 0.01088

6 G4_Pyrex_Glass 2.23 134

5 0.0400639

8 0.539561

11 0.0281909

13 0.011644

14 0.377219

19 0.00332099

5 G4_GLASS_LEAD 6.22 526.4

8 0.156453

14 0.080866

22 0.008092

33 0.002651

82 0.751938

4 G4_GLASS_PLATE 2.4 145.4

8 0.4598

11 0.0964411

14 0.336553

20 0.107205

3 G4_GLUCOSE 1.54 77.2

1 0.071204

6 0.363652

8 0.565144

4 G4_GLUTAMINE 1.46 73.3

1 0.0689651

6 0.410926

87

Page 89: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

7 0.191681

8 0.328427

3 G4_GLYCEROL 1.2613 72.6

1 0.0875539

6 0.391262

8 0.521184

4 G4_GUANINE 1.58 75

1 0.033346

6 0.39738

7 0.463407

8 0.105867

4 G4_GYPSUM 2.32 129.7

1 0.023416

8 0.557572

16 0.186215

20 0.232797

2 G4_N-HEPTANE 0.68376 54.4

1 0.160937

6 0.839063

2 G4_N-HEXANE 0.6603 54

1 0.163741

6 0.836259

4 G4_KAPTON 1.42 79.6

1 0.026362

6 0.691133

7 0.07327

8 0.209235

3 G4_LANTHANUM_OXYBROMIDE 6.28 439.7

8 0.068138

35 0.340294

57 0.591568

3 G4_LANTHANUM_OXYSULFIDE 5.86 421.2

8 0.0936

16 0.093778

57 0.812622

2 G4_LEAD_OXIDE 9.53 766.7

8 0.071682

82 0.928318

3 G4_LITHIUM_AMIDE 1.178 55.5

88

Page 90: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

1 0.087783

3 0.302262

7 0.609955

3 G4_LITHIUM_CARBONATE 2.11 87.9

3 0.187871

6 0.16255

8 0.649579

2 G4_LITHIUM_FLUORIDE 2.635 94

3 0.267585

9 0.732415

2 G4_LITHIUM_HYDRIDE 0.82 36.5

1 0.126797

3 0.873203

2 G4_LITHIUM_IODIDE 3.494 485.1

3 0.051858

53 0.948142

2 G4_LITHIUM_OXIDE 2.013 73.6

3 0.46457

8 0.53543

3 G4_LITHIUM_TETRABORATE 2.44 94.6

3 0.082085

5 0.25568

8 0.662235

13 G4_LUNG_ICRP 1.05 75.3

1 0.101278

6 0.10231

7 0.02865

8 0.757072

11 0.00184

12 0.00073

15 0.0008

16 0.00225

17 0.00266

19 0.00194

20 9e-05

26 0.00037

30 1e-05

5 G4_M3_WAX 1.05 67.9

1 0.114318

89

Page 91: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

6 0.655824

8 0.0921831

12 0.134792

20 0.002883

3 G4_MAGNESIUM_CARBONATE 2.958 118

6 0.142455

8 0.569278

12 0.288267

2 G4_MAGNESIUM_FLUORIDE 3 134.3

9 0.609883

12 0.390117

2 G4_MAGNESIUM_OXIDE 3.58 143.8

8 0.396964

12 0.603036

3 G4_MAGNESIUM_TETRABORATE 2.53 108.3

5 0.240837

8 0.62379

12 0.135373

2 G4_MERCURIC_IODIDE 6.36 684.5

53 0.55856

80 0.44144

2 G4_METHANE 0.000667151 41.7

1 0.251306

6 0.748694

3 G4_METHANOL 0.7914 67.6

1 0.125822

6 0.374852

8 0.499326

5 G4_MIX_D_WAX 0.99 60.9

1 0.13404

6 0.77796

8 0.03502

12 0.038594

22 0.014386

6 G4_MS20_TISSUE 1 75.1

1 0.081192

6 0.583442

7 0.017798

8 0.186381

90

Page 92: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

12 0.130287

17 0.0009

13 G4_MUSCLE_SKELETAL_ICRP 1.04 75.3

1 0.100637

6 0.10783

7 0.02768

8 0.754773

11 0.00075

12 0.00019

15 0.0018

16 0.00241

17 0.00079

19 0.00302

20 3e-05

26 4e-05

30 5e-05

9 G4_MUSCLE_STRIATED_ICRU 1.04 74.7

1 0.101997

6 0.123

7 0.035

8 0.729003

11 0.0008

12 0.0002

15 0.002

16 0.005

19 0.003

4 G4_MUSCLE_WITH_SUCROSE 1.11 74.3

1 0.0982341

6 0.156214

7 0.035451

8 0.710101

4 G4_MUSCLE_WITHOUT_SUCROSE 1.07 74.2

1 0.101969

6 0.120058

7 0.035451

8 0.742522

2 G4_NAPHTHALENE 1.145 68.4

1 0.062909

6 0.937091

91

Page 93: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

4 G4_NITROBENZENE 1.19867 75.8

1 0.040935

6 0.585374

7 0.113773

8 0.259918

2 G4_NITROUS_OXIDE 0.00183094 84.9

7 0.636483

8 0.363517

4 G4_NYLON-8062 1.08 64.3

1 0.103509

6 0.648416

7 0.0995361

8 0.148539

4 G4_NYLON-6/6 1.14 63.9

1 0.097976

6 0.636856

7 0.123779

8 0.141389

4 G4_NYLON-6/10 1.14 63.2

1 0.107062

6 0.680449

7 0.099189

8 0.1133

4 G4_NYLON-11_RILSAN 1.425 61.6

1 0.115476

6 0.720818

7 0.0764169

8 0.0872889

2 G4_OCTANE 0.7026 54.7

1 0.158821

6 0.841179

2 G4_PARAFFIN 0.93 55.9

1 0.148605

6 0.851395

2 G4_N-PENTANE 0.6262 53.6

1 0.167635

6 0.832365

8 G4_PHOTO_EMULSION 3.815 331

1 0.0141

92

Page 94: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

6 0.072261

7 0.01932

8 0.066101

16 0.00189

35 0.349103

47 0.474105

53 0.00312

2 G4_PLASTIC_SC_VINYLTOLUENE 1.032 64.7

1 0.085

6 0.915

2 G4_PLUTONIUM_DIOXIDE 11.46 746.5

8 0.118055

94 0.881945

3 G4_POLYACRYLONITRILE 1.17 69.6

1 0.0569829

6 0.679055

7 0.263962

3 G4_POLYCARBONATE 1.2 73.1

1 0.055491

6 0.755751

8 0.188758

3 G4_POLYCHLOROSTYRENE 1.3 81.7

1 0.061869

6 0.696325

17 0.241806

2 G4_POLYETHYLENE (C_2H_4)_N-Polyethylene

0.94 57.4

1 0.143711

6 0.856289

3 G4_MYLAR 1.4 78.7

1 0.041959

6 0.625016

8 0.333025

3 G4_PLEXIGLASS 1.19 74

1 0.080538

6 0.599848

8 0.319614

3 G4_POLYOXYMETHYLENE 1.425 77.4

1 0.067135

93

Page 95: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

6 0.400017

8 0.532848

2 G4_POLYPROPYLENE (C_2H_4)_N-Polypropylene

0.9 56.5

1 0.143711

6 0.856289

2 G4_POLYSTYRENE 1.06 68.7

1 0.077418

6 0.922582

2 G4_TEFLON 2.2 99.1

6 0.240183

9 0.759817

3 G4_POLYTRIFLUOROCHLOROETHYLENE

2.1 120.7

6 0.20625

9 0.489354

17 0.304395

3 G4_POLYVINYL_ACETATE 1.19 73.7

1 0.070245

6 0.558066

8 0.371689

3 G4_POLYVINYL_ALCOHOL 1.3 69.7

1 0.091517

6 0.545298

8 0.363185

3 G4_POLYVINYL_BUTYRAL 1.12 67.2

1 0.092802

6 0.680561

8 0.226637

3 G4_POLYVINYL_CHLORIDE 1.3 108.2

1 0.04838

6 0.38436

17 0.56726

3 G4_POLYVINYLIDENE_CHLORIDE 1.7 134.3

1 0.020793

6 0.247793

17 0.731414

3 G4_POLYVINYLIDENE_FLUORIDE 1.76 88.8

1 0.03148

94

Page 96: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

6 0.375141

9 0.593379

4 G4_POLYVINYL_PYRROLIDONE 1.25 67.7

1 0.081616

6 0.648407

7 0.126024

8 0.143953

2 G4_POTASSIUM_IODIDE 3.13 431.9

19 0.235528

53 0.764472

2 G4_POTASSIUM_OXIDE 2.32 189.9

8 0.169852

19 0.830148

2 G4_PROPANE 0.00187939 47.1

1 0.182855

6 0.817145

2 G4_lPROPANE 0.43 52

1 0.182855

6 0.817145

3 G4_N-PROPYL_ALCOHOL 0.8035 61.1

1 0.134173

6 0.599595

8 0.266232

3 G4_PYRIDINE 0.9819 66.2

1 0.06371

6 0.759217

7 0.177073

2 G4_RUBBER_BUTYL 0.92 56.5

1 0.143711

6 0.856289

2 G4_RUBBER_NATURAL 0.92 59.8

1 0.118371

6 0.881629

3 G4_RUBBER_NEOPRENE 1.23 93

1 0.05692

6 0.542646

17 0.400434

2 G4_SILICON_DIOXIDE SiO_2 2.32 139.2

8 0.532565

95

Page 97: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

14 0.467435

2 G4_SILVER_BROMIDE 6.473 486.6

35 0.425537

47 0.574463

2 G4_SILVER_CHLORIDE 5.56 398.4

17 0.247368

47 0.752632

3 G4_SILVER_HALIDES 6.47 487.1

35 0.422895

47 0.573748

53 0.003357

2 G4_SILVER_IODIDE 6.01 543.5

47 0.459458

53 0.540542

13 G4_SKIN_ICRP 1.1 72.7

1 0.100588

6 0.22825

7 0.04642

8 0.619002

11 7e-05

12 6e-05

15 0.00033

16 0.00159

17 0.00267

19 0.00085

20 0.00015

26 1e-05

30 1e-05

3 G4_SODIUM_CARBONATE 2.532 125

6 0.113323

8 0.452861

11 0.433815

2 G4_SODIUM_IODIDE 3.667 452

11 0.153373

53 0.846627

2 G4_SODIUM_MONOXIDE 2.27 148.8

8 0.258143

11 0.741857

3 G4_SODIUM_NITRATE 2.261 114.6

96

Page 98: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

7 0.164795

8 0.56472

11 0.270485

2 G4_STILBENE 0.9707 67.7

1 0.067101

6 0.932899

3 G4_SUCROSE 1.5805 77.5

1 0.064779

6 0.42107

8 0.514151

2 G4_TERPHENYL 1.234 71.7

1 0.044543

6 0.955457

13 G4_TESTES_ICRP 1.04 75

1 0.104166

6 0.09227

7 0.01994

8 0.773884

11 0.00226

12 0.00011

15 0.00125

16 0.00146

17 0.00244

19 0.00208

20 0.0001

26 2e-05

30 2e-05

2 G4_TETRACHLOROETHYLENE 1.625 159.2

6 0.144856

17 0.855144

2 G4_THALLIUM_CHLORIDE 7.004 690.3

17 0.147822

81 0.852178

13 G4_TISSUE_SOFT_ICRP 1 72.3

1 0.104472

6 0.23219

7 0.02488

8 0.630238

11 0.00113

97

Page 99: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

12 0.00013

15 0.00133

16 0.00199

17 0.00134

19 0.00199

20 0.00023

26 5e-05

30 3e-05

4 G4_TISSUE_SOFT_ICRU-4 1 74.9

1 0.101172

6 0.111

7 0.026

8 0.761828

4 G4_TISSUE-METHANE 0.00106409 61.2

1 0.101869

6 0.456179

7 0.035172

8 0.40678

4 G4_TISSUE-PROPANE 0.00182628 59.5

1 0.102672

6 0.56894

7 0.035022

8 0.293366

2 G4_TITANIUM_DIOXIDE 4.26 179.5

8 0.400592

22 0.599408

2 G4_TOLUENE 0.8669 62.5

1 0.08751

6 0.91249

3 G4_TRICHLOROETHYLENE 1.46 148.1

1 0.007671

6 0.182831

17 0.809498

4 G4_TRIETHYL_PHOSPHATE 1.07 81.2

1 0.082998

6 0.395628

8 0.351334

15 0.17004

2 G4_TUNGSTEN_HEXAFLUORIDE 2.4 354.4

98

Page 100: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

9 0.382723

74 0.617277

2 G4_URANIUM_DICARBIDE 11.28 752

6 0.091669

92 0.908331

2 G4_URANIUM_MONOCARBIDE 13.63 862

6 0.048036

92 0.951964

2 G4_URANIUM_OXIDE 10.96 720.6

8 0.118502

92 0.881498

4 G4_UREA 1.323 72.8

1 0.067131

6 0.199999

7 0.466459

8 0.266411

4 G4_VALINE 1.23 67.7

1 0.0946409

6 0.512644

7 0.119565

8 0.27315

3 G4_VITON 1.8 98.6

1 0.009417

6 0.280555

9 0.710028

2 G4_WATER H_2O 1 75

1 0.111894

8 0.888106

2 G4_WATER_VAPOR H_2O-Gas 0.000756182 71.6

1 0.111894

8 0.888106

2 G4_XYLENE 0.87 61.8

1 0.094935

6 0.905065

1 G4_GRAPHITE Graphite 1.7 78

Vật liệu dùng trong thí nghiệm năng lượng cao (HEP)

==========================================================

99

Page 101: Hướng dẫn GEANT4 cho Windows

PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4 Đặng Nguyên Phương

Ncomp Name density(g/cm^3) I(eV)

==========================================================

1 G4_lH2 0.0708 21.8

1 G4_lAr 1.396 188

1 G4_lKr 2.418 352

1 G4_lXe 2.953 482

3 G4_PbWO4 8.28 0

8 0.140637

82 0.455366

74 0.403998

1 G4_Galactic 1e-25 21.8

100