Upload
nguyenphuongdang
View
471
Download
16
Embed Size (px)
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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