クラスの自作度
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が用意したG4ParticleGun
やG4GeneralParticleSource
などの
粒子生成クラスを使うことができるため、
自作度は【★★★★・】としました。
SteppingAction【★・・・・】/SensitiveDetector【★★★★★】
- 自作度:
★★★★★
ステップごとのユーザーアクションを設定するクラスです。
G4UserSteppingAction
クラスを継承して作成します。
必須クラスではないですが、ユーザーの目的にあった物理量を取得するために、作成する必要があります。
ただし、より便利なG4VSensitiveDetector
クラスが用意されているため、
まずはそちらを作成するところからはじめるとよいでしょう。
自作度は【★★★★★】です。
TrackingAction【★・・・・】
- 自作度:
★・・・・
トラックごとのユーザーアクションを設定するクラスです。
G4UserSteppingAction
クラスを継承して作成します。
最初はなくてもよいクラスなので、自作度は【★・・・・】です。
EventAction【★・・・・】
- 自作度:
★・・・・
イベントごとのユーザーアクションを設定するクラスです。
G4UserEventAction
クラスを継承して作成します。
最初はなくてもよいクラスなので、自作度は【★・・・・】です。
RunAction【★・・・・】
- 自作度:
★・・・・
ランごとのユーザーアクションを設定するクラスです。
G4UserRunAction
クラスを継承して作成します。
最初はなくてもよいクラスなので、自作度は【★・・・・】です。
Geant4のクラス構造
Geant4は大きく分けて8つのクラスカテゴリーで構成されています。
Run and Event
Tracking and Track
Geometry and Magnetic Field
Particle Definition and Matter
Physics
Hits and Digitization
Visualization
Interfaces
アプリケーションを作成したり、変更したりする場合に、 どのカテゴリーのクラスをいじればよいか、あたりをつける目安になると思います。
詳細はClass Categories and Domainsで確認できます。