50{
53 G4PhysListFactory factory;
55 AtlasPhysListFactory Atlasfactory;
58 G4HadronicProcessStore::Instance()->SetVerbose(0);
59 }
62 {
65 }
67 {
70 }
71 }
72
74 {
76 throw "PhysicsListInitializationError";
77 }
78
79
80
81
82
83 std::vector<IPhysicsOptionTool*> sortedPhysicsOptions;
85
86 {
87
89 if (physOptTool->GetOptionType() == G4AtlasPhysicsOption::Type::BSMPhysics) {
90 sortedPhysicsOptions.push_back(&*physOptTool);
91 }
92 }
93
94
96 if (physOptTool->GetOptionType() == G4AtlasPhysicsOption::Type::QS_ExtraParticles) {
97 sortedPhysicsOptions.push_back(&*physOptTool);
98 }
99 }
100
101
103 if (physOptTool->GetOptionType() == G4AtlasPhysicsOption::Type::QS_ExtraProc) {
104 sortedPhysicsOptions.push_back(&*physOptTool);
105 }
106 }
107
108
110 if (physOptTool->GetOptionType() == G4AtlasPhysicsOption::Type::GlobalProcesses) {
111 sortedPhysicsOptions.push_back(&*physOptTool);
112 }
113 }
114
115
117 if (physOptTool->GetOptionType() == G4AtlasPhysicsOption::Type::UnknownType) {
118 ATH_MSG_ERROR(physOptTool->name() <<
"set as UnknownType. This tool will not be used to modify the physics list of this job.");
119 }
120 }
121 }
122
123
124 for (auto& physOptTool: sortedPhysicsOptions)
125 {
127 m_physicsList->RegisterPhysics(physOptTool->GetPhysicsOption().release());
128 }
129
131 {
133 m_physicsList->RegisterPhysics(physDecayTool->GetPhysicsOption().release());
134 }
135
137
139 {
141 }
142
143 G4EmParameters* emp = G4EmParameters::Instance();
148 {
149 emp->SetApplyCuts(true);
150 }
151
153 G4AntiNeutron::Definition()->SetPDGStable(false);
154 }
155
156
158}
G4VModularPhysicsList * GetReferencePhysList(const G4String &)
void SetMultipleStepsInMSCTransport(G4bool val)
void SetVerbose(G4int val)
G4bool IsReferencePhysList(const G4String &)
Gaudi::Property< double > m_emMaxEnergy
!< A general cut - this isn't normally used in our simulation
ToolHandleArray< IPhysicsOptionTool > m_phys_option
Gaudi::Property< double > m_emMinEnergy
!< Maximum energy of the pre-calculated EM cross-section tables
Gaudi::Property< bool > m_applyEMCuts
!< Number of bins per Energy decade. Used for both DeDx and for the Lambda binning.
Gaudi::Property< bool > m_multipleStepsInMSCTransport
!< Switch for the G4 "apply cuts" EM physics flag
Gaudi::Property< int > m_emNumberOfBinsPerDecade
!< Minimum energy of the pre-calculated EM cross-section tables
ToolHandle< IPhysicsOptionTool > m_fastSimulationConstructor
Gaudi::Property< bool > m_unstableAntiNeutrons
Gaudi::Property< bool > m_quietMode
ToolHandleArray< IPhysicsOptionTool > m_phys_decay
Gaudi::Property< std::string > m_physicsListName
!< Handle on the physics list
G4VModularPhysicsList * m_physicsList
Gaudi::Property< double > m_generalCut
!< Energy cut for neutrons (in the neutron killer process)