Belle II Software  release-08-01-10
PhotonState Class Reference

State of the Cerenkov photon in the quartz optics. More...

#include <PhotonState.h>

Public Types

enum  EType {
  c_Undefined = 0 ,
  c_BarSegment = 1 ,
  c_MirrorSegment = 2 ,
  c_Prism = 3
}
 enumerator for the type of quartz segments More...
 

Public Member Functions

 PhotonState ()
 Default constructor.
 
 PhotonState (const ROOT::Math::XYZPoint &position, const ROOT::Math::XYZVector &direction)
 Constructor with position and direction vectors. More...
 
 PhotonState (const ROOT::Math::XYZPoint &position, double kx, double ky, double kz)
 Constructor with position vector and direction components. More...
 
 PhotonState (const ROOT::Math::XYZPoint &position, const ROOT::Math::XYZVector &trackDir, double thc, double fic)
 Constructor with position, track direction and cerenkov angles. More...
 
PhotonStateflipKy ()
 Changes sign of direction y component.
 
ROOT::Math::XYZPoint getPosition () const
 Returns position as 3D vector. More...
 
double getX () const
 Returns position in x. More...
 
double getY () const
 Returns position in y. More...
 
double getZ () const
 Returns position in z. More...
 
double getUnfoldedX (double x) const
 Unfolds the position in x. More...
 
double getUnfoldedY (double y) const
 Unfolds the position in y. More...
 
double getXD () const
 Returns detection position x in unfolded prism. More...
 
double getYD () const
 Returns detection position y in unfolded prism. More...
 
double getZD () const
 Returns detection position z in unfolded prism. More...
 
ROOT::Math::XYZVector getDirection () const
 Returns direction as 3D unit vector. More...
 
double getKx () const
 Returns direction in x. More...
 
double getKy () const
 Returns direction in y. More...
 
double getKz () const
 Returns direction in z. More...
 
double getPropagationLen () const
 Returns total propagation length since initial position. More...
 
int getNx () const
 Returns number of reflections in x at last propagation step. More...
 
int getNy () const
 Returns number of reflections in y at last propagation step. More...
 
double getA () const
 Returns width (dimension in x) of the quartz segment at last propagation step. More...
 
double getB () const
 Returns thickness (dimension in y) of the quartz segment at last propagation step. More...
 
EType getSegmentType () const
 Returns the type of the quartz segment at last propagation. More...
 
bool getPropagationStatus () const
 Returns propagation status. More...
 
bool getTotalReflStatus (double cosTotal) const
 Returns total internal reflection status. More...
 
bool isInside (const RaytracerBase::BarSegment &bar) const
 Checks if photon is inside the bar segment (including surface). More...
 
bool isInside (const RaytracerBase::BarSegment &bar, const RaytracerBase::Mirror &mirror) const
 Checks if photon is inside the mirror segment (including surface). More...
 
bool isInside (const RaytracerBase::Prism &prism) const
 Checks if photon is inside the prism (including surface). More...
 
void propagate (const RaytracerBase::BarSegment &bar)
 Propagate photon to the exit of bar segment. More...
 
void propagateSemiLinear (const RaytracerBase::BarSegment &bar, const RaytracerBase::Mirror &mirror)
 Propagate photon to the mirror and reflect it using semi-linear mirror optics. More...
 
void propagateExact (const RaytracerBase::BarSegment &bar, const RaytracerBase::Mirror &mirror)
 Propagate photon to the mirror and reflect it using exact mirror optics. More...
 
void propagate (const RaytracerBase::Prism &prism)
 Propagate photon in the prism to the detector plane. More...
 

Static Public Member Functions

static void setMaxPropagationLen (double maxLen)
 Sets maximal allowed propagation length. More...
 

Private Attributes

double m_x = 0
 position in x
 
double m_y = 0
 position in y
 
double m_z = 0
 position in z
 
double m_kx = 0
 direction in x
 
double m_ky = 0
 direction in y
 
double m_kz = 0
 direction in z
 
double m_propLen = 0
 propagation length since initial position
 
int m_nx = 0
 signed number of reflections in x at last propagation step
 
int m_ny = 0
 signed number of reflections in y at last propagation step
 
double m_cosx = 0
 maximal cosine of impact angle to surface in x
 
double m_cosy = 0
 maximal cosine of impact angle to surface in y
 
double m_A = 0
 width of the quartz segment (dimension in x) for unfolding
 
double m_B = 0
 thickness of the quartz segment (dimension in y) for unfolding
 
double m_y0 = 0
 origin in y for unfolding
 
double m_yD = 0
 unfolded prism detection position in y
 
double m_zD = 0
 unfolded prism detection position in z
 
EType m_type = c_Undefined
 quartz segment type at last propagation step
 
bool m_status = false
 propagation status
 

Static Private Attributes

static double s_maxLen = 10000
 maximal allowed propagation length
 

Detailed Description

State of the Cerenkov photon in the quartz optics.

Definition at line 27 of file PhotonState.h.

Member Enumeration Documentation

◆ EType

enum EType

enumerator for the type of quartz segments

Enumerator
c_Undefined 

undefined

c_BarSegment 

bar segment

c_MirrorSegment 

mirror segment

c_Prism 

prism

Definition at line 34 of file PhotonState.h.

34  {
35  c_Undefined = 0,
36  c_BarSegment = 1,
37  c_MirrorSegment = 2,
38  c_Prism = 3
39  };
@ c_BarSegment
bar segment
Definition: PhotonState.h:36
@ c_MirrorSegment
mirror segment
Definition: PhotonState.h:37

Constructor & Destructor Documentation

◆ PhotonState() [1/3]

PhotonState ( const ROOT::Math::XYZPoint &  position,
const ROOT::Math::XYZVector &  direction 
)

Constructor with position and direction vectors.

Parameters
positioninitial photon position (must be inside quartz)
directioninitial direction vector (must be unit vector)

Definition at line 26 of file PhotonState.cc.

26  :
27  m_x(position.X()), m_y(position.Y()), m_z(position.Z()),
28  m_kx(direction.X()), m_ky(direction.Y()), m_kz(direction.Z()),
29  m_status(true)
30  {}
double m_x
position in x
Definition: PhotonState.h:274
double m_ky
direction in y
Definition: PhotonState.h:278
double m_kx
direction in x
Definition: PhotonState.h:277
bool m_status
propagation status
Definition: PhotonState.h:291
double m_z
position in z
Definition: PhotonState.h:276
double m_y
position in y
Definition: PhotonState.h:275
double m_kz
direction in z
Definition: PhotonState.h:279

◆ PhotonState() [2/3]

PhotonState ( const ROOT::Math::XYZPoint &  position,
double  kx,
double  ky,
double  kz 
)

Constructor with position vector and direction components.

Parameters
positioninitial photon position (must be inside quartz)
kxinitial direction x-component (must be unit vector)
kyinitial direction y-component (must be unit vector)
kzinitial direction z-component (must be unit vector)

Definition at line 33 of file PhotonState.cc.

◆ PhotonState() [3/3]

PhotonState ( const ROOT::Math::XYZPoint &  position,
const ROOT::Math::XYZVector &  trackDir,
double  thc,
double  fic 
)

Constructor with position, track direction and cerenkov angles.

Parameters
positioninitial photon position (must be inside quartz)
trackDirtrack direction vector (must be unit vector)
thcCerenkov (polar) angle
ficCerenkov azimuthal angle

Definition at line 39 of file PhotonState.cc.

Member Function Documentation

◆ getA()

double getA ( ) const
inline

Returns width (dimension in x) of the quartz segment at last propagation step.

Returns
width

Definition at line 185 of file PhotonState.h.

◆ getB()

double getB ( ) const
inline

Returns thickness (dimension in y) of the quartz segment at last propagation step.

For prism it is the size of exit window.

Returns
thickness

Definition at line 192 of file PhotonState.h.

◆ getDirection()

ROOT::Math::XYZVector getDirection ( ) const
inline

Returns direction as 3D unit vector.

Returns
direction

Definition at line 143 of file PhotonState.h.

◆ getKx()

double getKx ( ) const
inline

Returns direction in x.

Returns
direction in x

Definition at line 149 of file PhotonState.h.

◆ getKy()

double getKy ( ) const
inline

Returns direction in y.

Returns
direction in y

Definition at line 155 of file PhotonState.h.

◆ getKz()

double getKz ( ) const
inline

Returns direction in z.

Returns
direction in z

Definition at line 161 of file PhotonState.h.

◆ getNx()

int getNx ( ) const
inline

Returns number of reflections in x at last propagation step.

Returns
signed number of reflections

Definition at line 173 of file PhotonState.h.

◆ getNy()

int getNy ( ) const
inline

Returns number of reflections in y at last propagation step.

Returns
signed number of reflections

Definition at line 179 of file PhotonState.h.

◆ getPosition()

ROOT::Math::XYZPoint getPosition ( ) const
inline

Returns position as 3D vector.

Returns
position

Definition at line 87 of file PhotonState.h.

◆ getPropagationLen()

double getPropagationLen ( ) const
inline

Returns total propagation length since initial position.

Returns
propagation length

Definition at line 167 of file PhotonState.h.

◆ getPropagationStatus()

bool getPropagationStatus ( ) const
inline

Returns propagation status.

Returns
true on success

Definition at line 204 of file PhotonState.h.

◆ getSegmentType()

EType getSegmentType ( ) const
inline

Returns the type of the quartz segment at last propagation.

Returns
type quartz segment type

Definition at line 198 of file PhotonState.h.

◆ getTotalReflStatus()

bool getTotalReflStatus ( double  cosTotal) const
inline

Returns total internal reflection status.

Parameters
cosTotalcosine of total reflection angle
Returns
true if totally reflected

Definition at line 211 of file PhotonState.h.

◆ getUnfoldedX()

double getUnfoldedX ( double  x) const
inline

Unfolds the position in x.

Parameters
xposition to unfold
Returns
unfolded position

Definition at line 112 of file PhotonState.h.

◆ getUnfoldedY()

double getUnfoldedY ( double  y) const
inline

Unfolds the position in y.

Parameters
yposition to unfold
Returns
unfolded position

Definition at line 119 of file PhotonState.h.

◆ getX()

double getX ( ) const
inline

Returns position in x.

Returns
position in x

Definition at line 93 of file PhotonState.h.

◆ getXD()

double getXD ( ) const
inline

Returns detection position x in unfolded prism.

Returns
detection position x in unfolded prism

Definition at line 125 of file PhotonState.h.

◆ getY()

double getY ( ) const
inline

Returns position in y.

Returns
position in y

Definition at line 99 of file PhotonState.h.

◆ getYD()

double getYD ( ) const
inline

Returns detection position y in unfolded prism.

Returns
detection position y in unfolded prism

Definition at line 131 of file PhotonState.h.

◆ getZ()

double getZ ( ) const
inline

Returns position in z.

Returns
position in z

Definition at line 105 of file PhotonState.h.

◆ getZD()

double getZD ( ) const
inline

Returns detection position z in unfolded prism.

Returns
detection position z in unfolded prism

Definition at line 137 of file PhotonState.h.

◆ isInside() [1/3]

bool isInside ( const RaytracerBase::BarSegment bar) const

Checks if photon is inside the bar segment (including surface).

Parameters
barbar segment data
Returns
true if inside

Definition at line 51 of file PhotonState.cc.

◆ isInside() [2/3]

bool isInside ( const RaytracerBase::BarSegment bar,
const RaytracerBase::Mirror mirror 
) const

Checks if photon is inside the mirror segment (including surface).

Parameters
barbar segment data
mirrorspherical mirror data
Returns
true if inside

Definition at line 60 of file PhotonState.cc.

◆ isInside() [3/3]

bool isInside ( const RaytracerBase::Prism prism) const

Checks if photon is inside the prism (including surface).

Parameters
prismprism data
Returns
true if inside

Definition at line 71 of file PhotonState.cc.

◆ propagate() [1/2]

void propagate ( const RaytracerBase::BarSegment bar)

Propagate photon to the exit of bar segment.

Parameters
barbar segment data
Returns
true on success

Definition at line 82 of file PhotonState.cc.

◆ propagate() [2/2]

void propagate ( const RaytracerBase::Prism prism)

Propagate photon in the prism to the detector plane.

Parameters
prismprism data
Returns
true on success

Definition at line 247 of file PhotonState.cc.

◆ propagateExact()

void propagateExact ( const RaytracerBase::BarSegment bar,
const RaytracerBase::Mirror mirror 
)

Propagate photon to the mirror and reflect it using exact mirror optics.

Parameters
barmirror segment data
mirrorspherical mirror data
Returns
true on success

Definition at line 176 of file PhotonState.cc.

◆ propagateSemiLinear()

void propagateSemiLinear ( const RaytracerBase::BarSegment bar,
const RaytracerBase::Mirror mirror 
)

Propagate photon to the mirror and reflect it using semi-linear mirror optics.

Semi-linear: mirror surface approximated with a cylinder along y-axis and using linear optics approximation in y for the photon reflection. Useful to get rid of some of the discontinuities in the TOP image at given wavelength, which are anyway smeared-out by the dispersion and other processes.

Parameters
barmirror segment data
mirrorspherical mirror data
Returns
true on success

Definition at line 110 of file PhotonState.cc.

◆ setMaxPropagationLen()

static void setMaxPropagationLen ( double  maxLen)
inlinestatic

Sets maximal allowed propagation length.

Parameters
maxLenmaximal allowed propagation length

Definition at line 81 of file PhotonState.h.


The documentation for this class was generated from the following files: