Jpp
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Attributes | List of all members
JPHYSICS::JPDFTransformer< 1, JArgument_t > Class Template Referenceabstract

Template specialisation of transformer of the 1D Probability Density Functions of the time response of a PMT. More...

#include <JPDFTransformer.hh>

Inheritance diagram for JPHYSICS::JPDFTransformer< 1, JArgument_t >:
JTOOLS::JMultiMapTransformer< 1, JArgument_t > JLANG::JClonable< JClonable_t, JDerived_t > JIO::JSerialisable

Public Types

typedef JTOOLS::JMultiMapTransformer< 1, JArgument_t > JMultiMapTransformer_t
 
typedef JMultiMapTransformer_t::clone_type clone_type
 
typedef JMultiMapTransformer_t::argument_type argument_type
 
typedef JMultiMapTransformer_t::const_array_type const_array_type
 
typedef JMultiMapTransformer< N, JArgument_t > multimaptransformer_type
 
typedef JArray< N, argument_typearray_type
 

Public Member Functions

 JPDFTransformer ()
 Default constructor. More...
 
 JPDFTransformer (const double ln, const int alpha, const double kmin, const double kmax)
 Constructor. More...
 
virtual clone_type clone () const
 Clone object. More...
 
virtual argument_type putXn (const_array_type &buffer, const argument_type xn) const
 Evaluate dt value as a function of {R}. More...
 
virtual argument_type getXn (const_array_type &buffer, const argument_type xn) const
 Evaluate dt value as a function of {R}. More...
 
virtual double getWeight (const_array_type &buffer) const
 Weight function. More...
 
virtual JReaderread (JReader &in)
 Read PDF transformer from input. More...
 
virtual JWriterwrite (JWriter &out) const
 Write PDF transformer to output. More...
 
std::ostream & print (std::ostream &out) const
 Print PDF transformer to output stream. More...
 
virtual argument_type putXn (const_array_type &buffer, const argument_type xn) const=0
 Evaluate xn value as a function of {x0, ..., xn-1}. More...
 
virtual argument_type getXn (const_array_type &buffer, const argument_type xn) const=0
 Evaluate xn value as a function of {x0, ..., xn-1}. More...
 
virtual double getWeight (const_array_type &buffer) const=0
 Weight function. More...
 
double getWeight (const argument_type x,...) const
 Weight function. More...
 

Static Public Member Functions

static double getRmin ()
 
static const JMultiMapTransformergetDefaultTransformer ()
 Get default transformer. More...
 
static JMultiMapTransformergetClone ()
 Get clone of default transformer. More...
 

Public Attributes

double __ln
 Effective attenuation length [m]. More...
 
int __alpha
 Distance dependence (power term) More...
 
double __kmin
 minimal kappa More...
 
double __kmax
 maximal kappa More...
 

Private Attributes

va_list ap
 
JArray< N, argument_typebuffer
 

Detailed Description

template<class JArgument_t>
class JPHYSICS::JPDFTransformer< 1, JArgument_t >

Template specialisation of transformer of the 1D Probability Density Functions of the time response of a PMT.

PDFs are evaluated by interpolation for:

  1. distance of closest approach of the muon to the PMT [m]
  2. arrival time [ns]

The evaluation of the weights is based on:

  1. effective attenuation length

Definition at line 47 of file JPDFTransformer.hh.

Member Typedef Documentation

◆ JMultiMapTransformer_t

template<class JArgument_t >
typedef JTOOLS::JMultiMapTransformer<1, JArgument_t> JPHYSICS::JPDFTransformer< 1, JArgument_t >::JMultiMapTransformer_t

Definition at line 52 of file JPDFTransformer.hh.

◆ clone_type

template<class JArgument_t >
typedef JMultiMapTransformer_t::clone_type JPHYSICS::JPDFTransformer< 1, JArgument_t >::clone_type

Definition at line 54 of file JPDFTransformer.hh.

◆ argument_type

template<class JArgument_t >
typedef JMultiMapTransformer_t::argument_type JPHYSICS::JPDFTransformer< 1, JArgument_t >::argument_type

Definition at line 55 of file JPDFTransformer.hh.

◆ const_array_type

template<class JArgument_t >
typedef JMultiMapTransformer_t::const_array_type JPHYSICS::JPDFTransformer< 1, JArgument_t >::const_array_type

Definition at line 56 of file JPDFTransformer.hh.

◆ multimaptransformer_type

typedef JMultiMapTransformer<N, JArgument_t> JTOOLS::JMultiMapTransformer< N, JArgument_t >::multimaptransformer_type
inherited

Definition at line 41 of file JMultiMapTransformer.hh.

◆ array_type

typedef JArray<N, argument_type> JTOOLS::JMultiMapTransformer< N, JArgument_t >::array_type
inherited

Definition at line 45 of file JMultiMapTransformer.hh.

Constructor & Destructor Documentation

◆ JPDFTransformer() [1/2]

template<class JArgument_t >
JPHYSICS::JPDFTransformer< 1, JArgument_t >::JPDFTransformer ( )
inline

Default constructor.

Definition at line 66 of file JPDFTransformer.hh.

66  :
67  __ln (0.0),
68  __alpha(0),
69  __kmin (0.0),
70  __kmax (0.0)
71  {}

◆ JPDFTransformer() [2/2]

template<class JArgument_t >
JPHYSICS::JPDFTransformer< 1, JArgument_t >::JPDFTransformer ( const double  ln,
const int  alpha,
const double  kmin,
const double  kmax 
)
inline

Constructor.

Parameters
lnEffective attenuation length [m]
alphaDistance dependence (power term)
kminMinimal kappa
kmaxMaximal kappa

Definition at line 82 of file JPDFTransformer.hh.

85  :
86  __ln (ln),
87  __alpha(alpha),
88  __kmin (kmin),
89  __kmax (kmax)
90  {}

Member Function Documentation

◆ getRmin()

template<class JArgument_t >
static double JPHYSICS::JPDFTransformer< 1, JArgument_t >::getRmin ( )
inlinestatic

Definition at line 60 of file JPDFTransformer.hh.

60 { return 0.01; } // shortest distance of approach [m]

◆ clone()

template<class JArgument_t >
virtual clone_type JPHYSICS::JPDFTransformer< 1, JArgument_t >::clone ( ) const
inlinevirtual

Clone object.

Returns
pointer to newly created JPDFTransformer

Reimplemented from JLANG::JClonable< JClonable_t, JDerived_t >.

Definition at line 98 of file JPDFTransformer.hh.

99  {
100  return new JPDFTransformer(*this);
101  }

◆ putXn() [1/2]

template<class JArgument_t >
virtual argument_type JPHYSICS::JPDFTransformer< 1, JArgument_t >::putXn ( const_array_type buffer,
const argument_type  xn 
) const
inlinevirtual

Evaluate dt value as a function of {R}.

Parameters
buffer{R}
xnold dt value
Returns
new dt value

Definition at line 111 of file JPDFTransformer.hh.

112  {
113  using namespace JTOOLS;
114 
115  const double R = buffer[0];
116 
117  double x = xn;
118 
119  const double t0 = R * getTanThetaC() * getInverseSpeedOfLight();
120  const double t1 = R * __kmin * getInverseSpeedOfLight();
121 
122  x -= t1 - t0;
123 
124  if (__kmax > __kmin) {
125  x /= R * (__kmax - __kmin) * getInverseSpeedOfLight();
126  }
127 
128  return x;
129  }

◆ getXn() [1/2]

template<class JArgument_t >
virtual argument_type JPHYSICS::JPDFTransformer< 1, JArgument_t >::getXn ( const_array_type buffer,
const argument_type  xn 
) const
inlinevirtual

Evaluate dt value as a function of {R}.

Parameters
buffer{R}
xnold dt value
Returns
new dt value

Definition at line 139 of file JPDFTransformer.hh.

140  {
141  using namespace JTOOLS;
142 
143  const double R = buffer[0];
144 
145  double x = xn;
146 
147  if (__kmax > __kmin) {
148  x *= R * (__kmax - __kmin) * getInverseSpeedOfLight();
149  }
150 
151  const double t0 = R * getTanThetaC() * getInverseSpeedOfLight();
152  const double t1 = R * __kmin * getInverseSpeedOfLight();
153 
154  x += t1 - t0;
155 
156  return x;
157  }

◆ getWeight() [1/3]

template<class JArgument_t >
virtual double JPHYSICS::JPDFTransformer< 1, JArgument_t >::getWeight ( const_array_type buffer) const
inlinevirtual

Weight function.

Parameters
buffer{R}
Returns
weight

Definition at line 166 of file JPDFTransformer.hh.

167  {
168  using namespace JTOOLS;
169 
170  const double R = buffer[0];
171 
172  const double n = getIndexOfRefraction();
173  const double ct0 = 1.0 / n;
174  const double st0 = sqrt((1.0 + ct0)*(1.0 - ct0));
175 
176  const double d = sqrt(getRmin()*getRmin() + R*R) / st0;
177 
178  return exp(-d/__ln) / pow(d,__alpha);
179  }

◆ read()

template<class JArgument_t >
virtual JReader& JPHYSICS::JPDFTransformer< 1, JArgument_t >::read ( JReader in)
inlinevirtual

Read PDF transformer from input.

Parameters
inreader
Returns
reader

Implements JIO::JSerialisable.

Definition at line 188 of file JPDFTransformer.hh.

189  {
190  in >> __ln;
191  in >> __alpha;
192  in >> __kmin;
193  in >> __kmax;
194 
195  return in;
196  }

◆ write()

template<class JArgument_t >
virtual JWriter& JPHYSICS::JPDFTransformer< 1, JArgument_t >::write ( JWriter out) const
inlinevirtual

Write PDF transformer to output.

Parameters
outwriter
Returns
writer

Implements JIO::JSerialisable.

Definition at line 205 of file JPDFTransformer.hh.

206  {
207  out << __ln;
208  out << __alpha;
209  out << __kmin;
210  out << __kmax;
211 
212  return out;
213  }

◆ print()

template<class JArgument_t >
std::ostream& JPHYSICS::JPDFTransformer< 1, JArgument_t >::print ( std::ostream &  out) const
inline

Print PDF transformer to output stream.

Parameters
outoutput stream
Returns
output stream

Definition at line 222 of file JPDFTransformer.hh.

223  {
224  using std::endl;
225 
226  out << "Effective attenuation length [m] " << __ln << endl;
227  out << "Distance dependence (power term) " << __alpha << endl;
228  out << "Minimal kappa " << __kmin << endl;
229  out << "Maximal kappa " << __kmax << endl;
230 
231  return out;
232  }

◆ putXn() [2/2]

virtual argument_type JTOOLS::JMultiMapTransformer< N, JArgument_t >::putXn ( const_array_type buffer,
const argument_type  xn 
) const
pure virtualinherited

Evaluate xn value as a function of {x0, ..., xn-1}.

Parameters
bufferx0 - xn-1 values
xnxn value
Returns
xn value

◆ getXn() [2/2]

virtual argument_type JTOOLS::JMultiMapTransformer< N, JArgument_t >::getXn ( const_array_type buffer,
const argument_type  xn 
) const
pure virtualinherited

Evaluate xn value as a function of {x0, ..., xn-1}.

Parameters
bufferx0 - xn-1 values
xnxn value
Returns
xn value

◆ getWeight() [2/3]

virtual double JTOOLS::JMultiMapTransformer< N, JArgument_t >::getWeight ( const_array_type buffer) const
pure virtualinherited

Weight function.

Parameters
bufferx0 - xn-1 values
Returns
weight

◆ getWeight() [3/3]

double JTOOLS::JMultiMapTransformer< N, JArgument_t >::getWeight ( const argument_type  x,
  ... 
) const
inlineinherited

Weight function.

Parameters
xcomma seperated list of abscissa values
Returns
weight

Definition at line 84 of file JMultiMapTransformer.hh.

85  {
86  va_start(ap, x);
87 
88  buffer[0] = x;
89 
90  for (int i = 1; i != N; ++i) {
91  buffer[i] = va_arg(ap, argument_type);
92  }
93 
94  va_end(ap);
95 
96  return getWeight(buffer);
97  }

◆ getDefaultTransformer()

static const JMultiMapTransformer& JTOOLS::JMultiMapTransformer< N, JArgument_t >::getDefaultTransformer ( )
inlinestaticinherited

Get default transformer.

Returns
default transformer

Definition at line 111 of file JMultiMapTransformer.hh.

112  {
113  static const JMultiMapDefaultTransformer transformer;
114 
115  return transformer;
116  }

◆ getClone()

static JMultiMapTransformer* JTOOLS::JMultiMapTransformer< N, JArgument_t >::getClone ( )
inlinestaticinherited

Get clone of default transformer.

Returns
pointer to newly created transformer

Definition at line 124 of file JMultiMapTransformer.hh.

125  {
126  return new JMultiMapDefaultTransformer();
127  }

Member Data Documentation

◆ __ln

template<class JArgument_t >
double JPHYSICS::JPDFTransformer< 1, JArgument_t >::__ln

Effective attenuation length [m].

Definition at line 235 of file JPDFTransformer.hh.

◆ __alpha

template<class JArgument_t >
int JPHYSICS::JPDFTransformer< 1, JArgument_t >::__alpha

Distance dependence (power term)

Definition at line 236 of file JPDFTransformer.hh.

◆ __kmin

template<class JArgument_t >
double JPHYSICS::JPDFTransformer< 1, JArgument_t >::__kmin

minimal kappa

Definition at line 237 of file JPDFTransformer.hh.

◆ __kmax

template<class JArgument_t >
double JPHYSICS::JPDFTransformer< 1, JArgument_t >::__kmax

maximal kappa

Definition at line 238 of file JPDFTransformer.hh.

◆ ap

va_list JTOOLS::JMultiMapTransformer< N, JArgument_t >::ap
mutableprivateinherited

Definition at line 131 of file JMultiMapTransformer.hh.

◆ buffer

JArray<N, argument_type> JTOOLS::JMultiMapTransformer< N, JArgument_t >::buffer
mutableprivateinherited

Definition at line 132 of file JMultiMapTransformer.hh.


The documentation for this class was generated from the following file:
JPHYSICS::JPDFTransformer< 1, JArgument_t >::__ln
double __ln
Effective attenuation length [m].
Definition: JPDFTransformer.hh:235
JTOOLS::JMultiMapTransformer< 1, JArgument_t >::ap
va_list ap
Definition: JMultiMapTransformer.hh:131
JPHYSICS::JPDFTransformer< 1, JArgument_t >::JPDFTransformer
JPDFTransformer()
Default constructor.
Definition: JPDFTransformer.hh:66
JTOOLS::JMultiMapTransformer< 1, JArgument_t >::buffer
JArray< N, argument_type > buffer
Definition: JMultiMapTransformer.hh:132
JTOOLS::n
const int n
Definition: JPolint.hh:628
JPHYSICS::JPDFTransformer< 1, JArgument_t >::getRmin
static double getRmin()
Definition: JPDFTransformer.hh:60
JPHYSICS::JPDFTransformer< 1, JArgument_t >::__kmin
double __kmin
minimal kappa
Definition: JPDFTransformer.hh:237
JTOOLS::getInverseSpeedOfLight
const double getInverseSpeedOfLight()
Get inverse speed of light.
Definition: JConstants.hh:100
JTOOLS::getIndexOfRefraction
double getIndexOfRefraction()
Get average index of refraction of water.
Definition: JConstants.hh:111
JTOOLS::JMultiMapTransformer< 1, JArgument_t >::getWeight
virtual double getWeight(const_array_type &buffer) const=0
Weight function.
JTOOLS::getTanThetaC
double getTanThetaC()
Get average tangent of Cherenkov angle of water.
Definition: JConstants.hh:133
JPHYSICS::JPDFTransformer< 1, JArgument_t >::__kmax
double __kmax
maximal kappa
Definition: JPDFTransformer.hh:238
JTOOLS::JMultiMapTransformer< 1, JArgument_t >::argument_type
JArgument_t argument_type
Definition: JMultiMapTransformer.hh:44
JTOOLS
Auxiliary classes and methods for multi-dimensional interpolations and histograms.
Definition: JAbstractCollection.hh:9
JPHYSICS::JPDFTransformer< 1, JArgument_t >::__alpha
int __alpha
Distance dependence (power term)
Definition: JPDFTransformer.hh:236