source: ELYSE/HEAD/source/PhysListEmStandard.cxx@ 294

Last change on this file since 294 was 286, checked in by campagne, 19 years ago

ELYSE sauvegarde provisoire (JEC)

File size: 3.0 KB
Line 
1//this
2#include "ELYSE/PhysListEmStandard.hh"
3
4//Geant 4
5#include "G4ParticleDefinition.hh"
6#include "G4ProcessManager.hh"
7
8#include "G4ComptonScattering.hh"
9#include "G4GammaConversion.hh"
10#include "G4PhotoElectricEffect.hh"
11
12#include "G4MultipleScattering.hh"
13
14#include "G4eIonisation.hh"
15#include "G4eBremsstrahlung.hh"
16#include "G4eplusAnnihilation.hh"
17
18#include "G4MuIonisation.hh"
19#include "G4MuBremsstrahlung.hh"
20#include "G4MuPairProduction.hh"
21
22#include "G4hIonisation.hh"
23#include "G4ionIonisation.hh"
24
25//----------------------------------------------------------------------
26
27ELYSE::PhysListEmStandard::PhysListEmStandard(const G4String& name)
28 : G4VPhysicsConstructor(name)
29{}
30
31//----------------------------------------------------------------------
32
33ELYSE::PhysListEmStandard::~PhysListEmStandard()
34{}
35
36//----------------------------------------------------------------------
37
38void ELYSE::PhysListEmStandard::ConstructProcess()
39{
40 // Add standard EM Processes
41
42 theParticleIterator->reset();
43 while( (*theParticleIterator)() ){
44 G4ParticleDefinition* particle = theParticleIterator->value();
45 G4ProcessManager* pmanager = particle->GetProcessManager();
46 G4String particleName = particle->GetParticleName();
47
48 if (particleName == "gamma") {
49 // gamma
50 pmanager->AddDiscreteProcess(new G4PhotoElectricEffect);
51 pmanager->AddDiscreteProcess(new G4ComptonScattering);
52 pmanager->AddDiscreteProcess(new G4GammaConversion);
53
54 } else if (particleName == "e-") {
55 //electron
56 pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
57 pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
58 pmanager->AddProcess(new G4eBremsstrahlung(), -1, 3, 3);
59
60 } else if (particleName == "e+") {
61 //positron
62 pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
63 pmanager->AddProcess(new G4eIonisation, -1, 2, 2);
64 pmanager->AddProcess(new G4eBremsstrahlung(), -1, 3, 3);
65 pmanager->AddProcess(new G4eplusAnnihilation, 0,-1, 4);
66
67 } else if( particleName == "mu+" ||
68 particleName == "mu-" ) {
69 //muon
70 pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
71 pmanager->AddProcess(new G4MuIonisation, -1, 2,2);
72 pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3,3);
73 pmanager->AddProcess(new G4MuPairProduction, -1, 4,4);
74
75 } else if( particleName == "alpha" ||
76 particleName == "He3" ||
77 particleName == "GenericIon" ) {
78 pmanager->AddProcess(new G4MultipleScattering, -1, 1,1);
79 pmanager->AddProcess(new G4ionIonisation, -1, 2,2);
80
81 } else if ((!particle->IsShortLived()) &&
82 (particle->GetPDGCharge() != 0.0) &&
83 (particle->GetParticleName() != "chargedgeantino")) {
84 //all others charged particles except geantino
85 pmanager->AddProcess(new G4MultipleScattering, -1,1,1);
86 pmanager->AddProcess(new G4hIonisation, -1,2,2);
87 }
88 }
89}
90
91//----------------------------------------------------------------------
92
Note: See TracBrowser for help on using the repository browser.