BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ExN02PhysicsList Class Reference

#include <ExN02PhysicsList.hh>

Inheritance diagram for ExN02PhysicsList:

Public Member Functions

 ExN02PhysicsList ()
 ~ExN02PhysicsList ()

Protected Member Functions

void ConstructParticle ()
void ConstructProcess ()
void SetCuts ()
void ConstructBosons ()
void ConstructLeptons ()
void ConstructMesons ()
void ConstructBaryons ()
void ConstructGeneral ()
void ConstructEM ()

Detailed Description

Definition at line 38 of file ExN02PhysicsList.hh.

Constructor & Destructor Documentation

◆ ExN02PhysicsList()

ExN02PhysicsList::ExN02PhysicsList ( )

Definition at line 44 of file ExN02PhysicsList.cxx.

44 : G4VUserPhysicsList() {
45 defaultCutValue = 1.0 * cm;
46 SetVerboseLevel( 1 );
47}

◆ ~ExN02PhysicsList()

ExN02PhysicsList::~ExN02PhysicsList ( )

Definition at line 51 of file ExN02PhysicsList.cxx.

51{}

Member Function Documentation

◆ ConstructBaryons()

void ExN02PhysicsList::ConstructBaryons ( )
protected

Definition at line 116 of file ExN02PhysicsList.cxx.

116 {
117 // barions
118 G4Proton::ProtonDefinition();
119 G4AntiProton::AntiProtonDefinition();
120
121 G4Neutron::NeutronDefinition();
122 G4AntiNeutron::AntiNeutronDefinition();
123}

Referenced by ConstructParticle().

◆ ConstructBosons()

void ExN02PhysicsList::ConstructBosons ( )
protected

Definition at line 69 of file ExN02PhysicsList.cxx.

69 {
70 // pseudo-particles
71 G4Geantino::GeantinoDefinition();
72 G4ChargedGeantino::ChargedGeantinoDefinition();
73
74 // gamma
75 G4Gamma::GammaDefinition();
76}

Referenced by ConstructParticle().

◆ ConstructEM()

void ExN02PhysicsList::ConstructEM ( )
protected

Definition at line 155 of file ExN02PhysicsList.cxx.

155 {
156 theParticleIterator->reset();
157 while ( ( *theParticleIterator )() )
158 {
159 G4ParticleDefinition* particle = theParticleIterator->value();
160 G4ProcessManager* pmanager = particle->GetProcessManager();
161 G4String particleName = particle->GetParticleName();
162
163 if ( particleName == "gamma" )
164 {
165 // gamma
166 pmanager->AddDiscreteProcess( new G4GammaConversion() );
167 pmanager->AddDiscreteProcess( new G4ComptonScattering() );
168 pmanager->AddDiscreteProcess( new G4PhotoElectricEffect() );
169 }
170 else if ( particleName == "e-" )
171 {
172 // electron
173 G4VProcess* theeminusMultipleScattering = new G4MultipleScattering();
174 G4VProcess* theeminusIonisation = new G4eIonisation();
175 G4VProcess* theeminusBremsstrahlung = new G4eBremsstrahlung();
176 //
177 // add processes
178 pmanager->AddProcess( theeminusMultipleScattering );
179 pmanager->AddProcess( theeminusIonisation );
180 pmanager->AddProcess( theeminusBremsstrahlung );
181 //
182 // set ordering for AlongStepDoIt
183 pmanager->SetProcessOrdering( theeminusMultipleScattering, idxAlongStep, 1 );
184 pmanager->SetProcessOrdering( theeminusIonisation, idxAlongStep, 2 );
185 //
186 // set ordering for PostStepDoIt
187 pmanager->SetProcessOrdering( theeminusMultipleScattering, idxPostStep, 1 );
188 pmanager->SetProcessOrdering( theeminusIonisation, idxPostStep, 2 );
189 pmanager->SetProcessOrdering( theeminusBremsstrahlung, idxPostStep, 3 );
190 }
191 else if ( particleName == "e+" )
192 {
193 // positron
194 G4VProcess* theeplusMultipleScattering = new G4MultipleScattering();
195 G4VProcess* theeplusIonisation = new G4eIonisation();
196 G4VProcess* theeplusBremsstrahlung = new G4eBremsstrahlung();
197 G4VProcess* theeplusAnnihilation = new G4eplusAnnihilation();
198 //
199 // add processes
200 pmanager->AddProcess( theeplusMultipleScattering );
201 pmanager->AddProcess( theeplusIonisation );
202 pmanager->AddProcess( theeplusBremsstrahlung );
203 pmanager->AddProcess( theeplusAnnihilation );
204 //
205 // set ordering for AtRestDoIt
206 pmanager->SetProcessOrderingToFirst( theeplusAnnihilation, idxAtRest );
207 //
208 // set ordering for AlongStepDoIt
209 pmanager->SetProcessOrdering( theeplusMultipleScattering, idxAlongStep, 1 );
210 pmanager->SetProcessOrdering( theeplusIonisation, idxAlongStep, 2 );
211 //
212 // set ordering for PostStepDoIt
213 pmanager->SetProcessOrdering( theeplusMultipleScattering, idxPostStep, 1 );
214 pmanager->SetProcessOrdering( theeplusIonisation, idxPostStep, 2 );
215 pmanager->SetProcessOrdering( theeplusBremsstrahlung, idxPostStep, 3 );
216 pmanager->SetProcessOrdering( theeplusAnnihilation, idxPostStep, 4 );
217 }
218 else if ( particleName == "mu+" || particleName == "mu-" )
219 {
220 // muon
221 G4VProcess* aMultipleScattering = new G4MultipleScattering();
222 G4VProcess* aBremsstrahlung = new G4MuBremsstrahlung();
223 G4VProcess* aPairProduction = new G4MuPairProduction();
224 G4VProcess* anIonisation = new G4MuIonisation();
225 //
226 // add processes
227 pmanager->AddProcess( anIonisation );
228 pmanager->AddProcess( aMultipleScattering );
229 pmanager->AddProcess( aBremsstrahlung );
230 pmanager->AddProcess( aPairProduction );
231 //
232 // set ordering for AlongStepDoIt
233 pmanager->SetProcessOrdering( aMultipleScattering, idxAlongStep, 1 );
234 pmanager->SetProcessOrdering( anIonisation, idxAlongStep, 2 );
235 //
236 // set ordering for PostStepDoIt
237 pmanager->SetProcessOrdering( aMultipleScattering, idxPostStep, 1 );
238 pmanager->SetProcessOrdering( anIonisation, idxPostStep, 2 );
239 pmanager->SetProcessOrdering( aBremsstrahlung, idxPostStep, 3 );
240 pmanager->SetProcessOrdering( aPairProduction, idxPostStep, 4 );
241 }
242 else if ( ( !particle->IsShortLived() ) && ( particle->GetPDGCharge() != 0.0 ) &&
243 ( particle->GetParticleName() != "chargedgeantino" ) )
244 {
245 // all others charged particles except geantino
246 G4VProcess* aMultipleScattering = new G4MultipleScattering();
247 G4VProcess* anIonisation = new G4hIonisation();
248 ////G4VProcess* theUserCuts = new G4UserSpecialCuts();
249
250 //
251 // add processes
252 pmanager->AddProcess( anIonisation );
253 pmanager->AddProcess( aMultipleScattering );
254 ////pmanager->AddProcess(theUserCuts);
255
256 //
257 // set ordering for AlongStepDoIt
258 pmanager->SetProcessOrdering( aMultipleScattering, idxAlongStep, 1 );
259 pmanager->SetProcessOrdering( anIonisation, idxAlongStep, 2 );
260
261 //
262 // set ordering for PostStepDoIt
263 pmanager->SetProcessOrdering( aMultipleScattering, idxPostStep, 1 );
264 pmanager->SetProcessOrdering( anIonisation, idxPostStep, 2 );
265 ////pmanager->SetProcessOrdering(theUserCuts, idxPostStep,3);
266 }
267 }
268}

Referenced by ConstructProcess().

◆ ConstructGeneral()

void ExN02PhysicsList::ConstructGeneral ( )
protected

Definition at line 273 of file ExN02PhysicsList.cxx.

273 {
274 // Add Decay Process
275 G4Decay* theDecayProcess = new G4Decay();
276 theParticleIterator->reset();
277 while ( ( *theParticleIterator )() )
278 {
279 G4ParticleDefinition* particle = theParticleIterator->value();
280 G4ProcessManager* pmanager = particle->GetProcessManager();
281 if ( theDecayProcess->IsApplicable( *particle ) )
282 {
283 pmanager->AddProcess( theDecayProcess );
284 // set ordering for PostStepDoIt and AtRestDoIt
285 pmanager->SetProcessOrdering( theDecayProcess, idxPostStep );
286 pmanager->SetProcessOrdering( theDecayProcess, idxAtRest );
287 }
288 }
289}

Referenced by ConstructProcess().

◆ ConstructLeptons()

void ExN02PhysicsList::ConstructLeptons ( )
protected

Definition at line 80 of file ExN02PhysicsList.cxx.

80 {
81 // leptons
82 // e+/-
83 G4Electron::ElectronDefinition();
84 G4Positron::PositronDefinition();
85 // mu+/-
86 G4MuonPlus::MuonPlusDefinition();
87 G4MuonMinus::MuonMinusDefinition();
88 // nu_e
89 G4NeutrinoE::NeutrinoEDefinition();
90 G4AntiNeutrinoE::AntiNeutrinoEDefinition();
91 // nu_mu
92 G4NeutrinoMu::NeutrinoMuDefinition();
93 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
94}

Referenced by ConstructParticle().

◆ ConstructMesons()

void ExN02PhysicsList::ConstructMesons ( )
protected

Definition at line 98 of file ExN02PhysicsList.cxx.

98 {
99 // mesons
100 // light mesons
101 G4PionPlus::PionPlusDefinition();
102 G4PionMinus::PionMinusDefinition();
103 G4PionZero::PionZeroDefinition();
104 G4Eta::EtaDefinition();
105 G4EtaPrime::EtaPrimeDefinition();
106 G4KaonPlus::KaonPlusDefinition();
107 G4KaonMinus::KaonMinusDefinition();
108 G4KaonZero::KaonZeroDefinition();
109 G4AntiKaonZero::AntiKaonZeroDefinition();
110 G4KaonZeroLong::KaonZeroLongDefinition();
111 G4KaonZeroShort::KaonZeroShortDefinition();
112}

Referenced by ConstructParticle().

◆ ConstructParticle()

void ExN02PhysicsList::ConstructParticle ( )
protected

Definition at line 55 of file ExN02PhysicsList.cxx.

55 {
56 // In this method, static member functions should be called
57 // for all particles which you want to use.
58 // This ensures that objects of these particle types will be
59 // created in the program.
60
65}

◆ ConstructProcess()

void ExN02PhysicsList::ConstructProcess ( )
protected

Definition at line 127 of file ExN02PhysicsList.cxx.

127 {
128 AddTransportation();
129 ConstructEM();
131}

◆ SetCuts()

void ExN02PhysicsList::SetCuts ( )
protected

Definition at line 293 of file ExN02PhysicsList.cxx.

293 {
294 // G4VUserPhysicsList::SetCutsWithDefault method sets
295 // the default cut value for all particle types
296 //
297 SetCutsWithDefault();
298
299 if ( verboseLevel > 0 ) DumpCutValuesTable();
300}

The documentation for this class was generated from the following files: