クラスリファレンスの使い方

Geant4のアプリケーションを開発するときにお世話になるのがClass Reference Guideです。 ここから自分が使っているバージョンを選択し、該当するクラス名やメソッドなどを探します。 あまり使い勝手はよくないですが、右上の検索窓やブランザの検索機能を使って、頑張って探します。

注釈

検索窓はあいまい検索(fuzzy match)に対応していないようです。 Vがあったりなかったり、Userがあったりなかったりする長いGeant4のクラス名を、前方から正しく入力しないと検索候補がヒットしないのは、ちょっと不便です。

クラス名が分かっているならば、実装の詳細は、 ソースコード本体を手元に用意して、コマンドライン検索(fdなど)で アタリをつけて、直接開いたほうが読みやすいかもしれません。

ステップ(G4Step)が基本

1// G4Step *aStep は事前に定義済み
2G4double energy_deposit = aStep->GetTotalEnergyDeposit();

トラッキングの基本単位はステップ(G4Step)です。 G4StepG4StepPointに 目を通し、できること(得られる物理量など)を把握しておくと、 自分のアプリケーション作成に役立つはずです。

ファイル名

ファイル名はPascalCaseが使われています。 ヘッダーファイルはinclude/クラス名.hh、 ソースファイルはsrc/クラス名.ccにあります。

クラス名

クラス名はPascalCaseが使われています。 Geant4が提供するクラスの接頭辞はG4*が使われています。 さらに抽象クラスはG4V*、 ユーザー設定のためのフック用クラスはG4User*もしくはG4VUser*が使われています。

関数名

関数名はPascalCaseが使われています。 セッターはSet*、ゲッターはGet*が接頭辞に使われています。

変数名

変数名はPascalCaseが使われています。 また、ゆるめのシステムハンガリアン記法が使われている気がします。

プライベートなメンバー変数の接頭辞にはf*を使っていることが多く、 変数がポインターの場合はp*fp*、 引数の場合はaValue&aValue&apValueを使っていることが多いです。

1// G4Trackのメソッドを抜粋
2G4Track::SetTrackID(const G4int aValue)
3G4Track::SetPosition(const G4ThreeVector &aValue)
4G4Track::SetTouchableHandle(const G4TouchableHandle &apValue)

ただし、20年近くの開発の歴史があるためなのか、命名規則が混在している印象です。 なので、関数名/変数名でやっていることがよく分からない場合は 結局ソースコードを眺めてみるのが一番です。

注釈

おそらく、ごそっとリファクターするのが難しく、 新しく追加したり、書き直す必要があった部分が、 上記のような書き方になっているのかなと思います。

定数

定数(constな変数)やenum数はk*を接頭辞にしたPascalCaseが使われています。