89int main(
int argc,
char** argv)
92 G4Profiler::Configure(argc, argv);
96 macro = argv[argc - 1];
105 CLHEP::HepRandom::setTheSeed(1245214UL);
107#if defined(GEANT4_USE_TIMEMORY)
116 using TrackTool =
typename TrackProfilerConfig::type;
118 TrackProfilerConfig::GetQueryFunctor() = [](
const G4Track* _track) {
122 return G4Profiler::GetEnabled(G4ProfileType::Track) && _track &&
123 _track->GetDynamicParticle();
126 TrackProfilerConfig::GetLabelFunctor() = [](
const G4Track* _track) {
129 auto pdef = _track->GetDynamicParticle()->GetParticleDefinition();
130 static std::string _prefix =
"G4Track/";
131 return _prefix + pdef->GetParticleName();
135 bool track_tree = tim::get_env<bool>(
"G4PROFILER_TRACK_TREE",
true);
138 bool track_time = tim::get_env<bool>(
"G4PROFILER_TRACK_TIMELINE",
false);
140 auto _scope = tim::scope::config{};
141 if(track_tree ==
false)
142 _scope += tim::scope::flat{};
143 if(track_time ==
true)
144 _scope += tim::scope::timeline{};
145 TrackProfilerConfig::GetToolFunctor() = [=](
const std::string& _label) {
149 return new TrackTool(_label, _scope);
154 G4RunManagerFactory::CreateRunManager(G4RunManagerType::Tasking);
164 runmanager->Initialize();
171 visManager->Initialize();
174 G4UImanager* UImanager = G4UImanager::GetUIpointer();
181 G4String command =
"/control/execute ";
182 UImanager->ApplyCommand(command + macro);