マテリアルのプロパティしたい(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(表面のプロパティ);

リファレンス