File indexing completed on 2026-03-30 07:50:42
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #include "ActionInitialization.hh"
0030
0031 #include "DetectorConstruction.hh"
0032 #include "ITTrackingInteractivity.hh"
0033 #include "PrimaryGeneratorAction.hh"
0034 #include "RunAction.hh"
0035 #include "StackingAction.hh"
0036 #include "SteppingAction.hh"
0037 #include "TimeStepAction.hh"
0038
0039 #include "G4DNAChemistryManager.hh"
0040 #include "G4MoleculeGun.hh"
0041 #include "G4RunManager.hh"
0042 #include "G4Scheduler.hh"
0043 #include "G4SystemOfUnits.hh"
0044
0045
0046 ActionInitialization::ActionInitialization()
0047 : G4VUserActionInitialization()
0048 {}
0049
0050
0051
0052
0053 void ActionInitialization::BuildForMaster() const {}
0054
0055
0056
0057 void ActionInitialization::Build() const
0058 {
0059 SetUserAction(new PrimaryGeneratorAction);
0060 RunAction* pRunAction = new RunAction();
0061 SetUserAction(pRunAction);
0062 SteppingAction* pSteppingAction = new SteppingAction();
0063 SetUserAction(pSteppingAction);
0064 SetUserAction(new StackingAction());
0065 if (G4DNAChemistryManager::IsActivated()) {
0066 G4Scheduler::Instance()->SetUserAction(new TimeStepAction());
0067
0068 G4Scheduler::Instance()->SetEndTime(2.5 * nanosecond);
0069 G4Scheduler::Instance()->SetVerbose(1);
0070 ITTrackingInteractivity* itInteractivity = new ITTrackingInteractivity();
0071 G4Scheduler::Instance()->SetInteractivity(itInteractivity);
0072 auto pDetector = static_cast<const DetectorConstruction*>
0073 (G4RunManager::GetRunManager()->GetUserDetectorConstruction());
0074 if (pDetector) {
0075 G4DNAChemistryManager::Instance()->SetGun(pDetector->GetGun());
0076 } else {
0077 G4ExceptionDescription msg;
0078 msg << "DetectorConstruction instance must be created beforehand!";
0079 G4Exception("ActionInitialization::Build()", "ActionInit01", FatalException,msg);
0080 }
0081 }
0082 }