source: ELYSE/HEAD/source/PhysListEmLivermore.cxx @ 539

Last change on this file since 539 was 286, checked in by campagne, 17 years ago

ELYSE sauvegarde provisoire (JEC)

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