クラスの自作度

Geant4はツールキットとして配布されており、 Geant4が用意したクラスを継承して、ユーザーが自身の目的に合わせて カスタマイズする必要があります。

使いはじめたときは、どのファイルを、 どうカスタマイズするのかよく分かりませんでしたが、 ドキュメントや講習会スライドをいくつか読んでみて、 Geant4の概要が分かってきた気がしたので、整理してみました。

それぞれのファイルをどれくらいカスタマイズする必要があるかの 【自作度】を★の数で表してみました。

メイン関数【★★・・・】

自作度:

★★・・・

 1int main(int argc, char** argv)
 2{
 3    // RunManagerを作成
 4    auto *rm = G4RunManagerFactory::CreateRunManager();
 5
 6    // 必須ユーザークラスを設定
 7    auto geometry = new Geometry{}
 8    rm->SetUserInitialization(geometry);
 9
10    auto physics = new FTFP_BERT{};
11    rm->SetUserInitialization(physics);
12
13    auto actions = new ActionInitialization{};
14    rm->SetUserInitialization(actions);
15
16    // Geant4のカーネルを初期化
17    rm->Initialize()
18
19    // シミューレーションを開始
20    G4int n_runs = 10
21    rm->BeamOn(n_runs)
22
23    // あと片付け
24    delete rm;
25}

メイン関数の必要な要素を抜粋しました。 これに対話モードや、可視化ツールとスコアリングの設定などを追加します。

基本的に付属サンプルのメイン関数をコピーして使い始めればよいと思いますが、 きっと少しずつ手を加えたくなるため、自作度は【★★・・・】としました。

DetectorConstruction【★★★★★】

自作度:

★★★★★

測定器のジオメトリを作成するクラスです。 G4VUserDetectorConstructionを継承して作成します。

自分の実験に合わせてユーザーが実装する必要があります。 自作度は【★★★★★】です。

PhysicsList【★・・・・】

自作度:

★・・・・

物理の相互作用モデルを設定するクラスです。 基本的な相互作用モデルは、Geant4チームが用意してくれたクラスを利用できます。 さらに、それらを組み合わせて定義されたプリセットもいくつか用意されています。 まずはその中から自分の目的にあったモデルを選べばOKです。

Geant4が用意したモデルを使うところからはじめたらよいため、 自作度は【★・・・・】にしました。

相互作用をモデルをカスタマイズしたい場合は、G4VModularPhysicsListを継承したクラスを作成します。 基本的な相互作用クラスから、利用したい相互作用を選択し、RegisterPhysicsを使って追加します。

本気で相互作用モデルを実装したい場合は、G4VPhysicsListを継承したクラスを作成すればよいと思いますが、これはかなり上級者向けだと思います。

ActionInitialization【★・・・・】

自作度:

★・・・・

ユーザーアクションを設定するクラスです。 G4VUserActionInitializationを継承して作成します。 付属サンプルの使い回しでOKなため【★・・・・】としました。

PrimaryGeneratorAction【★★★★・】

自作度:

★★★★・

入射粒子の初期条件を設定するクラスです。 G4VUserPrimaryGeneratorActionを継承して作成します。 自分の実験に合わせてユーザーが実装する必要があります。

Geant4が用意したG4ParticleGunG4GeneralParticleSourceなどの 粒子生成クラスを使うことができるため、 自作度は【★★★★・】としました。

SteppingAction【★・・・・】/SensitiveDetector【★★★★★】

自作度:

★★★★★

ステップごとのユーザーアクションを設定するクラスです。 G4UserSteppingActionクラスを継承して作成します。 必須クラスではないですが、ユーザーの目的にあった物理量を取得するために、作成する必要があります。

ただし、より便利なG4VSensitiveDetectorクラスが用意されているため、 まずはそちらを作成するところからはじめるとよいでしょう。 自作度は【★★★★★】です。

TrackingAction【★・・・・】

自作度:

★・・・・

トラックごとのユーザーアクションを設定するクラスです。 G4UserSteppingActionクラスを継承して作成します。

最初はなくてもよいクラスなので、自作度は【★・・・・】です。

EventAction【★・・・・】

自作度:

★・・・・

イベントごとのユーザーアクションを設定するクラスです。 G4UserEventActionクラスを継承して作成します。 最初はなくてもよいクラスなので、自作度は【★・・・・】です。

RunAction【★・・・・】

自作度:

★・・・・

ランごとのユーザーアクションを設定するクラスです。 G4UserRunActionクラスを継承して作成します。 最初はなくてもよいクラスなので、自作度は【★・・・・】です。

Geant4のクラス構造

Geant4は大きく分けて8つのクラスカテゴリーで構成されています。

  1. Run and Event

  2. Tracking and Track

  3. Geometry and Magnetic Field

  4. Particle Definition and Matter

  5. Physics

  6. Hits and Digitization

  7. Visualization

  8. Interfaces

アプリケーションを作成したり、変更したりする場合に、 どのカテゴリーのクラスをいじればよいか、あたりをつける目安になると思います。

詳細はClass Categories and Domainsで確認できます。