Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4UCNMicroRoughnessHelper.hh
Go to the documentation of this file.
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 // http://ucn.web.psi.ch/papers/stefanheule_thesis2008.pdf
46 // reported in F. Atchison et al., Eur. Phys. J. A 44, 23–29 (2010)
47 // Thanks to Geza Zsigmond
48 
49 #ifndef G4MICROROUGHNESSHELPER_HH
50 #define G4MICROROUGHNESSHELPER_HH 1
51 
52 #include "G4Types.hh"
53 
54 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
55 
57 {
58  public: // with description
59 
61 
62  protected:
63 
66 
67  public: // with description
68 
69 // Transmitted intensity with k-vector in vacuum
70 
71 // arguments:
72 // 1) cos(theta)^2,
73 // 2) (k_l/k)^2
74 
75  G4double S2(G4double, G4double) const;
76 
77 // Transmitted intensity with k-vector within the medium
78 
79 // arguments:
80 // 1) cos(theta')^2,
81 // 2) (k_l/k')^2
82 
83  G4double SS2(G4double, G4double) const;
84 
85 // Fourier-tranform of the autocorrelation function with k-vector in vacuum
86 
87 // arguments:
88 // 1) k^2,
89 // 2) theta_i,
90 // 3) theta_o,
91 // 4) phi_o,
92 // 5) b^2,
93 // 6) w^2,
94 // 7) angular cut
95 
98 
99 // Fourier-tranform of the autocorrelation function with k-vector within
100 // the medium
101 
102 // arguments:
103 // 1) k,
104 // 2) k',
105 // 3) theta_i,
106 // 4) theta'_o,
107 // 5) phi'_o,
108 // 6) b^2,
109 // 7) w^2,
110 // 8) angular cut
111 // 9) theta_refract
112 
115 
116 // Integral probability for non-specular reflection
117 
118 // arguments:
119 // 1) E,
120 // 2) V_F,
121 // 3) theta_i,
122 // 4) number of angles theta_o for which the probability is calculated,
123 // 5) number of angles phi_o for which the probability is calculated,
124 // 6) b^2,
125 // 7) w^2,
126 // 8) pointer to G4double array with max values of the probability,
127 // 9) angular cut
128 
130  G4double, G4double, G4double*, G4double) const;
131 
132 // Probability of non-specular reflection with the microroughness model
133 
134 // arguments:
135 // 1) E,
136 // 2) V_F,
137 // 3) theta_i,
138 // 4) theta_o,
139 // 5) phi_o,
140 // 6) b,
141 // 7) w,
142 // 8) angular cut
143 
146 
147 // Integral probability for non-specular transmission
148 
149 // arguments:
150 // 1) E,
151 // 2) V_F,
152 // 3) theta_i,
153 // 4) number of angles theta_o for which the probability is calculated,
154 // 5) number of angles phi_o for which the probability is calculated,
155 // 6) b^2,
156 // 7) w^2,
157 // 8) pointer to G4double array with max values of the probability,
158 // 9) angular cut
159 
161  G4double, G4double, G4double*, G4double) const;
162 
163 // Probability of non-specular transmission with the microroughness model
164 
165 // arguments:
166 // 1) E,
167 // 2) V_F,
168 // 3) theta_i,
169 // 4) theta'_o,
170 // 5) phi'_o,
171 // 6) b,
172 // 7) w,
173 // 8) angular cut
174 
177 
178  private:
179 
180  static G4UCNMicroRoughnessHelper* fpInstance;
181 
182 };
183 
184 #endif // G4MICROROUGHNESSHELPER_HH
G4double S2(G4double, G4double) const
G4double ProbIminus(G4double, G4double, G4double, G4double, G4double, G4double, G4double, G4double) const
int G4int
Definition: G4Types.hh:78
G4double Fmu(G4double, G4double, G4double, G4double, G4double, G4double, G4double) const
G4double ProbIplus(G4double, G4double, G4double, G4double, G4double, G4double, G4double, G4double) const
static G4UCNMicroRoughnessHelper * GetInstance()
G4double IntIplus(G4double, G4double, G4double, G4int, G4int, G4double, G4double, G4double *, G4double) const
G4double IntIminus(G4double, G4double, G4double, G4int, G4int, G4double, G4double, G4double *, G4double) const
G4double SS2(G4double, G4double) const
G4double FmuS(G4double, G4double, G4double, G4double, G4double, G4double, G4double, G4double, G4double) const
double G4double
Definition: G4Types.hh:76