Belle II Software development
TOPGeoBarSegment.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/TOPGeoBase.h>
12#include <geometry/dbobjects/GeoOpticalSurface.h>
13#include <string>
14#include <vector>
15#include <utility>
16
17
18namespace Belle2 {
23
33 public:
34
40
49 TOPGeoBarSegment(double width, double thickness, double length,
50 const std::string& material,
51 const std::string& name = "TOPBarSegment"): TOPGeoBase(name),
52 m_width(width), m_thickness(thickness), m_length(length), m_material(material)
53 {}
54
60 virtual void setGlue(double thickness, const std::string& material)
61 {
62 m_glueThickness = thickness;
63 m_glueMaterial = material;
64 }
65
72 virtual void setGlueDelamination(double fraction, double angle,
73 const std::string& material)
74 {
75 m_brokenFraction = fraction;
76 m_brokenAngle = angle;
77 m_brokenGlueMaterial = material;
78 }
79
85 void setSurface(const GeoOpticalSurface& surface, double sigmaAlpha)
86 {
87 m_surface = surface;
88 m_sigmaAlpha = sigmaAlpha / 2; // store half-value
89 }
90
96 void setVendorData(const std::string& vendor, const std::string& serialNumber)
97 {
98 m_vendor = vendor;
99 m_serialNumber = serialNumber;
100 }
101
106 double getWidth() const {return m_width / s_unit;}
107
112 double getThickness() const {return m_thickness / s_unit;}
113
118 double getLength() const {return m_length / s_unit;}
119
124 double getFullLength() const {return (m_length + m_glueThickness) / s_unit;}
125
130 const std::string& getMaterial() const {return m_material;}
131
136 virtual double getGlueThickness() const {return m_glueThickness / s_unit;}
137
142 const std::string& getGlueMaterial() const {return m_glueMaterial;}
143
149
154 double getBrokenGlueAngle() const {return m_brokenAngle;}
155
160 const std::string& getBrokenGlueMaterial() const {return m_brokenGlueMaterial;}
161
165 std::vector<std::pair<double, double> > getBrokenGlueContour() const;
166
171 const GeoOpticalSurface& getSurface() const {return m_surface;}
172
178 double getSurfaceReflectivity(double energy) const
179 {
181 }
182
187 // cppcheck-suppress truncLongCastReturn
188 double getSigmaAlpha() const {return m_sigmaAlpha * 2;} // multiply by 2 since half-value stored
189
194 const std::string& getVendor() const {return m_vendor;}
195
200 const std::string& getSerialNumber() const {return m_serialNumber;}
201
206 virtual bool isConsistent() const override;
207
208
213 virtual void print(const std::string& title = "Bar segment geometry parameters") const override;
214
215 protected:
216
225 void constructContour(double A, double B, double fraction, double angle,
226 std::vector<std::pair<double, double> >& contour) const;
227
228 float m_width = 0;
229 float m_thickness = 0;
230 float m_length = 0;
231 std::string m_material;
232 float m_glueThickness = 0;
233 std::string m_glueMaterial;
235 float m_sigmaAlpha = 0;
237 float m_brokenAngle = 0;
239 std::string m_vendor;
240 std::string m_serialNumber;
241
243
244 };
245
247} // end namespace Belle2
Represent an optical finish of a surface.
void setVendorData(const std::string &vendor, const std::string &serialNumber)
Sets vendor's name and serial number.
double getWidth() const
Returns bar segment width.
ClassDefOverride(TOPGeoBarSegment, 3)
ClassDef.
float m_glueThickness
glue thickness
virtual void setGlue(double thickness, const std::string &material)
Sets glue parameters (for glue on -z side)
std::string m_material
bar segment material name
double getBrokenGlueAngle() const
Returns angle of the delaminated surface.
TOPGeoBarSegment(double width, double thickness, double length, const std::string &material, const std::string &name="TOPBarSegment")
Useful constructor.
std::string m_brokenGlueMaterial
broken glue material name
const std::string & getGlueMaterial() const
Returns glue material name (glue on -z side)
double getFullLength() const
Returns bar segment length including glue.
std::string m_serialNumber
serial number
GeoOpticalSurface m_surface
optical surface
double getThickness() const
Returns bar segment thickness.
float m_brokenFraction
fraction of broken (delaminated) glue
float m_thickness
bar segment thickness
std::string m_glueMaterial
glue material name
double getSigmaAlpha() const
Returns geant4 parameter describing surface roughness.
double getBrokenGlueFraction() const
Returns fraction of the delaminated surface.
TOPGeoBarSegment()
Default constructor.
const std::string & getMaterial() const
Returns bar segment material name.
const GeoOpticalSurface & getSurface() const
Returns optical surface.
const std::string & getVendor() const
Returns vendor's name.
double getSurfaceReflectivity(double energy) const
Returns surface reflectivity at given photon energy.
float m_sigmaAlpha
geant4 parameter for surface roughness (half-value)
void setSurface(const GeoOpticalSurface &surface, double sigmaAlpha)
Sets optical surface.
float m_length
bar segment length
std::string m_vendor
vendor's name
virtual void setGlueDelamination(double fraction, double angle, const std::string &material)
Sets glue to be broken (delaminated)
double getLength() const
Returns bar segment length.
float m_width
bar segment width
virtual double getGlueThickness() const
Returns glue thickness (glue on -z side)
const std::string & getBrokenGlueMaterial() const
Returns material name which represents broken glue.
const std::string & getSerialNumber() const
Returns serial number.
float m_brokenAngle
angle of broken (delaminated) glue
TOPGeoBase()
Default constructor.
Definition TOPGeoBase.h:31
virtual bool isConsistent() const override
Check for consistency of data members.
static double s_unit
conversion unit for length
Definition TOPGeoBase.h:86
virtual void print(const std::string &title="Bar segment geometry parameters") const override
Print the content of the class.
double getReflectivity(const GeoOpticalSurface &surface, double energy) const
Returns reflectivity of optical surface at given photon energy.
Definition TOPGeoBase.cc:72
void constructContour(double A, double B, double fraction, double angle, std::vector< std::pair< double, double > > &contour) const
Construct a 2D contour.
std::vector< std::pair< double, double > > getBrokenGlueContour() const
Returns the x-y contour of broken glue.
Abstract base class for different kinds of events.