Belle II Software  release-08-01-10
TOPGeoMirrorSegment.h
1 /**************************************************************************
2  * basf2 (Belle II Analysis Software Framework) *
3  * Author: The Belle II Collaboration *
4  * *
5  * See git log for contributors and copyright holders. *
6  * This file is licensed under LGPL-3.0, see LICENSE.md. *
7  **************************************************************************/
8 
9 #pragma once
10 
11 #include <top/dbobjects/TOPGeoBarSegment.h>
12 
13 namespace Belle2 {
23  public:
24 
29  {}
30 
39  TOPGeoMirrorSegment(double width, double thickness, double length,
40  const std::string& material,
41  const std::string& name = "TOPMirrorSegment"):
42  TOPGeoBarSegment(width, thickness, length, material, name)
43  {}
44 
49  void setRadius(double radius) {m_radius = radius;}
50 
56  void setCenterOfCurvature(double xc, double yc)
57  {
58  m_xc = xc;
59  m_yc = yc;
60  }
61 
68  void setCoating(double thickness,
69  const std::string& material,
70  const GeoOpticalSurface& surface)
71  {
72  m_coatingThickness = thickness;
73  m_coatingMaterial = material;
74  m_coatingSurface = surface;
75  }
76 
81  double getRadius() const {return m_radius / s_unit;}
82 
87  double getOuterRadius() const {return (m_radius + m_coatingThickness) / s_unit;}
88 
93  double getXc() const {return m_xc / s_unit;}
94 
99  double getYc() const {return m_yc / s_unit;}
100 
105  double getZc() const;
106 
111  double getCoatingThickness() const {return m_coatingThickness / s_unit;}
112 
117  const std::string& getCoatingMaterial() const {return m_coatingMaterial;}
118 
124 
130  double getMirrorReflectivity(double energy) const
131  {
133  }
134 
139  bool isConsistent() const override;
140 
145  void print(const std::string& title = "Mirror segment geometry parameters") const override;
146 
147  private:
148 
149  float m_radius = 0;
150  float m_xc = 0;
151  float m_yc = 0;
152  float m_coatingThickness = 0;
153  std::string m_coatingMaterial;
158  };
159 
161 } // end namespace Belle2
Represent an optical finish of a surface.
Geometry parameters of a quartz bar segment.
Geometry parameters of a mirror segment.
float m_xc
spherical mirror center-of-curvature in x
const std::string & getCoatingMaterial() const
Returns reflective coating material.
void setRadius(double radius)
Sets spherical mirror radius of curvature.
float m_coatingThickness
reflective coating thickness
void setCenterOfCurvature(double xc, double yc)
Sets spherical mirror center of curvature.
float m_yc
spherical mirror center-of-curvature in y
void setCoating(double thickness, const std::string &material, const GeoOpticalSurface &surface)
Sets parameters of reflective coating.
double getMirrorReflectivity(double energy) const
Returns mirror reflectivity at given photon energy.
float m_radius
spherical mirror radius
ClassDefOverride(TOPGeoMirrorSegment, 1)
ClassDef.
double getCoatingThickness() const
Returns reflective coating thickness.
TOPGeoMirrorSegment()
Default constructor.
double getYc() const
Returns spherical mirror center of curvature in y.
double getOuterRadius() const
Returns spherical mirror outer radius of curvature.
std::string m_coatingMaterial
reflective coating material
GeoOpticalSurface m_coatingSurface
reflective coating optical surface
TOPGeoMirrorSegment(double width, double thickness, double length, const std::string &material, const std::string &name="TOPMirrorSegment")
Useful constructor.
double getRadius() const
Returns spherical mirror radius of curvature.
const GeoOpticalSurface & getCoatingSurface() const
Returns reflective coating optical surface.
double getXc() const
Returns spherical mirror center of curvature in x.
bool isConsistent() const override
Check for consistency of data members.
static double s_unit
conversion unit for length
Definition: TOPGeoBase.h:86
double getReflectivity(const GeoOpticalSurface &surface, double energy) const
Returns reflectivity of optical surface at given photon energy.
Definition: TOPGeoBase.cc:72
double getZc() const
Returns spherical mirror center of curvature in z (in local frame of this segment)
void print(const std::string &title="Mirror segment geometry parameters") const override
Print the content of the class.
Abstract base class for different kinds of events.