44#ifndef G4OpticalSurface_h
45#define G4OpticalSurface_h 1
165 return theMaterialPropertiesTable;
171 theMaterialPropertiesTable = anMPT;
227 static const G4int incidentIndexMax = 91;
228 static const G4int thetaIndexMax = 45;
229 static const G4int phiIndexMax = 37;
235 static const G4int indexmax = 7280001;
236 static const G4int RefMax = 90;
237 static const G4int LUTbins = 20000;
238 G4float* AngularDistributionLUT;
249 G4int product = angleIncident * thetaIndex * phiIndex;
250 if (product < 0 || product >= incidentIndexMax * thetaIndexMax * phiIndexMax) {
252 ed <<
"Index angleIncident: " << angleIncident <<
" thetaIndex: " << thetaIndex
253 <<
" phiIndex: " << phiIndex <<
" out of range!";
257 return (
G4double)AngularDistribution[angleIncident + thetaIndex * incidentIndexMax +
258 phiIndex * thetaIndexMax * incidentIndexMax];
263 if (i < 0 || i >= indexmax) {
265 ed <<
"Index " << i <<
" out of range!";
269 return (
G4double)AngularDistributionLUT[i];
274 if (i < 0 || i >= RefMax) {
276 ed <<
"Index " << i <<
" out of range!";
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
std::ostringstream G4ExceptionDescription
G4double GetAngularDistributionValueLUT(G4int)
void SetSigmaAlpha(const G4double s_a)
void SetMaterialPropertiesTable(G4MaterialPropertiesTable *anMPT)
void SetType(const G4SurfaceType &type) override
G4OpticalSurfaceModel GetModel() const
G4double GetSigmaAlpha() const
G4OpticalSurfaceFinish GetFinish() const
void SetModel(const G4OpticalSurfaceModel model)
G4int GetThetaIndexMax() const
G4double GetPolish() const
G4bool operator==(const G4OpticalSurface &right) const
G4OpticalSurface & operator=(const G4OpticalSurface &right)
void ReadCompressedFile(const G4String &, std::istringstream &)
G4MaterialPropertiesTable * GetMaterialPropertiesTable() const
G4Physics2DVector * GetDichroicVector()
G4int GetPhiIndexMax() const
G4double GetReflectivityLUTValue(G4int)
G4bool operator!=(const G4OpticalSurface &right) const
~G4OpticalSurface() override
G4double GetAngularDistributionValue(G4int, G4int, G4int)
void SetFinish(const G4OpticalSurfaceFinish)
G4OpticalSurface(const G4String &name, G4OpticalSurfaceModel model=glisur, G4OpticalSurfaceFinish finish=polished, G4SurfaceType type=dielectric_dielectric, G4double value=1.0)
void SetPolish(const G4double plsh)
void ReadReflectivityLUTFile()