Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/materials/include/G4UCNMicroRoughnessHelper.hh

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /materials/include/G4UCNMicroRoughnessHelper.hh (Version 11.3.0) and /materials/include/G4UCNMicroRoughnessHelper.hh (Version 10.5.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25                                                <<  25 //
                                                   >>  26 //
 26 //--------------------------------------------     27 //---------------------------------------------------------------------------
                                                   >>  28 //
 27 // ClassName:   G4UCNMicroRoughnessHelper          29 // ClassName:   G4UCNMicroRoughnessHelper
 28 //                                                 30 //
 29 // Class description:                              31 // Class description:
 30 //                                                 32 //
 31 // This file contains the headers of various f     33 // This file contains the headers of various functions all related to the
 32 // calculation of microroughness.                  34 // calculation of microroughness.
 33 // see A. Steyerl, Z. Physik 254 (1972) 169.       35 // see A. Steyerl, Z. Physik 254 (1972) 169.
 34 //                                                 36 //
 35 // Angular cut: for angles which are closer to     37 // Angular cut: for angles which are closer to the specular direction than a
 36 // certain value (0.01°), the probability is      38 // certain value (0.01°), the probability is set to 0 in order to avoid a
 37 // hang-up at the generation of the polar angl     39 // hang-up at the generation of the polar angle due to a very sharp angular
 38 // distribution                                    40 // distribution
 39 //                                                 41 //
                                                   >>  42 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
                                                   >>  43 
 40 // 12-05-14, adopted from Stefan Heule (PSI) T     44 // 12-05-14, adopted from Stefan Heule (PSI) Thesis by P.Gumplinger
                                                   >>  45 //           http://ucn.web.psi.ch/papers/stefanheule_thesis2008.pdf
 41 //           reported in F. Atchison et al., E     46 //           reported in F. Atchison et al., Eur. Phys. J. A 44, 23–29 (2010)
 42 //                       DOI:  10.1140/epja/i2 << 
 43 //           Thanks to Geza Zsigmond               47 //           Thanks to Geza Zsigmond
 44 //                                             << 
 45 // 02-11-19  Stefan Heule's thesis is availabl << 
 46 //           https://www.psi.ch/en/ltp-ucn-phy << 
 47 //           or directly at https://opac.nebis << 
 48                                                    48 
 49 #ifndef G4MICROROUGHNESSHELPER_HH                  49 #ifndef G4MICROROUGHNESSHELPER_HH
 50 #define G4MICROROUGHNESSHELPER_HH 1                50 #define G4MICROROUGHNESSHELPER_HH 1
 51                                                    51 
 52 #include "G4Types.hh"                              52 #include "G4Types.hh"
 53                                                    53 
                                                   >>  54 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
                                                   >>  55 
 54 class G4UCNMicroRoughnessHelper                    56 class G4UCNMicroRoughnessHelper
 55 {                                                  57 {
 56  public:  // with description                  <<  58   public:  // with description
 57   static G4UCNMicroRoughnessHelper* GetInstanc <<  59 
                                                   >>  60     static G4UCNMicroRoughnessHelper* GetInstance();
                                                   >>  61 
                                                   >>  62   protected:
                                                   >>  63 
                                                   >>  64     G4UCNMicroRoughnessHelper();
                                                   >>  65     ~G4UCNMicroRoughnessHelper();
                                                   >>  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 
                                                   >>  96     G4double Fmu(G4double, G4double, G4double,
                                                   >>  97                  G4double, G4double, G4double, G4double) const;
                                                   >>  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 
                                                   >> 113     G4double FmuS(G4double, G4double, G4double, G4double,
                                                   >> 114                   G4double, G4double, G4double, G4double, G4double) const;
                                                   >> 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 
                                                   >> 129     G4double IntIplus(G4double, G4double, G4double, G4int, G4int,
                                                   >> 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 
                                                   >> 144     G4double ProbIplus (G4double, G4double, G4double, G4double,
                                                   >> 145                         G4double, G4double, G4double, G4double) const;
                                                   >> 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 
                                                   >> 160     G4double IntIminus(G4double, G4double, G4double, G4int, G4int,
                                                   >> 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 
                                                   >> 175     G4double ProbIminus (G4double, G4double, G4double, G4double,
                                                   >> 176                          G4double, G4double, G4double, G4double) const;
                                                   >> 177 
                                                   >> 178   private:
 58                                                   179 
 59  public:  // with description                  << 180     static G4UCNMicroRoughnessHelper* fpInstance;
 60   // Transmitted intensity with k-vector in va << 
 61   // arguments:                                << 
 62   //         1) cos(theta)^2,                  << 
 63   //         2) (k_l/k)^2                      << 
 64   G4double S2(G4double, G4double) const;       << 
 65                                                << 
 66   // Transmitted intensity with k-vector withi << 
 67   // arguments:                                << 
 68   //         1) cos(theta')^2,                 << 
 69   //         2) (k_l/k')^2                     << 
 70   G4double SS2(G4double, G4double) const;      << 
 71                                                << 
 72   // Fourier-tranform of the autocorrelation f << 
 73   // arguments:                                << 
 74   //         1) k^2,                           << 
 75   //         2) theta_i,                       << 
 76   //         3) theta_o,                       << 
 77   //         4) phi_o,                         << 
 78   //         5) b^2,                           << 
 79   //         6) w^2,                           << 
 80   //         7) angular cut                    << 
 81   G4double Fmu(G4double, G4double, G4double, G << 
 82                                                << 
 83   // Fourier-tranform of the autocorrelation f << 
 84   // the medium                                << 
 85   // arguments:                                << 
 86   //         1) k,                             << 
 87   //         2) k',                            << 
 88   //         3) theta_i,                       << 
 89   //         4) theta'_o,                      << 
 90   //         5) phi'_o,                        << 
 91   //         6) b^2,                           << 
 92   //         7) w^2,                           << 
 93   //         8) angular cut                    << 
 94   //         9) theta_refract                  << 
 95   G4double FmuS(                               << 
 96     G4double, G4double, G4double, G4double, G4 << 
 97                                                << 
 98   // Integral probability for non-specular ref << 
 99   // arguments:                                << 
100   //         1) E,                             << 
101   //         2) V_F,                           << 
102   //         3) theta_i,                       << 
103   //         4) number of angles theta_o for w << 
104   //         5) number of angles phi_o for whi << 
105   //         6) b^2,                           << 
106   //         7) w^2,                           << 
107   //         8) pointer to G4double array with << 
108   //         9) angular cut                    << 
109   G4double IntIplus(                           << 
110     G4double, G4double, G4double, G4int, G4int << 
111                                                << 
112   // Probability of non-specular reflection wi << 
113   // arguments:                                << 
114   //         1) E,                             << 
115   //         2) V_F,                           << 
116   //         3) theta_i,                       << 
117   //         4) theta_o,                       << 
118   //         5) phi_o,                         << 
119   //         6) b,                             << 
120   //         7) w,                             << 
121   //         8) angular cut                    << 
122   G4double ProbIplus(                          << 
123     G4double, G4double, G4double, G4double, G4 << 
124                                                << 
125   // Integral probability for non-specular tra << 
126   // arguments:                                << 
127   //         1) E,                             << 
128   //         2) V_F,                           << 
129   //         3) theta_i,                       << 
130   //         4) number of angles theta_o for w << 
131   //         5) number of angles phi_o for whi << 
132   //         6) b^2,                           << 
133   //         7) w^2,                           << 
134   //         8) pointer to G4double array with << 
135   //         9) angular cut                    << 
136   G4double IntIminus(                          << 
137     G4double, G4double, G4double, G4int, G4int << 
138                                                << 
139   // Probability of non-specular transmission  << 
140   // arguments:                                << 
141   //         1) E,                             << 
142   //         2) V_F,                           << 
143   //         3) theta_i,                       << 
144   //         4) theta'_o,                      << 
145   //         5) phi'_o,                        << 
146   //         6) b,                             << 
147   //         7) w,                             << 
148   //         8) angular cut                    << 
149   G4double ProbIminus(                         << 
150     G4double, G4double, G4double, G4double, G4 << 
151                                                << 
152  protected:                                    << 
153   G4UCNMicroRoughnessHelper() = default;       << 
154   ~G4UCNMicroRoughnessHelper();                << 
155                                                   181 
156  private:                                      << 
157   static G4UCNMicroRoughnessHelper* fpInstance << 
158 };                                                182 };
159                                                   183 
160 #endif  // G4MICROROUGHNESSHELPER_HH           << 184 #endif // G4MICROROUGHNESSHELPER_HH
161                                                   185