11#include <top/dbobjects/TOPGeoBase.h>
12#include <top/dbobjects/TOPGeoBarSegment.h>
13#include <top/dbobjects/TOPGeoMirrorSegment.h>
14#include <top/dbobjects/TOPGeoPrism.h>
15#include <top/dbobjects/TOPGeoPMTArray.h>
16#include <top/dbobjects/TOPGeoPMTArrayDisplacement.h>
17#include <top/dbobjects/TOPGeoModuleDisplacement.h>
18#include <Math/Transform3D.h>
19#include <Math/Vector3D.h>
20#include <Math/Point3D.h>
48 TOPGeoModule(
int moduleID,
double radius,
double phi,
double backwardZ,
49 const std::string& name =
"TOPModule"):
TOPGeoBase(name),
126 void setBrokenGlue(
int glueID,
double fraction,
double angle,
127 const std::string& material);
347 ROOT::Math::XYZPoint
pointToLocal(
const ROOT::Math::XYZPoint& point)
const;
354 ROOT::Math::XYZVector
momentumToLocal(
const ROOT::Math::XYZVector& momentum)
const;
361 ROOT::Math::XYZPoint
pointToGlobal(
const ROOT::Math::XYZPoint& point)
const;
368 ROOT::Math::XYZVector
momentumToGlobal(
const ROOT::Math::XYZVector& momentum)
const;
408 void print(
const std::string& title =
"Module geometry parameters")
const override;
Geometry parameters of a quartz bar segment.
double getWidth() const
Returns bar segment width.
double getFullLength() const
Returns bar segment length including glue.
double getThickness() const
Returns bar segment thickness.
double getSigmaAlpha() const
Returns geant4 parameter describing surface roughness.
double getSurfaceReflectivity(double energy) const
Returns surface reflectivity at given photon energy.
Base class for geometry parameters.
Geometry parameters of a mirror segment.
Displacement parameters of a TOP module.
Geometry parameters of a module (optical components + positioning)
void appendPeelOffRegion(unsigned ID, double fraction, double angle)
Appends peel-off cookie region.
const TOPGeoMirrorSegment & getMirrorSegment() const
Returns mirror segment.
ROOT::Math::Transform3D * m_transformNominal
do not write out
unsigned getModuleCNumber() const
Returns module construction number (0 = ideal module)
TOPGeoPMTArrayDisplacement m_arrayDisplacement
PMT array displacement.
const TOPGeoBarSegment & getBarSegment1() const
Returns bar segment No.1 (forward bar)
void setDecoupledPMT(unsigned pmtID)
Sets PMT as optically decoupled.
const TOPGeoPMTArray & getPMTArray() const
Returns PMT array.
float m_backwardZ
z position of prism-bar joint in Belle II frame
double getPhi() const
Returns module azimuthal angle in Belle II frame.
TOPGeoModule(int moduleID, double radius, double phi, double backwardZ, const std::string &name="TOPModule")
Useful constructor.
void setBarSegment2(const TOPGeoBarSegment &bar)
Sets bar segment No.2 (backward bar)
float m_phi
azimuthal angle in Belle II frame
const TOPGeoModuleDisplacement & getModuleDisplacement() const
Returns module displacement.
void setModuleCNumber(unsigned moduleCNumber)
Sets module construction number (0 = ideal module = default)
void generateDecoupledPMTs(double fraction)
Generate randomly a fraction of PMT's to be optically decoupled.
void setPMTArrayDisplacement(const TOPGeoPMTArrayDisplacement &displ)
Sets PMT array displacement.
double getForwardZ() const
Returns the z position of the bar forward end in Belle II frame.
void setPrism(const TOPGeoPrism &prism)
Sets prism.
void setBarSegment1(const TOPGeoBarSegment &bar)
Sets bar segment No.1 (forward bar)
double getZc() const
Returns z of bar center (w/o prism) in Belle II frame.
float m_radius
radius of bar central plane in Belle II frame
double getFullLength() const
Returns full length (including prism, wavelenght filter and glue joints)
ROOT::Math::Transform3D * m_transform
cache for transformation from internal (= nominal & displaced) to Belle II frame
double getBarWidth() const
Returns average bar width (weigthed by segment lengths)
const ROOT::Math::Transform3D & getTransformation() const
Returns transformation from internal (= nominal & displaced) to Belle II frame.
void setMirrorSegment(const TOPGeoMirrorSegment &mirror)
Sets mirror segment.
int getModuleID() const
Returns module ID.
TOPGeoPMTArray m_pmtArray
geometry parameters of PMT array
double getInnerRadius() const
Returns inner surface radius in Belle II frame.
ClassDefOverride(TOPGeoModule, 3)
do not write out
TOPGeoMirrorSegment m_mirror
mirror segment
void setPMTArray(const TOPGeoPMTArray &array)
Sets PMT array.
double getSigmaAlpha() const
Returns average surface roughness parameter (weigthed by segment lengths)
const TOPGeoPMTArrayDisplacement & getPMTArrayDisplacement() const
Returns PMT array displacement.
double getRadius() const
Returns radius of the bar central plane in Belle II frame.
double getBarLength() const
Returns bar length (w/o prism) including glue joints.
TOPGeoBarSegment m_bar2
bar segment 2 (backward bar)
TOPGeoModuleDisplacement m_moduleDisplacement
module displacement
const TOPGeoPrism & getPrism() const
Returns prism.
double getSurfaceReflectivity(double energy) const
Returns average surface reflectivity at given photon energy (weigthed by segment lengths)
double getBarThickness() const
Returns average bar thickness (weigthed by segment lengths)
void setModuleDisplacement(const TOPGeoModuleDisplacement &displ)
Sets module displacement.
const TOPGeoBarSegment & getBarSegment2() const
Returns bar segment No.2 (backward bar)
TOPGeoModule()
Default constructor.
unsigned m_moduleCNumber
module construction number, 0 = ideal module
double getBackwardZ() const
Returns the z position of prism-bar joint in Belle II frame.
const ROOT::Math::Transform3D & getTransformationNominal() const
Returns transformation from nominal to Belle II frame.
TOPGeoBarSegment m_bar1
bar segment 1 (forward bar)
Displacement parameters of MCP-PMT array.
Geometry parameters of MCP-PMT array.
void setDecoupledPMT(unsigned pmtID)
Sets PMT as optically decoupled.
Geometry parameters of prism.
ROOT::Math::XYZPoint pointToLocal(const ROOT::Math::XYZPoint &point) const
Transforms 3D point from Belle II to module internal (= nominal & displaced) frame.
void appendPeelOffRegion(unsigned ID, double fraction, double angle)
Appends peel-off cookie region.
bool isConsistent() const override
Check for consistency of data members.
void print(const std::string &title="Module geometry parameters") const override
Print the content of the class.
static double s_unit
conversion unit for length
ROOT::Math::XYZPoint pointGlobalToNominal(const ROOT::Math::XYZPoint &point) const
Transforms 3D point from Belle II to module nominal frame.
~TOPGeoModule()
Destructor.
void generateDecoupledPMTs(double fraction)
Generate randomly a fraction of PMT's to be optically decoupled.
ROOT::Math::XYZPoint pointNominalToGlobal(const ROOT::Math::XYZPoint &point) const
Transforms 3D point from module nominal frame to Belle II frame.
void setTransformation() const
Sets transformation cache.
void setPeelOffRegions(double thickness, const std::string &material)
Sets parameters of the peel-off cookie volumes.
ROOT::Math::XYZPoint pointToGlobal(const ROOT::Math::XYZPoint &point) const
Transforms 3D point from module internal (= nominal & displaced) frame to Belle II frame.
ROOT::Math::XYZVector momentumGlobalToNominal(const ROOT::Math::XYZVector &momentum) const
Transforms momentum vector from Belle II to module nominal frame.
ROOT::Math::XYZVector momentumToLocal(const ROOT::Math::XYZVector &momentum) const
Transforms momentum vector from Belle II to module internal (= nominal & displaced) frame.
void setBrokenGlue(int glueID, double fraction, double angle, const std::string &material)
Sets glue to be broken (delaminated)
ROOT::Math::XYZVector momentumNominalToGlobal(const ROOT::Math::XYZVector &momentum) const
Transforms momentum vector from module nominal frame to Belle II frame.
TOPGeoModule & operator=(const TOPGeoModule &module)
Assignment operator.
ROOT::Math::XYZVector momentumToGlobal(const ROOT::Math::XYZVector &momentum) const
Transforms momentum vector from module internal (= nominal & displaced) frame to Belle II frame.
Abstract base class for different kinds of events.