source: ELYSE/HEAD/source/PhysListEmStandard.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.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.