source: trunk/source/processes/electromagnetic/standard/include/G4IonCoulombCrossSection.hh @ 1350

Last change on this file since 1350 was 1350, checked in by garnier, 13 years ago

update to last version 4.9.4

File size: 5.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//      G4IonCoulombCrossSection.hh
27//-------------------------------------------------------------------
28//
29// GEANT4 Class header file
30//
31// File name:    G4IonCoulombCrossSection
32//
33// Author:      Cristina Consolandi
34//
35// Creation date: 05.10.2010 from G4eCoulombScatteringModel
36//
37// Class Description:
38//      Computation of Screen-Coulomb Cross Section
39//      for protons, alpha and heavy Ions
40//
41//
42// Reference:
43//      M.J. Boschini et al. "Nuclear and Non-Ionizing Energy-Loss
44//      for Coulomb Scattered Particles from Low Energy up to Relativistic
45//      Regime in Space Radiation Environment"
46//      Accepted for publication in the Proceedings of  the  ICATPP Conference
47//      on Cosmic Rays for Particle and Astroparticle Physics, Villa  Olmo, 7-8
48//      October,  2010, to be published by World Scientific (Singapore).
49//
50//      Available for downloading at:
51//      http://arxiv.org/abs/1011.4822
52//
53// -------------------------------------------------------------------
54
55//
56#ifndef G4IonCoulombCrossSection_h
57#define G4IonCoulombCrossSection_h 1
58
59//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
60
61#include "globals.hh"
62#include "G4Material.hh"
63#include "G4Element.hh"
64#include "G4ElementVector.hh"
65#include "G4NistManager.hh"
66#include "G4ThreeVector.hh"
67#include "G4Pow.hh"
68#include "G4LossTableManager.hh"
69
70class G4ParticleDefinition;
71
72//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
73
74class G4IonCoulombCrossSection
75{
76
77public:
78
79        G4IonCoulombCrossSection();
80
81        virtual ~G4IonCoulombCrossSection();
82
83        void Initialise(const G4ParticleDefinition*, G4double cosThetaLim);
84
85        G4double NuclearCrossSection();
86
87        G4double SampleCosineTheta();
88
89        inline void SetupParticle(const G4ParticleDefinition*);
90
91        void SetupKinematic(G4double kinEnergy, G4double cut,G4int iz);
92
93        void SetupTarget(G4double Z, G4double kinEnergy,G4int heavycorr);
94
95        inline G4double GetMomentum2();
96
97private:
98         void   SetScreenRSquare(G4int iz);
99
100
101        G4IonCoulombCrossSection & operator=(const  G4IonCoulombCrossSection &right);
102        G4IonCoulombCrossSection(const  G4IonCoulombCrossSection&);
103
104
105
106        const G4ParticleDefinition* theProton; 
107
108        G4NistManager*  fNistManager;           
109
110protected:
111        G4double                coeff;   
112
113        //cost - min - max
114        G4double                cosThetaMin;// def 1.0
115        G4double                cosThetaMax;// def -1.0
116
117                                                //SetupTarget
118        G4double                cosTetMinNuc;// -->cosThetaMin
119        G4double                cosTetMaxNuc;// -->cosThetaMax
120
121
122        //cross section
123        G4double                nucXSection;           
124
125        //energy cut
126        G4double                ecut;       
127        G4double                etag;       
128
129        // projectile........................
130        const G4ParticleDefinition* particle;
131
132        G4double                chargeSquare; 
133        G4double                spin;     
134        G4double                mass;     
135
136        //lab of incedent particle
137        G4double                tkinLab;
138        G4double                momLab2;
139        G4double                invbetaLab2;
140
141        //relative system with nucleus
142        G4double                tkin;     
143        G4double                mom2;     
144        G4double                invbeta2;         
145
146        // target nucleus
147        G4double                targetZ;   
148        G4double                targetMass; 
149        G4double                screenZ; 
150 
151
152private:
153
154        G4double                alpha2;
155        G4double                ScreenRSquare; 
156
157};
158
159
160//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
161
162inline void G4IonCoulombCrossSection::SetupParticle(const G4ParticleDefinition* p)
163{
164        particle = p;
165        mass = particle->GetPDGMass();
166        spin = particle->GetPDGSpin();
167                if(0.0 != spin) { spin = 0.5; }
168        G4double q = std::fabs(particle->GetPDGCharge()/eplus);
169        chargeSquare = q*q;
170        tkin = 0.0;
171}
172//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
173
174
175inline G4double G4IonCoulombCrossSection::GetMomentum2(){
176        return mom2;
177}
178//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
179
180#endif
181
182
Note: See TracBrowser for help on using the repository browser.