ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4SurfaceProperty.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4SurfaceProperty.hh
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 //
30 // G4SurfaceProperty Definition
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
47 
48 #ifndef G4SurfaceProperty_h
49 #define G4SurfaceProperty_h 1
50 
52 // Includes
54 
55 #include <vector>
56 
57 #include "G4Types.hh"
58 #include "G4String.hh"
59 
61 
62 typedef std::vector<G4SurfaceProperty*> G4SurfacePropertyTable;
63 
65 {
66  dielectric_metal, // dielectric-metal interface
67  dielectric_dielectric, // dielectric-dielectric interface
68  dielectric_LUT, // dielectric-Look-Up-Table interface
69  dielectric_LUTDAVIS, // dielectric-Look-Up-Table DAVIS interface
70  dielectric_dichroic, // dichroic filter interface
71  firsov, // for Firsov Process
72  x_ray // for x-ray mirror process
73 };
74 
76 // Class Definition
78 
80 {
81  public: // Without description
82 
84  // Operators
86 
87  // G4SurfaceProperty(const G4SurfaceProperty &right);
88  // const G4SurfaceProperty & operator=(const G4SurfaceProperty &right);
89 
90  // G4bool operator==(const G4SurfaceProperty &right) const;
91  // G4bool operator!=(const G4SurfaceProperty &right) const;
92 
93  public: // With description
94 
96  // Constructors and Destructor
98 
100  // Constructor of a X-ray optical surface object.
101 
102  public: // Without description
103 
105  virtual ~G4SurfaceProperty();
106 
108  // Methods
110 
111  public: // With description
112 
113  const G4String& GetName() const { return theName; }
114  // Returns the surface name.
115  void SetName(const G4String& name) { theName = name; }
116  // Sets the surface name.
117 
118  const G4SurfaceType& GetType() const { return theType; }
119  // Returns the surface type.
120  void SetType(const G4SurfaceType& type) { theType = type; }
121  // Sets the surface type.
122 
123  static void CleanSurfacePropertyTable();
125  static size_t GetNumberOfSurfaceProperties();
126  static void DumpTableInfo();
127  // To handle the table of surface properties.
128 
129  protected:
130 
131  // ------------------
132  // Basic data members ( To define surface property)
133  // ------------------
134 
135  G4String theName; // Surface name
136 
137  G4SurfaceType theType; // Surface type
138 
140  // The static Table of SurfaceProperties.
141 };
142 
143 #endif /* G4SurfaceProperty_h */