|
||||
File indexing completed on 2025-01-18 09:59:15
0001 // 0002 // ******************************************************************** 0003 // * License and Disclaimer * 0004 // * * 0005 // * The Geant4 software is copyright of the Copyright Holders of * 0006 // * the Geant4 Collaboration. It is provided under the terms and * 0007 // * conditions of the Geant4 Software License, included in the file * 0008 // * LICENSE and available at http://cern.ch/geant4/license . These * 0009 // * include a list of copyright holders. * 0010 // * * 0011 // * Neither the authors of this software system, nor their employing * 0012 // * institutes,nor the agencies providing financial support for this * 0013 // * work make any representation or warranty, express or implied, * 0014 // * regarding this software system or assume any liability for its * 0015 // * use. Please see the license in the file LICENSE and URL above * 0016 // * for the full disclaimer and the limitation of liability. * 0017 // * * 0018 // * This code implementation is the result of the scientific and * 0019 // * technical work of the GEANT4 collaboration. * 0020 // * By using, copying, modifying or distributing the software (or * 0021 // * any work based on the software) you agree to acknowledge its * 0022 // * use in resulting scientific publications, and indicate your * 0023 // * acceptance of all terms of the Geant4 Software license. * 0024 // ******************************************************************** 0025 0026 //--------------------------------------------------------------------------- 0027 // 0028 // ClassName: G4UCNMaterialPropertiesTable 0029 // 0030 // Class description: 0031 // 0032 // A derived class of G4MaterialPropertiesTable in order to save the look-up 0033 // table for the microroughness probability. The derived class has four 0034 // pointers to G4double-arrays: 0035 // (1) integral prob. for reflection 0036 // (2) maximum probability for reflection (needed for accept-reject method) 0037 // (3) integral prob. for transmission 0038 // (4) maximum probability for transmission 0039 // 0040 // 12-05-14, adopted from Stefan Heule (PSI) Thesis by P.Gumplinger 0041 // http://ucn.web.psi.ch/papers/stefanheule_thesis2008.pdf 0042 // reported in F. Atchison et al., Eur. Phys. J. A 44, 23–29 (2010) 0043 // Thanks to Geza Zsigmond 0044 0045 #ifndef G4UCNMATERIALPROPERTIESTABLE_HH 0046 #define G4UCNMATERIALPROPERTIESTABLE_HH 1 0047 0048 #include "G4MaterialPropertiesTable.hh" 0049 0050 class G4UCNMaterialPropertiesTable : public G4MaterialPropertiesTable 0051 { 0052 public: 0053 G4UCNMaterialPropertiesTable(); 0054 ~G4UCNMaterialPropertiesTable() override; 0055 0056 // returns the pointer to the mr-reflection table 0057 G4double* GetMicroRoughnessTable(); 0058 0059 // returns the pointer to the mr-transmission table 0060 G4double* GetMicroRoughnessTransTable(); 0061 0062 // Assigns double-array to the table-pointers, currently not used 0063 void LoadMicroRoughnessTables(G4double*, G4double*, G4double*, G4double*); 0064 0065 // Creates new double arrays and assigns them to the table pointers 0066 void InitMicroRoughnessTables(); 0067 0068 // Reads the MR-parameters from the corresponding fields and starts 0069 // the computation of the mr-tables 0070 void ComputeMicroRoughnessTables(); 0071 0072 // returns the integral prob. value for a theta_i - E pair 0073 G4double GetMRIntProbability(G4double, G4double); 0074 0075 // returns the maximum prob. value for a theta_i - E pair 0076 G4double GetMRMaxProbability(G4double, G4double); 0077 0078 // sets the maximum prob. value for a theta_i - E pair 0079 void SetMRMaxProbability(G4double, G4double, G4double); 0080 0081 // returns the mr-prob. 0082 0083 // arguments: 0084 // 1) theta_i 0085 // 2) Energy 0086 // 3) V_F 0087 // 4) theta_o 0088 // 5) phi_o 0089 G4double GetMRProbability(G4double, G4double, G4double, G4double, G4double); 0090 0091 // returns the integral transmission prob. value for a theta_i - E pair 0092 G4double GetMRIntTransProbability(G4double, G4double); 0093 0094 // returns the maximum transmission prob. for a theta_i - E pair 0095 G4double GetMRMaxTransProbability(G4double, G4double); 0096 0097 // sets the maximum prob. value for a theta_i - E pair 0098 void SetMRMaxTransProbability(G4double, G4double, G4double); 0099 0100 // returns the mr-transmission-prob. 0101 // arguments: 0102 // 1) theta_i 0103 // 2) E 0104 // 3) V_F 0105 // 4) theta_o 0106 // 5) phi_o 0107 G4double GetMRTransProbability(G4double, G4double, G4double, G4double, G4double); 0108 0109 // Checks if the validity condition for the microroughness model are 0110 // satisfied, cf. Steyerl-paper p. 175 0111 G4bool ConditionsValid(G4double E, G4double VFermi, G4double theta_i); 0112 0113 // Checks if the validity conditions for the transmission of the 0114 // microroughness model are satisfied 0115 G4bool TransConditionsValid(G4double E, G4double VFermi, G4double theta_i); 0116 0117 // Adds the values for mr-related units to the MaterialPropertiesTable 0118 // arguments: 0119 // 1) w 0120 // 2) b 0121 // 3) number of angles theta_i in the look-up tables 0122 // 4) number of energies in the look-up tables 0123 // 5) minimum value of theta_i 0124 // 6) maximum value of theta_i 0125 // 7) minimum value of E 0126 // 8) maximum value of E 0127 // 9) number of angles theta_o in the look-up table calculation 0128 // 10) number of angles phi_o in the look-up table calculation 0129 // 11) angular cut 0130 void SetMicroRoughnessParameters(G4double, G4double, G4int, G4int, G4double, G4double, G4double, 0131 G4double, G4int, G4int, G4double); 0132 0133 // returns b 0134 G4double GetRMS() const; 0135 0136 // returns w 0137 G4double GetCorrLen() const; 0138 0139 private: 0140 // Pointer to the integral reflection probability table 0141 G4double* theMicroRoughnessTable; 0142 0143 // Pointer to the maximum reflection probability table 0144 G4double* maxMicroRoughnessTable; 0145 0146 // Pointer to the integral transmission probability table 0147 G4double* theMicroRoughnessTransTable; 0148 0149 // Pointer to the maximum transmission probability table 0150 G4double* maxMicroRoughnessTransTable; 0151 0152 G4double theta_i_min; 0153 G4double theta_i_max; 0154 G4double Emin; 0155 G4double Emax; 0156 G4int no_theta_i; 0157 G4int noE; 0158 G4double theta_i_step; 0159 G4double E_step; 0160 0161 // RMS roughness and correlation length 0162 G4double b, w; 0163 G4double AngCut; 0164 }; 0165 0166 // ========================================================================== 0167 // inline functions 0168 // ========================================================================== 0169 0170 inline G4double G4UCNMaterialPropertiesTable::GetRMS() const { return b; } 0171 inline G4double G4UCNMaterialPropertiesTable::GetCorrLen() const { return w; } 0172 0173 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |