Go to the documentation of this file.    1 #ifndef __JPHYSICS__JLED__ 
    2 #define __JPHYSICS__JLED__ 
   53                                    const double dt) 
const = 0;
 
   82          const double       epsilon        = 1e-12) :
 
   93       for (
double x = 0.5*dp; x < 
PI; x += dp) {
 
  113                                  const double t_ns)
 const 
  115       const double sd =  sqrt((1.0 + cd)*(1.0 - cd));
 
  116       const double d  =  D_m;                                  
 
  120       const double px =  sin(theta)*cos(phi);
 
  122       const double pz =  cos(theta);
 
  124       const double ct = sd*px + cd*pz;                         
 
  131       const double V  = exp(-d/l_abs) * exp(-d/ls);            
 
  132       const double W  = A/(d*d);                               
 
  152                                     const double t_ns)
 const 
  164         const double sd =  sqrt((1.0 + cd)*(1.0 - cd));
 
  165         const double l  =  D_m;                                    
 
  171         const double px =  sin(theta)*cos(phi);
 
  172         const double py =  sin(theta)*sin(phi);
 
  173         const double pz =  cos(theta);
 
  175         const double qx = cd*px +  0  - sd*pz;
 
  176         const double qy =         1*py;
 
  177         const double qz = sd*px +  0  + cd*pz;
 
  183         const double Jc = 1.0 / ls;                                
 
  185         const double xmin = 
tmin;
 
  186         const double xmax = std::min(
tmax, t_ns);
 
  194             const double t  = 0.5 * (xmax + xmin)  +  i->
getX() * 0.5 * (xmax - xmin);
 
  195             const double dt = i->getY() * 0.5 * (xmax - xmin);
 
  207           const double t  = i->
getX();
 
  208           const double dt = i->getY();
 
  210           const double d  = l + 
C*(t_ns - t)/ng;                   
 
  211           const double V  = exp(-d/l_abs);                         
 
  215             const double cb = 
j->getX();
 
  216             const double dc = 
j->getY();
 
  218             const double sb = sqrt((1.0 + cb)*(1.0 - cb));
 
  220             const double v  = 0.5 * (d + l) * (d - l) / (d - l*cb);
 
  221             const double u  = d - 
v;
 
  223             if (
u <= 0) 
continue;
 
  224             if (
v <= 0) 
continue;
 
  226             const double cts = (l*cb - 
v) / 
u;                   
 
  228             const double W  = min(A/(
v*
v), 2.0*
PI);              
 
  230             const double Jd = ng * (1.0 - cts) / 
C;              
 
  232             const double ca = (l - 
v*cb) / 
u;
 
  233             const double sa =      
v*sb  / 
u;
 
  237               const double cp = k->getX();
 
  238               const double sp = k->getY();
 
  239               const double dp = k->getZ();
 
  241               const double dom = dc * dp * 
v*
v / (
u*
u);
 
  243               const double ct0 = cd*ca - sd*sa*cp;
 
  244               const double ph0 = atan2(sa*sp, cd*sa*cp + sd*ca);
 
  246               const double vx  = -sb*cp * qx;
 
  247               const double vy  = -sb*sp * qy;
 
  248               const double vz  =  cb    * qz;
 
  254               value += qe * dt * dom * Ja * Jc * U * V * W / Jd;
 
  306            double (*QE)  (
const double),
 
  307            double (*Pmt) (
const double),
 
  310            double (*Km3) (
const double),
 
  316            const double Tmin_ns,
 
  317            const double Tmax_ns,
 
  320            const double epsilon        = 1e-12) :
 
  343                                    const double dt)
 const 
  345       return led->getLightFromLED(ct, phi, dt);
 
  366     virtual double getQE(
const double lambda)
 const  
  437     double (*qe)(
const double lambda);
 
  455     double (*pmt)(
const double ct);
 
  463     double (*km3)(
const double ct);
 
 
virtual double getPhotocathodeArea() const
Photo-cathode area of PMT.
 
JTOOLS::JElement2D< double, double > JElement2D_t
 
Interface for emission profile from LED.
 
virtual double getAbsorptionLength(const double lambda) const =0
Absorption 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 ~JAbstractLED()
Virtual destructor.
 
double l_abs
Absorption length.
 
Auxiliary classes and methods for calculation of PDF and muon energy loss.
 
virtual double getAngularAcceptance(const double ct) const =0
Angular acceptence of PMT.
 
virtual double getQE(const double lambda) const =0
Quantum efficiency of PMT (incl.
 
Probability Density Functions of the time response of a PMT.
 
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.
 
virtual double getLightFromLED(const double ct, const double phi, const double dt) const =0
Light yield from LED (number of p.e.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
virtual double getScatteringLength(const double lambda) const
Scattering length.
 
virtual double getPhotocathodeArea() const =0
Photo-cathode area of PMT.
 
Light dispersion inteface.
 
JTOOLS::JElement3D< double, double > JElement3D_t
 
Light yield from LED (number of p.e.
 
Implementation of dispersion for water in deep sea.
 
Probability Density Functions of the time response of a PMT (C-like interface)
 
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.
 
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
Model specific function to describe light scattering in water (integral over full solid angle normali...
 
virtual double getLightFromLED(const double ct, const double phi, const double dt) const
Light yield from LED (number of p.e.
 
virtual double getScatteringLength(const double lambda) const =0
Scattering length.
 
std::vector< JElement3D_t > phi_engine
 
double ls
Scattering length.
 
virtual double getAngularAcceptance(const double ct) const
Angular acceptence of PMT (normalised to one at cos() = -1).
 
const double A
photo-cathode area [m2]
 
virtual double getIndexOfRefractionGroup(const double lambda) const
Index of refraction for group velocity.
 
virtual double getQE(const double lambda) const
Quantum efficiency of PMT (incl.
 
const JAbstractLED * led
Pointer to interface for emission profile from LED.
 
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.
 
virtual double getAbsorptionLength(const double lambda) const
Absorption length.