CGEM BOSS 6.6.5.f
BESIII Offline Software System
Loading...
Searching...
No Matches
ExN04IonPhysics.cxx
Go to the documentation of this file.
1//
2// ********************************************************************
3// * DISCLAIMER *
4// * *
5// * The following disclaimer summarizes all the specific disclaimers *
6// * of contributors to this software. The specific disclaimers,which *
7// * govern, are listed with their locations in: *
8// * http://cern.ch/geant4/license *
9// * *
10// * Neither the authors of this software system, nor their employing *
11// * institutes,nor the agencies providing financial support for this *
12// * work make any representation or warranty, express or implied, *
13// * regarding this software system or assume any liability for its *
14// * use. *
15// * *
16// * This code implementation is the intellectual property of the *
17// * GEANT4 collaboration. *
18// * By copying, distributing or modifying the Program (or any work *
19// * based on the Program) you indicate your acceptance of this *
20// * statement, and all its terms. *
21// ********************************************************************
22//
23//
24// $Id: ExN04IonPhysics.cxx,v 1.1.1.1 2013/11/22 02:11:08 juxd Exp $
25// GEANT4 tag $Name: G4Svc-00-04-01 $
26//
27//
28
29#include <cmath>
30
32
33#include "globals.hh"
34#include "G4ios.hh"
35
36
38 : G4VPhysicsConstructor(name)
39{
40}
41
43{
44}
45
46#include "G4ParticleDefinition.hh"
47#include "G4ParticleTable.hh"
48
49// Nuclei
50#include "G4IonConstructor.hh"
51
53{
54 // Construct light ions
55 G4IonConstructor pConstructor;
56 pConstructor.ConstructParticle();
57}
58
59
60#include "G4ProcessManager.hh"
61
62
64{
65 G4ProcessManager * pManager = 0;
66
67 // Elastic Process
68 theElasticModel = new G4LElastic();
70
71 // Generic Ion
72 pManager = G4GenericIon::GenericIon()->GetProcessManager();
73 // add process
74 pManager->AddDiscreteProcess(&theElasticProcess);
75
76 pManager->AddProcess(&fIonIonisation, ordInActive, 2, 2);
77
78 pManager->AddProcess(&fIonMultipleScattering);
79 pManager->SetProcessOrdering(&fIonMultipleScattering, idxAlongStep, 1);
80 pManager->SetProcessOrdering(&fIonMultipleScattering, idxPostStep, 1);
81
82 // Deuteron
83 pManager = G4Deuteron::Deuteron()->GetProcessManager();
84 // add process
85 pManager->AddDiscreteProcess(&theElasticProcess);
86
87 fDeuteronModel = new G4LEDeuteronInelastic();
89 pManager->AddDiscreteProcess(&fDeuteronProcess);
90
91 pManager->AddProcess(&fDeuteronIonisation, ordInActive, 2, 2);
92
93 pManager->AddProcess(&fDeuteronMultipleScattering);
94 pManager->SetProcessOrdering(&fDeuteronMultipleScattering, idxAlongStep, 1);
95 pManager->SetProcessOrdering(&fDeuteronMultipleScattering, idxPostStep, 1);
96
97 // Triton
98 pManager = G4Triton::Triton()->GetProcessManager();
99 // add process
100 pManager->AddDiscreteProcess(&theElasticProcess);
101
102 fTritonModel = new G4LETritonInelastic();
103 fTritonProcess.RegisterMe(fTritonModel);
104 pManager->AddDiscreteProcess(&fTritonProcess);
105
106 pManager->AddProcess(&fTritonIonisation, ordInActive, 2, 2);
107
108 pManager->AddProcess(&fTritonMultipleScattering);
109 pManager->SetProcessOrdering(&fTritonMultipleScattering, idxAlongStep, 1);
110 pManager->SetProcessOrdering(&fTritonMultipleScattering, idxPostStep, 1);
111
112 // Alpha
113 pManager = G4Alpha::Alpha()->GetProcessManager();
114 // add process
115 pManager->AddDiscreteProcess(&theElasticProcess);
116
117 fAlphaModel = new G4LEAlphaInelastic();
118 fAlphaProcess.RegisterMe(fAlphaModel);
119 pManager->AddDiscreteProcess(&fAlphaProcess);
120
121 pManager->AddProcess(&fAlphaIonisation, ordInActive, 2, 2);
122
123 pManager->AddProcess(&fAlphaMultipleScattering);
124 pManager->SetProcessOrdering(&fAlphaMultipleScattering, idxAlongStep, 1);
125 pManager->SetProcessOrdering(&fAlphaMultipleScattering, idxPostStep, 1);
126
127 // He3
128 pManager = G4He3::He3()->GetProcessManager();
129 // add process
130 pManager->AddDiscreteProcess(&theElasticProcess);
131
132 pManager->AddProcess(&fHe3Ionisation, ordInActive, 2, 2);
133
134 pManager->AddProcess(&fHe3MultipleScattering);
135 pManager->SetProcessOrdering(&fHe3MultipleScattering, idxAlongStep, 1);
136 pManager->SetProcessOrdering(&fHe3MultipleScattering, idxPostStep, 1);
137
138}
139
140
141
virtual ~ExN04IonPhysics()
G4LEAlphaInelastic * fAlphaModel
G4MultipleScattering fHe3MultipleScattering
G4hIonisation fDeuteronIonisation
G4hIonisation fHe3Ionisation
G4LEDeuteronInelastic * fDeuteronModel
G4AlphaInelasticProcess fAlphaProcess
G4MultipleScattering fAlphaMultipleScattering
G4MultipleScattering fDeuteronMultipleScattering
virtual void ConstructProcess()
G4DeuteronInelasticProcess fDeuteronProcess
G4hIonisation fIonIonisation
G4hIonisation fAlphaIonisation
G4TritonInelasticProcess fTritonProcess
G4LETritonInelastic * fTritonModel
ExN04IonPhysics(const G4String &name="ion")
G4MultipleScattering fTritonMultipleScattering
G4hIonisation fTritonIonisation
G4LElastic * theElasticModel
virtual void ConstructParticle()
G4HadronElasticProcess theElasticProcess
G4MultipleScattering fIonMultipleScattering