source: trunk/source/processes/electromagnetic/lowenergy/include/G4DNABornIonisationModel.hh@ 1201

Last change on this file since 1201 was 1196, checked in by garnier, 16 years ago

update CVS release candidate geant4.9.3.01

File size: 4.9 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// $Id: G4DNABornIonisationModel.hh,v 1.3 2009/06/26 10:15:19 mantero Exp $
27// GEANT4 tag $Name: geant4-09-03-cand-01 $
28//
29
30#ifndef G4DNABornIonisationModel_h
31#define G4DNABornIonisationModel_h 1
32
33#include "G4VEmModel.hh"
34#include "G4ParticleChangeForGamma.hh"
35#include "G4ProductionCutsTable.hh"
36
37#include "G4DNACrossSectionDataSet.hh"
38#include "G4Electron.hh"
39#include "G4Proton.hh"
40//#include "G4DNAGenericMoleculeManager.hh"
41#include "G4DNAGenericIonsManager.hh"
42
43#include "G4LogLogInterpolation.hh"
44
45#include "G4WaterIonisationStructure.hh"
46
47class G4DNABornIonisationModel : public G4VEmModel
48{
49
50public:
51
52 G4DNABornIonisationModel(const G4ParticleDefinition* p = 0,
53 const G4String& nam = "DNABornIonisationModel");
54
55 virtual ~G4DNABornIonisationModel();
56
57 virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
58
59 virtual G4double CrossSectionPerVolume( const G4Material* material,
60 const G4ParticleDefinition* p,
61 G4double ekin,
62 G4double emin,
63 G4double emax);
64
65 virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
66 const G4MaterialCutsCouple*,
67 const G4DynamicParticle*,
68 G4double tmin,
69 G4double maxEnergy);
70
71protected:
72
73 G4ParticleChangeForGamma* fParticleChangeForGamma;
74
75private:
76
77 std::map<G4String,G4double,std::less<G4String> > lowEnergyLimit;
78 std::map<G4String,G4double,std::less<G4String> > highEnergyLimit;
79
80 G4bool isInitialised;
81 G4int verboseLevel;
82
83 // Cross section
84
85 typedef std::map<G4String,G4String,std::less<G4String> > MapFile;
86 MapFile tableFile;
87
88 typedef std::map<G4String,G4DNACrossSectionDataSet*,std::less<G4String> > MapData;
89 MapData tableData;
90
91 // Final state
92
93 G4WaterIonisationStructure waterStructure;
94
95 G4double RandomizeEjectedElectronEnergy(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4int shell) ;
96
97 void RandomizeEjectedElectronDirection(G4ParticleDefinition * aParticleDefinition, G4double incomingParticleEnergy, G4double
98 outgoingParticleEnergy, G4double & cosTheta, G4double & phi );
99
100 double DifferentialCrossSection(G4ParticleDefinition * aParticleDefinition, G4double k, G4double energyTransfer, G4int shell);
101
102 G4double LogLogInterpolate(G4double e1, G4double e2, G4double e, G4double xs1, G4double xs2);
103
104 G4double QuadInterpolator( G4double e11,
105 G4double e12,
106 G4double e21,
107 G4double e22,
108 G4double x11,
109 G4double x12,
110 G4double x21,
111 G4double x22,
112 G4double t1,
113 G4double t2,
114 G4double t,
115 G4double e);
116
117 typedef std::map<double, std::map<double, double> > TriDimensionMap;
118 TriDimensionMap eDiffCrossSectionData[6];
119 TriDimensionMap pDiffCrossSectionData[6];
120 std::vector<double> eTdummyVec;
121 std::vector<double> pTdummyVec;
122
123 typedef std::map<double, std::vector<double> > VecMap;
124 VecMap eVecm;
125 VecMap pVecm;
126
127 // Partial cross section
128
129 G4int RandomSelect(G4double energy,const G4String& particle );
130
131 // Test water material
132
133 G4bool flagMaterialIsWater;
134 G4double densityWater;
135
136 //
137
138 G4DNABornIonisationModel & operator=(const G4DNABornIonisationModel &right);
139 G4DNABornIonisationModel(const G4DNABornIonisationModel&);
140
141};
142
143//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
144
145#endif
Note: See TracBrowser for help on using the repository browser.