#include "Sim.hh" #include "G4RunManager.hh" #include "AADetectorConstruction.hh" #include "FTFP_BERT.hh" #include "G4UImanager.hh" #include "AASteppingAction.hh" #include "AATrackingAction.hh" #include "DetectorModel.hh" //SimStringDet g_det; int n_intersect_cyl; int n_intersect_cyl1; //double g_default_om_radius = 0.432/2; //double g_max_envelope; //double g_max_om_radius = 0.432/2; int g_iproc; DetectorModelBase* g_watermodel; VEC PhotonSegment::intersect1; VEC PhotonSegment::intersect2; Sim* g_sim; Sim::Sim() { init_settings(); _init_geant(); g_sim = this; } bool Sim::_init_geant() { cout << "Sim::init_geant()" << endl; g_watermodel = new DetectorModel(); runManager = new G4RunManager; // set mandatory initialization classes runManager->SetUserInitialization( new AADetectorConstruction ); runManager->SetUserInitialization( new FTFP_BERT ); runManager->SetUserAction ( aa_primary_generator_action = new AAPrimaryGeneratorAction ); runManager->SetUserAction ( new AAStackingAction ); runManager->SetUserAction ( new AASteppingAction ); runManager->SetUserAction ( new AATrackingAction ); // Initialize G4 kernel runManager->Initialize(); UI = G4UImanager::GetUIpointer(); UI->ApplyCommand("/run/verbose 1"); UI->ApplyCommand("/event/verbose 0"); UI->ApplyCommand("/tracking/verbose 0"); return true; } double Sim::simulate_geant( vector< Trk >& mc_input_tracks, bool remember_track_segments /* =true */) { TIMESCOPE foreach( t, mc_input_tracks ) { print (t); } aa_primary_generator_action -> input_tracks = mc_input_tracks; runManager->BeamOn( 1 ); Timer::report(); return 0; }