Jpp 21.0.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
JPHYSICS::JGeant_t Class Referenceabstract

Base class for the probability density function of photon emission from EM-shower as a function of the index of refraction and the cosine of the emission angle. More...

#include <JGeant_t.hh>

Inheritance diagram for JPHYSICS::JGeant_t:
JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t > JTOOLS::JPolintFunction< N, JElement_t, JCollection_t, JResult_t, JDistance_t > JTOOLS::JFunction1D< JElement_t::abscissa_type, typename JElement_t::ordinate_type > JTOOLS::JFunction< JElement_t::abscissa_type, typename JElement_t::ordinate_type > JTOOLS::JFunctional< JElement_t::abscissa_type, typename JElement_t::ordinate_type > JPHYSICS::JGeant

Public Types

typedef JCollection_t< JElement_t, JDistance_t > collection_type
 
typedef collection_type::abscissa_type abscissa_type
 
typedef collection_type::ordinate_type ordinate_type
 
typedef collection_type::value_type value_type
 
typedef collection_type::distance_type distance_type
 
typedef collection_type::const_iterator const_iterator
 
typedef collection_type::const_reverse_iterator const_reverse_iterator
 
typedef collection_type::iterator iterator
 
typedef collection_type::reverse_iterator reverse_iterator
 
typedef JFunction1D< abscissa_type, JResult_t > function_type
 
typedef function_type::argument_type argument_type
 
typedef function_type::result_type result_type
 
typedef function_type::JExceptionHandler exceptionhandler_type
 
enum  
 
typedef JFunctional< JElement_t::abscissa_type, typename JElement_t::ordinate_type > functional_type
 
typedef functional_type::JExceptionHandler JExceptionHandler
 
typedef JSupervisor supervisor_type
 

Public Member Functions

 JGeant_t ()
 Default constructor.
 
double operator() (const double n, const double ct) const
 Number of photons from EM-shower as a function of emission angle.
 
double operator() (const double n, const double xmin, const double xmax) const
 Integral number of photons from EM-shower between two emission angles.
 
result_type operator() (const argument_type x) const
 Function value evaluation.
 
const JSupervisor & getSupervisor () const
 Get supervisor.
 
const JExceptionHandler & getExceptionHandler () const override
 Get exception handler.
 
void setExceptionHandler (const JSupervisor &supervisor)
 Set the supervisor for handling of exceptions.
 
virtual result_type evaluate (const argument_type *pX) const=0
 Recursive function value evaluation.
 

Static Public Member Functions

static result_type getValue (const JFunctional &function, const argument_type *pX)
 Recursive function value evaluation.
 
static JClass< result_type >::argument_type getValue (typename JClass< result_type >::argument_type value, const argument_type *pX)
 Termination of recursive function value evaluation.
 

Protected Member Functions

virtual void do_compile () override
 Function compilation.
 

Protected Attributes

double a0
 offset of the normalisation dependence
 
double a1
 slope of the normalisation dependence
 
JGeantFunction1D_t buffer
 
JSupervisor __supervisor
 

Friends

JReaderoperator>> (JReader &in, JGeant_t &geant)
 Read geant from input.
 
JWriteroperator<< (JWriter &out, const JGeant_t &geant)
 Write geant to output.
 

Detailed Description

Base class for the probability density function of photon emission from EM-shower as a function of the index of refraction and the cosine of the emission angle.

The implementation of this function is based on a linear interpolation of tabulated values. In this, a linear approximation of the dependence of the normalisation constant on the index of refraction is assumed. This assumption is valid to within 10^-3.

Definition at line 32 of file JGeant_t.hh.

Member Typedef Documentation

◆ collection_type

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
JCollection_t<JElement_t, JDistance_t> JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::collection_type
inherited

Definition at line 1098 of file JPolint.hh.

◆ abscissa_type

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
collection_type::abscissa_type JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::abscissa_type
inherited

Definition at line 1100 of file JPolint.hh.

◆ ordinate_type

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
collection_type::ordinate_type JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::ordinate_type
inherited

Definition at line 1101 of file JPolint.hh.

◆ value_type

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
collection_type::value_type JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::value_type
inherited

Definition at line 1102 of file JPolint.hh.

◆ distance_type

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
collection_type::distance_type JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::distance_type
inherited

Definition at line 1103 of file JPolint.hh.

◆ const_iterator

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
collection_type::const_iterator JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::const_iterator
inherited

Definition at line 1105 of file JPolint.hh.

◆ const_reverse_iterator

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
collection_type::const_reverse_iterator JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::const_reverse_iterator
inherited

Definition at line 1106 of file JPolint.hh.

◆ iterator

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
collection_type::iterator JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::iterator
inherited

Definition at line 1107 of file JPolint.hh.

◆ reverse_iterator

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
collection_type::reverse_iterator JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::reverse_iterator
inherited

Definition at line 1108 of file JPolint.hh.

◆ function_type

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
JFunction1D<abscissa_type, JResult_t> JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::function_type
inherited

Definition at line 1110 of file JPolint.hh.

◆ argument_type

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
function_type::argument_type JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::argument_type
inherited

Definition at line 1112 of file JPolint.hh.

◆ result_type

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
function_type::result_type JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::result_type
inherited

Definition at line 1113 of file JPolint.hh.

◆ exceptionhandler_type

template<unsigned int N, class JElement_t , template< class, class > class JCollection_t, class JResult_t = typename JElement_t::ordinate_type, class JDistance_t = JDistance<typename JElement_t::abscissa_type>>
function_type::JExceptionHandler JTOOLS::JPolintFunction1D< N, JElement_t, JCollection_t, JResult_t, JDistance_t >::exceptionhandler_type
inherited

Definition at line 1114 of file JPolint.hh.

◆ functional_type

JFunctional<JElement_t::abscissa_type, typename JElement_t::ordinate_type> JTOOLS::JFunction1D< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::functional_type
inherited

Definition at line 332 of file JFunctional.hh.

◆ JExceptionHandler

functional_type::JExceptionHandler JTOOLS::JFunction< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::JExceptionHandler
inherited

Definition at line 235 of file JFunctional.hh.

◆ supervisor_type

JSupervisor JTOOLS::JFunction< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::supervisor_type
inherited

Definition at line 237 of file JFunctional.hh.

Member Enumeration Documentation

◆ anonymous enum

Constructor & Destructor Documentation

◆ JGeant_t()

JPHYSICS::JGeant_t::JGeant_t ( )
inline

Default constructor.

Definition at line 39 of file JGeant_t.hh.

40 {}

Member Function Documentation

◆ operator()() [1/3]

double JPHYSICS::JGeant_t::operator() ( const double n,
const double ct ) const
inline

Number of photons from EM-shower as a function of emission angle.

The integral over full solid angle is normalised to one.

Parameters
nindex of refraction
ctcosine angle of emmision
Returns
d^2P/dcos()dphi

Definition at line 51 of file JGeant_t.hh.

53 {
54 const double y = JGeantFunction1D_t::operator()(ct - 1.0/n);
55
56 return y * (a0 - a1*n);
57 }
double a0
offset of the normalisation dependence
Definition JGeant_t.hh:134
double a1
slope of the normalisation dependence
Definition JGeant_t.hh:135
const int n
Definition JPolint.hh:791

◆ operator()() [2/3]

double JPHYSICS::JGeant_t::operator() ( const double n,
const double xmin,
const double xmax ) const
inline

Integral number of photons from EM-shower between two emission angles.

The integral over full solid angle is normalised to one.

Parameters
nindex of refraction
xminminimal cosine angle of emmision
xmaxmaximal cosine angle of emmision
Returns
dnpe/dphi

Definition at line 69 of file JGeant_t.hh.

72 {
73 const double x_min = std::max(xmin - 1.0/n, buffer. begin()->getX());
74 const double x_max = std::min(xmax - 1.0/n, buffer.rbegin()->getX());
75
76 const double y = buffer(x_max) - buffer(x_min);
77
78 return y * (a0 - a1*n);
79 }
JGeantFunction1D_t buffer
Definition JGeant_t.hh:136

◆ do_compile()

virtual void JPHYSICS::JGeant_t::do_compile ( )
inlineoverrideprotectedvirtual

Function compilation.

Definition at line 122 of file JGeant_t.hh.

123 {
124 JGeantFunction1D_t::do_compile();
125
126 buffer.clear();
127
129
130 buffer.compile();
131 }
JElement_t::ordinate_type integrate(const JCollection< JElement_t, JDistance_t > &input, typename JMappable< JElement_t >::map_type &output)
Conversion of data points to integral values.

◆ operator()() [3/3]

result_type JTOOLS::JFunction1D< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::operator() ( const argument_type x) const
inlineinherited

Function value evaluation.

Parameters
xargument value
Returns
function value

Definition at line 343 of file JFunctional.hh.

344 {
345 return this->evaluate(&x);
346 }

◆ getSupervisor()

const JSupervisor & JTOOLS::JFunction< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::getSupervisor ( ) const
inlineinherited

Get supervisor.

Returns
supervisor

Definition at line 290 of file JFunctional.hh.

◆ getExceptionHandler()

const JExceptionHandler & JTOOLS::JFunction< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::getExceptionHandler ( ) const
inlineoverridevirtualinherited

Get exception handler.

Returns
exception handler

Implements JTOOLS::JFunctional< JElement_t::abscissa_type, typename JElement_t::ordinate_type >.

Definition at line 301 of file JFunctional.hh.

302 {
303 return *__supervisor.handler;
304 }

◆ setExceptionHandler()

void JTOOLS::JFunction< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::setExceptionHandler ( const JSupervisor & supervisor)
inlineinherited

Set the supervisor for handling of exceptions.

Parameters
supervisorsupervisor

Definition at line 312 of file JFunctional.hh.

313 {
314 this->__supervisor = supervisor;
315 }

◆ evaluate()

virtual result_type JTOOLS::JFunctional< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::evaluate ( const argument_type * pX) const
pure virtualinherited

Recursive function value evaluation.

Parameters
pXpointer to abscissa values
Returns
function value

◆ getValue() [1/2]

static result_type JTOOLS::JFunctional< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::getValue ( const JFunctional< JElement_t::abscissa_type, typename JElement_t::ordinate_type > & function,
const argument_type * pX )
inlinestaticinherited

Recursive function value evaluation.

Parameters
functionfunction
pXpointer to abscissa values

Definition at line 103 of file JFunctional.hh.

105 {
106 return function.evaluate(pX);
107 }

◆ getValue() [2/2]

static JClass< result_type >::argument_type JTOOLS::JFunctional< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::getValue ( typename JClass< result_type >::argument_type value,
const argument_type * pX )
inlinestaticinherited

Termination of recursive function value evaluation.

Parameters
valueresult
pXpointer to abscissa values

Definition at line 117 of file JFunctional.hh.

119 {
120 return value;
121 }

Friends And Related Symbol Documentation

◆ operator>>

JReader & operator>> ( JReader & in,
JGeant_t & geant )
friend

Read geant from input.

Parameters
inreader
geantgeant
Returns
reader

Definition at line 89 of file JGeant_t.hh.

90 {
91 in >> geant.a0;
92 in >> geant.a1;
93 in >> static_cast<JGeantFunction1D_t&>(geant);
94
95 geant.compile();
96
97 return in;
98 }
static const JGeant geant(geanx, 0.0001)
Function object for the number of photons from EM-shower as a function of emission angle.
JTOOLS::JGridPolint1Function1D_t JGeantFunction1D_t
Definition JGeant_t.hh:21

◆ operator<<

JWriter & operator<< ( JWriter & out,
const JGeant_t & geant )
friend

Write geant to output.

Parameters
outwriter
geantgeant
Returns
writer

Definition at line 108 of file JGeant_t.hh.

109 {
110 out << geant.a0;
111 out << geant.a1;
112 out << static_cast<const JGeantFunction1D_t&>(geant);
113
114 return out;
115 }

Member Data Documentation

◆ a0

double JPHYSICS::JGeant_t::a0
protected

offset of the normalisation dependence

Definition at line 134 of file JGeant_t.hh.

◆ a1

double JPHYSICS::JGeant_t::a1
protected

slope of the normalisation dependence

Definition at line 135 of file JGeant_t.hh.

◆ buffer

JGeantFunction1D_t JPHYSICS::JGeant_t::buffer
protected

Definition at line 136 of file JGeant_t.hh.

◆ __supervisor

JSupervisor JTOOLS::JFunction< JElement_t::abscissa_type, typename JElement_t::ordinate_type >::__supervisor
protectedinherited

Definition at line 318 of file JFunctional.hh.


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