All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Public Types | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
icarus::opdet::AsymGaussPulseFunctionTool Struct Reference

Creates a AsymGaussPulseFunction pulse shape. More...

Inheritance diagram for icarus::opdet::AsymGaussPulseFunctionTool:
icarus::opdet::SinglePhotonPulseFunctionTool

Classes

struct  Config
 Configuration parameters. More...
 

Public Types

using Parameters = art::ToolConfigTable< Config >
 Tool parameter configuration. More...
 
- Public Types inherited from icarus::opdet::SinglePhotonPulseFunctionTool
using nanoseconds = util::quantities::nanosecond
 Convenience definition for time stored in nanoseconds. More...
 
using PulseFunction_t = icarus::opdet::PhotoelectronPulseFunction< nanoseconds >
 Type of function returned. More...
 

Public Member Functions

 AsymGaussPulseFunctionTool (Parameters const &config)
 Constructor: sets the configuration. More...
 
- Public Member Functions inherited from icarus::opdet::SinglePhotonPulseFunctionTool
virtual ~SinglePhotonPulseFunctionTool ()=default
 
std::unique_ptr< PulseFunction_tgetPulseFunction ()
 Returns an instance of the pulse function. More...
 

Private Member Functions

virtual std::unique_ptr
< PulseFunction_t
doGetPulseFunction () override
 Returns the function that was created at construction time. More...
 

Static Private Member Functions

static std::unique_ptr
< PulseFunction_t
makePulseFunction (Config const &config)
 Creates and returns a pulse function with the specified configuration. More...
 

Private Attributes

std::unique_ptr< PulseFunction_tfPulseFunction
 Function stored while waiting to be delivered. More...
 

Detailed Description

Creates a AsymGaussPulseFunction pulse shape.

See Also
icarus::opdet::SinglePhotonPulseFunctionTool

This tool creates a icarus::opdet::AsymGaussPulseFunction<nanosecond> function to describe a R5912 PMT pulse.

See icarus::opdet::AsymGaussPulseFunction for the details of the function.

Configuration

Run lar --print-description AsymGaussPulseFunctionTool (or read Config data structure) for a short explanation of the meaning of the parameters.

In addition, note that the actual amplitude in ADC counts of the pulse is composed as the product of the amplitude in charge (MeanAmplitude) and the charge-to-ADC conversion factor (ADC).

Definition at line 56 of file AsymGaussPulseFunctionTool_tool.cc.

Member Typedef Documentation

Tool parameter configuration.

Definition at line 96 of file AsymGaussPulseFunctionTool_tool.cc.

Constructor & Destructor Documentation

icarus::opdet::AsymGaussPulseFunctionTool::AsymGaussPulseFunctionTool ( Parameters const &  config)
inline

Constructor: sets the configuration.

Definition at line 99 of file AsymGaussPulseFunctionTool_tool.cc.

100  : fPulseFunction(makePulseFunction(config())) {}
std::unique_ptr< PulseFunction_t > fPulseFunction
Function stored while waiting to be delivered.
static std::unique_ptr< PulseFunction_t > makePulseFunction(Config const &config)
Creates and returns a pulse function with the specified configuration.

Member Function Documentation

virtual std::unique_ptr<PulseFunction_t> icarus::opdet::AsymGaussPulseFunctionTool::doGetPulseFunction ( )
inlineoverrideprivatevirtual

Returns the function that was created at construction time.

Implements icarus::opdet::SinglePhotonPulseFunctionTool.

Definition at line 108 of file AsymGaussPulseFunctionTool_tool.cc.

109  { return std::move(fPulseFunction); }
std::unique_ptr< PulseFunction_t > fPulseFunction
Function stored while waiting to be delivered.
auto icarus::opdet::AsymGaussPulseFunctionTool::makePulseFunction ( Config const &  config)
staticprivate

Creates and returns a pulse function with the specified configuration.

Definition at line 129 of file AsymGaussPulseFunctionTool_tool.cc.

130 {
131 
133  using ADCcount = MyFunction_t::ADCcount;
134 
135  auto raiseTimeToRMS = [](auto raiseTime)
136  {
137  return raiseTime / (
138  std::sqrt(2.0)
139  * (std::sqrt(-std::log(0.1)) - std::sqrt(-std::log(0.9)))
140  );
141  };
142 
143  return std::make_unique<MyFunction_t>(
144  // amplitude is a charge, so we have to twist the arm of the constructor to
145  // accept it as ADC count (`value()` makes `meanAmplitude` lose its unit)
146  ADCcount(config.ADC() * config.MeanAmplitude().value()), // amplitude
147  config.TransitTime(), // peakTime
148  raiseTimeToRMS(config.RaiseTime()), // sigmaLeft
149  raiseTimeToRMS(config.FallTime()) // sigmaRight
150  );
151 
152 } // icarus::opdet::AsymGaussPulseFunctionTool::makePulseFunction()
Describes the waveform from a single photoelectron.

Member Data Documentation

std::unique_ptr<PulseFunction_t> icarus::opdet::AsymGaussPulseFunctionTool::fPulseFunction
private

Function stored while waiting to be delivered.

Definition at line 114 of file AsymGaussPulseFunctionTool_tool.cc.


The documentation for this struct was generated from the following file: