source: ELYSE/HEAD/source/PhysListEmPenelope.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.2 KB
Line 
1//this
2#include "ELYSE/PhysListEmPenelope.hh"
3
4//Geant 4
5#include "G4ParticleDefinition.hh"
6#include "G4ProcessManager.hh"
7
8#include "G4PenelopeCompton.hh"
9#include "G4PenelopeGammaConversion.hh"
10#include "G4PenelopePhotoElectric.hh"
11#include "G4PenelopeRayleigh.hh"
12
13#include "G4MultipleScattering.hh"
14
15#include "G4PenelopeIonisation.hh"
16#include "G4PenelopeBremsstrahlung.hh"
17#include "G4PenelopeAnnihilation.hh"
18
19#include "G4MuIonisation.hh"
20#include "G4MuBremsstrahlung.hh"
21#include "G4MuPairProduction.hh"
22
23#include "G4hIonisation.hh"
24#include "G4ionIonisation.hh"
25
26//----------------------------------------------------------------------
27
28ELYSE::PhysListEmPenelope::PhysListEmPenelope(const G4String& name)
29 : G4VPhysicsConstructor(name)
30{ }
31
32//----------------------------------------------------------------------
33
34ELYSE::PhysListEmPenelope::~PhysListEmPenelope()
35{ }
36
37//----------------------------------------------------------------------
38
39void ELYSE::PhysListEmPenelope::ConstructProcess()
40{
41 // Add Penelope or standard EM Processes
42
43 theParticleIterator->reset();
44 while( (*theParticleIterator)() ){
45 G4ParticleDefinition* particle = theParticleIterator->value();
46 G4ProcessManager* pmanager = particle->GetProcessManager();
47 G4String particleName = particle->GetParticleName();
48
49 if (particleName == "gamma") {
50 // gamma
51 pmanager->AddDiscreteProcess(new G4PenelopePhotoElectric);
52 pmanager->AddDiscreteProcess(new G4PenelopeCompton);
53 pmanager->AddDiscreteProcess(new G4PenelopeGammaConversion);
54 pmanager->AddDiscreteProcess(new G4PenelopeRayleigh);
55
56 } else if (particleName == "e-") {
57 //electron
58 pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
59 pmanager->AddProcess(new G4PenelopeIonisation, -1, 2, 2);
60 pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 3);
61
62 } else if (particleName == "e+") {
63 //positron
64 pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
65 pmanager->AddProcess(new G4PenelopeIonisation, -1, 2, 2);
66 pmanager->AddProcess(new G4PenelopeBremsstrahlung, -1,-1, 3);
67 pmanager->AddProcess(new G4PenelopeAnnihilation, 0,-1, 4);
68
69 } else if( particleName == "mu+" ||
70 particleName == "mu-" ) {
71 //muon
72 pmanager->AddProcess(new G4MultipleScattering, -1, 1, 1);
73 pmanager->AddProcess(new G4MuIonisation, -1, 2, 2);
74 pmanager->AddProcess(new G4MuBremsstrahlung, -1, 3, 3);
75 pmanager->AddProcess(new G4MuPairProduction, -1, 4, 4);
76
77 } else if( particleName == "alpha" || 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.