LDMX Software
tracking::digitization::PulseShape Class Referenceabstract

Abstract base class for silicon-strip readout pulse shapes. More...

#include <PulseShape.h>

Public Member Functions

virtual double eval (double t) const =0
 Evaluate the peak-normalised pulse amplitude at time t [ns] after charge arrival.
 

Static Public Member Functions

static std::unique_ptr< PulseShapemake (const std::string &name, double tp, double tp2=0.0)
 Factory: construct a pulse shape by name.
 

Detailed Description

Abstract base class for silicon-strip readout pulse shapes.

The pulse shape describes the time response of the front-end amplifier/ shaper to a delta-function charge injection at t = 0. All shapes are normalised so that their peak value is 1 (peak-normalised).

Two concrete shapes are provided:

CRRC — single CR·RC shaper (one differentiation, one integration): f(t) = (t/tp) · exp(1 − t/tp) for t ≥ 0 Peaks at t = tp.

FourPole — fourth-order shaper (CR + three RC stages), as used by the HPS SVT APV25 readout. Two time constants tp and tp2: f(t) ∝ A · [exp(−t/tp) − exp(−t/tp2)·(1 + t·B + ½(t·B)²)] Peaks near t ≈ 3·(tp·tp2³)^(1/4).

Coordinate convention: t is measured in nanoseconds from the moment the charge arrives at the collection electrode.

Definition at line 30 of file PulseShape.h.

Member Function Documentation

◆ eval()

virtual double tracking::digitization::PulseShape::eval ( double t) const
pure virtual

Evaluate the peak-normalised pulse amplitude at time t [ns] after charge arrival.

Returns 0 for t < 0.

Implemented in tracking::digitization::CRRCShape, and tracking::digitization::FourPoleShape.

Referenced by tracking::digitization::StripPulseFitter::evalAtT().

◆ make()

std::unique_ptr< PulseShape > tracking::digitization::PulseShape::make ( const std::string & name,
double tp,
double tp2 = 0.0 )
static

Factory: construct a pulse shape by name.

Parameters
name"CRRC" or "FourPole".
tpPeaking time [ns].
tp2Second time constant [ns] (FourPole only; ignored for CRRC).

Definition at line 40 of file PulseShape.cxx.

41 {
42 if (name == "CRRC") {
43 return std::make_unique<CRRCShape>(tp);
44 } else if (name == "FourPole") {
45 return std::make_unique<FourPoleShape>(tp, tp2);
46 }
47 EXCEPTION_RAISE("InvalidArgument", "PulseShape::make: unknown shape '" +
48 name + "'. Use 'CRRC' or 'FourPole'.");
49}

Referenced by tracking::reco::DigitizationProcessor::onProcessStart().


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