12 #ifndef ROOT_TGeoOpticalSurface
13 #define ROOT_TGeoOpticalSurface
27 class TGeoOpticalSurface :
public TNamed {
31 kFpolishedfrontpainted,
32 kFpolishedbackpainted,
38 kFpolishedlumirrorair,
39 kFpolishedlumirrorglue,
73 kFPolishedESRGrease_LUT,
87 kTdielectric_dielectric,
89 kTdielectric_LUTDAVIS,
90 kTdielectric_dichroic,
96 std::string fName =
"";
97 ESurfaceType fType = kTdielectric_metal;
98 ESurfaceModel fModel = kMglisur;
99 ESurfaceFinish fFinish = kFpolished;
101 Double_t fValue = 0.0;
102 Double_t fSigmaAlpha = 0.0;
103 Double_t fPolish = 0.0;
108 TGeoOpticalSurface(
const TGeoOpticalSurface &);
109 TGeoOpticalSurface &operator=(
const TGeoOpticalSurface &);
113 TGeoOpticalSurface() {}
115 TGeoOpticalSurface(
const char *name, ESurfaceModel model = kMglisur, ESurfaceFinish finish = kFpolished,
116 ESurfaceType type = kTdielectric_dielectric, Double_t value = 1.0);
118 virtual ~TGeoOpticalSurface() {}
121 bool AddProperty(
const char *property,
const char *ref);
122 const char *GetPropertyRef(
const char *property);
123 TList
const &GetProperties()
const {
return fProperties; }
124 Int_t GetNproperties()
const {
return fProperties.GetSize(); }
125 TGDMLMatrix* GetProperty(
const char* name)
const;
126 TGDMLMatrix* GetProperty(Int_t i)
const;
127 ESurfaceType GetType()
const {
return fType; }
128 ESurfaceModel GetModel()
const {
return fModel; }
129 ESurfaceFinish GetFinish()
const {
return fFinish; }
130 Double_t GetPolish()
const {
return fPolish; }
131 Double_t GetValue()
const {
return fValue; }
132 Double_t GetSigmaAlpha()
const {
return fSigmaAlpha; }
134 void SetType(ESurfaceType type) { fType = type; }
135 void SetModel(ESurfaceModel model) { fModel = model; }
136 void SetFinish(ESurfaceFinish finish) { fFinish = finish; }
137 void SetPolish(Double_t polish) { fPolish = polish; }
138 void SetValue(Double_t value) { fValue = value; }
139 void SetSigmaAlpha(Double_t sigmaalpha) { fSigmaAlpha = sigmaalpha; }
141 void Print(Option_t *option =
"")
const;
143 static ESurfaceType StringToType(
const char *type);
144 static const char *TypeToString(ESurfaceType type);
145 static ESurfaceModel StringToModel(
const char *model);
146 static const char *ModelToString(ESurfaceModel model);
147 static ESurfaceFinish StringToFinish(
const char *finish);
148 static const char *FinishToString(ESurfaceFinish finish);
150 ClassDef(TGeoOpticalSurface, 1)
162 class TGeoSkinSurface :
public TNamed {
164 TGeoOpticalSurface
const *fSurface =
nullptr;
165 TGeoVolume
const *fVolume =
nullptr;
168 TGeoSkinSurface(
const char *name,
const char *ref, TGeoOpticalSurface
const *surf, TGeoVolume
const *vol)
169 : TNamed(name, ref), fSurface(surf), fVolume(vol)
172 virtual ~TGeoSkinSurface() {}
174 TGeoOpticalSurface
const *GetSurface()
const {
return fSurface; }
175 TGeoVolume
const *GetVolume()
const {
return fVolume; }
177 void Print(Option_t *option =
"")
const;
179 ClassDef(TGeoSkinSurface, 1)
191 class TGeoBorderSurface :
public TNamed {
193 TGeoOpticalSurface
const *fSurface =
nullptr;
194 TGeoNode
const *fNode1 =
nullptr;
195 TGeoNode
const *fNode2 =
nullptr;
197 TGeoBorderSurface() {}
198 TGeoBorderSurface(
const char *name,
const char *ref, TGeoOpticalSurface
const *surf, TGeoNode
const *node1,
199 TGeoNode
const *node2)
200 : TNamed(name, ref), fSurface(surf), fNode1(node1), fNode2(node2)
203 virtual ~TGeoBorderSurface() {}
205 TGeoOpticalSurface
const *GetSurface()
const {
return fSurface; }
206 TGeoNode
const *GetNode1()
const {
return fNode1; }
207 TGeoNode
const *GetNode2()
const {
return fNode2; }
209 void Print(Option_t *option =
"")
const;
211 ClassDef(TGeoBorderSurface, 1)
214 #endif // ROOT_TGeoOpticalSurface