11#include <top/dbobjects/TOPGeoBarSegment.h>
16#include <Math/Vector2D.h>
50 double nsy[2] = {0, 0};
51 double nsz[2] = {0, 0};
60 UnfoldedWindow(
const ROOT::Math::XYVector& orig,
const ROOT::Math::XYVector& dir,
61 const ROOT::Math::XYVector& norm,
const ROOT::Math::XYVector& slanted);
82 double exitThickness,
double flatLength,
83 const std::string& material,
84 const std::string& name =
"TOPPrism_"):
106 const std::string& material)
208 std::vector<std::pair<double, double> >
getPeelOffContour(
const PeelOffRegion& region)
const;
241 void print(
const std::string& title =
"Prism geometry parameters")
const override;
249 void setGlue(
double,
const std::string&)
override {}
272 void reflect(
const ROOT::Math::XYVector* points,
const ROOT::Math::XYVector* normals,
273 const ROOT::Math::XYVector& orig,
const ROOT::Math::XYVector& surf,
274 const ROOT::Math::XYVector& norm,
const ROOT::Math::XYVector& slanted,
int k,
275 std::vector<UnfoldedWindow>& result)
const;
Geometry parameters of a quartz bar segment.
float m_glueThickness
glue thickness
float m_thickness
bar segment thickness
std::string m_glueMaterial
glue material name
float m_length
bar segment length
Geometry parameters of prism.
const std::string & getPeelOffMaterial() const
Returns peel-off material.
double getFullFlatLength() const
Returns the length of a flat surface at prism bottom including filter.
double getPeelOffCenter(const PeelOffRegion ®ion) const
Returns peel-off offset in x of the given region.
float m_flatLength
length of the flat part at the bottom
ClassDefOverride(TOPGeoPrism, 2)
do not write out
void setAngle(double angle)
Recalculates flatLength according to given prism angle.
double getFilterThickness() const
Returns wavelength filter thickness (filter on -z side).
float m_peelOffThickness
thickness of peel-off volume
const std::vector< PeelOffRegion > & getPeelOffRegions() const
Returns peel-off cookie regions.
std::vector< PeelOffRegion > m_peelOffRegions
peel-off regions
float m_peelOffSize
size in x of peel-off volume
double getGlueThickness() const override
Returns glue thickness (no glue on -z side)
const std::vector< UnfoldedWindow > & getUnfoldedWindows() const
Returns unfolded exit windows.
double getExitThickness() const
Returns prism thickness at PMT side.
double getAngle() const
Returns prism angle.
double getPeelOffThickness() const
Returns peel-off thickness.
TOPGeoPrism()
Default constructor.
float m_peelOffOffset
offset in x of the peel-off volume ID = 1
void setPeelOffRegions(double size, double offset, double thickness, const std::string &material)
Sets parameters of the peel-off cookie volumes.
double getPeelOffSize() const
Returns cookie size in x (corresponding to 2x2 PMT)
const std::string & getFilterMaterial() const
Returns wavelength filter material name (filter on -z side) For backward compatibility,...
std::string m_peelOffMaterial
material name of peel-off volume
double getFlatLength() const
Returns the length of a flat surface at prism bottom.
int getK0() const
Returns index of true window in a vector of unfolded exit windows.
void setGlueDelamination(double, double, const std::string &) override
Disable setting the glue delamination, since there is no glue.
void setGlue(double, const std::string &) override
Disable setting the glue, since there is none.
TOPGeoPrism(double width, double thickness, double length, double exitThickness, double flatLength, const std::string &material, const std::string &name="TOPPrism_")
Useful constructor.
std::vector< UnfoldedWindow > m_unfoldedWindows
cache for unfolded prism exit windows
float m_exitThickness
thickness at PMT side
double atan(double a)
atan for double
void appendPeelOffRegion(unsigned ID, double fraction, double angle)
Appends peel-off cookie region.
bool isConsistent() const override
Check for consistency of data members.
static double s_unit
conversion unit for length
void reflect(const ROOT::Math::XYVector *points, const ROOT::Math::XYVector *normals, const ROOT::Math::XYVector &orig, const ROOT::Math::XYVector &surf, const ROOT::Math::XYVector &norm, const ROOT::Math::XYVector &slanted, int k, std::vector< UnfoldedWindow > &result) const
Do unfolding.
std::vector< std::pair< double, double > > getPeelOffContour(const PeelOffRegion ®ion) const
Returns the x-y contour of the peel-off region.
void unfold() const
Unfold prism exit window.
void print(const std::string &title="Prism geometry parameters") const override
Print the content of the class.
Abstract base class for different kinds of events.
Parameters of peel-off cookie region (corresponds to 2x2 PMT's)
float fraction
fraction of peel-off area
float angle
angle of peel-off area
unsigned ID
ID of the region (1-based)
Unfolded prism exit window.
double ny
normal to window surface, y component
double nsz[2]
normals to upper [0] and slanted [1] surfaces, z component
double nz
normal to window surface, z component
double nsy[2]
normals to upper [0] and slanted [1] surfaces, y component
double sz
window surface direction in z
double z0
window origin in z
double sy
window surface direction in y
double y0
window origin in y