Hướng dẫn GEANT4 cho Windows
October 2, 2017 | Author: NguyenPhuongDang | Category: N/A
Short Description
Download Hướng dẫn GEANT4 cho Windows...
Description
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ều hà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 1.1 Giới thiệu . . . . . . . . . . . . . . . . 1.2 Lịch sử hình thành . . . . . . . . . . . 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 . . . . . . . . 1.3.2 Ưu nhược điểm . . . . . . . . . 1.4 Cấu trúc của GEANT4 . . . . . . . . . 1.5 Một số lưu ý khi sử dụng GEANT4 . .
. . . . . . .
5 5 5 6 6 6 7 8
. . . . . . .
10 10 11 12 12 14 17 18
. . . . . . . . . . . .
21 21 21 21 22 22 23 24 25 25 25 25 26
2 Cách thức cài đặt GEANT4 2.1 Cài đặt CMake . . . . . . . . . . . . 2.2 Cài đặt Microsoft Visual C++ . . . . 2.3 Cài đặt GEANT4 . . . . . . . . . . . 2.3.1 Cài đặt chương trình . . . . . 2.3.2 Cài đặt các file dữ liệu . . . . 2.3.3 Sử dụng trực tiếp file cài đặt . 2.4 Biên dịch ứng dụng với GEANT4 . .
. . . . . . .
. . . . . . .
. . . . . . .
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 . . . . . . . . . . . 3.1.2 Cách khai báo đơn vị . . . . . . . 3.2 Cách thức xây dựng một ứng dụng trong 3.2.1 Các bước cần thiết . . . . . . . . 3.2.2 Hàm main() . . . . . . . . . . . . 3.2.3 G4RunManager . . . . . . . . . . 3.2.4 G4UImanager . . . . . . . . . . . 3.2.5 G4cout và G4cerr . . . . . . . . . 3.2.6 Xây dựng hình học detector . . . 3.2.7 Xác định quá trình vật lý . . . . 3.2.8 Tạo event sơ cấp . . . . . . . . .
1
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . . . . . . . . GEANT4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . . . . . . .
MỤC LỤC
3.3
3.2.9 Cách 3.3.1 3.3.2 3.3.3
Đặng Nguyên Phương Cấu trúc mã nguồn của một thực thi ứng dụng . . . . . . Batch mode . . . . . . . . . Batch mode với macro . . . Interactive mode . . . . . .
ứng dụng . . . . . . . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
4 Xây dựng hệ detector 4.1 Xây dựng hình học . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1 Tạo các khối hình học . . . . . . . . . . . . . . . . . . 4.1.2 Tạo các khối luận lý . . . . . . . . . . . . . . . . . . . 4.1.3 Tạo các khối vật lý . . . . . . . . . . . . . . . . . . . . 4.2 Định nghĩa vật liệu . . . . . . . . . . . . . . . . . . . . . . . . 4.2.1 Định nghĩa vật liệu đơn . . . . . . . . . . . . . . . . . 4.2.2 Định nghĩa phân tử . . . . . . . . . . . . . . . . . . . . 4.2.3 Định nghĩa hỗn hợp theo tỉ lệ khối lượng . . . . . . . . 4.2.4 Định nghĩa vật liệu dựa vào 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 . . . . . . . 4.3 Khai báo trường điện từ . . . . . . . . . . . . . . . . . . . . . 4.3.1 Từ trường . . . . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Điện trường . . . . . . . . . . . . . . . . . . . . . . . . 5 Các quá trình vật lý 5.1 Khai báo hạt . . . . . . . . . . . . 5.1.1 Định nghĩa hạt . . . . . . . 5.1.2 Động học hạt . . . . . . . . 5.2 Khai báo quá trình vật lý . . . . . 5.2.1 Tương tác điện từ . . . . . . 5.2.2 Tương tác hadronic . . . . . 5.2.3 Quá trình phân rã hạt nhân 5.3 Thiết lập ngưỡng cắt . . . . . . . . 5.3.1 Ngưỡng tạo hạt và vết . . . 5.3.2 Ngưỡng cắt theo vùng . . . 6 Mô phỏng event 6.1 Tạo các hạt ban đầu . . . . . . 6.1.1 G4ParticleGun . . . . . 6.1.2 G4GeneralParticleSource 6.2 Hits . . . . . . . . . . . . . . . 6.2.1 Vùng nhạy . . . . . . . . 6.2.2 Ghi nhận đại lượng . . .
. . . . . .
. . . . . . 2
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . . . . . . .
. . . . . .
. . . . .
. . . . . . . . . . . . .
. . . . . . . . . .
. . . . . .
. . . . .
. . . . . . . . . . . . .
. . . . . . . . . .
. . . . . .
. . . . .
. . . . . . . . . . . . .
. . . . . . . . . .
. . . . . .
. . . . .
. . . . . . . . . . . . .
. . . . . . . . . .
. . . . . .
. . . . .
. . . . . . . . . . . . .
. . . . . . . . . .
. . . . . .
. . . . .
. . . . . . . . . . . . .
. . . . . . . . . .
. . . . . .
. . . . .
26 27 27 28 29
. . . . . . . . . . . . .
31 31 32 33 35 43 43 44 44 45 45 45 46 47
. . . . . . . . . .
48 48 48 49 50 51 52 52 54 54 55
. . . . . .
56 56 56 57 58 58 58
MỤC LỤC
6.3 7 Xử 7.1 7.2 7.3
Đặng Nguyên Phương
Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 lý dữ liệu Các lớp xử lý dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ntuple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61 61 62 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ệu Hướ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 1.3.1
Các chức năng chính và ưu nhược điểm 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-win32x86.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 Interface; 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 3.1.1
Hệ thống các đơn vị Đơ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, jApplyCommand ( "/ e v e n t / v e r b o s e 1 " ) ; UI−>ApplyCommand ( "/ t r a c k i n g / v e r b o s e 1" ) ; // bat dau chay chuong t r i n h
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 ) ; // k e t thuc d e l e t e runManager ; return 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
3.2.8
Đặng Nguyên Phương
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 = 1 0 0 0 ; runManager−>BeamOn ( numberOfEvent ) ; d e l e t e runManager ; return 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 , c h a r ∗∗ 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 = " / c o n t r o l / e x e c u t e " ; G4String fileName = argv [ 1 ] ; UI−>ApplyCommand ( command+fileName ) ; d e l e t e runManager ; return 0; }
Hàm macro (run1.mac) có nội dung như sau # Macro f i l e f o r myProgram # # s e t v e r b o s e 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 # # S e t t h e i n i t i a l k i n e m a t i c and run 100 e v e n t s # e l e c t r o n 1 GeV t o t h e 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
3.3.3
run1 . mac
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 , c h a r ∗∗ 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
d e l e t e runManager ; return 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
4.1.1
Đặng Nguyên Phương
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" , 2 0 ∗ mm , 3 0 ∗ mm , 4 0 ∗ mm ) ;
G4Tubs ∗ cyl = new G4Tubs ( " C y l i n d e r " , 0 , 5 0 ∗ mm , 5 0 ∗ mm , 0 , twopi ) ; // Tao k h o i moi ban cach k e t hop h a i k h o i vua xay dung G4UnionSolid ∗ union = new G4UnionSolid ( "Box+C y l i n d e r " , box , cyl ) ; G4IntersectionSolid ∗ intersection = new G4IntersectionSolid ( "Box∗ C y l i n d e r " , box , cyl ) ; G4SubtractionSolid ∗ subtraction = new G4SubtractionSolid ( "Box−C y l i n d e r " , 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 t r u c Y 45 d e g r e e s
G4ThreeVector zTrans ( 0 , 0 , 5 0 ) ;
// d i c h chuyen t h e o t r u c 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 = 6 0 . ∗ cm ; G4double hz = 2 5 . ∗ cm ; G4double startAngle = 0 . ∗ deg ; G4double spanningAngle = 3 6 0 . ∗ 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
c o n s t G4String&
Name ,
G4FieldManager ∗
pFieldMgr =0,
G4VSensitiveDetector ∗ pSDetector =0, G4UserLimits ∗
pULimits =0,
G4bool
Optimise=t r u e )
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−C a l o r i m e t e r " ) ; emCalorimeterLV−>SetRegion ( emCalorimeter ) ; emCalorimeter−>AddRootLogicalVolume ( emCalorimeterLV ) ;
34
CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR
4.1.3
Đặng Nguyên Phương
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: G4RotationMatrix ∗
G4PVPlacement (
c o n s t G4ThreeVector& G4LogicalVolume ∗ c o n s t G4String&
trong đó: pRot tlate pCurrentLogical pName pMotherLogical pMany pCopyNo pSurfChk
pRot , tlate , pCurrentLogical , pName ,
G4LogicalVolume ∗
pMotherLogical ,
G4bool
pMany ,
G4int
pCopyNo ,
G4bool
pSurfChk=f a l s e )
ma trận quay ma trận chuyển dời khối luận lý con được sử dụng tên của đối tượng G4PVPlacement được tạo khối mẹ để sử dụng tiếp theo (mặc định: 0) số ID của phương thức sắp đặt này đặ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 ,
// k h o i l u a n l y
" Tracker " ,
// t e n cua k h o i
worldLog ,
// k h o i me
false ,
// khong b o o l e a n
0) ;
// c h i s o
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 ,
c o n s t 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 ( c o n s t G4String&
pName ,
G4LogicalVolume ∗
pCurrentLogical ,
G4LogicalVolume ∗
pMotherLogical ,
c o n s t EAxis
pAxis ,
c o n s t G4int
nReplicas ,
c o n s t G4double
width ,
c o n s t G4double
offset=0 )
trong đó: pName pCurrentLogical pMotherLogical pAxis nReplicas width offset
tên khối luận lý con được sử dụng khối mẹ trục sắp xếp các khối con số lượng khối được lặp bề dày 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) + of f set (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) + of f set (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 ( " L i n e a r Array " , pRepLogical , pContainingMother , kXAxis , 5 , 10∗ mm ) ; G4PVReplica repR ( " R S l i c e s " , pRepRLogical , pContainingMother , kRho , 5 , 10∗ mm , 0 ) ; G4PVReplica repRZ ( " R Z S l i c e s " , pRepRZLogical , &repR , kZAxis , 5 , 10∗ mm ) ; G4PVReplica repRZPhi ( " R Z P h i S l i c e s " , 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
G4PVParameterised ( c o n s t G4String&
Đặng Nguyên Phương
pName ,
G4LogicalVolume ∗
pCurrentLogical ,
G4LogicalVolume ∗
pMotherLogical ,
c o n s t EAxis
pAxis ,
c o n s t G4int
nReplicas ,
G4VPVParameterisation ∗ pParam , G4bool
trong đó: pName pCurrentLogical pMotherLogical pAxis nReplicas pParam pSurfChk
pSurfChk=f a l s e )
tên khối luận lý con được sử dụng khối mẹ trục sắp xếp các khối con số lượng khối được lặp bề dày đặ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 : p u b l i c G4VPVParameterisation { public : ChamberParameterisation ( ) ; v i r t u a l ~ChamberParameterisation ( ) ; v i r t u a l v o i d ComputeTransformation // v i t r i , quay t r u c ( c o n s t G4int copyNo , G4VPhysicalVolume ∗ physVol ) c o n s t ; v i r t u a l v o i d ComputeDimensions // k i c h thuoc ( G4Box& trackerLayer , c o n s t G4int copyNo , c o n s t G4VPhysicalVolume ∗ physVol ) c o n s t ; v i r t u a l G4VSolid ∗ ComputeSolid // hinh dang ( c o n s t G4int copyNo , G4VPhysicalVolume ∗ physVol ) ; v i r t u a l G4Material ∗ ComputeMaterial // vat l i e u , vung nhay ( c o n s t G4int copyNo , G4VPhysicalVolume ∗ physVol , c o n s t G4VTouchable ∗ parentTouch =0) ; // khong nen dung G4VTouchable cho t r u o n g hop tham s o hoa thong thuong }; v o i d ChamberParameterisation : : ComputeTransformation ( c o n s t G4int copyNo , G4VPhysicalVolume ∗ physVol ) c o n s t { G4double Xposition = . . . // t h e o 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
v o i d ChamberParameterisation : : ComputeDimensions ( G4Box& trackerChamber , c o n s t G4int copyNo , c o n s t G4VPhysicalVolume ∗ physVol ) c o n s t { G4double XhalfLength = . . . // t h e o copyNo trackerChamber . SetXHalfLength ( XhalfLength ) ; trackerChamber . SetYHalfLength ( YhalfLength ) ; trackerChamber . SetZHalfLength ( ZHalfLength ) ; } G4VSolid ∗ ChamberParameterisation : : ComputeSolid ( c o n s t G4int copyNo , G4VPhysicalVolume ∗ physVol ) { G4VSolid ∗ solid ; i f ( copyNo == . . . ) solid = myBox ; e l s e i f ( copyNo == . . . ) solid = myTubs ; ... r e t u r n solid ; } G4Material ∗ ComputeMaterial // vat l i e u , vung nhay , v i s A t t ( c o n s t G4int copyNo , G4VPhysicalVolume ∗ physVol , c o n s t G4VTouchable ∗ parentTouch =0) ; { G4Material ∗ mat ; i f ( copyNo == . . . ) { mat = material1 ; physVol−>GetLogicalVolume ( )−>SetVisAttributes ( att1 ) ; } ... r e t u r n 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 ( c o n s t G4String& pName , G4LogicalVolume ∗ pCurrentLogical , G4LogicalVolume ∗ pMotherLogical , c o n s t EAxis pAxis , c o n s t G4int nDivisions , c o n s t 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 ( c o n s t G4String& pName , G4LogicalVolume ∗ pCurrentLogical , G4LogicalVolume ∗ pMotherLogical , c o n s t EAxis pAxis , c o n s t G4double width , c o n s t 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 ( c o n s t G4String& pName , G4LogicalVolume ∗ pCurrentLogical , G4LogicalVolume ∗ pMotherLogical , c o n s t EAxis pAxis , c o n s t G4int nDivisions , c o n s t G4double width , c o n s t G4double offset )
trong đó: pName pCurrentLogical pMotherLogical pAxis
tên khối luận lý con được sử dụng khối mẹ trục sắp xếp các khối con 42
CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR
nDivisions width offset
Đặng Nguyên Phương
số lượng khối được lặp bề dày 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 . 3 9 0 ∗ g/ cm3 ; a = 3 9 . 9 5 ∗ g/ mole ; G4Material ∗ lAr = new G4Material ( name=" l i q u i d A r g o n " , 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 H2 O. G4double z , a , density ; G4String name , symbol ; G4int ncomponents , natoms ; a = 1 . 0 1 ∗ g/ mole ; G4Element ∗ elH
= new G4Element ( name=" Hydrogen " , symbol="H" , z= 1 . , a ) ;
a = 1 6 . 0 0 ∗ g/ mole ; G4Element ∗ elO
= new G4Element ( name="Oxygen" , symbol="O" , z= 8 . , a ) ;
density = 1 . 0 0 0 ∗ 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 = 1 4 . 0 1 ∗ g/ mole ;
44
CHƯƠNG 4. XÂY DỰNG HỆ DETECTOR G4Element ∗ elN
Đặng Nguyên Phương
= new G4Element ( name=" N i t r o g e n " , symbol="N" , z= 7 . , a ) ;
a = 1 6 . 0 0 ∗ g/ mole ; G4Element ∗ elO
= new G4Element ( name="Oxygen" , symbol="O" , z= 8 . , a ) ;
density = 1 . 2 9 0 ∗ 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 . 0 5 ∗ mg/ cm3 ; G4Material ∗ water1 = new G4Material ( "Water_1 . 0 5 " , density , "G4_WATER" ) ; density = 1 . 0 3 ∗ mg/ cm3 ; G4NistManager ∗ man = G4NistManager : : Instance ( ) ; G4Material ∗ water2 = man−>BuildMaterialWithNewDensity ( "Water_1 . 0 3 " , " 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 c a c hat
ConstructProcess ( ) ;
// xay dung c a c qua t r i n h vat l y
SetCuts ( ) ;
// t h i e t l a p c a c g i a t r i nguong c a t
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ạt khối lượng G4double GetPDGMass() G4double GetPDGWidth() bề rộng phân rã G4double GetPDGCharge() điện tích spin G4double GetPDGSpin() G4double GetPDGMagneticMoment() moment từ tính chẵn lẻ (= 0 nếu không xác định) G4int GetPDGiParity() G4int GetPDGiConjugation() liên hợp điện tích (= 0 nếu không xác định) isospin G4double GetPDGIsospin() G4double GetPDGIsospin3() thành phần thứ 3 của isospin G4int GetPDGiGParity() G-parity (= 0 nếu không xác định) G4String GetParticleType() loại hạt G4String GetParticleSubType() loại hạt số lepton G4int GetLeptonNumber() số baryon G4int GetBaryonNumber() G4int GetPDGEncoding() mã số PDG G4int 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 G4ThreeVector theMomentumDirection G4ParticleDefinition* theParticleDefinition G4double theDynamicalSpin G4ThreeVector thePolarization G4double theMagneticMoment G4double theKineticEnergy G4double theProperTime G4double theDynamicalCharge G4ElectronOccupancy* theElectronOccupancy
5.2
khối lượng động học vector xung lượng được chuẩn hóa định nghĩa của hạt spin động học vector phân cực moment từ động học động năng thời gian điện tích động học quỹ đạo electron trong ion
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 v o i d MyPhysicsList : : ConstructProcess ( ) { // Dinh n g h i a c a c qua t r i n h van chuyen AddTransportation ( ) ; // Cac qua t r i n h d i e n tu ConstructEM ( ) ; } v o i d MyPhysicsList : : ConstructEM ( ) { // Lay con t r o cho G 4 P h y s i c s L i s t H e l p e r G4PhysicsListHelper ∗ ph = G4PhysicsListHelper : : GetPhysicsListHelper ( ) ; //
Lay con t r o cho gamma
G4ParticleDefinition ∗ particle = G4Gamma : : GammaDefinition ( ) ; // Xay dung va k h a i bao c a c qua t r i n h 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 tán xạ Compton G4ComptonScattering tạo cặp G4GammaConversion Photon quang điện G4PhotoElectricEffect tạo cặp muon G4GammaConversionToMuons ion hóa G4eIonisation bremsstrahlung G4eBremsstrahlung Electron / tán xạ nhiều lần G4eMultipleScattering Positron hủy positron phát 2 gamma G4eplusAnnihilation hủy positron phát 2 muon G4AnnihiToMuPair hủy positron phát hadron G4eeToHadrons ion hóa G4MuIonisation bremsstrahlung G4MuBremsstrahlung Muon tạo cặp e+ e− G4MuPairProduction tán xạ nhiều lần G4MuMultipleScattering ion hóa G4hIonisation ion hóa cho ion G4ionIonisation ion hóa cho các hạt nặng G4hhIonisation Hadron/Ion 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 bức xạ synchrotron G4SynchrotronRadiation Tia X / bức xạ transition G4TransitionRadiation photon bức xạ Cerenkov G4Cerenkov quang 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: #i n c l u d e "G4Decay . hh" v o i d 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 G4NeutronCaptureAtRest Bắt neutron G4AntiProtonAnnihilationAtRest Hủy anti-proton Hủy anti-neutron G4AntiNeutronAnnihilationAtRest − Bắt µ G4MuonMinusCaptureAtRest Mô hình CHIPS cho các hạt G4QCaptureAtRest điện tích âm Bảng 5.5: Tương tác cho hadron trong trạng thái Tương tác Loại hạt G4HadronElasticProcess hạt và phản hạt của G4HadronInelasticProcess hạt và phản hạt của tất cả G4HadronFissionProcess G4CaptureProcess hạt và phản hạt của
chuyển động p,n,π,K,Λ,Σ,... p,n,π,K,Λ,Σ,... n
// Them qua t r i n h phan r a G4Decay ∗ theDecayProcess = new G4Decay ( ) ; theParticleIterator−>reset ( ) ; w h i l e ( ( ∗ theParticleIterator ) ( ) ) { G4ParticleDefinition ∗ particle = theParticleIterator−>value ( ) ; G4ProcessManager ∗ pmanager = particle−>GetProcessManager ( ) ; i f ( theDecayProcess−>IsApplicable ( ∗ particle ) ) { pmanager −>AddProcess ( theDecayProcess ) ; // t h i e t l a p 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 r a G4VDecayChannel ∗ mode ; // p i 0 −> gamma + gamma
53
CHƯƠNG 5. CÁC QUÁ TRÌNH VẬT LÝ
Đặng Nguyên Phương
mode = new G4PhaseSpaceDecayChannel ( " p i 0 " , 0 . 9 8 8 , 2 , "gamma" , "gamma" ) ; table−>Insert ( mode ) ; // p i 0 −> gamma + e+ + e− mode = new G4DalitzDecayChannel ( " p i 0 " , 0 . 0 1 2 , " 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 // T h i e t l a p t h o i g i a n song G4Neutron : : Neutron ( )−>SetPDGLifeTime ( 8 8 5 . 7 ∗ second ) ; // Cho phep phan r a n e u t r o n G4Neutron : : Neutron ( )−>SetPDGStable ( f a l s e ) ;
5.3 5.3.1
Thiết lập ngưỡng cắt 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 // G i o i han buoc chay G4StepLimiter ∗ stepLimiter = new G4StepLimiter ( ) ; pmanager−>AddDiscreteProcess ( StepLimiter ) ;
54
CHƯƠNG 5. CÁC QUÁ TRÌNH VẬT LÝ
5.3.2
Đặng Nguyên Phương
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ụ: v o i d BeamTestPhysicsList : : SetCuts ( ) { SetCutValue ( defaultCutValue , "gamma" ) ; SetCutValue ( defaultCutValue , " e−" ) ; SetCutValue ( defaultCutValue , " e+" ) ; // Chon vung G4Region ∗
aRegion =
G4RegionStore : : GetInstance ( )−>GetRegion ( "NewRegion" ) ; // Khai bao d o i tuong c u t va t h i e t l a p g i a t r i cho no G4ProductionCuts ∗ cuts = new G4ProductionCuts ; cuts−>SetProductionCut ( 0 . 0 1 ∗ mm ) ; // cung g i a t r i cho gamma , e +, e− // Gan c u t 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ụ: v o i d T01PrimaryGeneratorAction : : GeneratePrimaries ( G4Event ∗ anEvent ) { G4ParticleDefinition ∗ particle ; G4int i = ( i n t ) ( 5 . ∗ G4UniformRand ( ) ) ; switch (i) { c a s e 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 ; } v o i d 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 ( " myCellScorer " ) ; G4SDManager : : GetSDMpointer ( )−>AddNewDetector ( myScorer ) ; myCellLog−>SetSensitiveDetector ( myScorer ) ; G4VPrimitiveSensitivity ∗ totalSurfFlux = new G4PSFlatSurfaceFlux ( " TotalSurfFlux " ) ; 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ệu Hướ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 #d e f i n e B4Analysis_h 1 #i n c l u d e " g 4 a n a l y s i s _ d e f s . hh" u s i n g namespace G4Root ; // u s i n g namespace G4Xml ; // u s i n g namespace G4Csv ; #e n d i f
B4Analysis.cc #i n c l u d e " B 4 A n a l y s i s . hh" v o i d B4RunAction : : BeginOfRunAction ( c o n s t G4Run ∗ run ) { // Tao A n a l y s i s Manager G4AnalysisManager ∗ man = G4AnalysisManager : : Instance ( ) ; // Mo f i l e output man−>OpenFile ( "B4" ) ; // Tao h i s t o g r a m man−>CreateH1 ( " 0" , "Edep i n a b s o r b e r " , 1 0 0 , 0 . , 800∗ MeV ) ; man−>CreateH1 ( " 1" , "Edep i n gap " , 1 0 0 , 0 . , 100∗ MeV ) ; } v o i d N4EventAction : : EndOfEventAction ( c o n s t G4Run ∗ aRun ) { // Luu g i a t r i vao h i s t o g r a m 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
} v o i d N4RunAction : : EndOfRunAction ( c o n s t G4Run ∗ aRun ) { // Luu h i s t o g r a m 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 CreateNtupleDColumn ( " Eabs " ) ; man−>CreateNtupleDColumn ( "Egap" ) ;
63
CHƯƠNG 7. XỬ LÝ DỮ LIỆU
Đặng Nguyên Phương
man−>FinishNtuple ( ) ; } v o i d N4EventAction : : EndOfEventAction ( c o n s t 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 Compostela.
66
Phụ lục A
Một số lệnh thực thi cơ bản Lệnh cơ bản pwd cd ls history !historyID ?command help command exit
hiển thị vi trí thư mục hiện hành chuyển đổi thư mục liệt kê các lệnh và thư mục con đang có trong thư mục hiện hành xem lại các lệnh đã sử dụng sử dụng lại lệnh trước đó xem các tham số của lệnh xem phần giúp đỡ sử dụng lệnh 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& G4double G4double G4double
pName, pX, pY, pZ) pX = 30, pY = 40, pZ = 60
G4Tubs(const G4String& G4double G4double G4double G4double G4double
pName, pRMin, pRMax, pDz, pSPhi, 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
G4Trd(const G4String& G4double G4double G4double G4double G4double
Đặng Nguyên Phương
pName, dx1, dx2, dy1, dy2, dz) dx1 = 30, dx2 = 10, dy1 = 40, dy2 = 15, dz = 60
G4Trap(const G4String& G4double G4double G4double G4double
pName, pZ, pY, pX, pLTX)
G4Trap(const G4String& G4double G4double G4double G4double G4double G4double
pName, pDz, G4double pPhi, G4double pDx1, G4double pAlp1,G4double pDx3, G4double pAlp2)
G4Cons(const G4String& G4double G4double G4double G4double G4double G4double G4double
pName, pRmin1, pRmax1, pRmin2, pRmax2, pDz, pSPhi, pDPhi)
G4Sphere(const G4String& pName, G4double pRmin, G4double pRmax, G4double pSPhi, G4double pDPhi, G4double pSTheta, G4double pDTheta)
pTheta, pDy1, pDx2, pDx1=30, pDx2=40, pDy1=40, pDx3=10, pDx4=14, pDy2, pDy2=16, pDz=60, pTheta=20*Degree, pPhi=5*Degree, pDx4, pAlp1=pAlp2=10*Degree
pRmin1 = 5, pRmax1 = 10, pRmin2 = 20, pRmax2 = 25, pDz = 40, pSPhi = 0, pDPhi = 43*Pi
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& G4double G4double G4int G4int const G4double const G4double const G4double
pName, phiStart, phiTotal, numSide, numZPlanes, zPlane[], rInner[], rOuter[] )
G4Polyhedra(const G4String& G4double G4double G4int G4int const G4double const G4double
pName, phiStart, phiTotal, numSide, numRZ, r[], 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
G4EllipticalTube(const G4String& G4double G4double G4double
Đặng Nguyên Phương
pName, Dx, Dy, Dz)
Dx = 5, Dy = 10, Dz = 20
G4Ellipsoid(const G4String& G4double G4double G4double G4double G4double
pName, pxSemiAxis, pySemiAxis, pzSemiAxis, pzBottomCut=0, pzTopCut=0) pxSemiAxis = 10, pySemiAxis = 20, pzSemiAxis = 50, pzBottomCut = -10, pzTopCut = 40
G4EllipticalCone(const G4String& G4double G4double G4double G4double
pName, pxSemiAxis, pySemiAxis, zMax, pzTopCut) pxSemiAxis = 30/75, pySemiAxis = 60/75, zMax = 50, pzTopCut = 25
G4Paraboloid(const G4String& G4double G4double G4double
pName, Dz, R1, R2)
R1 = 20, R2 = 35, Dz = 20
73
PHỤ LỤC B. CÁC KHỐI HÌNH HỌC CƠ BẢN
G4Hype(const G4String& G4double G4double G4double G4double G4double
pName, innerRadius, outerRadius, innerStereo, outerStereo, halfLenZ)
Đặng Nguyên Phương
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 polygon, std::vector zsections) G4ExtrudedSolid(const G4String& pName, std::vector 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& G4double G4double G4double G4double
pName, twistedangle, pDx, pDy, 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& G4double G4double G4double G4double G4double
pName, twistedangle, pDxx1, pDxx2, pDy, pDz)
G4TwistedTrap(const G4String& G4double G4double G4double G4double G4double G4double G4double G4double G4double G4double G4double
pName, twistedangle, pDz, pTheta, pPhi, pDx1 = 30, pDx2 = 40, pDy1 = 40, pDx3 = 10, pDx4 = pDy1, pDx1, 14, pDy2 = 16, pDz = 60, pTheta = 20*Degree, pDphi = pDx2, 5*Degree, pAlph = 10*Degree, twistedangle = pDy2, 30*Degree pDx3, pDx4, pAlph)
G4TwistedTrd(const G4String& G4double G4double G4double G4double G4double G4double
pName, pDx1, pDx2, pDy1, pDy2, pDz, twistedangle) dx1 = 30, dx2 = 10, dy1 = 40, dy2 = 15, dz = 60, twistedangle = 30*Degree
G4GenericTrap(const G4String& pName, G4double pDz, const std::vector& vertices) pDz = 25 vertices = {-30, -30}, {-30, 30}, {30, 30}, {30, -30} {-5, -20}, {-20, 20}, {20, 20}, {20, -20}
G4TwistedTubs(const G4String& G4double G4double G4double G4double G4double
pName, twistedangle, endinnerrad, endouterrad, halfzlen, 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
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
G4_Cu G4_Zn G4_Ga G4_Ge G4_As G4_Se G4_Br G4_Kr G4_Rb G4_Sr G4_Y G4_Zr G4_Nb G4_Mo G4_Tc G4_Ru G4_Rh G4_Pd G4_Ag G4_Cd G4_In G4_Sn G4_Sb G4_Te G4_I G4_Xe G4_Cs G4_Ba G4_La G4_Ce G4_Pr G4_Nd G4_Pm G4_Sm G4_Eu G4_Gd G4_Tb G4_Dy G4_Ho
8.96 7.133 5.904 5.323 5.73 4.5 0.0070721 0.00347832 1.532 2.54 4.469 6.506 8.57 10.22 11.5 12.41 12.41 12.02 10.5 8.65 7.31 7.31 6.691 6.24 4.93 0.00548536 1.873 3.5 6.154 6.657 6.71 6.9 7.22 7.46 5.243 7.9004 8.229 8.55 8.795 77
Đặng Nguyên Phương
322 330 334 350 347 348 343 352 363 366 379 393 417 424 428 441 449 470 470 469 488 488 487 485 491 482 488 491 501 523 535 546 560 574 580 591 614 628 650
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
G4_Er G4_Tm G4_Yb G4_Lu G4_Hf G4_Ta G4_W G4_Re G4_Os G4_Ir G4_Pt G4_Au G4_Hg G4_Tl G4_Pb G4_Bi G4_Po G4_At G4_Rn G4_Fr G4_Ra G4_Ac G4_Th G4_Pa G4_U G4_Np G4_Pu G4_Am G4_Cm G4_Bk G4_Cf
9.066 9.321 6.73 9.84 13.31 16.654 19.3 21.02 22.57 22.42 21.45 19.32 13.546 11.72 11.35 9.747 9.32 9.32 0.00900662 1 5 10.07 11.72 15.37 18.95 20.25 19.84 13.67 13.51 14 10
Đặng Nguyên Phương
658 674 684 694 705 718 727 736 746 757 790 790 800 810 823 823 830 825 794 827 826 841 847 878 890 902 921 934 939 952 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
3
2
3
13
4
4
6 0.7755 7 0.035057 8 0.0523159 9 0.017422 20 0.018378 G4_ACETONE 1 0.104122 6 0.620405 8 0.275473 G4_ACETYLENE 1 0.077418 6 0.922582 G4_ADENINE 1 0.037294 6 0.44443 7 0.518276 G4_ADIPOSE_TISSUE_ICRP 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 G4_AIR 6 0.000124 7 0.755268 8 0.231781 18 0.012827 G4_ALANINE 1 0.0791899 6 0.404439 7 0.157213
Đặng Nguyên Phương
0.7899
64.2
0.0010967
58.2
1.35
71.4
0.92
63.2
0.00120479
85.7
1.42
71.9
79
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
2
3
2
3
2
6
3
2
3
2
8 0.359159 G4_ALUMINUM_OXIDE Al_2O_3 8 0.470749 13 0.529251 G4_AMBER 1 0.10593 6 0.788974 8 0.105096 G4_AMMONIA 1 0.177547 7 0.822453 G4_ANILINE 1 0.075759 6 0.773838 7 0.150403 G4_ANTHRACENE 1 0.05655 6 0.94345 G4_B-100_BONE 1 0.0654709 6 0.536944 7 0.0215 8 0.032085 9 0.167411 20 0.176589 G4_BAKELITE 1 0.057441 6 0.774591 8 0.167968 G4_BARIUM_FLUORIDE 9 0.21672 56 0.78328 G4_BARIUM_SULFATE 8 0.274212 16 0.137368 56 0.58842 G4_BENZENE 1 0.077418 6 0.922582
Đặng Nguyên Phương
3.97
145.2
1.1
63.2
0.000826019
53.7
1.0235
66.2
1.283
69.5
1.45
85.9
1.25
72.4
4.89
375.9
4.5
285.7
0.87865
80
63.4
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
2
3
14
8
9
G4_BERYLLIUM_OXIDE 4 0.36032 8 0.63968 G4_BGO 8 0.154126 32 0.17482 83 0.671054 G4_BLOOD_ICRP 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 G4_BONE_COMPACT_ICRU 1 0.063984 6 0.278 7 0.027 8 0.410016 12 0.002 15 0.07 16 0.002 20 0.147 G4_BONE_CORTICAL_ICRP 1 0.047234 6 0.14433 7 0.04199 8 0.446096 12 0.0022 15 0.10497 16 0.00315
Đặng Nguyên Phương
3.01
93.2
7.13
534.1
1.06
75.2
1.85
91.9
1.85
106.4
81
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
2
2
13
2
3
5
2
3
20 0.20993 30 0.0001 G4_BORON_CARBIDE 5 0.78261 6 0.21739 G4_BORON_OXIDE 5 0.310551 8 0.689449 G4_BRAIN_ICRP 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 G4_BUTANE 1 0.173408 6 0.826592 G4_N-BUTYL_ALCOHOL 1 0.135978 6 0.648171 8 0.215851 G4_C-552 1 0.02468 6 0.501611 8 0.004527 9 0.465209 14 0.003973 G4_CADMIUM_TELLURIDE 48 0.468355 52 0.531645 G4_CADMIUM_TUNGSTATE
Đặng Nguyên Phương
2.52
84.7
1.812
99.6
1.03
73.3
0.00249343
48.3
0.8098
59.9
1.76
86.8
6.2
539.3
7.9
468.3
82
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
3
2
2
3
3
2
2
3
3
4
8 0.177644 48 0.312027 74 0.510329 G4_CALCIUM_CARBONATE 6 0.120003 8 0.479554 20 0.400443 G4_CALCIUM_FLUORIDE 9 0.486659 20 0.513341 G4_CALCIUM_OXIDE 8 0.285299 20 0.714701 G4_CALCIUM_SULFATE 8 0.470095 16 0.235497 20 0.294408 G4_CALCIUM_TUNGSTATE 8 0.22227 20 0.139202 74 0.638528 G4_CARBON_DIOXIDE CO_2 6 0.272916 8 0.727084 G4_CARBON_TETRACHLORIDE 6 0.078083 17 0.921917 G4_CELLULOSE_CELLOPHANE 1 0.062162 6 0.444462 8 0.493376 G4_CELLULOSE_BUTYRATE 1 0.067125 6 0.545403 8 0.387472 G4_CELLULOSE_NITRATE 1 0.029216 6 0.271296 7 0.121276
Đặng Nguyên Phương
2.8
136.4
3.18
166
3.3
176.1
2.96
152.3
6.062
395
0.00184212
85
1.594
166.3
1.42
77.6
1.2
74.6
1.49
87
83
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
5
2
2
3
3
10
2
3
8 0.578212 G4_CERIC_SULFATE 1 0.107596 7 0.0008 8 0.874976 16 0.014627 58 0.002001 G4_CESIUM_FLUORIDE 9 0.125069 55 0.874931 G4_CESIUM_IODIDE 53 0.488451 55 0.511549 G4_CHLOROBENZENE 1 0.044772 6 0.640254 17 0.314974 G4_CHLOROFORM 1 0.008443 6 0.100613 17 0.890944 G4_CONCRETE 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 G4_CYCLOHEXANE 1 0.143711 6 0.856289 G4_1,2-DICHLOROBENZENE 1 0.027425 6 0.490233 17 0.482342
Đặng Nguyên Phương
1.03
76.7
4.115
440.7
4.51
553.1
1.1058
89.1
1.4832
156
2.3
135.2
0.779
56.4
1.3048
106.5
84
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
4
3
3
4
4
2
3
3
2
4
G4_DICHLORODIETHYL_ETHER 1 0.0563811 6 0.335942 8 0.111874 17 0.495802 G4_1,2-DICHLOROETHANE 1 0.04074 6 0.242746 17 0.716514 G4_DIETHYL_ETHER 1 0.135978 6 0.648171 8 0.215851 G4_N,N-DIMETHYL_FORMAMIDE 1 0.096523 6 0.492965 7 0.191625 8 0.218887 G4_DIMETHYL_SULFOXIDE 1 0.077403 6 0.307467 8 0.204782 16 0.410348 G4_ETHANE 1 0.201115 6 0.798885 G4_ETHYL_ALCOHOL 1 0.131269 6 0.521437 8 0.347294 G4_ETHYL_CELLULOSE 1 0.090027 6 0.585182 8 0.324791 G4_ETHYLENE 1 0.143711 6 0.856289 G4_EYE_LENS_ICRP 1 0.099269
1.2199
Đặng Nguyên Phương
103.3
1.2351
111.9
0.71378
60
0.9487
66.6
1.1014
98.6
0.00125324
45.4
0.7893
62.9
1.13
69.3
0.00117497
50.7
1.1
73.3
85
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
2
2
2
7
3
3
3
3
3
6 0.19371 7 0.05327 8 0.653751 G4_FERRIC_OXIDE 8 0.300567 26 0.699433 G4_FERROBORIDE 5 0.162174 26 0.837826 G4_FERROUS_OXIDE 8 0.222689 26 0.777311 G4_FERROUS_SULFATE 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 G4_FREON-12 6 0.099335 9 0.314247 17 0.586418 G4_FREON-12B2 6 0.057245 9 0.181096 35 0.761659 G4_FREON-13 6 0.114983 9 0.545621 17 0.339396 G4_FREON-13B1 6 0.080659 9 0.382749 35 0.536592 G4_FREON-13I1 6 0.061309 9 0.290924
Đặng Nguyên Phương
5.2
227.3
7.15
261
5.7
248.6
1.024
76.4
1.12
143
1.8
284.9
0.95
126.6
1.5
210.5
1.8
293.5
86
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
3
2
5
6
5
4
3
4
53 0.647767 G4_GADOLINIUM_OXYSULFIDE 8 0.084528 16 0.08469 64 0.830782 G4_GALLIUM_ARSENIDE 31 0.482019 33 0.517981 G4_GEL_PHOTO_EMULSION 1 0.08118 6 0.41606 7 0.11124 8 0.38064 16 0.01088 G4_Pyrex_Glass 5 0.0400639 8 0.539561 11 0.0281909 13 0.011644 14 0.377219 19 0.00332099 G4_GLASS_LEAD 8 0.156453 14 0.080866 22 0.008092 33 0.002651 82 0.751938 G4_GLASS_PLATE 8 0.4598 11 0.0964411 14 0.336553 20 0.107205 G4_GLUCOSE 1 0.071204 6 0.363652 8 0.565144 G4_GLUTAMINE 1 0.0689651 6 0.410926
Đặng Nguyên Phương
7.44
493.3
5.31
384.9
1.2914
74.8
2.23
134
6.22
526.4
2.4
145.4
1.54
77.2
1.46
73.3
87
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
3
4
4
2
2
4
3
3
2
3
7 0.191681 8 0.328427 G4_GLYCEROL 1 0.0875539 6 0.391262 8 0.521184 G4_GUANINE 1 0.033346 6 0.39738 7 0.463407 8 0.105867 G4_GYPSUM 1 0.023416 8 0.557572 16 0.186215 20 0.232797 G4_N-HEPTANE 1 0.160937 6 0.839063 G4_N-HEXANE 1 0.163741 6 0.836259 G4_KAPTON 1 0.026362 6 0.691133 7 0.07327 8 0.209235 G4_LANTHANUM_OXYBROMIDE 8 0.068138 35 0.340294 57 0.591568 G4_LANTHANUM_OXYSULFIDE 8 0.0936 16 0.093778 57 0.812622 G4_LEAD_OXIDE 8 0.071682 82 0.928318 G4_LITHIUM_AMIDE
Đặng Nguyên Phương
1.2613
72.6
1.58
75
2.32
129.7
0.68376
54.4
0.6603
54
1.42
79.6
6.28
439.7
5.86
421.2
9.53
766.7
1.178
55.5
88
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
3
2
2
2
2
3
13
5
1 0.087783 3 0.302262 7 0.609955 G4_LITHIUM_CARBONATE 3 0.187871 6 0.16255 8 0.649579 G4_LITHIUM_FLUORIDE 3 0.267585 9 0.732415 G4_LITHIUM_HYDRIDE 1 0.126797 3 0.873203 G4_LITHIUM_IODIDE 3 0.051858 53 0.948142 G4_LITHIUM_OXIDE 3 0.46457 8 0.53543 G4_LITHIUM_TETRABORATE 3 0.082085 5 0.25568 8 0.662235 G4_LUNG_ICRP 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 G4_M3_WAX 1 0.114318
Đặng Nguyên Phương
2.11
87.9
2.635
94
0.82
36.5
3.494
485.1
2.013
73.6
2.44
94.6
1.05
75.3
1.05
67.9
89
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
3
2
2
3
2
2
3
5
6
6 0.655824 8 0.0921831 12 0.134792 20 0.002883 G4_MAGNESIUM_CARBONATE 6 0.142455 8 0.569278 12 0.288267 G4_MAGNESIUM_FLUORIDE 9 0.609883 12 0.390117 G4_MAGNESIUM_OXIDE 8 0.396964 12 0.603036 G4_MAGNESIUM_TETRABORATE 5 0.240837 8 0.62379 12 0.135373 G4_MERCURIC_IODIDE 53 0.55856 80 0.44144 G4_METHANE 1 0.251306 6 0.748694 G4_METHANOL 1 0.125822 6 0.374852 8 0.499326 G4_MIX_D_WAX 1 0.13404 6 0.77796 8 0.03502 12 0.038594 22 0.014386 G4_MS20_TISSUE 1 0.081192 6 0.583442 7 0.017798 8 0.186381
Đặng Nguyên Phương
2.958
118
3
134.3
3.58
143.8
2.53
108.3
6.36
684.5
0.000667151
41.7
0.7914
67.6
0.99
60.9
1
75.1
90
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
13
9
4
4
2
12 0.130287 17 0.0009 G4_MUSCLE_SKELETAL_ICRP 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 G4_MUSCLE_STRIATED_ICRU 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 G4_MUSCLE_WITH_SUCROSE 1 0.0982341 6 0.156214 7 0.035451 8 0.710101 G4_MUSCLE_WITHOUT_SUCROSE 1 0.101969 6 0.120058 7 0.035451 8 0.742522 G4_NAPHTHALENE 1 0.062909 6 0.937091
Đặng Nguyên Phương
1.04
75.3
1.04
74.7
1.11
74.3
1.07
74.2
1.145
68.4
91
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
4
2
4
4
4
4
2
2
2
8
G4_NITROBENZENE 1 0.040935 6 0.585374 7 0.113773 8 0.259918 G4_NITROUS_OXIDE 7 0.636483 8 0.363517 G4_NYLON-8062 1 0.103509 6 0.648416 7 0.0995361 8 0.148539 G4_NYLON-6/6 1 0.097976 6 0.636856 7 0.123779 8 0.141389 G4_NYLON-6/10 1 0.107062 6 0.680449 7 0.099189 8 0.1133 G4_NYLON-11_RILSAN 1 0.115476 6 0.720818 7 0.0764169 8 0.0872889 G4_OCTANE 1 0.158821 6 0.841179 G4_PARAFFIN 1 0.148605 6 0.851395 G4_N-PENTANE 1 0.167635 6 0.832365 G4_PHOTO_EMULSION 1 0.0141
Đặng Nguyên Phương
1.19867
75.8
0.00183094
84.9
1.08
64.3
1.14
63.9
1.14
63.2
1.425
61.6
0.7026
54.7
0.93
55.9
0.6262
53.6
3.815
92
331
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
2
2
3
3
3
2
3
3
3
6 0.072261 7 0.01932 8 0.066101 16 0.00189 35 0.349103 47 0.474105 53 0.00312 G4_PLASTIC_SC_VINYLTOLUENE 1.032 1 0.085 6 0.915 G4_PLUTONIUM_DIOXIDE 11.46 8 0.118055 94 0.881945 G4_POLYACRYLONITRILE 1.17 1 0.0569829 6 0.679055 7 0.263962 G4_POLYCARBONATE 1.2 1 0.055491 6 0.755751 8 0.188758 G4_POLYCHLOROSTYRENE 1.3 1 0.061869 6 0.696325 17 0.241806 G4_POLYETHYLENE (C_2H_4)_N-Polyethylene 0.94 1 0.143711 6 0.856289 G4_MYLAR 1.4 1 0.041959 6 0.625016 8 0.333025 G4_PLEXIGLASS 1.19 1 0.080538 6 0.599848 8 0.319614 G4_POLYOXYMETHYLENE 1.425 1 0.067135 93
Đặng Nguyên Phương
64.7
746.5
69.6
73.1
81.7
57.4
78.7
74
77.4
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
2
2
2
3
3
3
3
3
3
3
6 0.400017 8 0.532848 G4_POLYPROPYLENE (C_2H_4)_N-Polypropylene 0.9 56.5 1 0.143711 6 0.856289 G4_POLYSTYRENE 1.06 68.7 1 0.077418 6 0.922582 G4_TEFLON 2.2 99.1 6 0.240183 9 0.759817 G4_POLYTRIFLUOROCHLOROETHYLENE 2.1 120.7 6 0.20625 9 0.489354 17 0.304395 G4_POLYVINYL_ACETATE 1.19 73.7 1 0.070245 6 0.558066 8 0.371689 G4_POLYVINYL_ALCOHOL 1.3 69.7 1 0.091517 6 0.545298 8 0.363185 G4_POLYVINYL_BUTYRAL 1.12 67.2 1 0.092802 6 0.680561 8 0.226637 G4_POLYVINYL_CHLORIDE 1.3 108.2 1 0.04838 6 0.38436 17 0.56726 G4_POLYVINYLIDENE_CHLORIDE 1.7 134.3 1 0.020793 6 0.247793 17 0.731414 G4_POLYVINYLIDENE_FLUORIDE 1.76 88.8 1 0.03148 94
Đặng Nguyên Phương
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
4
2
2
2
2
3
3
2
2
3
2
6 0.375141 9 0.593379 G4_POLYVINYL_PYRROLIDONE 1 0.081616 6 0.648407 7 0.126024 8 0.143953 G4_POTASSIUM_IODIDE 19 0.235528 53 0.764472 G4_POTASSIUM_OXIDE 8 0.169852 19 0.830148 G4_PROPANE 1 0.182855 6 0.817145 G4_lPROPANE 1 0.182855 6 0.817145 G4_N-PROPYL_ALCOHOL 1 0.134173 6 0.599595 8 0.266232 G4_PYRIDINE 1 0.06371 6 0.759217 7 0.177073 G4_RUBBER_BUTYL 1 0.143711 6 0.856289 G4_RUBBER_NATURAL 1 0.118371 6 0.881629 G4_RUBBER_NEOPRENE 1 0.05692 6 0.542646 17 0.400434 G4_SILICON_DIOXIDE SiO_2 8 0.532565
Đặng Nguyên Phương
1.25
67.7
3.13
431.9
2.32
189.9
0.00187939
47.1
0.43
52
0.8035
61.1
0.9819
66.2
0.92
56.5
0.92
59.8
1.23
93
2.32
139.2
95
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
2
2
3
2
13
3
2
2
3
14 0.467435 G4_SILVER_BROMIDE 35 0.425537 47 0.574463 G4_SILVER_CHLORIDE 17 0.247368 47 0.752632 G4_SILVER_HALIDES 35 0.422895 47 0.573748 53 0.003357 G4_SILVER_IODIDE 47 0.459458 53 0.540542 G4_SKIN_ICRP 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 G4_SODIUM_CARBONATE 6 0.113323 8 0.452861 11 0.433815 G4_SODIUM_IODIDE 11 0.153373 53 0.846627 G4_SODIUM_MONOXIDE 8 0.258143 11 0.741857 G4_SODIUM_NITRATE
Đặng Nguyên Phương
6.473
486.6
5.56
398.4
6.47
487.1
6.01
543.5
1.1
72.7
2.532
125
3.667
452
2.27
148.8
2.261 96
114.6
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
2
3
2
13
2
2
13
7 0.164795 8 0.56472 11 0.270485 G4_STILBENE 1 0.067101 6 0.932899 G4_SUCROSE 1 0.064779 6 0.42107 8 0.514151 G4_TERPHENYL 1 0.044543 6 0.955457 G4_TESTES_ICRP 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 G4_TETRACHLOROETHYLENE 6 0.144856 17 0.855144 G4_THALLIUM_CHLORIDE 17 0.147822 81 0.852178 G4_TISSUE_SOFT_ICRP 1 0.104472 6 0.23219 7 0.02488 8 0.630238 11 0.00113
0.9707
67.7
1.5805
77.5
1.234
71.7
1.04
75
1.625
159.2
7.004
690.3
1
72.3
97
Đặng Nguyên Phương
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
4
4
4
2
2
3
4
2
12 0.00013 15 0.00133 16 0.00199 17 0.00134 19 0.00199 20 0.00023 26 5e-05 30 3e-05 G4_TISSUE_SOFT_ICRU-4 1 0.101172 6 0.111 7 0.026 8 0.761828 G4_TISSUE-METHANE 1 0.101869 6 0.456179 7 0.035172 8 0.40678 G4_TISSUE-PROPANE 1 0.102672 6 0.56894 7 0.035022 8 0.293366 G4_TITANIUM_DIOXIDE 8 0.400592 22 0.599408 G4_TOLUENE 1 0.08751 6 0.91249 G4_TRICHLOROETHYLENE 1 0.007671 6 0.182831 17 0.809498 G4_TRIETHYL_PHOSPHATE 1 0.082998 6 0.395628 8 0.351334 15 0.17004 G4_TUNGSTEN_HEXAFLUORIDE
1
74.9
0.00106409
61.2
0.00182628
59.5
4.26
0.8669
179.5
62.5
1.46
148.1
1.07
81.2
2.4
354.4
98
Đặng Nguyên Phương
PHỤ LỤC C. CƠ SỞ DỮ LIỆU VẬT LIỆU CỦA GEANT4
2
2
2
4
4
3
2
2
2
1
9 0.382723 74 0.617277 G4_URANIUM_DICARBIDE 6 0.091669 92 0.908331 G4_URANIUM_MONOCARBIDE 6 0.048036 92 0.951964 G4_URANIUM_OXIDE 8 0.118502 92 0.881498 G4_UREA 1 0.067131 6 0.199999 7 0.466459 8 0.266411 G4_VALINE 1 0.0946409 6 0.512644 7 0.119565 8 0.27315 G4_VITON 1 0.009417 6 0.280555 9 0.710028 G4_WATER H_2O 1 0.111894 8 0.888106 G4_WATER_VAPOR H_2O-Gas 1 0.111894 8 0.888106 G4_XYLENE 1 0.094935 6 0.905065 G4_GRAPHITE Graphite
11.28
752
13.63
862
10.96
720.6
1.323
72.8
1.23
67.7
1.8
98.6
1
75
0.000756182
71.6
0.87
61.8
1.7
Đặng Nguyên Phương
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
View more...
Comments