光学物理したい(G4OpticalPhysics

 1#include "FTFP_BERT.hh"
 2#include "G4OpticalPhysics.hh"
 3#include "G4OpticalParameters.hh"
 4
 5int main()
 6{
 7    // ベースとなる物理モジュールを指定する
 8    auto *physics = FTFP_BERT{};
 9    // 光学物理を追加する
10    physics->RegisterPhysics(new G4OpticalPhysics{});
11    // ランマネージャーに登録する
12    rm->SetUserInitialization(physics);
13    // 光学物理のグローバル設定
14    ConfigureOpticalParameters();
15
16    // ランマネージャーを初期化する
17    rm->Initialize()
18}

G4OpticalPhysicsは、光学光子(G4OpticalPhoton)の相互作用を扱うための物理モジュールです。 FTFP_BERTのような物理モジュールには、光学物理のプロセスは含まれていないため、RegisterPhysicsを使って、ユーザーが「トッピング」することで、光学物理のプロセスを有効にできます。

注釈

Geant4では、エネルギー領域や物理プロセスによって「光」のクラスが分かれています。 G4Gamma(ガンマ線)は、keV〜MeV以上の高エネルギー領域の光を「粒子」として扱うクラスです。 光電効果、コンプトン散乱、対生成などの物理プロセスに対応します。 G4OpticalPhoton(光学光子)は、eV領域(紫外線・可視光・赤外線など)の低エネルギー領域の光を「波」として扱うクラスです。 反射、屈折、吸収、波長変換などの物理プロセスに対応します。 また、G4MaterialPropertiesTableを使って光学特性を設定が必須です。

光学物理のプロセス

  • 光の発生

    • チェレンコフ光(G4Cerenkov

    • シンチレーション光(G4Scintillation

  • 媒質中での輸送

    • 吸収(G4OpAbsorption

    • レイリー散乱(G4OpRayleigh

    • ミー散乱(G4OpMieHG

    • 波長変換(G4OpWLS / G4OpWLS2

  • 境界での散乱

    • 反射・屈折・全反射(G4OpBoundary

光学物理を調整したい(G4OpticalParameters

 1#include "G4OpticalParameters.hh"
 2
 3void ConfigureOpticalParameters() {
 4    // 光学物理のパラメータを管理するための関数
 5    // 呼び出すタイミング:
 6    // - physics-RegisterPhysics(new G4OpticalPhysics{}) した後
 7    // - runManager->Initialize()する前
 8
 9    // OpticalPhysicsのパラメーター設定
10    auto* params = G4OpticalParameters::Instance();
11
12    // G4Cerenkovの設定
13    params->SetMaxNumPhotonsPerStep(100);
14    params->SetMaxBetaChangePerStep(10.0);
15    params->SetCerenkovStackPhotons(true);
16    params->SetCerenkovTrackSecondariesFirst(true);
17    params->SetCerenkovVerbosity(1);
18
19    // G4Scintillationの設定
20    params->SetScintYieldFactor(1.0);
21    params->SetScintExcitationRatio(0.0);
22    params->SetScintByParticleType(false);
23    params->SetScintTrackInfo(false);
24    params->SetScintTrackSecondariesFirst(true);
25    params->SetScintFiniteRiseTime(false);
26    params->SetScintStackPhotons(true);
27    params->SetScintVerboseLevel(1);
28
29    // G4OpAbsorptionの設定
30    params->SetAbsorptionVerboseLevel(1);
31}

G4OpticalParametersを使って、光学物理のパラメーターを変更できます。 G4OpticalParameters::Instance()はシングルトンになっているため、どこからでもグローバルに設定できます。

マクロで設定したい(/process/optical/

/process/optical/verbose 1

# /process/optical/processActivation KEY bool
/process/optical/processActivation Cerenkov true
/process/optical/processActivation Scintillation true
/process/optical/processActivation OpAbsorption true
/process/optical/processActivation OpRayleigh true
/process/optical/processActivation OpMieHG true
/process/optical/processActivation OpBoundary true
/process/optical/processActivation OpWLS true
/process/optical/processActivation OpWLS2 true

G4OpticalParametersの設定はマクロで変更できます。 processActivationでOpticalPhysicsで有効にする物理プロセスを選択できます。 デフォルトでは、関係するすべてのプロセスが有効になっています。

リファレンス