CHƯƠNG 2: BỐ TRÍ MÔ PHỎNG HỆ ĐO HPGE
2.2.1. K ết cấu hình học và tính chất của các đối tượng
Được khai báo trong lớp DetectorConstruction, gồm có các nội dung dưới đây.
2.2.1.1. Định nghĩa vật liệu
Sau khi đã hoàn tất việc khai báo các miền chúng tôi tiến hành khai báo vật liệu. Trong luận văn này, vật liệu được định nghĩa dựa trên ba cách thức, gồm có:
- Định nghĩa vật liệu theo thành phần hóa học.
- Định nghĩa vật liệu theo thành phần phần trăm khối lượng.
- Định nghĩa vật liệu từ cơ sở dữ liệu (NIST).
Phần này sử dụng được các lớp khi định nghĩa một nguyên tố hay vật liệu như G4Element và G4Material. Việc định nghĩa vật liệu chi tiết được trình bày dưới đây.
Hình 2.2. Mặt cắt dọc của đầu dò gồm lớp Ge và hai vỏ nhôm.
76,2 mm
Hốc rỗng Vỏ nhôm Vỏ nhôm 52,0 mm
7,0 mm 53,52 mm
Các đơn chất như ni tơ, oxy,.. được định nghĩa ở đoạn code bên cạnh.
Trong đó: a là khối lượng mol của nguyên tố, được khai báo như là hằng số.
Với ni tơ a = 14,01 g/mole, có dấu ‘*’ giữa số 14,01 và g/mole là quy ước cách khai báo đơn vị cho một đại lượng trong Geant4.
Lớp G4Element và G4Material là những lớp định nghĩa vật liệu, trong đó lớp G4Element dùng để định nghĩa nguyên tố hóa học mà bên trong lớp này tên, kí hiệu hóa học, số hiệu nguyên tử, số nguyên tử khối lần lượt được khai báo. Như việc khai báo nguyên tố ni tơ, trong dấu ngoặc tròn () theo sau newG4Element là tên nguyên tố ni tơ là nitrogen (khai báo là name =”Nitrogen”), tiếp theo là kí hiệu hóa học của ni tơ là chữ N (symbol="N”), tiếp theo nữa là số hiệu nguyên tử của ni tơ bằng 7 (z=7.), và cuối cùng là khai báo khối lượng mol a, vì ta đã khai báo giá trị a trước rồi, nên chỗ này chỉ khai báo lại chữ a.
Nguyên tố oxy được khai báo tương tự ni tơ cũng như với các nguyên tố hóa học khác.
Lớp G4Material được dùng để khai báo vật liệu là đơn chất, trong đó ngoài các đại lượng được khai báo trong G4Element thì còn có thêm khối lượng riêng.
Như việc định nghĩa nguyên tố nhôm, hai đại lượng được khai báo trước tiên là density và a, như giải thích trên a là khối lượng mol nguyên tố nhôm, còn density là khối lượng riêng của nó, ở đây ta
// N: Nitrogen - Nito a = 14.01*g/mole;
G4Element*N=newG4Element (name="Nitrogen",symbol="N" , z=7., a);
// O: Oxygen - Oxi a = 16.00*g/mole;
G4Element*O = new G4Element (name="Oxygen" ,symbol="O" , z=8.,a);
// Al: Aluminum - Nhom density = 2.699*g/cm3;
a = 26.98*g/mole;
A = new G4Material(name="Aluminum", z=13., a, density);
// Ge: Gemanium density = 5.323*g/cm3;
a = 73*g/mole;
Ge = new G4Material
(name="Gemanium",z=32.,a, density);
// Pb: Lead - Chi density = 11.35*g/cm3;
a = 207.19*g/mole;
Pb = new G4Material
(name="Lead", z=82., a, density);
thấy khối lượng riêng của nhôm được định nghĩa bằng 2,699 g/cm3, khối lượng mol của nó là 26,98 g/mol, có tên là alumium, có số hiệu nguyên tử 13.
Việc định nghĩa các nguyên tố khác như germanium, đồng, chì, thiếc cũng tương tự.
Với những nguyên tố, đơn chất đã được định nghĩa ở trên thì việc định nghĩa hợp chất dựa trên sự kết hợp của các nguyên tố theo một tỉ lệ nhất định.
Đoạn code bên là định nghĩa không khí, khối lượng riêng của không khí là 1,290 mg/cm3, số đơn chất trong không khí là 2 (được định nghĩa trong lớp G4Material với dòng kí hiệu ncomponents = 2), thành phần phần trăm của mỗi nguyên tố được định nghĩa tiếp theo sau AddElement. Ở bên ta thấy trong không khí ni tơ tỉ lệ của ni tơ là 0,79 tức là 79%, và phần còn lại là của oxi.
Đối với môi trường chân không thì ở đây xem như chân không là môi trường có một loại nguyên tố hóa học có khối lượng mol của hydro là 1,008 g/mole, có khối lượng riêng rất nhỏ là 10-25 g/cm3, có nhiệt độ là 2,73 kelvin.
Các nguyên tố, đơn chất, hợp chất được định nghĩa trong phần này sẽ là vật liệu tạo nên detector và môi trường trong detector, mà kích thước hình học, vị trí của các bộ phận cấu tạo nên nó sẽ được xây dựng trong phần tiếp theo là xây dựng dạng hình học và vị trí của đầu dò.
// Cu: Copper - Dong density = 8.960*g/cm3;
a = 63.55*g/mole;
Cu = new G4Material(name="Copper", z=29., a,density);
// Sn: Stannum - Thiec density = 7.310*g/cm3;
a = 118.70*g/mole;
Sn = new G4Material
(name="Stannum(Thiec)",z=50., a,density);
// Air
density = 1.290*mg/cm3;
air = new G4Material(name="Air" , density, ncomponents=2);
air->AddElement(N, fractionmass=0.79);
air->AddElement(O, fractionmass=0.21);
//Vaccum
vacuum = new G4Material("Vacuum", 1, 1.008*g/mole,1.e-25*g/cm3, 2.73*kelvin,1.e-25*g/cm3);
Toàn bộ code định nghĩa vật liệu được trình bày chi tiết trong phụ lục 3.
2.2.1.2. Xây dựng dạng hình học và vị trí đối tượng
Hệ buồng chì và detector đều có đối xứng trục và trong luận văn này trục đối xứng là trục Oz, có chiều dương hướng thẳng đứng từ trên xuống, gốc tọa độ như Hình 2.3 dưới đây.
Hình 2.3. Mặt cắt hệ đầu dò - buồng chì và trục tọa độ.
Cũng như trong thực nghiệm, hệ đo được đặt trong môi trường không khí, và có kích thước giới hạn. Đối tượng này được xây dựng trước tiên, và có code như sau:
Môi trường được xây dựng trong mô phỏng này có dạng hình lập phương, có tên ‘world’
và có chiều dài cạnh bằng 2 m, các đặc điểm này được khai báo trong lớp G4Solid, với G4Box là định dạng hình lập phương, tên và kích thước được khai báo lần lượt trong G4Box(). Tiếp đến trong lớp G4LogicalVolume, môi trường với kích thước ở trên được định nghĩa là không khí.
// World
G4VSolid* worldSolid = new
G4Box("World",2.*m,2.*m,2.*m);
G4LogicalVolume* worldLogical = new G4LogicalVolume(worldSolid,air,"World");
worldPhys = new G4PVPlacement
(0,G4ThreeVector(),worldLogical,"World", 0,false,0);
Như vậy ta đã có được một môi trường như là một phòng thí nghiệm nhỏ, sau đó các thiết bị sẽ được xây dựng và đặt ở bên trong phòng thí nghiệm nhỏ này.
Do đặc điểm hình học nên về mặt code thì chì và các lớp đồng, thiếc tạo nên buồng chì được phân thành nhiều phần liên tiếp nhau, dưới đây là đặc điểm hình học, vị trí các phần được phân theo thứ tự theo chiều dương trục Oz.
Với lớp chì, được phân thành ba phần như sau:
O
z
Phần 1: Hình trụ đặc có bán kính trong bằng 0 mm, bán kính ngoài 254 mm, chiều cao 110,5 mm, và được đặt ở tọa độ (0;0;-210,25mm).
Phần 2: Hình trụ rỗng có bán kính trong bằng 143,5 mm, bán kính ngoài bằng 254 mm, chiều cao bằng 310 mm và có tọa độ (0;0;0mm).
Phần3: Hình trụ rỗng có bán kính trong 59,5 mm, bán kính ngoài 254 mm, chiều cao 110,5 mm đặt ở tọa độ (0;0;210,25mm).
Tương ứng, ta có code xây dựng buồng chì như bên.
Phần 1: Tương ứng là Pb1, tương tự như trong xây dựng môi trường, trong lớp G4Solid, các đặc điểm hình học của phần 1 được khai báo như: Có định dạng hình trụ - G4Tubs, với bán kính trong bằng 0 mm, bán kính ngoài bằng 254 mm, một nữa chiều cao có giá trị 55,25 mm, góc quét từ 0 đến 360 độ. Đến đây ta có được đối tượng có dạng là một hình trụ đặc nguyên vẹn. Chất liệu của khối hình học được xây dựng trong G4Solid là chì được định nghĩa tiếp theo trong lớp G4LogicalVolume, có vị trí tương ứng được khai báo trong G4PVPlacement, trong đó tọa độ (x,y,z) được khai báo là G4ThreeVector(0.,0.,- 210.25*mm), và được đặt trong môi trường ‘world’ ở trên.
Phân tích tương tự cho phần 2 và phần 3.
G4VSolid* Pb1Solid = new G4Tubs ("lopchi", 0.*mm,254.*mm,55.25*mm,0.*deg,360.*deg);
G4LogicalVolume* Pb1Logical= new G4LogicalVolume(Pb1Solid,Pb,"lopchi");
Pb1Phys = new G4PVPlacement
(0,G4ThreeVector(0.,0., -210.25*mm), Pb1Logical,"lopchi",worldLogical,false,0);
G4VSolid* Pb2Solid = new G4Tubs("lopchi",143.5 *mm, 254.*mm, 155.*mm, 0.*deg, 360.*deg);
G4LogicalVolume* Pb2Logical= new
G4LogicalVolume(Pb2Solid,Pb,"lopchi");
Pb2Phys = new G4PVPlacement
(0,G4ThreeVector(0.,0.,0.*mm),Pb2Logical, "lopchi", worldLogical,false,0);
G4VSolid* Pb3Solid = new G4Tubs ("lopchi",59.5*mm, 254.*mm, 55.25*mm, 0.*deg, 360.*deg);
G4LogicalVolume* Pb3Logical= new G4LogicalVolume(Pb3Solid,Pb,"lopchi");
Pb3Phys = new G4PVPlacement(0,G4ThreeVector (0.,0.,210.25*mm),Pb3Logical,"lopchi",
worldLogical,false,0);
Phần 1 Phần 2 Phần 3 O
z
Với cách tương tự cho việc xây dựng lớp đồng và lớp thiếc. Lớp thiếc, được chia làm bốn phần có đặc điểm như sau:
Lớp đồng cũng được chia làm bốn phần như sau Phần 1: Hình trụ đặc bán kính trong 0mm,
bán kính ngoài 142,5 mm, chiều cao 1,5 mm và có tọa độ (0;0; -153,25mm).
Phần 2: Hình trụ rỗng bán kính trong 141
//dong
G4VSolid* Cu1Solid = newG4Tubs ("lopdong", 0.*mm,142.5*mm,0.75*mm,0.*deg,360.*deg);
G4LogicalVolume* Cu1Logical= new
G4LogicalVolume(Cu1Solid,Cu,"lopdong");
Phần 1: Hình trụ đặc có bán kính trong bằng 0, bán kính ngoài 143,5 mm, chiều cao 1 mm và đặt ở tọa độ (0;0;-154,50 mm).
Phần 2: Hình trụ rỗng có bán kính trong 142,5 mm, bán kính ngoài 143,5 mm, chiều cao 308 mm và có tọa độ (0;0;0mm).
Phần 3: Hình trụ rỗng có bán kính trong 58,5 mm, bán kính ngoài 143,5 mm, chiều cao 1 mm có tọa độ (0;0;154,50mm).
Phần 4: Hình trụ rỗng có bán kính trong 58,5 mm, bán kính ngoài 59,5 mm, chiều cao 110,5 mm, ở tọa độ (0;0;210,50mm).
//thiec
G4VSolid* Sn1Solid = new G4Tubs("lopthiec", 0.*mm,143.5*mm,0.5*mm,0.*deg,360.*deg);
G4LogicalVolume* Sn1Logical= new
G4LogicalVolume(Sn1Solid,Sn,"lopthiec");
Sn1Phys = new G4PVPlacement
(0,G4ThreeVector(0.,0.,-154.5*mm), Sn1Logical,"lopthiec", worldLogical,false,0);
G4VSolid* Sn2Solid = new
G4Tubs("lopthiec",142.5*mm,143.5*mm,154.*mm, 0.*deg,360.*deg);
G4LogicalVolume* Sn2Logical= new
G4LogicalVolume(Sn3Solid,Sn,"lopthiec");
Sn2Phys = new
G4PVPlacement(0,G4ThreeVector(0.,0.,0.*mm), Sn2Logical,"lopthiec",worldLogical,false,0);
G4VSolid* Sn3Solid = new
G4Tubs("lopthiec",58.5*mm,143.5*mm,0.5*mm, 0.*deg,360.*deg);
G4LogicalVolume* Sn3Logical= new
G4LogicalVolume(Sn3Solid,Sn,"lopthiec");
Sn3Phys = new
G4PVPlacement(0,G4ThreeVector(0.,0.,154.5*mm), Sn3Logical,"lopthiec", worldLogical,false,0);
G4VSolid* Sn4Solid = new
G4Tubs("lopthiec",58.5*mm,59.5*mm,55.25*mm, 0.*deg,360.*deg);
G4LogicalVolume* Sn4Logical= new
G4LogicalVolume(Sn4Solid,Sn,"lopthiec");
Sn4Phys = new G4PVPlacement
(0,G4ThreeVector(0.,0.,210.25*mm), Sn4Logical,"lopthiec", worldLogical,false,0);
Phần 2
Phần 4 Phần 3 Phần 1 O
z
mm, bán kính ngoài 142,5 mm, chiều cao 305 mm đặt ở tọa độ (0;0;0mm).
Phần 3: Hình trụ rỗng bán kính trong 58,5 mm, bán kính ngoài 142,5 mm, chiều cao 1,5 mm, có tọa độ (0;0;153,25mm).
Phần 4: Hình trụ rỗng có bán kính trong 57 mm, bán kính ngoài 58,5 mm, chiều cao 113 mm, đặt ở tọa độ (0;0;209mm).
Code xây dựng các phần được trình bày chi tiết ở cột bên.
Cu1Phys = new G4PVPlacement
(0,G4ThreeVector(0.,0.,153.25*mm),
Cu1Logical, "lopdong",worldLogical,false,0);
G4VSolid* Cu2Solid = new G4Tubs("lopdong",141*
mm,142.5*mm,152.5*mm,0.*deg,360.*deg);
G4LogicalVolume* Cu2Logical= new
G4LogicalVolume(Cu2Solid,Cu,"lopdong");
Cu2Phys = new G4PVPlacement (0,G4ThreeVector(0.,0.,0.*mm),
Cu2Logical,"lopdong", worldLogical,false,0);
G4VSolid* Cu3Solid = new G4Tubs("lopdong",58.5*
mm,142.5*mm,0.75*mm,0.*deg,360.*deg);
G4LogicalVolume* Cu3Logical= new
G4LogicalVolume(Cu3Solid,Cu,"lopdong");
Cu3Phys = new G4PVPlacement
(0,G4ThreeVector(0.,0.,153.25*mm) Cu3Logical,"lopdong", worldLogical,false,0);
G4VSolid* Cu4Solid = new G4Tubs("lopdong", 57.*mm,58.5*mm,56.5*mm,0.*deg,360.*deg);
G4LogicalVolume* Cu4Logical= new
G4LogicalVolume(Cu4Solid,Cu,"lopdong");
Cu4Phys = new G4PVPlacement (0,G4ThreeVector(0.,0.,209.*mm),
Cu4Logical,"lopdong",worldLogical,false,0);
Với detector, có lớp germanium và hai lớp nhôm bảo vệ có dạng hình học marinelli, code xây dựng chi tiết như sau:
Lớp germanium
Lớp Ge1 là khối trụ đặc có bán kính ngoài và chiều cao của detector.
Lớp Ge2 cũng là khối trụ đặc có kích thước tương ứng với hốc rỗng bên trong của detector.
Detector được tạo thành bằng cách cắt đi phần Ge2 có trong Ge1 nhờ lớp trong đó
// Ge detector G4VSolid* Ge1 = new
G4Tubs("tinhtheGe",0.*mm,26.*mm,24.75*mm, 0.*deg,360.*deg);
G4VSolid* Ge2 = new
G4Tubs("tinhtheGe",0.*mm,3.5*mm,17.5*mm, 0.*deg,360.*deg);
G4VSolid* GeSolid = new
G4SubtractionSolid("Ge1-Ge2", Ge1, Ge2, 0,
Phần 2
Phần 4 Phần 3 Phần 1 O
z
G4ThreeVector(0.,0.,7.25*mm) là khai báo tọa độ tương đối giữa hai khối Ge1 và Ge 2 là 7,25 mm theo trục Oz, kết quả ta sẽ thu được dạng hình học marinelli của nó. Và trong các lớp tiếp theo khối hình học này được định nghĩa làm từ Ge, có vị trí (0.,0.,84,51mm), được đặt trong môi trường không khí.
G4LogicalVolume* GeLogical = new
G4LogicalVolume(GeSolid,Ge,"tinhtheGe");
GePhys = new G4PVPlacement
(0,G4ThreeVector(0.,0.,84.51*mm),
GeLogical,"tinhtheGe", worldLogical,false,0);
Vỏ nhôm bọc sát lớp germanium, được xây dựng tương tự với lớp germanium Lớp Al3 là hình trụ đặc có bán kính
ngoài, chiều cao của vỏ nhôm, lớp Al4 là hình trụ đặc có kích thước đúng bằng lớp Ge1 ở trên, vì đây là lớp bọc sát lớp germanium.
Khi thực hiện việc cắt lớp Al4 trong lớp Al3 thì ta thu được dạng hình học mong muốn như hình bên.
Trong G4ThreeVector là tọa độ của lớp hình học vừa thu được. Nó có tọa độ (0,0,84,13mm), là lớp nhôm bọc sát detector như mong muốn.
G4VSolid* Al3 = new
G4Tubs("vonhom",0.*mm,26.76*mm,25.13*mm, 0.*deg,360.*deg);
G4VSolid* Al4 = new
G4Tubs("vonhom",0.*mm,26.*mm,24.75*mm, 0.*deg,360.*deg);
G4VSolid* AltwoSolid = new G4SubtractionSolid ("Al3-Al4", Al3, Al4, 0, ThreeVector(0.,0.,0.38*mm));
G4LogicalVolume* AltwoLogical = new G4LogicalVolume(AltwoSolid,Al,"vonhom");
AltwoPhys = new G4PVPlacement (0,G4ThreeVector(0.,0.,84.13*mm),
AltwoLogical,"vonhom", worldLogical,false,0);
Vỏ nhôm bảo vệ ngoài cùng.
Hốc rỗng
Hốc rỗng Hốc rỗng Hốc rỗng
Lớp Al1 là hình trụ đặc có bán kính ngoài 38,1 mm, chiều cao một nữa 28,38 mm, lớp Al2 là hình trụ đặc có bán kính ngoài 36,6 mm, chiều cao một nữa 27,63 mm.
Khi thực hiện việc cắt lớp Al2 trong lớp Al1 thì ta thu được vỏ nhôm dạng marinelli có bề dày 1,5 mm.
Sau đó ta cũng tiếp tục định nghĩa vật liệu cho nó và môi trường đặt nó bằng các lớp tiếp theo.
G4VSolid* Al1 = new
G4Tubs("vonhom",0.*mm,38.1*mm,28.38*mm, 0.*deg,360.*deg);
G4VSolid* Al2 = new
G4Tubs("vonhom",0*mm,36.6*mm,27.63*mm, 0.*deg,360.*deg);
G4VSolid* AlSolid = new G4SubtractionSolid("Al1- Al2",Al1,Al2,0,G4ThreeVector(0.,0.,0.75*mm));
G4LogicalVolume* AlLogical = new
G4LogicalVolume(AlSolid,Al,"vonhom");
AlPhys = new G4PVPlacement
(0,G4ThreeVector(0.,0.,80.88*mm),
AlLogical,"vonhom", worldLogical,false,0);
Trong hốc rỗng của detector là môi trường chân không, và môi trường ngăn cách giữa các vỏ nhôm cũng như giữa vỏ nhôm và buồng chì là không khí cũng được xây dựng tương tự như các đối tượng trên. Toàn bộ code sẽ được trình bày chi tiết trong phụ lục 3 của luận văn.
2.2.1.3. Tạo màu cho các đối tượng
Dùng câu lệnh SetVisAttributes(G4VisAttributes(màu)). Các màu có trong thư viện Geant4, ví dụ ta có một số màu:
G4Colour red (1.0,0.0,0.0); // red G4Colour green (0.0,1.0,0.0); // green G4Colour yellow (1.0,1.0,0.0); // yellow G4Colour blue (0.0,0.0,1.0); // blue
G4Colour magenta (1.0,0.0,1.0) ; // magenta G4Colour cyan (0.0,1.0,1.0) ; // cyan
Màu của các đối tượng được khai báo như ví dụ sau:
worldLogical->SetVisAttributes(G4VisAttributes::Invisible);
GeLogical->SetVisAttributes(G4VisAttributes(G4Colour(blue)));
AlLogical->SetVisAttributes(G4VisAttributes(G4Colour(yellow)));
Trong ví dụ trên, khi vẽ ra đối tượng GeLogical sẽ có màu xanh lục, còn đối tượng AlLogical có màu vàng.
Đối tượng nào không khai báo màu cho nó thì khi vẽ ra nó sẽ có màu trắng.
Toàn bộ code của việc định nghĩa kết cấu hình học và tính chất của đối tượng được trình bày đầy đủ trong phụ lục 4 của luận văn.