source: ELYSE/HEAD/source/PhysListEmPenelope.cxx @ 286

Last change on this file since 286 was 286, checked in by campagne, 17 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.