ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4LowEPComptonModel.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4LowEPComptonModel.hh
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 // | |
28 // | G4LowEPComptonModel-- Geant4 Monash University |
29 // | low energy Compton scattering model. |
30 // | J. M. C. Brown, Monash University, Australia |
31 // | ## Unpolarised photons only ## |
32 // | |
33 // | |
34 // *********************************************************************
35 // | |
36 // | The following is a Geant4 class to simulate the process of |
37 // | bound electron Compton scattering. General code structure is |
38 // | based on G4LowEnergyCompton.cc and G4LivermoreComptonModel.cc. |
39 // | Algorithms for photon energy, and ejected Compton electron |
40 // | direction taken from: |
41 // | |
42 // | J. M. C. Brown, M. R. Dimmock, J. E. Gillam and D. M. Paganin, |
43 // | "A low energy bound atomic electron Compton scattering model |
44 // | for Geant4", NIMB, Vol. 338, 77-88, 2014. |
45 // | |
46 // | The author acknowledges the work of the Geant4 collaboration |
47 // | in developing the following algorithms that have been employed |
48 // | or adapeted for the present software: |
49 // | |
50 // | # sampling of photon scattering angle, |
51 // | # target element selection in composite materials, |
52 // | # target shell selection in element, |
53 // | # and sampling of bound electron momentum from Compton profiles. |
54 // | |
55 // *********************************************************************
56 // | |
57 // | History: |
58 // | -------- |
59 // | |
60 // | Nov. 2011 JMCB - First version |
61 // | Feb. 2012 JMCB - Migration to Geant4 9.5 |
62 // | Sep. 2012 JMCB - Final fixes for Geant4 9.6 |
63 // | Feb. 2013 JMCB - Geant4 9.6 FPE fix for bug 1426 |
64 // | Jan. 2015 JMCB - Migration to MT (Based on Livermore |
65 // | implementation) |
66 // | Feb. 2016 JMCB - Geant4 10.2 FPE fix for bug 1676 |
67 // | |
68 // *********************************************************************
69 
70 #ifndef G4LowEPComptonModel_h
71 #define G4LowEPComptonModel_h 1
72 
73 #include "G4VEmModel.hh"
74 #include "G4LPhysicsFreeVector.hh"
75 
78 class G4ShellData;
79 class G4DopplerProfile;
80 
82 {
83 
84 public:
85 
87  const G4String& nam = "LowEPComptonModel");
88 
89  virtual ~G4LowEPComptonModel();
90 
91  virtual void Initialise(const G4ParticleDefinition*, const G4DataVector&);
92 
93  virtual void InitialiseLocal(const G4ParticleDefinition*,
94  G4VEmModel* masterModel);
95 
96  virtual void InitialiseForElement(const G4ParticleDefinition*, G4int Z);
97 
99  G4double kinEnergy,
100  G4double Z,
101  G4double A=0,
102  G4double cut=0,
104 
105  virtual void SampleSecondaries(std::vector<G4DynamicParticle*>*,
106  const G4MaterialCutsCouple*,
107  const G4DynamicParticle*,
108  G4double tmin,
109  G4double maxEnergy);
110 
111 private:
112 
113  void ReadData(size_t Z, const char* path = 0);
114 
116 
119 
122 
123  //G4double lowestEnergy;
124 
127 
130 
131  static G4int maxZ;
133 
134  static const G4double ScatFuncFitParam[101][9];
135 
136 };
137 
138 //****************************************************************************
139 
140 #endif