マテリアルのプロパティしたい(G4MaterialPropertiesTable
)
1// 素材:水(G4_WATER)
2G4NistManager *nm = new G4NistManager::GetInstance();
3G4Material *material = nm->FindOrBuildMaterial("G4_WATER");
4
5// プロパティを設定(水のpre-defined値を使用)
6G4MaterialPropertiesTable *mpt = new G4MaterialPropertiesTable();
7mpt->AddProperty("RINDEX", "Water");
8
9// マテリアルにプロパティを設定
10material->SetMaterialPropertiesTable(table);
OpticalPhysicsの物理プロセスを使う場合、
素材の屈折率(RINDEX
)や
吸収長(ABSLENGTH
)などの性質をユーザーが設定する必要があります。
それぞれの物理プロセスで必要なパラメーターの設定は
Configuration - Book For Application Developersを参照してください。
なお、Geant v11.0 から
Air
(空気)、
Water
(水)、
PMMA
(アクリル樹脂/ポリメタクリル酸メチル)、
Fused Silica
(石英ガラス)
に対して屈折率のpre-defined値が追加されています。
チェレンコフ光したい
1// AddProperty("キー名", std::vector配列, std::vector配列)
2// AddProperty("キー名", 配列, 配列, 配列の数)
3mpt->AddProperty("RINDEX", photon_energy, refractive_index, n_entries);
4mpt->AddProperty("ABSLENGTH", photon_energy, absorption, n_entries);
シンチレーション光したい
1G4Material *material = new G4Material{
2 "LXe",
3 54., // z
4 131.29 * g / mole, // a
5 3.020 * g / cm3 // density
6};
7
8std::vector<G4double> photon_energy = { 7.0 * eV, 7.07 * eV, 7.14 * eV };
9std::vector<G4double> scintillation = { 0.1, 1.0, 0.1 };
10std::vector<G4double> refractive_index = { 1.59, 1.57, 1.54 };
11std::vector<G4double> absorption_length = { 35. * cm, 35. * cm, 35. * cm };
12
13G4MaterialPropertiesTable *property = new G4MaterialPropertiesTable();
14// 波長に依存するプロパティ
15property->AddProperty("RINDEX", photon_energy, refractive_index);
16property->AddProperty("ABSLENGTH", photon_energy, absorption_length);
17property->AddProperty("SCINTILLATIONCOMPONENT1", photon_energy, scintillation);
18property->AddProperty("SCINTILLATIONCOMPONENT2", photon_energy, scintillation);
19
20// 波長に依存しないプロパティ
21property->AddConstProperty("RESOLUTIONSCALE", 1.0);
22property->AddConstProperty("SCINTILLATIONYIELD", 12000. / MeV);
23property->AddConstProperty("SCINTILLATIONTIMECONSTANT1", 20. * ns);
24property->AddConstProperty("SCINTILLATIONTIMECONSTANT2", 45. * ns);
25property->AddConstProperty("SCINTILLATIONYIELD1", 1.0);
26property->AddConstProperty("SCINTILLATIONYIELD2", 0.0);
27
28// 物質にプロパティを設定
29material->SetMaterialPropertiesTable(property);
examples/extended/optical/LXe/
のサンプルを参照しました。
屈折率と吸収長の他に、シンチレーション光のプロパティ(光量や時定数)をいくつか設定しています。
シンチレーション光は2種類設定できるようです。
OpticalSurfaceしたい
1G4OpticalSurface surface = new G4OpticalSurface("Surface");
2surface->SetType(dielectric_dielectric);
3surface->SetFinish(ground); // rough surface
4surface->SetModel(unified); // UNIFIED model
5surface->SetMaterialPropertiesTable(表面のプロパティ);