source: trunk/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeTransferProton.cc@ 1058

Last change on this file since 1058 was 1007, checked in by garnier, 17 years ago

update to geant4.9.2

  • Property svn:executable set to *
File size: 7.6 KB
Line 
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id: G4FinalStateChargeTransferProton.cc,v 1.1 2008/03/25 15:48:21 pia Exp $
28// GEANT4 tag $Name: geant4-09-02 $
29//
30// Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch)
31//
32// Reference: TNS Geant4-DNA paper
33// Reference for implementation model: NIM. 155, pp. 145-156, 1978
34
35// History:
36// -----------
37// Date Name Modification
38// 28 Apr 2007 M.G. Pia Created in compliance with design described in TNS paper
39//
40// -------------------------------------------------------------------
41
42// Class description:
43// Final state generation for charge transfer:
44// incident proton hydrocarbon target
45// outgoing neutral hydrogen
46// Further documentation available from http://www.ge.infn.it/geant4/
47
48// -------------------------------------------------------------------
49
50
51#include "G4FinalStateChargeTransferProton.hh"
52#include "G4Track.hh"
53#include "G4Step.hh"
54#include "G4DynamicParticle.hh"
55#include "G4Material.hh"
56#include "G4ParticleDefinition.hh"
57#include "G4SystemOfUnits.hh"
58#include "G4DNAGenericIonsManager.hh"
59
60G4FinalStateChargeTransferProton::G4FinalStateChargeTransferProton()
61{
62 name = "ChargeTransferProton";
63 lowEnergyLimit = 0.1 * eV;
64 highEnergyLimit = 1000. * MeV;
65
66 // Proton binding
67 protonBinding = 13.6 * eV;
68
69 // Ionisation potentials
70 G4String materialName;
71 G4double potential = 0.;
72
73 materialName = "CH";
74 potential = 11.13 * eV;
75 ioniPotentialMap[materialName] = potential;
76
77 materialName = "H2O";
78 potential = 10.79 * eV;
79 ioniPotentialMap[materialName] = potential;
80
81 materialName = "CH4";
82 potential = 12.51 * eV;
83 ioniPotentialMap[materialName] = potential;
84
85 materialName = "C2H6";
86 potential = 11.52 * eV;
87 ioniPotentialMap[materialName] = potential;
88
89 materialName = "C3H8";
90 potential = 11.08 * eV;
91 ioniPotentialMap[materialName] = potential;
92
93 materialName = "CH3";
94 potential = 9.84 * eV;
95 ioniPotentialMap[materialName] = potential;
96
97 materialName = "C2H5";
98 potential = 8.25 * eV;
99 ioniPotentialMap[materialName] = potential;
100 ioniPotentialMap[materialName] = potential;
101
102 materialName = "C3H7";
103 potential = 9.10 * eV;
104 ioniPotentialMap[materialName] = potential;
105
106 materialName = "CH2";
107 potential = 10.46 * eV;
108 ioniPotentialMap[materialName] = potential;
109
110 materialName = "C2H4";
111 potential = 10.51 * eV;
112 ioniPotentialMap[materialName] = potential;
113
114 materialName = "C3H6";
115 potential = 9.74 * eV;
116 ioniPotentialMap[materialName] = potential;
117
118 materialName = "CH";
119 potential = 11.13 * eV;
120 ioniPotentialMap[materialName] = potential;
121
122 materialName = "C2H3";
123 potential = 9.45 * eV;
124 ioniPotentialMap[materialName] = potential;
125
126 materialName = "C3H5";
127 potential = 9.90 * eV;
128 ioniPotentialMap[materialName] = potential;
129
130 materialName = "C2H2";
131 potential = 11.51 * eV;
132 ioniPotentialMap[materialName] = potential;
133
134 materialName = "C3H4";
135 potential = 10.02 * eV;
136 ioniPotentialMap[materialName] = potential;
137
138 materialName = "C2H";
139 potential = 17.42 * eV;
140 ioniPotentialMap[materialName] = potential;
141
142 materialName = "Propyne";
143 potential = 10.36 * eV;
144 ioniPotentialMap[materialName] = potential;
145
146 materialName = "Allene";
147 potential = 9.69 * eV;
148 ioniPotentialMap[materialName] = potential;
149
150 materialName = "C3H3";
151 potential = 8.34 * eV;
152 ioniPotentialMap[materialName] = potential;
153
154 materialName = "C3H2";
155 potential = 12.50 * eV;
156 ioniPotentialMap[materialName] = potential;
157
158 materialName = "C3H";
159 potential = 13.40 * eV;
160 ioniPotentialMap[materialName] = potential;
161
162 materialName = "N2";
163 potential = 15.58 * eV;
164 ioniPotentialMap[materialName] = potential;
165
166 materialName = "O2";
167 potential = 12.07 * eV;
168 ioniPotentialMap[materialName] = potential;
169
170 materialName = "CO2";
171 potential = 13.77 * eV;
172 ioniPotentialMap[materialName] = potential;
173
174 materialName = "CO";
175 potential = 14.01 * eV;
176 ioniPotentialMap[materialName] = potential;
177
178 materialName = "NH3";
179 potential = 10.07 * eV;
180 ioniPotentialMap[materialName] = potential;
181
182 materialName = "NO";
183 potential = 9.26 * eV;
184 ioniPotentialMap[materialName] = potential;
185}
186
187
188G4FinalStateChargeTransferProton::~G4FinalStateChargeTransferProton()
189{ }
190
191
192const G4FinalStateProduct& G4FinalStateChargeTransferProton::GenerateFinalState(const G4Track& track,
193 const G4Step& /* step */)
194{
195 // Clear previous secondaries, energy deposit and particle kill status
196 product.Clear();
197
198 G4double e = track.GetDynamicParticle()->GetKineticEnergy();
199
200 // Get the material the track is in
201 G4Material* material = track.GetMaterial();
202 G4String materialName;
203 materialName = material->GetName();
204
205 // Check whether cross section data are available for the current material
206
207 std::map<G4String,G4double,std::less<G4String> >::const_iterator pos;
208 pos = ioniPotentialMap.find(materialName);
209
210 // Generate final state only if the material is among those included in the ionisation potential
211 // database; otherwise do nothing
212 if (pos!= ioniPotentialMap.end())
213 {
214 // Ionisation potential of the medium
215 G4double potential = (*pos).second;
216
217 // Kinetic energy of the outgoing hydrogen ion
218 G4double eProduct = e - (e * electron_mass_c2/proton_mass_c2) - potential + protonBinding;
219
220 if (eProduct < 0)
221 {
222 G4String message;
223 message="ChargeTransferProton::GenerateFinalState - Secondary product has negative kinetic energy";
224 G4Exception(message);
225 }
226
227 // Primary particle is killed
228 product.KillPrimaryParticle();
229
230 // Deposit the ionisation potential equivalent locally
231 product.AddEnergyDeposit(potential);
232
233 //Secondary particle
234 // Create a Hydrogen ion, same direction as the incoming proton
235 G4DNAGenericIonsManager* instance = G4DNAGenericIonsManager::Instance();
236 G4ParticleDefinition* hydrogenDefinition = instance->GetIon("hydrogen");
237
238
239 G4DynamicParticle* secondary = new G4DynamicParticle(hydrogenDefinition,
240 track.GetDynamicParticle()->GetMomentumDirection(),
241 eProduct);
242 product.AddSecondary(secondary);
243
244 }
245
246 return product;
247}
Note: See TracBrowser for help on using the repository browser.