Belle II Software development
FastRaytracer.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/reconstruction_cpp/RaytracerBase.h>
12#include <top/reconstruction_cpp/PhotonState.h>
13#include <vector>
14
15
16namespace Belle2 {
21 namespace TOP {
22
27
28 public:
29
36 explicit FastRaytracer(int moduleID, EGeometry geometry = c_Unified, EOptics optics = c_SemiLinear):
37 RaytracerBase(moduleID, geometry, optics)
38 {};
39
43 void clear() const;
44
50 void propagate(const PhotonState& photon, bool averaging = false) const;
51
56 const std::vector<PhotonState>& getPhotonStates() const {return m_photonStates;}
57
62 const std::vector<PhotonState>& getExtraStates() const {return m_extraStates;}
63
68 bool getPropagationStatus() const {return m_status;}
69
76 bool getTotalReflStatus(double cosTotal) const;
77
83 double getPropagationLen() const;
84
89 double getPropagationLenDelta() const;
90
98 double getXD() const;
99
106 double getYD() const;
107
115 double getInPlaneYD() const;
116
123 double getZD() const;
124
131 double getYB() const;
132
138 int getNx() const;
139
145 int getNxm() const {return m_Nxm;}
146
152 int getNxb() const {return m_Nxb;}
153
159 int getNxe() const {return m_Nxe;}
160
166 int getNy() const;
167
173 int getNym() const {return m_Nym;}
174
180 int getNyb() const {return m_Nyb;}
181
187 int getNye() const {return m_Nye;}
188
194 int getNys() const;
195
196
197 private:
198
199 mutable std::vector<PhotonState> m_photonStates;
200 mutable std::vector<PhotonState> m_extraStates;
201 mutable bool m_status = false;
202 mutable int m_Nxm = 0;
203 mutable int m_Nxb = 0;
204 mutable int m_Nxe = 0;
205 mutable int m_Nym = 0;
206 mutable int m_Nyb = 0;
207 mutable int m_Nye = 0;
209 };
210
211 } // namespace TOP
213} // namespace Belle2
Fast photon propagation in quartz optics.
Definition: FastRaytracer.h:26
int m_Nym
number of reflections in y before mirror
FastRaytracer(int moduleID, EGeometry geometry=c_Unified, EOptics optics=c_SemiLinear)
Constructor.
Definition: FastRaytracer.h:36
double getZD() const
Returns unfolded position in z of virtual Detector plane.
double getPropagationLen() const
Returns total propagation length since initial position.
int getNyb() const
Returns signed number of reflections in y after mirror and before prism.
const std::vector< PhotonState > & getExtraStates() const
Returns extra states.
Definition: FastRaytracer.h:62
double getInPlaneYD() const
Returns unfolded position in y such that the prism unfolded windows are turned over into the real Det...
std::vector< PhotonState > m_photonStates
photon states at propagation steps
int getNxm() const
Returns signed number of reflections in x before mirror.
int getNxb() const
Returns signed number of reflections in x after mirror and before prism.
void propagate(const PhotonState &photon, bool averaging=false) const
Propagate photon to photo-detector plane.
int getNym() const
Returns signed number of reflections in y before mirror.
int m_Nxm
number of reflections in x before mirror
int getNx() const
Returns signed number of reflections in x.
double getYB() const
Returns unfolded position in y at Bar-prism-connection plane.
double getYD() const
Returns unfolded position in y at virtual Detector plane.
int getNxe() const
Returns signed number of reflections in x inside prism.
bool getTotalReflStatus(double cosTotal) const
Returns total internal reflection status.
bool m_status
propagation status
int m_Nxe
number of reflections in x inside prism
int getNy() const
Returns signed number of reflections in y.
bool getPropagationStatus() const
Returns propagation status.
Definition: FastRaytracer.h:68
int getNys() const
Returns number of reflections on slanted prism surface.
double getPropagationLenDelta() const
Returns total propagation length difference between true and flipped prism.
int m_Nyb
number of reflections in y after mirror and before prism
const std::vector< PhotonState > & getPhotonStates() const
Returns photon states (results of propagation).
Definition: FastRaytracer.h:56
int getNye() const
Returns signed number of reflections in y inside prism.
int m_Nxb
number of reflections in x after mirror and before prism
int m_Nye
number of reflections in y inside prism
void clear() const
Clear mutable variables.
std::vector< PhotonState > m_extraStates
extra storage
double getXD() const
Returns unfolded position in x at virtual Detector plane.
State of the Cerenkov photon in the quartz optics.
Definition: PhotonState.h:27
Base class with geometry data.
Definition: RaytracerBase.h:27
EGeometry
Treatement of quartz geometry.
Definition: RaytracerBase.h:33
@ c_Unified
single bar with average width and thickness
Definition: RaytracerBase.h:34
EOptics
Treatement of spherical mirror optics.
Definition: RaytracerBase.h:41
@ c_SemiLinear
semi-linear approximation
Definition: RaytracerBase.h:42
Abstract base class for different kinds of events.