WireCellToolkit
Wire Cell Simulation, Signal Process and Reconstruction Toolki for Liquid Argon Detectors
WireCell::Gen::BinnedDiffusion Class Reference

#include <BinnedDiffusion.h>

Public Types

enum  ImpactDataCalculationStrategy { constant =1, linear =2 }
 Useful to client code to mark a calculation strategy. More...
 

Public Member Functions

 BinnedDiffusion (const Pimpos &pimpos, const Binning &tbins, double nsigma=3.0, IRandom::pointer fluctuate=nullptr, ImpactDataCalculationStrategy calcstrat=linear)
 
const Pimpospimpos () const
 
const Binningtbins () const
 
bool add (IDepo::pointer deposition, double sigma_time, double sigma_pitch)
 
void add (std::shared_ptr< GaussianDiffusion > gd, int impact_index)
 
void erase (int begin_impact_index, int end_impact_index)
 
ImpactData::pointer impact_data (int bin) const
 
std::pair< double, double > pitch_range (double nsigma=0.0) const
 
std::pair< int, int > impact_bin_range (double nsigma=0.0) const
 
std::pair< double, double > time_range (double nsigma=0.0) const
 
std::pair< int, int > time_bin_range (double nsigma=0.0) const
 
double get_nsigma () const
 

Detailed Description

A BinnedDiffusion maintains an association between impact positions along the pitch direction of a wire plane and the diffused depositions that drift to them.

It covers a fixed and discretely sampled time and pitch
domain.

Definition at line 23 of file BinnedDiffusion.h.

Member Enumeration Documentation

◆ ImpactDataCalculationStrategy

Useful to client code to mark a calculation strategy.

Create a BinnedDiffusion.

Arguments are:

  • pimpos :: a Pimpos instance defining the wire and impact binning.
  • tbins :: a Binning instance defining the time sampling binning.

nsigma :: number of sigma the 2D (transverse X longitudinal) Gaussian extends.

  • fluctuate :: set to an IRandom if charge-preserving Poisson fluctuations are to be applied.
    • calcstrat :: set a calculation strategy that gives how the microscopic distribution of charge between two impacts will be interpolated toward either edge.
Enumerator
constant 
linear 

Definition at line 47 of file BinnedDiffusion.h.

Constructor & Destructor Documentation

◆ BinnedDiffusion()

Gen::BinnedDiffusion::BinnedDiffusion ( const Pimpos pimpos,
const Binning tbins,
double  nsigma = 3.0,
IRandom::pointer  fluctuate = nullptr,
ImpactDataCalculationStrategy  calcstrat = linear 
)

Definition at line 11 of file BinnedDiffusion.cxx.

Member Function Documentation

◆ add() [1/2]

bool Gen::BinnedDiffusion::add ( IDepo::pointer  deposition,
double  sigma_time,
double  sigma_pitch 
)

Add a deposition and its associated diffusion sigmas. Return false if no activity falls within the domain.

Definition at line 25 of file BinnedDiffusion.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add() [2/2]

void Gen::BinnedDiffusion::add ( std::shared_ptr< GaussianDiffusion gd,
int  impact_index 
)

Unconditionally associate an already built GaussianDiffusion to one impact.

Definition at line 84 of file BinnedDiffusion.cxx.

◆ erase()

void Gen::BinnedDiffusion::erase ( int  begin_impact_index,
int  end_impact_index 
)

Drop any stored ImpactData within the half open impact index range.

Definition at line 108 of file BinnedDiffusion.cxx.

Here is the caller graph for this function:

◆ get_nsigma()

double WireCell::Gen::BinnedDiffusion::get_nsigma ( ) const
inline

Definition at line 96 of file BinnedDiffusion.h.

◆ impact_bin_range()

std::pair< int, int > Gen::BinnedDiffusion::impact_bin_range ( double  nsigma = 0.0) const

Return the half open bin range of impact bins, constrained so that either number is in [0,nimpacts].

Definition at line 170 of file BinnedDiffusion.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ impact_data()

Gen::ImpactData::pointer Gen::BinnedDiffusion::impact_data ( int  bin) const

Return the data in the given impact bin. Note, this bin represents drifted charge between two impact positions. Take care when using BinnedDiffusion and field responses because epsilon above or below the impact position exactly in the middle of two wires drastically different response.

Definition at line 116 of file BinnedDiffusion.cxx.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ pimpos()

const Pimpos& WireCell::Gen::BinnedDiffusion::pimpos ( ) const
inline

Definition at line 53 of file BinnedDiffusion.h.

Here is the caller graph for this function:

◆ pitch_range()

std::pair< double, double > Gen::BinnedDiffusion::pitch_range ( double  nsigma = 0.0) const

Return the range of pitch containing depos out to given nsigma and without bounds checking.

Definition at line 161 of file BinnedDiffusion.cxx.

Here is the caller graph for this function:

◆ tbins()

const Binning& WireCell::Gen::BinnedDiffusion::tbins ( ) const
inline

Definition at line 54 of file BinnedDiffusion.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ time_bin_range()

std::pair< int, int > Gen::BinnedDiffusion::time_bin_range ( double  nsigma = 0.0) const

Return the half open bin range for time bins constrained so that either number is in [0,nticks].

Definition at line 187 of file BinnedDiffusion.cxx.

Here is the caller graph for this function:

◆ time_range()

std::pair< double, double > Gen::BinnedDiffusion::time_range ( double  nsigma = 0.0) const

Return the range of time containing depos out to given nsigma and without bounds checking.

Definition at line 178 of file BinnedDiffusion.cxx.

Here is the caller graph for this function:

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