All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Public Attributes | List of all members
icarus::opdet::PMTsimulationAlg::ConfigurationParameters_t::PMTspecs_t Struct Reference

#include <PMTsimulationAlg.h>

Public Member Functions

double multiplicationStageGain (unsigned int i=1) const
 Returns the gain of the specified multiplication stage. More...
 
double firstStageGain () const
 Returns the gain from the first stage of PMT multiplication. More...
 
unsigned int nDynodes () const
 Number of dynodes in the PMTs. More...
 
void setVoltageDistribution (std::vector< double > &&Rs)
 Sets voltageDistribution by stealing and normalizing Rs. More...
 

Public Attributes

std::vector< double > voltageDistribution
 
double dynodeK
 Gain from stage with voltage dV is proportional to dV^K. More...
 
double gain
 Total typical gain of a PMT. More...
 

Detailed Description

Definition at line 358 of file PMTsimulationAlg.h.

Member Function Documentation

double icarus::opdet::PMTsimulationAlg::ConfigurationParameters_t::PMTspecs_t::firstStageGain ( ) const
inline

Returns the gain from the first stage of PMT multiplication.

Definition at line 403 of file PMTsimulationAlg.h.

403 { return multiplicationStageGain(1U); }
double multiplicationStageGain(unsigned int i=1) const
Returns the gain of the specified multiplication stage.
double icarus::opdet::PMTsimulationAlg::ConfigurationParameters_t::PMTspecs_t::multiplicationStageGain ( unsigned int  i = 1) const

Returns the gain of the specified multiplication stage.

Parameters
iindex of multiplication stage (default: first, 1)

The gain is assumed to be the product of gains from each multiplication stage. The stages are supposed to be connected by $ N $ resistors of known value, whose weight relative to the total (series) resistance is in PMTvoltageDistribution. The total gain (known from gain) is:

\[ \mu = \prod_{i} \mu_{i} \]

and the gain of each stage $ i $ is

\[ \mu_{i} = a (\Delta V_{i})^{k} \]

with $ k $ a known constant (dynodeK) and $ a $ an unknown one. Considered the total applied voltage (cathode to last dynode) to be $ \Delta V $, the total resistance $ R = \sum_{i} R_{i} $ and the weight of each stage $ \rho_{i} = R_{i} / R $ (stored in PMTvoltageDistribution), the potential on stage $ i $ is

\[ \Delta V_{i} = \Delta V \rho_{i} \]

(supporting a circuit current of $ \Delta V / R $) and therefore

\[ \mu = \prod_{i} a (\Delta V \rho_{i})^{k} \]

that allows to find

\[ a \Delta V^{k} = \sqrt[N]{\frac{\mu}{(\prod_{i} \rho_{i})^{k}}} \]

With this constant known, the gain of each stage is also known:

\[ \mu_{i} = a (\Delta V)^{k} (\rho_{i})^{k} \]

This function returns $ \mu_{i} $, with i starting from 1 to nDynodes() included.

Definition at line 73 of file PMTsimulationAlg.cxx.

74 {
75  // if all stages were born equal:
76  // return std::pow(gain, 1.0 / nDynodes());
77  double const k = dynodeK;
78  double const mu = gain;
79  unsigned const N = nDynodes();
80  double prodRho = 1.0;
81  for (double rho: voltageDistribution) prodRho *= rho;
82  double const aVk
83  = std::pow(mu / std::pow(prodRho, k), 1.0/static_cast<double>(N));
84  return aVk * std::pow(voltageDistribution.at(i - 1), k);
85 } // icarus::...::PMTsimulationAlg::...::PMTspecs_t::multiplicationStageGain()
unsigned int nDynodes() const
Number of dynodes in the PMTs.
double dynodeK
Gain from stage with voltage dV is proportional to dV^K.
pdgs mu
Definition: selectors.fcl:22
process_name largeant stream1 can override from command line with o or output physics producers generator N
pdgs k
Definition: selectors.fcl:22
unsigned int icarus::opdet::PMTsimulationAlg::ConfigurationParameters_t::PMTspecs_t::nDynodes ( ) const
inline

Number of dynodes in the PMTs.

Definition at line 406 of file PMTsimulationAlg.h.

void icarus::opdet::PMTsimulationAlg::ConfigurationParameters_t::PMTspecs_t::setVoltageDistribution ( std::vector< double > &&  Rs)

Sets voltageDistribution by stealing and normalizing Rs.

Definition at line 91 of file PMTsimulationAlg.cxx.

92 {
93  voltageDistribution = std::move(Rs);
94  double total = std::accumulate
95  (voltageDistribution.begin(), voltageDistribution.end(), 0.0);
96  for (auto& R: voltageDistribution) R /= total;
97 } // icarus::...::PMTsimulationAlg::...::PMTspecs_t::setPMTvoltageDistribution()

Member Data Documentation

double icarus::opdet::PMTsimulationAlg::ConfigurationParameters_t::PMTspecs_t::dynodeK

Gain from stage with voltage dV is proportional to dV^K.

Definition at line 366 of file PMTsimulationAlg.h.

double icarus::opdet::PMTsimulationAlg::ConfigurationParameters_t::PMTspecs_t::gain

Total typical gain of a PMT.

Definition at line 368 of file PMTsimulationAlg.h.

std::vector<double> icarus::opdet::PMTsimulationAlg::ConfigurationParameters_t::PMTspecs_t::voltageDistribution

Voltage distribution of the PMT. Each number represents the relative weight of the resistor between the two arms of a multiplication stage.

Definition at line 363 of file PMTsimulationAlg.h.


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