/[PAMELA software]/PamG4/src/IonPhysics.cc
ViewVC logotype

Contents of /PamG4/src/IonPhysics.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (download) (vendor branch)
Tue Dec 13 16:20:39 2005 UTC (18 years, 11 months ago) by cafagna
Branch: start, MAIN
CVS Tags: v1r0, bogo, HEAD
Changes since 1.1: +0 -0 lines
Geant4 code for ND and Calorimeter

1
2 #include "IonPhysics.hh"
3
4 #include "globals.hh"
5 #include "G4ios.hh"
6
7
8 #include "G4ParticleDefinition.hh"
9 #include "G4ProcessManager.hh"
10 //#include "G4LFission.hh"
11 //#include "G4LCapture.hh"
12 #include "G4Deuteron.hh"
13 #include "G4Triton.hh"
14 #include "G4He3.hh"
15 #include "G4Alpha.hh"
16 //#include "IonC12.hh"
17 #include "G4GenericIon.hh"
18
19 #include "G4ExcitationHandler.hh"
20 #include "G4Evaporation.hh"
21 #include "G4FermiBreakUp.hh"
22 #include "G4StatMF.hh"
23 #include "G4GeneratorPrecompoundInterface.hh"
24
25 #include "G4HadronInelasticProcess.hh"
26 #include "G4BinaryLightIonReaction.hh"
27 #include "G4TripathiCrossSection.hh"
28 #include "G4IonsShenCrossSection.hh"
29 #include "G4LEDeuteronInelastic.hh"
30 #include "G4LETritonInelastic.hh"
31 #include "G4LEAlphaInelastic.hh"
32
33
34 IonPhysics::IonPhysics(const G4String& name)
35 : G4VPhysicsConstructor(name)
36 {
37 }
38 IonPhysics::~IonPhysics()
39 {
40 }
41
42 //#include "G4ParticleDefinition.hh"
43 //#include "G4ParticleTable.hh"
44
45 // Nuclei
46 #include "G4IonConstructor.hh"
47
48 void IonPhysics::ConstructParticle()
49 {
50 // Construct light ions
51 G4IonConstructor pConstructor;
52 pConstructor.ConstructParticle();
53 }
54
55
56 //#include "G4ProcessManager.hh"
57
58
59 void IonPhysics::ConstructProcess()
60 {
61
62 G4ParticleDefinition* particle = 0;
63 G4ProcessManager* pmanager = 0;
64 G4BinaryLightIonReaction* theBC = new G4BinaryLightIonReaction();
65 theBC->SetMinEnergy(80*MeV);
66 theBC->SetMaxEnergy(20*GeV);
67
68 G4TripathiCrossSection * TripathiCrossSection= new G4TripathiCrossSection;
69 G4IonsShenCrossSection * aShen = new G4IonsShenCrossSection;
70
71
72 // Elastic Process
73 theElasticModel = new G4LElastic();
74 theElasticProcess.RegisterMe(theElasticModel);
75
76 // Generic Ion
77 // pmanager = G4GenericIon::GenericIon()->GetProcessManager();
78 // add process
79
80
81
82 // GenericIon
83 particle = G4GenericIon::GenericIon();
84 pmanager = particle->GetProcessManager();
85 G4HadronInelasticProcess* theIPGenericIon =
86 new G4HadronInelasticProcess("IonInelastic",particle);
87 theIPGenericIon->AddDataSet(TripathiCrossSection);
88 theIPGenericIon->AddDataSet(aShen);
89 G4BinaryLightIonReaction * theGenIonBC= new G4BinaryLightIonReaction;
90 theGenIonBC->SetMinEnergy(0*MeV);
91 theGenIonBC->SetMaxEnergy(10*GeV);
92 theIPGenericIon->RegisterMe(theGenIonBC);
93 pmanager->AddDiscreteProcess(theIPGenericIon);
94 //-------------------------------------------------
95 pmanager->AddDiscreteProcess(&theElasticProcess);
96 pmanager->AddProcess(&fIonIonisation, ordInActive, 2, 2);
97 pmanager->AddProcess(&fIonMultipleScattering);
98 pmanager->SetProcessOrdering(&fIonMultipleScattering, idxAlongStep, 1);
99 pmanager->SetProcessOrdering(&fIonMultipleScattering, idxPostStep, 1);
100 //------------------------------------------------------------------------
101
102 // C12
103 // particle = IonC12::Ion();
104 // pmanager = particle->GetProcessManager();
105 // G4HadronInelasticProcess* theIPIonC12 =
106 // new G4HadronInelasticProcess("IonC12Inelastic",particle);
107 // theIPIonC12->AddDataSet(TripathiCrossSection);
108 // theIPIonC12->AddDataSet(aShen);
109 // theIPIonC12->RegisterMe(theGenIonBC);
110 // pmanager->AddDiscreteProcess(theIPIonC12);
111 //------------------------------------------------------------------------
112 // Deuteron
113 particle = G4Deuteron::Deuteron();
114 pmanager = particle->GetProcessManager();
115 G4LEDeuteronInelastic* theDIModel = new G4LEDeuteronInelastic;
116 theDIModel->SetMaxEnergy(100*MeV);
117 theIPdeuteron.AddDataSet(TripathiCrossSection);
118 theIPdeuteron.AddDataSet(aShen);
119 theIPdeuteron.RegisterMe(theDIModel);
120 theIPdeuteron.RegisterMe(theBC);
121 pmanager->AddDiscreteProcess(&theIPdeuteron);
122 //------------------------------------------------------
123 // pmanager = G4Deuteron::Deuteron()->GetProcessManager();
124 // add process
125 pmanager->AddDiscreteProcess(&theElasticProcess);
126
127 // fDeuteronModel = new G4LEDeuteronInelastic();
128 // fDeuteronProcess.RegisterMe(fDeuteronModel);
129 // pmanager->AddDiscreteProcess(&fDeuteronProcess);
130
131 pmanager->AddProcess(&fDeuteronIonisation, ordInActive, 2, 2);
132
133 pmanager->AddProcess(&fDeuteronMultipleScattering);
134 pmanager->SetProcessOrdering(&fDeuteronMultipleScattering, idxAlongStep, 1);
135 pmanager->SetProcessOrdering(&fDeuteronMultipleScattering, idxPostStep, 1);
136 //------------------------------------------------------------------------------
137 // Triton
138 //-----------------------------------------------------------------------------
139 particle = G4Triton::Triton();
140 pmanager = particle->GetProcessManager();
141 G4LETritonInelastic* theTIModel = new G4LETritonInelastic;
142 theTIModel->SetMaxEnergy(100*MeV);
143 theIPtriton.AddDataSet(TripathiCrossSection);
144 theIPtriton.AddDataSet(aShen);
145 theIPtriton.RegisterMe(theTIModel);
146 theIPtriton.RegisterMe(theBC);
147 pmanager->AddDiscreteProcess(&theIPtriton);
148 pmanager = G4Triton::Triton()->GetProcessManager();
149 // add process
150 //----------------------------------------------
151 pmanager->AddDiscreteProcess(&theElasticProcess);
152
153 // fTritonModel = new G4LETritonInelastic();
154 // fTritonProcess.RegisterMe(fTritonModel);
155 //pmanager->AddDiscreteProcess(&fTritonProcess);
156
157 pmanager->AddProcess(&fTritonIonisation, ordInActive, 2, 2);
158
159 pmanager->AddProcess(&fTritonMultipleScattering);
160 pmanager->SetProcessOrdering(&fTritonMultipleScattering, idxAlongStep, 1);
161 pmanager->SetProcessOrdering(&fTritonMultipleScattering, idxPostStep, 1);
162
163 // Alpha
164
165 particle = G4Alpha::Alpha();
166 pmanager = particle->GetProcessManager();
167 G4LEAlphaInelastic* theAIModel = new G4LEAlphaInelastic;
168 theAIModel->SetMaxEnergy(100*MeV);
169 theIPalpha.AddDataSet(TripathiCrossSection);
170 theIPalpha.AddDataSet(aShen);
171 theIPalpha.RegisterMe(theAIModel);
172 theIPalpha.RegisterMe(theBC);
173 pmanager->AddDiscreteProcess(&theIPalpha);
174 //-------------------------------------------------------------------------
175 // pmanager = G4Alpha::Alpha()->GetProcessManager();
176 // add process
177 pmanager->AddDiscreteProcess(&theElasticProcess);
178
179 // fAlphaModel = new G4LEAlphaInelastic();
180 // fAlphaProcess.RegisterMe(fAlphaModel);
181 // pmanager->AddDiscreteProcess(&fAlphaProcess);
182
183 pmanager->AddProcess(&fAlphaIonisation, ordInActive, 2, 2);
184
185 pmanager->AddProcess(&fAlphaMultipleScattering);
186 pmanager->SetProcessOrdering(&fAlphaMultipleScattering, idxAlongStep, 1);
187 pmanager->SetProcessOrdering(&fAlphaMultipleScattering, idxPostStep, 1);
188 //------------------------------------------------------------------------
189 // He3
190 particle = G4He3::He3();
191 pmanager = particle->GetProcessManager();
192 G4HadronInelasticProcess* theIPHe3 =
193 new G4HadronInelasticProcess("He3Inelastic",particle);
194 theIPHe3->AddDataSet(TripathiCrossSection);
195 theIPHe3->AddDataSet(aShen);
196 theIPHe3->RegisterMe(theGenIonBC);
197 pmanager->AddDiscreteProcess(theIPHe3);
198 //------------------------------------------------------------------------
199 // pmanager = G4He3::He3()->GetProcessManager();
200 // add process
201 pmanager->AddDiscreteProcess(&theElasticProcess);
202
203 pmanager->AddProcess(&fHe3Ionisation, ordInActive, 2, 2);
204
205 pmanager->AddProcess(&fHe3MultipleScattering);
206 pmanager->SetProcessOrdering(&fHe3MultipleScattering, idxAlongStep, 1);
207 pmanager->SetProcessOrdering(&fHe3MultipleScattering, idxPostStep, 1);
208
209 }
210
211
212

  ViewVC Help
Powered by ViewVC 1.1.23