BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
ExtPhysicsList.cxx
Go to the documentation of this file.
1//
2// File: ExtPhysicsList.cc
3// Date: 2005.3.9
4// Author: L.L.Wang
5//
6
7#include "ExtPhysicsList.h"
8
9#include "ExtMuIonisation.h"
10#include "ExteIonisation.h"
11#include "ExthIonisation.h"
12// #include "ExtMultipleScattering.h"
13
14#include "G4ParticleTypes.hh"
15
16// #include "G4MultipleScattering.hh"
17#include "G4MuBremsstrahlung.hh"
18#include "G4MuIonisation.hh"
19#include "G4eBremsstrahlung.hh"
20#include "G4eIonisation.hh"
21#include "G4hIonisation.hh"
22
23#include "G4ProcessManager.hh"
24
25ExtPhysicsList::ExtPhysicsList() { defaultCutValue = 0.5 * mm; }
26
28
30 // In this method, static member functions should be called
31 // for all particles which you want to use.
32 // This ensures that objects of these particle types will be
33 // created in the program.
34 G4Gamma::GammaDefinition();
35 G4Electron::ElectronDefinition();
36 G4Positron::PositronDefinition();
37 G4MuonPlus::MuonPlusDefinition();
38 G4MuonMinus::MuonMinusDefinition();
39 G4PionPlus::PionPlusDefinition();
40 G4PionMinus::PionMinusDefinition();
41 G4KaonPlus::KaonPlusDefinition();
42 G4KaonMinus::KaonMinusDefinition();
43 G4Proton::ProtonDefinition();
44 G4AntiProton::AntiProtonDefinition();
45}
46
48 // Define transportation process (must be invoked)
49 AddTransportation();
50
51 auto theParticleIterator = GetParticleIterator();
52 // Add Energy Loss Process
53 theParticleIterator->reset();
54 while ( ( *theParticleIterator )() )
55 {
56 G4ParticleDefinition* particle = theParticleIterator->value();
57 G4ProcessManager* pmanager = particle->GetProcessManager();
58 G4String particleName = particle->GetParticleName();
59 if ( particleName == "e-" || particleName == "e+" )
60 {
61 // pmanager->AddProcess( new G4MultipleScattering,-1,1,1);
62 // pmanager->AddProcess( new G4eIonisation,-1,2,2);
63 pmanager->AddProcess( new ExteIonisation, -1, 1, 1 );
64 // pmanager->AddProcess( new G4eBremsstrahlung,-1,2,2);
65 }
66 else if ( particleName == "mu-" || particleName == "mu+" )
67 {
68 // pmanager->AddProcess( new G4MultipleScattering,-1,1,1);
69 // pmanager->AddProcess( new G4MuIonisation,-1,2,2);
70 pmanager->AddProcess( new ExtMuIonisation, -1, 1, 1 );
71 // pmanager->AddProcess( new G4MuBremsstrahlung,-1,2,2);
72 }
73 else if ( ( !particle->IsShortLived() ) && ( particle->GetPDGCharge() != 0.0 ) &&
74 ( particleName != "chargedgeantino" ) )
75 {
76 // pmanager->AddProcess( new G4MultipleScattering,-1,1,1);
77 // pmanager->AddProcess( new G4hIonisation,-1,2,2);
78 // pmanager->AddProcess( new ExtMultipleScattering,-1,1,1);
79 pmanager->AddProcess( new ExthIonisation, -1, 1, 1 );
80 }
81 }
82}
83
85 // " G4VUserPhysicsList::SetCutsWithDefault" method sets
86 // the default cut value for all particle types
87 SetCutsWithDefault();
88}