メイン関数したい(main()

 1#include "Geometry.hh"              // G4VUserDetectorConstructionを継承した自作クラス
 2#include "ActionInitialization.hh"  // G4VUserActionInitializationを継承した自作クラス
 3
 4#include "G4RunManagerFactory.hh"
 5
 6int main(int argc, char** argv)
 7{
 8    auto rm = G4RunManagerFactory::CreateRunManager();
 9
10    auto geometry = new Geometry{};
11    rm->SetUserInitialization(detector);
12
13    auto physics = new FTFP_BERT{};
14    rm->SetUserInitialization(physics);
15
16    auto actions = new ActionInitialization{};
17    rm->SetUserInitialization(actions);
18
19    rm->Initialize();
20
21    G4int n_events = 100;
22    rm->BeamOn(n_events);
23
24    delete rm;
25    return 0;
26}

バッチモードで実行する場合の必要最低限のmain()関数です。

  1. G4RunManagerFactory

  2. G4VisExecutive

  3. G4UImanager

クラスの呼ばれ方

 1{
 2G4RunManagerFactory::CreateRunManager();
 3new Geometry{};
 4new FTFP_BERT{};
 5new ActionInitialization{};
 6ActionInitialization::BuildForMaster();
 7
 8// G4RunManager::Initializeを実行すると、測定器がセットアップがされる
 9G4RunManager::Initialize();
10Geometry::Construct() {
11    SetupVolumes()
12};
13Geometry::ConstructSDandField() {
14    new TrackerSD{"/TrackerSD", "TrackerHitsCollection"}
15    new TrackerSD{"/ShieldSD", "ShieldHitsCollection"}
16};
17
18// G4RunManager::BeamOn()を実行すると、入射粒子がセットアップされる
19G4RunManager::BeamOn()
20ActionInitialization::Build();
21new PrimaryGenerator{};
22PrimaryGenerator::GeneratePrimaries() {
23    SetupGunMuons();
24};
25// 有感検出器での処理
26TrackerSD::Initialize();
27TrackerSD::ProcessHits() {
28    TrackerHit::operator new
29    TrackerHit::TrackerHit()
30    TrackerHit::Fill()
31    TrackerHit::Print()
32}
33TrackerSD::ProcessHits() { ... }
34TrackerSD::ProcessHits() { ... }
35TrackerSD::EndOfEvent()
36{
37    "File opened: mc_data/kamaboko_00000_2024-07-30T13h05m.csv"
38    TrackerHit::ToCsvString();
39    TrackerHit::ToCsvString();
40    TrackerHit::ToCsvString();
41    "File closed: mc_data/kamaboko_00000_2024-07-30T13h05m.csv"
42    TrackerHit::operator delete
43}
44delete G4RunManager();
45delete Geometry();
46delete FTFP_BERT();
47delete ActionInitialization();

クラスが呼ばれる順番を確認しました。 G4RunManager::Initializeすると測定器がセットアップされることを確認しました。 G4RunManager::BeamOnすると入射粒子がセットアップされることを確認しました。 有感検出器(ここではTrackerSD)のヒット処理の流れを確認しました。

リファレンス