アクリルを作りたい(G4_PLEXIGLASS

1G4NistManager *nist = G4NistManager::Instance();
2G4Material *fAcrylic = nist->FindOrBuildMaterial("G4_PLEXIGLASS");

G4_PLEXIGLASSでアクリル材(アクリル樹脂)を生成できます。

注釈

アクリル樹脂で作ったガラスのことを「プレキシガラス」(商標名)と呼ぶそうです。 この呼び方を知らなかったのでデータシートから検索できず、自分で作るしかないと思っていました。 構成する元素も密度も同じなので、代用してOKと思います。

カスタマイズしたい

 1// 名称: ポリメタクリル酸メチル樹脂(polymethyl methacrylate)
 2// 略称: PMMA
 3// 化学式: C5H8O2
 4G4NistManager *nist = G4NistManager::Instance();
 5G4Element H = nist->FindOrBuildElement("G4_H");
 6G4Element C = nist->FindOrBuildElement("G4_C");
 7G4Element O = nist->FindOrBuildElement("G4_O");
 8
 9G4Material *fAcrylic = new G4Material("Acrylic", density=1.19*g/cm3, nelements=3);
10fAcrylic->AddElement(C, 5);
11fAcrylic->AddElement(H, 8);
12fAcrylic->AddElement(O, 2);

プレキシガラスという呼び方を知らなかったので、自分で作ってみました。 構成する元素の情報はNISTデータを参照しています。

注釈

G4Elementオブジェクトを取得する場合はFindOrBuildElementを使います。

光学特性したい

 1const G4int entries = 17;
 2
 3// 光子の波長 [nm]
 4G4double photon_wavelength[entries] = {
 5    200.*nm,
 6    260.*nm, 270.*nm, 280.*nm, 290.*nm, 300.*nm,
 7    310.*nm, 320.*nm, 330.*nm, 340.*nm, 350.*nm,
 8    360.*nm, 370.*nm, 380.*nm, 390.*nm, 400.*nm,
 9    620.*nm
10};
11
12// 吸収長
13G4double absorption_length[entries] = {
14    0.867*mm,
15    0.867*mm, 1.46*mm, 3.94*mm, 1.10*cm, 3.48*cm,
16    7.71*cm, 9.81*cm, 11.58*cm, 13.6*cm, 15.7*cm,
17    21.2*cm, 39.4*cm, 81.1*cm, 3.86*m, 9.27*m,
18    9.27*m
19    };
20
21// 波長[nm]をエネルギー[eV]に変換
22// E[J] = hv[m] = hc/L[m]
23// E[eV] ~ 1240./L[nm]
24G4double photon_energy[entries];
25for(int i = 0; i<entries; i++) {
26    photon_energy[i] = 1240./photon_wavelength[i] * eV;
27}
28
29// 光学特性を定義
30G4MaterialPropertiesTable *mpt = new G4MaterialPropertiesTable();
31mpt->AddConstProperty("RINDEX", 1.49);
32mpt->AddPropertry("ABSLENGTH", photon_energy, absorption_length, entries);
33
34// 光学特性を追加
35fAcrylic->SetMaterialPropertiesTable(mpt);

アクリルの光学特性を追加しました。 屈折率はAddConstPropertyを使って、波長によらず1.49にしました。 吸収長はAddPropertyを使って、波長ごとに値が変わるようにしました。