File indexing completed on 2025-02-23 09:22:10
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 #include "ActionInitialization.hh"
0027
0028 #include "ChemistryWorld.hh"
0029 #include "DetectorConstruction.hh"
0030 #include "PrimaryGeneratorAction.hh"
0031 #include "PulseAction.hh"
0032 #include "RunAction.hh"
0033 #include "StackingAction.hh"
0034 #include "TimeStepAction.hh"
0035
0036 #include "G4DNAChemistryManager.hh"
0037 #include "G4DNAEventScheduler.hh"
0038 #include "G4DNAScavengerMaterial.hh"
0039 #include "G4H2O.hh"
0040 #include "G4Molecule.hh"
0041 #include "G4MoleculeCounter.hh"
0042 #include "G4MoleculeGun.hh"
0043 #include "G4Scheduler.hh"
0044
0045
0046 ActionInitialization::ActionInitialization(DetectorConstruction* pDetector)
0047 : G4VUserActionInitialization(), fpDetector(pDetector)
0048 {}
0049
0050
0051
0052 void ActionInitialization::BuildForMaster() const
0053 {
0054 SetUserAction(new RunAction());
0055 G4DNAChemistryManager::Instance()->ResetCounterWhenRunEnds(false);
0056 }
0057
0058
0059
0060 void ActionInitialization::Build() const
0061 {
0062 G4MoleculeCounter::Instance()->Use(true);
0063 G4MoleculeCounter::Instance()->DontRegister(G4H2O::Definition());
0064 G4MoleculeCounter::Instance()->SetVerbose(0);
0065 G4MoleculeCounter::Instance()->CheckTimeForConsistency(false);
0066 auto pPulseAction = new PulseAction();
0067 SetUserAction(pPulseAction);
0068 SetUserAction(new PrimaryGeneratorAction(fpDetector));
0069 auto pRunAction = new RunAction();
0070 SetUserAction(pRunAction);
0071 SetUserAction(new StackingAction());
0072 auto pChemWorld = fpDetector->GetChemistryWorld();
0073 auto pScavenger = std::make_unique<G4DNAScavengerMaterial>(pChemWorld);
0074
0075 dynamic_cast<G4DNAScavengerMaterial*>(pScavenger.get())->SetCounterAgainstTime();
0076 G4Scheduler::Instance()->SetScavengerMaterial(std::move(pScavenger));
0077 auto timeStepAction = new TimeStepAction(pChemWorld, pPulseAction);
0078 auto eventScheduler = timeStepAction->GetEventScheduler();
0079 pRunAction->SetEventScheduler(eventScheduler);
0080 G4Scheduler::Instance()->SetUserAction(timeStepAction);
0081 }
0082
0083