Jpp 20.0.0-27-g39925593c-D
the software that should make you happy
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
JPHYSICS::JGeant Class Referenceabstract

Function object 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.hh>

Inheritance diagram for JPHYSICS::JGeant:
JPHYSICS::JGeant_t JTOOLS::JGridPolint1Function1D_t JTOOLS::JGridPolintFunction1D_t< 1 > JTOOLS::JPolintFunction1D< N, JElement2D< double, double >, JGridCollection, double > JTOOLS::JPolintFunction< N, JElement_t, JCollection_t, JResult_t, JDistance_t > JTOOLS::JFunction1D< JArgument_t, JResult_t > JTOOLS::JFunction< JArgument_t, JResult_t > JTOOLS::JFunctional< JArgument_t, JResult_t >

Public Types

typedef JGridCollection< JElement2D< double, double >, JDistance< typename JElement_t::abscissa_type > > 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, double > function_type
 
typedef function_type::argument_type argument_type
 
typedef function_type::result_type result_type
 
typedef function_type::JExceptionHandler exceptionhandler_type
 
enum  { NUMBER_OF_DIMENSIONS = 1 }
 
typedef JFunctional< JArgument_t, JResult_t > functional_type
 
typedef functional_type::JExceptionHandler JExceptionHandler
 
typedef JSupervisor supervisor_type
 

Public Member Functions

 JGeant ()
 Default constructor.
 
 JGeant (const JGeanx &geanx, const double dx=0.0001)
 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 JSupervisorgetSupervisor () const
 Get supervisor.
 
const JExceptionHandlergetExceptionHandler () 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
 

Detailed Description

Function object 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.

Definition at line 30 of file JGeant.hh.

Member Typedef Documentation

◆ collection_type

typedef JGridCollection <JElement2D< double, double > , JDistance<typename JElement_t::abscissa_type> > JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::collection_type
inherited

Definition at line 1098 of file JPolint.hh.

◆ abscissa_type

typedef collection_type::abscissa_type JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::abscissa_type
inherited

Definition at line 1100 of file JPolint.hh.

◆ ordinate_type

typedef collection_type::ordinate_type JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::ordinate_type
inherited

Definition at line 1101 of file JPolint.hh.

◆ value_type

typedef collection_type::value_type JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::value_type
inherited

Definition at line 1102 of file JPolint.hh.

◆ distance_type

typedef collection_type::distance_type JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::distance_type
inherited

Definition at line 1103 of file JPolint.hh.

◆ const_iterator

typedef collection_type::const_iterator JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::const_iterator
inherited

Definition at line 1105 of file JPolint.hh.

◆ const_reverse_iterator

typedef collection_type::const_reverse_iterator JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::const_reverse_iterator
inherited

Definition at line 1106 of file JPolint.hh.

◆ iterator

typedef collection_type::iterator JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::iterator
inherited

Definition at line 1107 of file JPolint.hh.

◆ reverse_iterator

typedef collection_type::reverse_iterator JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::reverse_iterator
inherited

Definition at line 1108 of file JPolint.hh.

◆ function_type

typedef JFunction1D<abscissa_type, double > JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::function_type
inherited

Definition at line 1110 of file JPolint.hh.

◆ argument_type

typedef function_type::argument_type JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::argument_type
inherited

Definition at line 1112 of file JPolint.hh.

◆ result_type

typedef function_type::result_type JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::result_type
inherited

Definition at line 1113 of file JPolint.hh.

◆ exceptionhandler_type

typedef function_type::JExceptionHandler JTOOLS::JPolintFunction1D< N, JElement2D< double, double > , JGridCollection , double , JDistance<typename JElement_t::abscissa_type> >::exceptionhandler_type
inherited

Definition at line 1114 of file JPolint.hh.

◆ functional_type

template<class JArgument_t , class JResult_t >
typedef JFunctional<JArgument_t, JResult_t> JTOOLS::JFunction1D< JArgument_t, JResult_t >::functional_type
inherited

Definition at line 332 of file JFunctional.hh.

◆ JExceptionHandler

template<class JArgument_t , class JResult_t >
typedef functional_type::JExceptionHandler JTOOLS::JFunction< JArgument_t, JResult_t >::JExceptionHandler
inherited

Definition at line 235 of file JFunctional.hh.

◆ supervisor_type

template<class JArgument_t , class JResult_t >
typedef JSupervisor JTOOLS::JFunction< JArgument_t, JResult_t >::supervisor_type
inherited

Definition at line 237 of file JFunctional.hh.

Member Enumeration Documentation

◆ anonymous enum

template<class JArgument_t , class JResult_t >
anonymous enum
inherited
Enumerator
NUMBER_OF_DIMENSIONS 

Definition at line 330 of file JFunctional.hh.

Constructor & Destructor Documentation

◆ JGeant() [1/2]

JPHYSICS::JGeant::JGeant ( )
inline

Default constructor.

Definition at line 37 of file JGeant.hh.

38 {}

◆ JGeant() [2/2]

JPHYSICS::JGeant::JGeant ( const JGeanx & geanx,
const double dx = 0.0001 )
inline

Constructor.

Parameters
geanxPDF of EM-shower
dxstep size for interpolation of function values

Definition at line 47 of file JGeant.hh.

49 {
50 using JTOOLS::PI;
51
52 const double n0 = geanx.n - 0.02;
53 const double n1 = geanx.n + 0.02;
54
55 const JGeanx g0(geanx.a, geanx.b, n0);
56 const JGeanx g1(geanx.a, geanx.b, n1);
57
58 const double y0 = g0.evaluate(-1.0, +1.0);
59 const double y1 = g1.evaluate(-1.0, +1.0);
60
61 const double c = 1.0 / (y0 * 2*PI);
62
63 // following range corresponds to n = 1 to n = infinity
64
65 for (double x = -2.0; x < 1.0; x += dx) {
66 (*this)[x] = c * g0.evaluate(x + 1.0/n0);
67 }
68
69 this->compile();
70
71 // linear approximation of dependence normalisation constant on index of refraction
72
73 this->a1 = (y1 - y0) / y0 / (n1 - n0);
74 this->a0 = 1.0 + a1*n0;
75 }
Double_t g1(const Double_t x)
Function.
Definition JQuantiles.cc:25
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 double a
power
Definition JGeanx.hh:133
const double b
slope
Definition JGeanx.hh:134
const double n
index of refraction
Definition JGeanx.hh:135
static const JGeanx geanx(0.35, -5.40)
Function object for the number of photons from EM-shower as a function of emission angle.

Member Function Documentation

◆ operator()() [1/3]

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

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 }
const int n
Definition JPolint.hh:791
result_type operator()(const argument_type x) const
Function value evaluation.

◆ operator()() [2/3]

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

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

◆ operator()() [3/3]

template<class JArgument_t , class JResult_t >
result_type JTOOLS::JFunction1D< JArgument_t, JResult_t >::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 }
virtual result_type evaluate(const argument_type *pX) const =0
Recursive function value evaluation.

◆ do_compile()

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

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.

◆ getSupervisor()

template<class JArgument_t , class JResult_t >
const JSupervisor & JTOOLS::JFunction< JArgument_t, JResult_t >::getSupervisor ( ) const
inlineinherited

Get supervisor.

Returns
supervisor

Definition at line 290 of file JFunctional.hh.

291 {
292 return __supervisor;
293 }
JSupervisor __supervisor

◆ getExceptionHandler()

template<class JArgument_t , class JResult_t >
const JExceptionHandler & JTOOLS::JFunction< JArgument_t, JResult_t >::getExceptionHandler ( ) const
inlineoverridevirtualinherited

Get exception handler.

Returns
exception handler

Implements JTOOLS::JFunctional< JArgument_t, JResult_t >.

Definition at line 301 of file JFunctional.hh.

302 {
303 return *__supervisor.handler;
304 }
std::shared_ptr< JExceptionHandler > handler

◆ setExceptionHandler()

template<class JArgument_t , class JResult_t >
void JTOOLS::JFunction< JArgument_t, JResult_t >::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()

template<class JArgument_t , class JResult_t >
virtual result_type JTOOLS::JFunctional< JArgument_t, JResult_t >::evaluate ( const argument_type * pX) const
pure virtualinherited

◆ getValue() [1/2]

template<class JArgument_t , class JResult_t >
static result_type JTOOLS::JFunctional< JArgument_t, JResult_t >::getValue ( const JFunctional< JArgument_t, JResult_t > & 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]

template<class JArgument_t , class JResult_t >
static JClass< result_type >::argument_type JTOOLS::JFunctional< JArgument_t, JResult_t >::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 }

Member Data Documentation

◆ a0

double JPHYSICS::JGeant_t::a0
protectedinherited

offset of the normalisation dependence

Definition at line 134 of file JGeant_t.hh.

◆ a1

double JPHYSICS::JGeant_t::a1
protectedinherited

slope of the normalisation dependence

Definition at line 135 of file JGeant_t.hh.

◆ buffer

JGeantFunction1D_t JPHYSICS::JGeant_t::buffer
protectedinherited

Definition at line 136 of file JGeant_t.hh.

◆ __supervisor

template<class JArgument_t , class JResult_t >
JSupervisor JTOOLS::JFunction< JArgument_t, JResult_t >::__supervisor
protectedinherited

Definition at line 318 of file JFunctional.hh.


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