HerdSoftware  0.1.1
SiliconDetectorDriftDiffusionAlgo.h
Go to the documentation of this file.
1 /*
2  * SiliconDetectorDriftDiffusionAlgo.h
3  *
4  * Created on: 23 Sep 2020
5  * Author: Valerio Formato
6  */
7 
8 #ifndef HERD_SILICONDETECTORDRIFTDIFFUSIONALGO_H_
9 #define HERD_SILICONDETECTORDRIFTDIFFUSIONALGO_H_
10 
11 // HerdSoftware headers
15 
16 // EventAnalysis headers
17 #include "algorithm/Algorithm.h"
18 
19 using namespace EA;
20 
21 namespace Herd {
22 
23 // clang-format off
34 // clang-format on
35 
36 namespace SiliconDetectorDigitizationTools {
37 class SDChargePacket;
38 }
39 
40 class SiliconDetectorDriftDiffusionAlgo : public Algorithm {
41 public:
46  SiliconDetectorDriftDiffusionAlgo(const std::string &name);
47 
52  bool Initialize() override;
53 
58  bool Process() override;
59 
68  std::vector<std::string> FreeObjects(const std::vector<std::string> &objs, Memory::Status memStatus) override;
69 
70 protected:
71  // Parameters
72  float m_pitch;
73  std::string m_detName;
74 
76 
77  // diffusion parameters
78  std::string m_diffusionType;
79 
80  // - Gaussian drift parameters
83 
84  // - non-linear Gaussian drift parameters
87 
88 private:
89  enum class DiffusionType { Gaussian, GaussianNonLinear };
90  DiffusionType m_diffType = DiffusionType::GaussianNonLinear;
91 
93  observer_ptr<SiliconDetectorGeoParamsColl> m_origSiliconDetectorGeoParamsColl;
94  std::shared_ptr<SiliconDetectorGeoParamsColl> m_digSiliconDetectorGeoParamsColl;
95 
96  StorePtr m_evStore, m_globStore;
97 
98  // Helper functions
99 
110  void GenerateHits(const SiliconDetectorParticleHitsColl &particleHitsColl, const SiliconDetectorHitsColl &hitsColl,
111  SiliconDetectorHitsColl &digHitsColl);
112 
123  SiliconDetectorGeoParams CreateGeoParams(const SiliconDetectorGeoParams &origGeoParams);
124 
130  std::vector<Point> PartitionTrajectory(const ParticleHit &hit);
131 
132  void AccumulateSteps(std::vector<Hit> &layerHits, const SiliconDetectorGeoParams &geoParams, unsigned int firstStrip,
133  unsigned int lastStrip, const SiliconDetectorDigitizationTools::SDChargePacket &packet,
134  float edep);
135 
136  // Helper function to generate different kinds of charge packets
137  std::unique_ptr<SiliconDetectorDigitizationTools::SDChargePacket>
138  CreatePacket(Point position, DiffusionType diffType, const SiliconDetectorGeoParams &geoParams);
139 };
140 
141 } // namespace Herd
142 
143 #endif /* HERD_SILICONDETECTORDriftDiffusionALGO_H_ */
CssGeoParams.h CssGeoParams class declaration.
Definition: CaloPDCalibrationAlgo.h:24
std::shared_ptr< SiliconDetectorGeoParamsColl > m_digSiliconDetectorGeoParamsColl
Definition: SiliconDetectorDriftDiffusionAlgo.h:94
Base algorithm for digitizers of the Monte Carlo hits of silicon detector implementing the effect of ...
Definition: SiliconDetectorDriftDiffusionAlgo.h:40
std::string m_diffusionType
Definition: SiliconDetectorDriftDiffusionAlgo.h:78
float m_intrinsicVoltage
Definition: SiliconDetectorDriftDiffusionAlgo.h:86
DiffusionType
Definition: SiliconDetectorDriftDiffusionAlgo.h:89
A class describing a vector in 3D space.
Definition: Vec3D.h:33
observer_ptr< SiliconDetectorGeoParamsColl > m_origSiliconDetectorGeoParamsColl
Definition: SiliconDetectorDriftDiffusionAlgo.h:93
float m_posEffDiffCoeff
Definition: SiliconDetectorDriftDiffusionAlgo.h:81
Class to describe the energy deposit of a single particle.
Definition: ParticleHit.h:33
Data structure for single silicon layer geometry parameters.
Definition: SiliconDetectorGeoParams.h:32
float m_pitch
Definition: SiliconDetectorDriftDiffusionAlgo.h:72
float m_negEffDiffCoeff
Definition: SiliconDetectorDriftDiffusionAlgo.h:82
SiliconDetectorHitsColl m_siliconDetectorDigHitsColl
Definition: SiliconDetectorDriftDiffusionAlgo.h:92
float m_biasVoltage
Definition: SiliconDetectorDriftDiffusionAlgo.h:85
float m_minStepSize
Definition: SiliconDetectorDriftDiffusionAlgo.h:75
std::string m_detName
Name of the detector, e.g "stk".
Definition: SiliconDetectorDriftDiffusionAlgo.h:73
StorePtr m_globStore
Definition: SiliconDetectorDriftDiffusionAlgo.h:96