ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4UCNMicroRoughnessHelper.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4UCNMicroRoughnessHelper.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 //
29 // ClassName: G4UCNMicroRoughnessHelper
30 //
31 // Class description:
32 //
33 // This file contains the headers of various functions all related to the
34 // calculation of microroughness.
35 // see A. Steyerl, Z. Physik 254 (1972) 169.
36 //
37 // Angular cut: for angles which are closer to the specular direction than a
38 // certain value (0.01°), the probability is set to 0 in order to avoid a
39 // hang-up at the generation of the polar angle due to a very sharp angular
40 // distribution
41 //
42 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
43 
44 // 12-05-14, adopted from Stefan Heule (PSI) Thesis by P.Gumplinger
45 // reported in F. Atchison et al., Eur. Phys. J. A 44, 23–29 (2010)
46 // DOI: 10.1140/epja/i2010-10926-x
47 // Thanks to Geza Zsigmond
48 //
49 // 02-11-19 Stefan Heule's thesis is available from PSI UCN group pages at
50 // https://www.psi.ch/en/ltp-ucn-physics/papers-and-theses
51 // or directly at https://opac.nebis.ch/ediss/20080426_002127549.pdf
52 
53 #ifndef G4MICROROUGHNESSHELPER_HH
54 #define G4MICROROUGHNESSHELPER_HH 1
55 
56 #include "G4Types.hh"
57 
58 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
59 
61 {
62  public: // with description
63 
65 
66  protected:
67 
70 
71  public: // with description
72 
73 // Transmitted intensity with k-vector in vacuum
74 
75 // arguments:
76 // 1) cos(theta)^2,
77 // 2) (k_l/k)^2
78 
79  G4double S2(G4double, G4double) const;
80 
81 // Transmitted intensity with k-vector within the medium
82 
83 // arguments:
84 // 1) cos(theta')^2,
85 // 2) (k_l/k')^2
86 
87  G4double SS2(G4double, G4double) const;
88 
89 // Fourier-tranform of the autocorrelation function with k-vector in vacuum
90 
91 // arguments:
92 // 1) k^2,
93 // 2) theta_i,
94 // 3) theta_o,
95 // 4) phi_o,
96 // 5) b^2,
97 // 6) w^2,
98 // 7) angular cut
99 
102 
103 // Fourier-tranform of the autocorrelation function with k-vector within
104 // the medium
105 
106 // arguments:
107 // 1) k,
108 // 2) k',
109 // 3) theta_i,
110 // 4) theta'_o,
111 // 5) phi'_o,
112 // 6) b^2,
113 // 7) w^2,
114 // 8) angular cut
115 // 9) theta_refract
116 
119 
120 // Integral probability for non-specular reflection
121 
122 // arguments:
123 // 1) E,
124 // 2) V_F,
125 // 3) theta_i,
126 // 4) number of angles theta_o for which the probability is calculated,
127 // 5) number of angles phi_o for which the probability is calculated,
128 // 6) b^2,
129 // 7) w^2,
130 // 8) pointer to G4double array with max values of the probability,
131 // 9) angular cut
132 
134  G4double, G4double, G4double*, G4double) const;
135 
136 // Probability of non-specular reflection with the microroughness model
137 
138 // arguments:
139 // 1) E,
140 // 2) V_F,
141 // 3) theta_i,
142 // 4) theta_o,
143 // 5) phi_o,
144 // 6) b,
145 // 7) w,
146 // 8) angular cut
147 
150 
151 // Integral probability for non-specular transmission
152 
153 // arguments:
154 // 1) E,
155 // 2) V_F,
156 // 3) theta_i,
157 // 4) number of angles theta_o for which the probability is calculated,
158 // 5) number of angles phi_o for which the probability is calculated,
159 // 6) b^2,
160 // 7) w^2,
161 // 8) pointer to G4double array with max values of the probability,
162 // 9) angular cut
163 
165  G4double, G4double, G4double*, G4double) const;
166 
167 // Probability of non-specular transmission with the microroughness model
168 
169 // arguments:
170 // 1) E,
171 // 2) V_F,
172 // 3) theta_i,
173 // 4) theta'_o,
174 // 5) phi'_o,
175 // 6) b,
176 // 7) w,
177 // 8) angular cut
178 
181 
182  private:
183 
185 
186 };
187 
188 #endif // G4MICROROUGHNESSHELPER_HH