BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
ExN03PhysicsList Class Reference

#include <ExN03PhysicsList.hh>

+ Inheritance diagram for ExN03PhysicsList:

Public Member Functions

 ExN03PhysicsList ()
 
 ~ExN03PhysicsList ()
 

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 40 of file ExN03PhysicsList.hh.

Constructor & Destructor Documentation

◆ ExN03PhysicsList()

ExN03PhysicsList::ExN03PhysicsList ( )

Definition at line 45 of file ExN03PhysicsList.cxx.

45 : G4VUserPhysicsList()
46{
47 defaultCutValue = 1.0*mm;
48 SetVerboseLevel(1);
49}

◆ ~ExN03PhysicsList()

ExN03PhysicsList::~ExN03PhysicsList ( )

Definition at line 53 of file ExN03PhysicsList.cxx.

54{}

Member Function Documentation

◆ ConstructBaryons()

void ExN03PhysicsList::ConstructBaryons ( )
protected

Definition at line 122 of file ExN03PhysicsList.cxx.

123{
124// barions
125 G4Proton::ProtonDefinition();
126 G4AntiProton::AntiProtonDefinition();
127 G4Neutron::NeutronDefinition();
128 G4AntiNeutron::AntiNeutronDefinition();
129}

Referenced by ConstructParticle().

◆ ConstructBosons()

void ExN03PhysicsList::ConstructBosons ( )
protected

Definition at line 73 of file ExN03PhysicsList.cxx.

74{
75 // pseudo-particles
76 G4Geantino::GeantinoDefinition();
77 G4ChargedGeantino::ChargedGeantinoDefinition();
78
79 // gamma
80 G4Gamma::GammaDefinition();
81
82 // optical photon
83 G4OpticalPhoton::OpticalPhotonDefinition();
84}

Referenced by ConstructParticle().

◆ ConstructEM()

void ExN03PhysicsList::ConstructEM ( )
protected

Definition at line 161 of file ExN03PhysicsList.cxx.

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

Referenced by ConstructProcess().

◆ ConstructGeneral()

void ExN03PhysicsList::ConstructGeneral ( )
protected

Definition at line 271 of file ExN03PhysicsList.cxx.

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

Referenced by ConstructProcess().

◆ ConstructLeptons()

void ExN03PhysicsList::ConstructLeptons ( )
protected

Definition at line 88 of file ExN03PhysicsList.cxx.

89{
90 // leptons
91 G4Electron::ElectronDefinition();
92 G4Positron::PositronDefinition();
93 G4MuonPlus::MuonPlusDefinition();
94 G4MuonMinus::MuonMinusDefinition();
95
96 G4NeutrinoE::NeutrinoEDefinition();
97 G4AntiNeutrinoE::AntiNeutrinoEDefinition();
98 G4NeutrinoMu::NeutrinoMuDefinition();
99 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
100}

Referenced by ConstructParticle().

◆ ConstructMesons()

void ExN03PhysicsList::ConstructMesons ( )
protected

Definition at line 104 of file ExN03PhysicsList.cxx.

105{
106 // mesons
107 G4PionPlus::PionPlusDefinition();
108 G4PionMinus::PionMinusDefinition();
109 G4PionZero::PionZeroDefinition();
110 G4Eta::EtaDefinition();
111 G4EtaPrime::EtaPrimeDefinition();
112 G4KaonPlus::KaonPlusDefinition();
113 G4KaonMinus::KaonMinusDefinition();
114 G4KaonZero::KaonZeroDefinition();
115 G4AntiKaonZero::AntiKaonZeroDefinition();
116 G4KaonZeroLong::KaonZeroLongDefinition();
117 G4KaonZeroShort::KaonZeroShortDefinition();
118}

Referenced by ConstructParticle().

◆ ConstructParticle()

void ExN03PhysicsList::ConstructParticle ( )
protected

Definition at line 58 of file ExN03PhysicsList.cxx.

59{
60 // In this method, static member functions should be called
61 // for all particles which you want to use.
62 // This ensures that objects of these particle types will be
63 // created in the program.
64
69}

◆ ConstructProcess()

void ExN03PhysicsList::ConstructProcess ( )
protected

Definition at line 134 of file ExN03PhysicsList.cxx.

135{
136 AddTransportation();
137 ConstructEM();
139}

◆ SetCuts()

void ExN03PhysicsList::SetCuts ( )
protected

Definition at line 290 of file ExN03PhysicsList.cxx.

291{
292 if (verboseLevel >0){
293 G4cout << "ExN03PhysicsList::SetCuts:";
294 G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length") << G4endl;
295 }
296
297 // set cut values for gamma at first and for e- second and next for e+,
298 // because some processes for e+/e- need cut values for gamma
299 //
300 SetCutValue(defaultCutValue, "gamma");
301 SetCutValue(defaultCutValue, "e-");
302 SetCutValue(defaultCutValue, "e+");
303
304 if (verboseLevel>0) DumpCutValuesTable();
305}

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