1#ifndef __JPHYSICS__JLED__ 
    2#define __JPHYSICS__JLED__ 
   54                                   const double dt) 
const = 0;
 
 
   83         const double       epsilon        = 1e-12) :
 
   92      for (
double x = 0.5*dp; x < PI; x += dp) {
 
 
  112                                 const double t_ns)
 const 
  114      const double sd =  sqrt((1.0 + cd)*(1.0 - cd));
 
  115      const double d  =  D_m;                                  
 
  119      const double px =  sin(theta)*cos(phi);
 
  121      const double pz =  cos(theta);
 
  123      const double ct = sd*px + cd*pz;                         
 
  130      const double V  = exp(-d/l_abs) * exp(-d/ls);            
 
  131      const double W  = A/(d*d);                               
 
 
  151                                    const double t_ns)
 const 
  161        const double sd =  sqrt((1.0 + cd)*(1.0 - cd));
 
  162        const double l  =  D_m;                                    
 
  168        const double px =  sin(theta)*cos(phi);
 
  169        const double py =  sin(theta)*sin(phi);
 
  170        const double pz =  cos(theta);
 
  172        const double qx = cd*px +  0  - sd*pz;
 
  173        const double qy =         1*py;
 
  174        const double qz = sd*px +  0  + cd*pz;
 
  180        const double Jc = 1.0 / ls;                                
 
  182        const double xmin = 
tmin;
 
  183        const double xmax = std::min(
tmax, t_ns);
 
  191            const double t  = 0.5 * (xmax + xmin)  +  i->getX() * 0.5 * (xmax - xmin);
 
  192            const double dt = i->getY() * 0.5 * (xmax - xmin);
 
  204          const double t  = i->getX();
 
  205          const double dt = i->getY();
 
  207          const double d  = l + C*(t_ns - t)/ng;                   
 
  208          const double V  = exp(-d/l_abs);                         
 
  212            const double cb = j->getX();
 
  213            const double dc = j->getY();
 
  215            const double sb = sqrt((1.0 + cb)*(1.0 - cb));
 
  217            const double v  = 0.5 * (d + l) * (d - l) / (d - l*cb);
 
  218            const double u  = d - v;
 
  220            if (u <= 0) 
continue;
 
  221            if (v <= 0) 
continue;
 
  223            const double cts = (l*cb - v) / u;                   
 
  225            const double W  = min(A/(v*v), 2.0*PI);              
 
  227            const double Jd = ng * (1.0 - cts) / C;              
 
  229            const double ca = (l - v*cb) / u;
 
  230            const double sa =      v*sb  / u;
 
  232            for (std::vector<JElement3D_t>::const_iterator k = 
phi_engine.begin(); k != 
phi_engine.end(); ++k) {
 
  234              const double cp = k->getX();
 
  235              const double sp = k->getY();
 
  236              const double dp = k->getZ();
 
  238              const double dom = dc * dp * v*v / (u*u);
 
  240              const double ct0 = cd*ca - sd*sa*cp;
 
  241              const double ph0 = atan2(sa*sp, cd*sa*cp + sd*ca);
 
  243              const double vx  = -sb*cp * qx;
 
  244              const double vy  = -sb*sp * qy;
 
  245              const double vz  =  cb    * qz;
 
  251              value += qe * dt * dom * Ja * Jc * U * V * W / Jd;
 
 
 
  303           double (*QE)  (
const double),
 
  304           double (*Pmt) (
const double),
 
  307           double (*Km3) (
const double),
 
  313           const double Tmin_ns,
 
  314           const double Tmax_ns,
 
  317           const double epsilon        = 1e-12) :
 
 
  340                                   const double dt)
 const override 
 
  363    virtual double getQE(
const double lambda)
 const override  
 
  434    double (*
qe)(
const double lambda);
 
  452    double (*
pmt)(
const double ct);
 
  460    double (*
km3)(
const double ct);
 
 
The elements in a collection are sorted according to their abscissa values and a given distance opera...
 
Auxiliary classes for numerical integration.
 
Interface for emission profile from LED.
 
virtual ~JAbstractLED()
Virtual destructor.
 
virtual double getLightFromLED(const double ct, const double phi, const double dt) const =0
Light yield from LED (number of p.e.
 
virtual double getAbsorptionLength(const double lambda) const =0
Absorption length.
 
virtual double getScatteringLength(const double lambda) const =0
Scattering length.
 
virtual double getScatteringProbability(const double ct) const =0
Model specific function to describe light scattering in water (integral over full solid angle normali...
 
virtual double getPhotocathodeArea() const =0
Photo-cathode area of PMT.
 
virtual double getQE(const double lambda) const =0
Quantum efficiency of PMT (incl.
 
virtual double getAngularAcceptance(const double ct) const =0
Angular acceptence of PMT.
 
Light dispersion inteface.
 
virtual double getIndexOfRefractionGroup(const double lambda) const
Index of refraction for group velocity.
 
Implementation of dispersion for water in deep sea.
 
Probability Density Functions of the time response of a PMT (C-like interface)
 
double(* qe)(const double lambda)
Quantum efficiency of PMT (incl.
 
double l_abs
Absorption length.
 
virtual double getAbsorptionLength(const double lambda) const override
Absorption length.
 
virtual double getScatteringLength(const double lambda) const override
Scattering length.
 
double(* pmt)(const double ct)
Angular acceptance of PMT.
 
double ls
Scattering length.
 
double(* km3)(const double ct)
Model specific function to describe light scattering in water.
 
virtual double getAngularAcceptance(const double ct) const override
Angular acceptance of PMT.
 
virtual double getLightFromLED(const double ct, const double phi, const double dt) const override
Light yield from LED (number of p.e.
 
const double A
photo-cathode area [m2]
 
const JAbstractLED * led
Pointer to interface for emission profile from LED.
 
JLED_C(const double Area, const JAbstractLED *LED, double(*QE)(const double), double(*Pmt)(const double), const double L_abs, const double L_s, double(*Km3)(const double), const double P_atm, const double wavelength, const double Tmin_ns, const double Tmax_ns, const JQuadrature &engine=JCotangent(20), const int numberOfPoints=20, const double epsilon=1e-12)
Constructor.
 
virtual double getScatteringProbability(const double ct) const override
Model specific function to describe light scattering in water (integral over full solid angle normali...
 
virtual double getQE(const double lambda) const override
Quantum efficiency of PMT (incl.
 
virtual double getPhotocathodeArea() const override
Photo-cathode area of PMT.
 
Probability Density Functions of the time response of a PMT.
 
JLED(const double lambda, const double Tmin_ns, const double Tmax_ns, const JQuadrature &engine=JCotangent(20), const int numberOfPoints=20, const double epsilon=1e-12)
Constructor.
 
double getDirectLightFromLED(const double D_m, const double cd, const double theta, const double phi, const double t_ns) const
Probability density function for direct light from LED.
 
double getScatteredLightFromLED(const double D_m, const double cd, const double theta, const double phi, const double t_ns) const
Probability density function for scattered light from LED.
 
std::vector< JElement3D_t > phi_engine
 
Light yield from LED (number of p.e.
 
Auxiliary methods for light properties of deep-sea water.
 
JTOOLS::JElement3D< double, double > JElement3D_t
 
JTOOLS::JElement2D< double, double > JElement2D_t
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).