source: trunk/source/processes/electromagnetic/standard/include/G4InitXscPAI.hh @ 1315

Last change on this file since 1315 was 1228, checked in by garnier, 14 years ago

update geant4.9.3 tag

File size: 5.2 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: G4InitXscPAI.hh,v 1.8 2006/06/29 19:50:22 gunter Exp $
28// GEANT4 tag $Name: geant4-09-03 $
29//
30//
31// G4InitXscPAI.hh -- header file
32//
33// History:
34//
35// 02.04.04, V. Grichine: 1st version based on G4PAIxSection class
36
37#ifndef G4INITXSCPAI_HH
38#define G4INITXSCPAI_HH
39
40#include "G4ios.hh"
41#include "globals.hh"
42#include "Randomize.hh"
43#include "G4OrderedTable.hh"
44#include "G4PhysicsLogVector.hh"
45
46class G4MaterialCutsCouple;
47class G4SandiaTable;
48
49class G4InitXscPAI
50{
51public:
52          // Constructors
53  G4InitXscPAI( const G4MaterialCutsCouple* matCC);
54
55
56
57  virtual ~G4InitXscPAI() ;
58
59  // Methods
60  // General control functions
61
62  void KillCloseIntervals();
63
64  void Normalisation();
65
66
67  // Physical methods
68
69
70  G4double RutherfordIntegral( G4int intervalNumber,
71                                       G4double limitLow,
72                                       G4double limitHigh     ) ;
73
74  G4double IntegralTerm(G4double omega);
75
76  G4double ImPartDielectricConst( G4int intervalNumber,
77                                          G4double energy        ) ;
78
79  G4double RePartDielectricConst(G4double energy) ;
80
81  G4double ModuleSqDielectricConst( G4int intervalNumber,
82                                          G4double energy        ) ;
83
84  G4double DifPAIxSection( G4double omega ) ;
85  G4double DifPAIdEdx( G4double omega ) ;
86
87  G4double PAIdNdxCherenkov( G4double omega ) ;
88
89  G4double PAIdNdxPlasmon( G4double omega ) ;
90
91  void     IntegralPAIxSection(G4double bg2, G4double Tmax) ;
92  void     IntegralCherenkov(G4double bg2, G4double Tmax) ;
93  void     IntegralPlasmon(G4double bg2, G4double Tmax) ;
94
95  void      IntegralPAIdEdx(G4double bg2, G4double Tmax) ;
96
97
98  G4double GetPhotonLambda( G4double omega ) ;
99
100
101  G4double GetStepEnergyLoss( G4double step ) ;
102  G4double GetStepCerenkovLoss( G4double step ) ;
103  G4double GetStepPlasmonLoss( G4double step ) ;
104
105  // Inline access functions
106
107
108  G4int GetIntervalNumber() const { return fIntervalNumber ; }
109  G4int GetBinPAI() const { return fPAIbin ; }
110
111  G4double GetNormalizationCof() const { return fNormalizationCof ; }
112
113  G4double GetMatSandiaMatrix(G4int i, G4int j) const
114          { return (*(*fMatSandiaMatrix)[i])[j]; }
115
116  G4PhysicsLogVector* GetPAIxscVector() const { return fPAIxscVector;}
117  G4PhysicsLogVector* GetPAIdEdxVector() const { return fPAIdEdxVector;}
118  G4PhysicsLogVector* GetPAIphotonVector() const { return fPAIphotonVector;}
119  G4PhysicsLogVector* GetPAIelectronVector() const { return fPAIelectronVector;}
120  G4PhysicsLogVector* GetChCosSqVector() const { return fChCosSqVector;}
121  G4PhysicsLogVector* GetChWidthVector() const { return fChWidthVector;}
122
123protected :
124
125private :
126
127  // Local class constants
128
129  static const G4double fDelta ; // energy shift from interval border = 0.001
130  static const G4int fPAIbin;
131  static const G4double fSolidDensity; // ~the border between gases and solids
132
133  G4int    fIntervalNumber;    //  The number of energy intervals
134  G4double fNormalizationCof;   // Normalization cof for PhotoAbsorptionXsection
135  G4int    fCurrentInterval;
136  G4int    fIntervalTmax;
137  G4double fBetaGammaSq ;        // (beta*gamma)^2
138  G4double fTmax;
139  G4double fDensity ;            // Current density
140  G4double fElectronDensity ;    // Current electron (number) density
141
142  // Arrays of Sandia coefficients
143
144  G4OrderedTable* fMatSandiaMatrix;
145  G4SandiaTable*  fSandia;
146
147  // vectors of integral cross-sections
148 
149  G4PhysicsLogVector* fPAIxscVector;
150  G4PhysicsLogVector* fPAIdEdxVector;
151  G4PhysicsLogVector* fPAIphotonVector;
152  G4PhysicsLogVector* fPAIelectronVector;
153  G4PhysicsLogVector* fChCosSqVector;
154  G4PhysicsLogVector* fChWidthVector;
155 
156};   
157
158#endif   
159
160//
161//
162/////////////////   end of G4InitXscPAI header file    //////////////////////
Note: See TracBrowser for help on using the repository browser.