Garfield++ 4.0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
HeedPhoton.h
Go to the documentation of this file.
1#ifndef HEEDPHOTON_H
2#define HEEDPHOTON_H
3
4#include <vector>
5#include "HeedFieldMap.h"
8
9//#define SFER_PHOTOEL // make direction of photoelectron absolutely random
10
11namespace Heed {
12extern long last_particle_number;
13
14/// Definition of the photon which can be emitted at atomic relaxation cascades
15/// and traced through the geometry.
16/// 2003, I. Smirnov
17
18class HeedPhoton : public gparticle {
19 public:
20 /// Default constructor.
21 HeedPhoton() = default;
22 /// Constructor.
23 HeedPhoton(manip_absvol* primvol, const point& pt, const vec& vel,
24 vfloat time, long fparent_particle_number, double fenergy,
25 HeedFieldMap* fieldmap, const bool fs_print_listing = false);
26 /// Destructor
27 virtual ~HeedPhoton() {}
28
29 void print(std::ostream& file, int l) const override;
30 HeedPhoton* copy() const override { return new HeedPhoton(*this); }
31
34
35 /// Photon energy [MeV]
36 double m_energy;
37
38 /// Flag whether the photon has been absorbed.
39 /// Used in physics_after_new_speed.
40 bool m_photon_absorbed = false;
41 /// Index of absorbing atom.
43 /// Index of absorbing shell
45
46#ifdef SFER_PHOTOEL
47 int s_sfer_photoel;
48#endif
49
50 /// Flag that delta-electrons are already generated (or cannot be created).
51 bool m_delta_generated = false;
52
53 protected:
54 void physics_after_new_speed(std::vector<gparticle*>& secondaries) override;
55 void physics(std::vector<gparticle*>& secondaries) override;
56
57 private:
58 /// Flag to print internal algorithms of a selected event
59 bool m_print_listing = false;
60
61 HeedFieldMap* m_fieldMap = nullptr;
62};
63}
64
65#endif
Retrieve electric and magnetic field from Sensor.
Definition: HeedFieldMap.h:15
virtual ~HeedPhoton()
Destructor.
Definition: HeedPhoton.h:27
long m_na_absorbing
Index of absorbing atom.
Definition: HeedPhoton.h:42
long m_ns_absorbing
Index of absorbing shell.
Definition: HeedPhoton.h:44
void physics_after_new_speed(std::vector< gparticle * > &secondaries) override
Apply any other processes (turn the trajectory, kill the particle, ...).
Definition: HeedPhoton.cpp:109
bool m_photon_absorbed
Definition: HeedPhoton.h:40
void physics(std::vector< gparticle * > &secondaries) override
Apply any other processes (turn the trajectory, kill the particle, ...).
Definition: HeedPhoton.cpp:42
long m_parent_particle_number
Definition: HeedPhoton.h:33
HeedPhoton * copy() const override
Clone the particle.
Definition: HeedPhoton.h:30
long m_particle_number
Definition: HeedPhoton.h:32
HeedPhoton()=default
Default constructor.
double m_energy
Photon energy [MeV].
Definition: HeedPhoton.h:36
void print(std::ostream &file, int l) const override
Print-out.
Definition: HeedPhoton.cpp:192
bool m_delta_generated
Flag that delta-electrons are already generated (or cannot be created).
Definition: HeedPhoton.h:51
vfloat time() const
Get the current time of the particle.
Definition: gparticle.h:188
Abstract base classs for volume "manipulators".
Definition: volume.h:128
Point.
Definition: vec.h:368
Definition: vec.h:179
Definition: BGMesh.cpp:6
long last_particle_number
Definition: HeedParticle.h:9
double vfloat
Definition: vfloat.h:16