Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4SurfaceProperty.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////////////////////////////////////////////////////////////////////////
30// G4SurfaceProperty Definition
31////////////////////////////////////////////////////////////////////////
32//
33// Class Description:
34//
35// A base class describing a surface property.
36// Derived classes are G4Opticalsurface, G4Firovsurface, etc.
37// Contains the enumeration G4SurfaceType.
38
39// File: G4SurfaceProperty.hh
40// Description: A base class for for descriping surface property such
41// as G4OpticalSurface, G4FirsovSurface, G4X-raySurface
42// Version: 1.0
43// Created: 13-10-2003
44// Author: Fan Lei
45// Updated: Mariele Stockhoff 2017-02-24 add DAVIS model
46////////////////////////////////////////////////////////////////////////
47
48#ifndef G4SurfaceProperty_h
49#define G4SurfaceProperty_h 1
50
51#include <vector>
52
53#include "G4Types.hh"
54#include "G4String.hh"
55
57
58using G4SurfacePropertyTable = std::vector<G4SurfaceProperty*>;
59
61{
62 dielectric_metal, // dielectric-metal interface
63 dielectric_dielectric, // dielectric-dielectric interface
64 dielectric_LUT, // dielectric-Look-Up-Table interface
65 dielectric_LUTDAVIS, // dielectric-Look-Up-Table DAVIS interface
66 dielectric_dichroic, // dichroic filter interface
67 firsov, // for Firsov Process
68 x_ray, // for x-ray mirror process
69 coated // coated_dielectric-dielectric interface
70};
71
73{
74 public:
75 G4SurfaceProperty(const G4String& name, G4SurfaceType type = x_ray);
76 // Constructor of a X-ray optical surface object.
77
79 virtual ~G4SurfaceProperty() = default;
80
81 const G4String& GetName() const { return theName; }
82 // Returns the surface name.
83 void SetName(const G4String& name) { theName = name; }
84 // Sets the surface name.
85
86 const G4SurfaceType& GetType() const { return theType; }
87 // Returns the surface type.
88 virtual void SetType(const G4SurfaceType& type) { theType = type; }
89 // Sets the surface type.
90
91 static void CleanSurfacePropertyTable();
93 static size_t GetNumberOfSurfaceProperties();
94 static void DumpTableInfo();
95 // To handle the table of surface properties.
96
97 protected:
98 G4String theName; // Surface name
99
100 G4SurfaceType theType; // Surface type
101
103 // The static Table of SurfaceProperties.
104};
105
106#endif /* G4SurfaceProperty_h */
std::vector< G4SurfaceProperty * > G4SurfacePropertyTable
G4SurfaceType
@ dielectric_metal
@ dielectric_LUT
@ coated
@ dielectric_dielectric
@ dielectric_LUTDAVIS
@ dielectric_dichroic
@ x_ray
@ firsov
const G4String & GetName() const
virtual ~G4SurfaceProperty()=default
static G4SurfacePropertyTable theSurfacePropertyTable
virtual void SetType(const G4SurfaceType &type)
static const G4SurfacePropertyTable * GetSurfacePropertyTable()
static size_t GetNumberOfSurfaceProperties()
static void DumpTableInfo()
const G4SurfaceType & GetType() const
void SetName(const G4String &name)
static void CleanSurfacePropertyTable()