source: trunk/source/processes/electromagnetic/standard/include/G4PAIPhotonModel.hh @ 1199

Last change on this file since 1199 was 1196, checked in by garnier, 15 years ago

update CVS release candidate geant4.9.3.01

File size: 6.8 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: G4PAIPhotonModel.hh,v 1.12 2009/02/19 19:17:50 vnivanch Exp $
27// GEANT4 tag $Name: geant4-09-03-cand-01 $
28//
29// -------------------------------------------------------------------
30//
31// GEANT4 Class header file
32//
33//
34// File name:     G4PAIPhotonModel
35//
36// Author:        V. Grichine based on Vladimir Ivanchenko  code
37//
38// Creation date: 05.10.2003
39//
40// Modifications:
41// 11.04.05 Major optimisation of internal interfaces (V.Ivantchenko)
42// 26-09-07 Fixed tmax computation (V.Ivantchenko)
43//
44//
45// Class Description:
46//
47// Implementation of PAI model of energy loss and
48// delta-electron production by heavy charged particles
49
50// -------------------------------------------------------------------
51//
52
53#ifndef G4PAIPhotonModel_h
54#define G4PAIPhotonModel_h 1
55
56#include <vector>
57#include "G4VEmModel.hh"
58#include "globals.hh"
59#include "G4VEmFluctuationModel.hh"
60
61class G4PhysicsLogVector;
62class G4PhysicsTable;
63class G4Region;
64class G4MaterialCutsCouple;
65class G4ParticleChangeForLoss;
66
67class G4PAIPhotonModel : public G4VEmModel, public G4VEmFluctuationModel
68{
69
70public:
71
72  G4PAIPhotonModel(const G4ParticleDefinition* p = 0, const G4String& nam = "PAIPhoton");
73
74  virtual ~G4PAIPhotonModel();
75
76  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
77 
78  virtual void InitialiseMe(const G4ParticleDefinition*);
79
80  virtual G4double ComputeDEDXPerVolume(const G4Material*,
81                                        const G4ParticleDefinition*,
82                                        G4double kineticEnergy,
83                                        G4double cutEnergy);
84
85  virtual G4double CrossSectionPerVolume(const G4Material*,
86                                         const G4ParticleDefinition*,
87                                         G4double kineticEnergy,
88                                         G4double cutEnergy,
89                                         G4double maxEnergy);
90
91  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
92                                 const G4MaterialCutsCouple*,
93                                 const G4DynamicParticle*,
94                                 G4double tmin,
95                                 G4double maxEnergy);
96
97  virtual G4double SampleFluctuations(const G4Material*,
98                                      const G4DynamicParticle*,
99                                      G4double&,
100                                      G4double&,
101                                      G4double&);
102
103  virtual G4double Dispersion(    const G4Material*,
104                                  const G4DynamicParticle*,
105                                  G4double&,
106                                  G4double&);
107
108  void     DefineForRegion(const G4Region* r) ;
109  void     ComputeSandiaPhotoAbsCof();
110  void     BuildPAIonisationTable();
111  void     BuildLambdaVector(const G4MaterialCutsCouple* matCutsCouple);
112
113  G4double GetdNdxCut( G4int iPlace, G4double transferCut);
114  G4double GetdNdxPhotonCut( G4int iPlace, G4double transferCut);
115  G4double GetdNdxPlasmonCut( G4int iPlace, G4double transferCut);
116
117  G4double GetdEdxCut( G4int iPlace, G4double transferCut);
118
119  G4double GetPostStepTransfer(G4PhysicsTable*, G4PhysicsLogVector*,
120                               G4int iPlace, G4double scaledTkin );
121  G4double GetAlongStepTransfer(G4PhysicsTable*, G4PhysicsLogVector*,
122                               G4int iPlace, G4double scaledTkin,G4double step, G4double cof );
123  G4double GetEnergyTransfer(G4PhysicsTable*, G4int iPlace,
124                             G4double position, G4int iTransfer );
125
126protected:
127
128  G4double MaxSecondaryEnergy(const G4ParticleDefinition*,
129                              G4double kinEnergy);
130
131private:
132
133  void SetParticle(const G4ParticleDefinition* p);
134
135  // hide assignment operator
136  G4PAIPhotonModel & operator=(const  G4PAIPhotonModel &right);
137  G4PAIPhotonModel(const  G4PAIPhotonModel&);
138
139  // The vector over proton kinetic energies: the range of gammas
140
141  G4double             fLowestKineticEnergy;
142  G4double             fHighestKineticEnergy;
143  G4int                fTotBin;
144  G4int                fMeanNumber;
145  G4int                fVerbose; 
146  G4PhysicsLogVector*  fProtonEnergyVector ;
147
148  // vectors
149
150  G4PhysicsTable*                    fPAItransferTable;
151  std::vector<G4PhysicsTable*>       fPAIxscBank;
152
153  G4PhysicsTable*                    fPAIphotonTable;
154  std::vector<G4PhysicsTable*>       fPAIphotonBank;
155
156  G4PhysicsTable*                    fPAIplasmonTable;
157  std::vector<G4PhysicsTable*>       fPAIplasmonBank;
158
159  G4PhysicsTable*                    fPAIdEdxTable;
160  std::vector<G4PhysicsTable*>       fPAIdEdxBank;
161
162  std::vector<const G4MaterialCutsCouple*> fMaterialCutsCoupleVector;
163  std::vector<const G4Region*>       fPAIRegionVector;
164
165  size_t                             fMatIndex ; 
166  G4double**                         fSandiaPhotoAbsCof ;
167  G4int                              fSandiaIntervalNumber ;
168
169  G4PhysicsLogVector*              fdEdxVector ;
170  std::vector<G4PhysicsLogVector*> fdEdxTable ;
171
172  G4PhysicsLogVector*              fLambdaVector ;
173  std::vector<G4PhysicsLogVector*> fLambdaTable ;
174
175  G4PhysicsLogVector*              fdNdxCutVector ;
176  std::vector<G4PhysicsLogVector*> fdNdxCutTable ;
177
178  G4PhysicsLogVector*              fdNdxCutPhotonVector ;
179  std::vector<G4PhysicsLogVector*> fdNdxCutPhotonTable ;
180
181  G4PhysicsLogVector*              fdNdxCutPlasmonVector ;
182  std::vector<G4PhysicsLogVector*> fdNdxCutPlasmonTable ;
183
184
185  const G4ParticleDefinition* fParticle;
186  const G4ParticleDefinition* fElectron;
187  const G4ParticleDefinition* fPositron;
188  G4ParticleChangeForLoss*    fParticleChange;
189
190  G4double fMass;
191  G4double fSpin;
192  G4double fChargeSquare;
193  G4double fRatio;
194  G4double fHighKinEnergy;
195  G4double fLowKinEnergy;
196  G4double fTwoln10;
197  G4double fBg2lim; 
198  G4double fTaulim;
199  G4double fQc;
200
201  G4bool   isInitialised;
202};
203
204#endif
205
206
207
208
209
210
211
Note: See TracBrowser for help on using the repository browser.