HerdSoftware  0.4.0
ScdChargePacket.h
Go to the documentation of this file.
1 /*
2  * ScdChargePacket.h
3  *
4  * Created on 23 Sep 2020
5  * Author: Valerio Formato
6  */
7 
8 #ifndef HERD_SCDCHARGEPACKET_H_
9 #define HERD_SCDCHARGEPACKET_H_
10 
11 // HerdSoftware headers
13 
14 // c++ headers
15 #include <vector>
16 
19 public:
20  enum class CarrierType { Electron, Hole };
21 
22  ScdChargePacket(Point origin) : m_origin{std::move(origin)} {};
23  virtual ~ScdChargePacket() = default;
24 
25  virtual void Diffuse(float distance, CarrierType type) = 0;
26  [[nodiscard]] virtual float IntegrateCharge(float xmin, float xmax) const = 0;
27  [[nodiscard]] virtual std::pair<float, float> EffectiveRange() const = 0;
28 
29 protected:
31 };
32 } // namespace Herd::ScdDigitizationTools
33 
34 #endif
Point.h
Herd::Vec3D
A class describing a vector in 3D space.
Definition: Vec3D.h:33
Herd::ScdDigitizationTools::ScdChargePacket
Definition: ScdChargePacket.h:18
Herd::ScdDigitizationTools::ScdChargePacket::EffectiveRange
virtual std::pair< float, float > EffectiveRange() const =0
Herd::ScdDigitizationTools::ScdChargePacket::m_origin
Point m_origin
Definition: ScdChargePacket.h:30
Herd::ScdDigitizationTools::ScdChargePacket::CarrierType
CarrierType
Definition: ScdChargePacket.h:20
Herd::ScdDigitizationTools::ScdChargePacket::CarrierType::Electron
@ Electron
Herd::ScdDigitizationTools::ScdChargePacket::CarrierType::Hole
@ Hole
Herd::ScdDigitizationTools::ScdChargePacket::Diffuse
virtual void Diffuse(float distance, CarrierType type)=0
Herd::ScdDigitizationTools::ScdChargePacket::ScdChargePacket
ScdChargePacket(Point origin)
Definition: ScdChargePacket.h:22
Herd::ScdDigitizationTools::ScdChargePacket::~ScdChargePacket
virtual ~ScdChargePacket()=default
Herd::ScdDigitizationTools::ScdChargePacket::IntegrateCharge
virtual float IntegrateCharge(float xmin, float xmax) const =0
Herd::ScdDigitizationTools
Definition: ScdChargePacket.h:17