11#include <top/reconstruction_cpp/RaytracerBase.h>
12#include <top/reconstruction_cpp/func.h>
13#include <Math/Vector3D.h>
14#include <Math/Point3D.h>
52 PhotonState(
const ROOT::Math::XYZPoint& position,
const ROOT::Math::XYZVector& direction);
61 PhotonState(
const ROOT::Math::XYZPoint& position,
double kx,
double ky,
double kz);
70 PhotonState(
const ROOT::Math::XYZPoint& position,
const ROOT::Math::XYZVector& trackDir,
double thc,
double fic);
State of the Cerenkov photon in the quartz optics.
double m_y0
origin in y for unfolding
EType m_type
quartz segment type at last propagation step
double getZD() const
Returns detection position z in unfolded prism.
double m_cosy
maximal cosine of impact angle to surface in y
double getPropagationLen() const
Returns total propagation length since initial position.
int m_nx
signed number of reflections in x at last propagation step
double getUnfoldedY(double y) const
Unfolds the position in y.
double getX() const
Returns position in x.
double m_zD
unfolded prism detection position in z
ROOT::Math::XYZPoint getPosition() const
Returns position as 3D vector.
double getKy() const
Returns direction in y.
ROOT::Math::XYZVector getDirection() const
Returns direction as 3D unit vector.
void propagate(const RaytracerBase::BarSegment &bar)
Propagate photon to the exit of bar segment.
static double s_maxLen
maximal allowed propagation length
int getNx() const
Returns number of reflections in x at last propagation step.
double getYD() const
Returns detection position y in unfolded prism.
PhotonState()
Default constructor.
double m_ky
direction in y
double getA() const
Returns width (dimension in x) of the quartz segment at last propagation step.
double m_A
width of the quartz segment (dimension in x) for unfolding
bool getTotalReflStatus(double cosTotal) const
Returns total internal reflection status.
double m_cosx
maximal cosine of impact angle to surface in x
int m_ny
signed number of reflections in y at last propagation step
double m_kx
direction in x
double getZ() const
Returns position in z.
double m_yD
unfolded prism detection position in y
double m_B
thickness of the quartz segment (dimension in y) for unfolding
bool m_status
propagation status
double getY() const
Returns position in y.
int getNy() const
Returns number of reflections in y at last propagation step.
void propagateSemiLinear(const RaytracerBase::BarSegment &bar, const RaytracerBase::Mirror &mirror)
Propagate photon to the mirror and reflect it using semi-linear mirror optics.
bool getPropagationStatus() const
Returns propagation status.
static void setMaxPropagationLen(double maxLen)
Sets maximal allowed propagation length.
double getB() const
Returns thickness (dimension in y) of the quartz segment at last propagation step.
EType
enumerator for the type of quartz segments
@ c_BarSegment
bar segment
@ c_MirrorSegment
mirror segment
double getKz() const
Returns direction in z.
EType getSegmentType() const
Returns the type of the quartz segment at last propagation.
double m_propLen
propagation length since initial position
void propagateExact(const RaytracerBase::BarSegment &bar, const RaytracerBase::Mirror &mirror)
Propagate photon to the mirror and reflect it using exact mirror optics.
double getKx() const
Returns direction in x.
double getUnfoldedX(double x) const
Unfolds the position in x.
bool isInside(const RaytracerBase::BarSegment &bar) const
Checks if photon is inside the bar segment (including surface).
double m_kz
direction in z
double getXD() const
Returns detection position x in unfolded prism.
PhotonState & flipKy()
Changes sign of direction y component.
double unfold(double x, int nx, double A)
unfold a coordinate.
Abstract base class for different kinds of events.
bar segment data in module local frame.
spherical mirror data in module local frame.
prism data in module local frame.