 |
Belle II Software
release-05-02-19
|
15 #include <framework/core/Module.h>
18 #include <TRotation.h>
22 #include <framework/datastore/StoreArray.h>
23 #include <mdst/dataobjects/MCParticle.h>
24 #include <top/dataobjects/TOPSimCalPulse.h>
47 class OpticalGunModule :
public Module {
76 virtual void event()
override;
82 virtual void endRun()
override;
145 bool isInsideSlit(
const TVector3& point,
const TVector3& direction)
const;
double m_y
source position in y
std::string m_angularDistribution
emission angular distribution.
double m_minAlpha
minimum emission angle
double m_pulseWidth
pulse duration (Gaussian sigma)
double m_slitZ
slit distance from source
double m_cosMinAlpha
for conveniency we calculate the cos of m_minAlpha only once, and then re-use it in several members
double m_wavelength
source wavelenght [nm]
StoreArray< MCParticle > m_MCParticles
MC particles collection.
TVector3 getDirectionCustom() const
Return photon direction according to a a custom distribution of theta.
double m_phi
first rotation angle (around z) [deg]
double m_slitDX
slit size in x
virtual void event() override
Event processor.
virtual void terminate() override
Termination action.
double m_x
source position in x
virtual ~OpticalGunModule()
Destructor.
TRotation m_rotateBar
rotation of a bar
virtual void beginRun() override
Called when entering a new run.
double m_cosMaxAlpha
for conveniency we calculate the cos of m_minAlpha only once, and then re-use it in several members
double m_diameter
source diameter
TF1 * m_customDistribution
Custom angular distribution, that uses m_angularDistribution as formula.
TRotation m_rotate
rotation to Belle II frame
StoreArray< TOPSimCalPulse > m_simCalPulses
simulated cal pulse collection
void printModuleParams() const
Prints module parameters.
TVector3 getDirectionGaussian() const
Return photon direction according to a projected 2D gaussian distribution based on numerical aperture...
double m_energy
photon energy (from wavelength)
TVector3 getDirectionUniform() const
Return photon direction according to a projected uniform distribution with opening angle alpha.
double m_startTime
start time
double m_maxAlpha
maximum emission angle
virtual void endRun() override
End-of-run action.
TVector3 getDirectionUniformRingAngle() const
Return photon direction according to a uniform distribution within m_minAlpha and m_maxAlpha.
double m_psi
third rotation angle (around z) [deg]
double m_na
source numerical aperture.
Abstract base class for different kinds of events.
double m_theta
second rotation angle (around x) [deg]
bool isInsideSlit(const TVector3 &point, const TVector3 &direction) const
Checks if photon flies through the slit.
double m_slitY0
slit y-offset in respect to source
double m_z
source position in z
double m_numPhotons
average number of photons in a pulse
OpticalGunModule()
Constructor.
TVector3 m_translate
translation to Belle II frame
virtual void initialize() override
Initialize the Module.
double m_slitX0
slit x-offset in respect to source
double m_slitDY
slit size in y
TVector3 getDirectionLambertian() const
Return photon direction according to a lambertian distribution with opening angle alpha.