HerdSoftware  0.4.0
Public Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
Herd::ScdDriftDiffusionAlgo Class Reference

Base algorithm for digitizers of the Monte Carlo hits of the Silicon Charge Detector implementing the effect of charge drift and diffusion in the silicon. More...

#include <algorithms/digitization/ScdDriftDiffusionAlgo.h>

Inheritance diagram for Herd::ScdDriftDiffusionAlgo:

Public Member Functions

 ScdDriftDiffusionAlgo (const std::string &name)
 Constructor. More...
 
bool Initialize () override
 Initialization of the algorithm. More...
 
bool Process () override
 Process a single event. More...
 
std::vector< std::string > FreeObjects (const std::vector< std::string > &objs, EA::Memory::Status memStatus) override
 Free the memory of unneeded objects. More...
 

Protected Attributes

float m_pitch
 
float m_minStepSize
 
std::string m_diffusionType
 
float m_posEffDiffCoeff
 
float m_negEffDiffCoeff
 
float m_biasVoltage
 
float m_intrinsicVoltage
 

Private Types

enum  DiffusionType { DiffusionType::Gaussian, DiffusionType::GaussianNonLinear }
 

Private Member Functions

void GenerateHits (const ScdParticleHitsColl &particleHitsColl, const ScdHitsColl &hitsColl, ScdHitsColl &digHitsColl)
 Generate the diffused hits. More...
 
ScdGeoParams CreateGeoParams (const ScdGeoParams &origGeoParams)
 Creates the geometry parameter objects for the digitized detector. More...
 
std::vector< PointPartitionTrajectory (const ParticleHit &hit)
 Splits the trajectory of a particle hit into N sub-steps, according to the step-size specified in the algo. More...
 
void AccumulateSteps (std::vector< Hit > &layerHits, const ScdGeoParams &geoParams, unsigned int firstStrip, unsigned int lastStrip, const ScdDigitizationTools::ScdChargePacket &packet, float edep)
 
std::unique_ptr< ScdDigitizationTools::ScdChargePacketCreatePacket (Point position, DiffusionType diffType, const ScdGeoParams &geoParams)
 

Private Attributes

DiffusionType m_diffType = DiffusionType::GaussianNonLinear
 
ScdHitsColl m_siliconDetectorDigHitsColl
 
EA::observer_ptr< ScdGeoParamsCollm_origScdGeoParamsColl
 
std::shared_ptr< ScdGeoParamsCollm_digScdGeoParamsColl
 
EA::StorePtr m_evStore
 
EA::StorePtr m_globStore
 

Detailed Description

Base algorithm for digitizers of the Monte Carlo hits of the Silicon Charge Detector implementing the effect of charge drift and diffusion in the silicon.

This algorithm assigns the energy released by single particles traversing a wafer of the SCD to the strips after propagating and diffusing charge deposits along the particle trajectory. Different diffusion methods should be implementable, but for now a simple gaussian model is used.

Needed event objects:

name type store optional description
scdWaferHitsCollGGS ScdHitsColl evStore no The MC hits in the SCD wafers.
scdWaferParticleHitsCollMC ScdParticleHitsColl evStore no The MC particle hits in the SCD wafers.

Needed global objects:

name type store optional description
scdGeoParamsColl ScdGeoParamsColl globStore yes Geometric parameters of the SCD.

Produced event objects:

name type alias store description
scdDriftDiffHitsCollMC ScdHitsColl scdHitsCollMC evStore The hits in the strips of the SCD.

Produced global objects:

name type alias store description
scdGeoParamsDriftDiffColl ScdHitsColl scdGeoParamsColl evStore The geometry parameters of the digitized SCD.

Parameters:

name type default value description
pitch float 0.0050 The pitch used for the digitization of the top SCD hits [cm].
minStepSize float 0.0002 The minimum substep size along the particle path within the silicon [cm].
diffusionType string gaussianNonLinear The diffusion model to be used [gaussian,gaussianNonLinear].
packet/biasVoltage float 80 The bias voltage applied to the silicon [V].
packet/intrinsicVoltage float 35 The intrinsic voltage of the SCD [V].

Gaussian diffusion parameters: N.B: These parameters are only available when using the naive gaussian drift model

name type default value description
packet/gaussian/holeEffDiffCoeff float 0.050 The effective diffusion parameter for holes. It is expressed as a relative sigma growth per unit of distance travelled.
packet/gaussian/electronEffDiffCoeff float 0.050 The effective diffusion parameter for electrons. It is expressed as a relative sigma growth per unit of distance travelled.

Member Enumeration Documentation

◆ DiffusionType

Enumerator
Gaussian 
GaussianNonLinear 

Constructor & Destructor Documentation

◆ ScdDriftDiffusionAlgo()

Herd::ScdDriftDiffusionAlgo::ScdDriftDiffusionAlgo ( const std::string &  name)

Constructor.

Parameters
nameThe name of the algorithm.

Member Function Documentation

◆ AccumulateSteps()

void Herd::ScdDriftDiffusionAlgo::AccumulateSteps ( std::vector< Hit > &  layerHits,
const ScdGeoParams geoParams,
unsigned int  firstStrip,
unsigned int  lastStrip,
const ScdDigitizationTools::ScdChargePacket packet,
float  edep 
)
private

◆ CreateGeoParams()

ScdGeoParams Herd::ScdDriftDiffusionAlgo::CreateGeoParams ( const ScdGeoParams origGeoParams)
private

Creates the geometry parameter objects for the digitized detector.

Starting from the original geometry parameters this method computes the digitized parameters using the digitization parameters stored in private members.

Parameters
origGeoParamsthe original geometry parameters.
Returns
The geometry parameters of the digitized detectors.
Exceptions
std::runtime_errorif the relative position of the first strip on the wafer is less than 0 (i.e. strip outside the wafer).

◆ CreatePacket()

std::unique_ptr< ScdDigitizationTools::ScdChargePacket > Herd::ScdDriftDiffusionAlgo::CreatePacket ( Point  position,
DiffusionType  diffType,
const ScdGeoParams geoParams 
)
private

◆ FreeObjects()

std::vector< std::string > Herd::ScdDriftDiffusionAlgo::FreeObjects ( const std::vector< std::string > &  objs,
EA::Memory::Status  memStatus 
)
override

Free the memory of unneeded objects.

Currently this method frees the memory of the digitized hits if memStatus is EXHAUSTED.

Parameters
objsThe list of objects to be freed.
memStatusThe current memory occupation status.
Returns
a list of freed objects.

◆ GenerateHits()

void Herd::ScdDriftDiffusionAlgo::GenerateHits ( const ScdParticleHitsColl particleHitsColl,
const ScdHitsColl hitsColl,
ScdHitsColl digHitsColl 
)
private

Generate the diffused hits.

This function generates hits on the SCD after charge diffusion. It fills the collection passed as the digHitsColl argument with the digitized hits.

Parameters
particleHitsCollThe collection of particle hits.
hitsCollThe collection of hits.
digHitsCollThe collection of digitized hits.

◆ Initialize()

bool Herd::ScdDriftDiffusionAlgo::Initialize ( )
override

Initialization of the algorithm.

Returns
true if the initialization procedure is successful.

◆ PartitionTrajectory()

std::vector< Point > Herd::ScdDriftDiffusionAlgo::PartitionTrajectory ( const ParticleHit hit)
private

Splits the trajectory of a particle hit into N sub-steps, according to the step-size specified in the algo.

Parameters
hitthe particle hit.
Returns
A vector with the mid-points of all the sub-steps.

◆ Process()

bool Herd::ScdDriftDiffusionAlgo::Process ( )
override

Process a single event.

Returns
If event processing is successful.

Member Data Documentation

◆ m_biasVoltage

float Herd::ScdDriftDiffusionAlgo::m_biasVoltage
protected

◆ m_diffType

DiffusionType Herd::ScdDriftDiffusionAlgo::m_diffType = DiffusionType::GaussianNonLinear
private

◆ m_diffusionType

std::string Herd::ScdDriftDiffusionAlgo::m_diffusionType
protected

◆ m_digScdGeoParamsColl

std::shared_ptr<ScdGeoParamsColl> Herd::ScdDriftDiffusionAlgo::m_digScdGeoParamsColl
private

◆ m_evStore

EA::StorePtr Herd::ScdDriftDiffusionAlgo::m_evStore
private

◆ m_globStore

EA::StorePtr Herd::ScdDriftDiffusionAlgo::m_globStore
private

◆ m_intrinsicVoltage

float Herd::ScdDriftDiffusionAlgo::m_intrinsicVoltage
protected

◆ m_minStepSize

float Herd::ScdDriftDiffusionAlgo::m_minStepSize
protected

◆ m_negEffDiffCoeff

float Herd::ScdDriftDiffusionAlgo::m_negEffDiffCoeff
protected

◆ m_origScdGeoParamsColl

EA::observer_ptr<ScdGeoParamsColl> Herd::ScdDriftDiffusionAlgo::m_origScdGeoParamsColl
private

◆ m_pitch

float Herd::ScdDriftDiffusionAlgo::m_pitch
protected

◆ m_posEffDiffCoeff

float Herd::ScdDriftDiffusionAlgo::m_posEffDiffCoeff
protected

◆ m_siliconDetectorDigHitsColl

ScdHitsColl Herd::ScdDriftDiffusionAlgo::m_siliconDetectorDigHitsColl
private

The documentation for this class was generated from the following files: