Belle II Software  release-08-01-10
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 
16 namespace Belle2 {
21  namespace TOP {
22 
26  class FastRaytracer : public RaytracerBase {
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.
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
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.
const std::vector< PhotonState > & getExtraStates() const
Returns extra states.
Definition: FastRaytracer.h:62
const std::vector< PhotonState > & getPhotonStates() const
Returns photon states (results of propagation).
Definition: FastRaytracer.h:56
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.