![]() |
GosSiP
1.32
|
#include <sipmMC.h>
Public Member Functions | |
sipmMC () | |
~sipmMC () | |
double | Generate (PhotonList photons) |
double | GetCharge () |
GCharge | GetChargeDecomp () |
double | GetGate () |
HitMatrix * | GetHitMatrix () |
int | GetNpix () |
int | GetParaFile (const char *filename) |
TF1 * | GetPulseShape () |
double | GetSampling () |
TGraph * | GetWaveform () |
void | SetCutoff (double Cutoff) |
void | SetGate (double Gate, bool gateCut=true) |
void | SetGeometry (string Geometry) |
void | SetGeometry (TH2I *hgeometry) |
void | SetPreGate (double preGate) |
void | SetPulseShape (double Tau1, double Tau2) |
void | SetPulseShape (TF1 *pulse_shape) |
void | SetSampling (double Sampling) |
void | SetSpectralSensitivity (TGraph *spect) |
void | SetSpectralSensitivity (const char *file) |
void | UpdatePulseShape () |
Public Attributes | |
double | EN |
double | ENF |
double | gain |
double | jitter |
double | noiseRMS |
int | NpixX |
int | NpixY |
double | Pap_f |
double | Pap_s |
double | PDE |
double | Pxt |
double | signalAmp |
double | tau_ap_f |
double | tau_ap_s |
double | tau_dr |
double | tau_recovery |
double | xSipm |
double | ySipm |
Main SiPM simulation class
Generates the waveform and charge from a photon list
sipmMC::sipmMC | ( | ) |
sipmMC::~sipmMC | ( | ) |
double sipmMC::Generate | ( | PhotonList | photons | ) |
Generates SiPM response
operation over-voltage:
has to be 1!!! (only for custom voltage dependence of parameters important)
detected photons:
apply spectral sensitivity if set
photon is not detected
No time offset...signal can appear before photon time stamp! =)
NO JITTER FOR CT and AP implemented yet!
darkrate:
crosstalk & afterpulses (& amplituden):
pixel recovery:
PDE reduced due to pixel recovery:
Dark-rate reduced due to pixel recovery:
amplitude:
recovery
Not effected by jitter!
events in pre_gate
Not effected by jitter!
formular from amplitude = (gain + enf)*Vover/Vop - overflow
= (gain + enf)*Vover/Vop - (gain + enf)*Vover/Vop*overflow/amplitude
= gain*Vover/Vop*(1-overflow/amplitude) + enf*Vover/Vop*(1-overflow/amplitude)
crosstalk:
afterpulses:
mark hit as processed:
Add electronic noise:
|
inline |
Returns signal charge
|
inline |
Returns decomposition of the signal charge
|
inline |
Returns length of integration gate in ns
|
inline |
Returns hitmatrix
|
inline |
Returns number of pixels of the SiPM
int sipmMC::GetParaFile | ( | const char * | filename | ) |
Sets SiPM parameters from config file. Returns 0 if successfull, returns 1 if file not found.
check if file exists
get rid of commented and empty lines
stop at end of file
get config parameter (string before '=')
get config parameter value (string after '=')
remove tabs and whitespaces
assign variable
|
inline |
Returns single pixel waveform
|
inline |
Returns sampling rate
TGraph * sipmMC::GetWaveform | ( | ) |
Returns simulated signal waveform
reset g_waveform
add random noise to waveform
void sipmMC::SetCutoff | ( | double | Cutoff | ) |
Sets pixel waveform cutoff
void sipmMC::SetGate | ( | double | Gate, |
bool | gateCut = true |
||
) |
Sets integration gate. (For information on "gateCut" see HitMatrix class)
void sipmMC::SetGeometry | ( | string | Geometry | ) |
Sets pixel arrangement. Only "square" implemented at the moment
void sipmMC::SetGeometry | ( | TH2I * | hgeometry | ) |
Sets custom pixel arrangement from TH2I
void sipmMC::SetPreGate | ( | double | preGate | ) |
Sets time period before integration.
void sipmMC::SetPulseShape | ( | double | Tau1, |
double | Tau2 | ||
) |
Sets double exponential single pixel waveform with time constants "Tau1", "Tau2". "Sampling" is the sampling time of the simualtion in ns. Waveform is cut off at a fraction "cutOff" of the amplitude
void sipmMC::SetPulseShape | ( | TF1 * | pulse_shape | ) |
Sets single pixel waveform from TF1
void sipmMC::SetSampling | ( | double | Sampling | ) |
Sets waveform sampling
void sipmMC::SetSpectralSensitivity | ( | TGraph * | spect | ) |
Sets the spectral sensitivity via a TGraph
void sipmMC::SetSpectralSensitivity | ( | const char * | file | ) |
Sets the spectral sensitivity via a text file
void sipmMC::UpdatePulseShape | ( | ) |
Builds g_pulse_charge
find pulse shape function amplitude and range
find pulse shape cutoff
calculate pulse charge graph
normalize to 1
double sipmMC::EN |
Electronic noise (=pedestal noise)
double sipmMC::ENF |
Excess noise (=gain fluctuations)
double sipmMC::gain |
Gain
double sipmMC::jitter |
Jitter of rising edge tau1
double sipmMC::noiseRMS |
RMS of noise
int sipmMC::NpixX |
Number of pixels in x. Disregarded when SetGeometry( TH2I* hgeometry ) is used.
int sipmMC::NpixY |
Number of pixels in y. Disregarded when SetGeometry( TH2I* hgeometry ) is used.
double sipmMC::Pap_f |
After-pulse probability (fast)
double sipmMC::Pap_s |
After-pulse probability (slow)
double sipmMC::PDE |
Photon detection efficiency
double sipmMC::Pxt |
Cross-talk probability (probability for one ore more cross-talk events per avalanche)
double sipmMC::signalAmp |
Singel pixel signal amplitude
double sipmMC::tau_ap_f |
After-pulse time constant (fast)
double sipmMC::tau_ap_s |
After-pulse time constant (slow)
double sipmMC::tau_dr |
Thermal pulse time constant
double sipmMC::tau_recovery |
Pixel recovery time
double sipmMC::xSipm |
Size of active area in x
double sipmMC::ySipm |
Size of active area in y