クラスリファレンスの使い方
Geant4のアプリケーションを開発するときにお世話になるのがClass Reference Guideです。 ここから自分が使っているバージョンを選択し、該当するクラス名やメソッドなどを探します。 あまり使い勝手はよくないですが、右上の検索窓やブランザの検索機能を使って、頑張って探します。
注釈
検索窓はあいまい検索(fuzzy match)に対応していないようです。
V
があったりなかったり、User
があったりなかったりする長いGeant4のクラス名を、前方から正しく入力しないと検索候補がヒットしないのは、ちょっと不便です。
クラス名が分かっているならば、実装の詳細は、 ソースコード本体を手元に用意して、コマンドライン検索(fdなど)で アタリをつけて、直接開いたほうが読みやすいかもしれません。
ステップ(G4Step
)が基本
1// G4Step *aStep は事前に定義済み
2G4double energy_deposit = aStep->GetTotalEnergyDeposit();
トラッキングの基本単位はステップ(G4Step
)です。
G4Stepや
G4StepPointに
目を通し、できること(得られる物理量など)を把握しておくと、
自分のアプリケーション作成に役立つはずです。
ファイル名
ファイル名は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
が使われています。