1 #ifndef __JPHYSICS__JLED__ 
    2 #define __JPHYSICS__JLED__ 
   18 namespace JPP { 
using namespace JPHYSICS; }
 
   54                                    const double dt) 
const = 0;
 
   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;                                
 
  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;
 
  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 
  342       return led->getLightFromLED(ct, phi, dt);
 
  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);
 
JTOOLS::JElement3D< double, double > JElement3D_t
 
then fatal No hydrophone data file $HYDROPHONE_TXT fi sort gr k
 
virtual double getAbsorptionLength(const double lambda) const override
Absorption length. 
 
virtual ~JAbstractLED()
Virtual destructor. 
 
The elements in a collection are sorted according to their abscissa values and a given distance opera...
 
virtual double getQE(const double lambda) const override
Quantum efficiency of PMT (incl. 
 
const JAbstractLED * led
Pointer to interface for emission profile from LED. 
 
Implementation of dispersion for water in deep sea. 
 
Interface for emission profile from LED. 
 
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
 
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. 
 
Light yield from LED (number of p.e. 
 
static const double C
Physics constants. 
 
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 override
Scattering length. 
 
std::vector< JElement3D_t > phi_engine
 
virtual double getScatteringLength(const double lambda) const =0
Scattering length. 
 
double l_abs
Absorption length. 
 
Probability Density Functions of the time response of a PMT (C-like interface) 
 
virtual double getAbsorptionLength(const double lambda) const =0
Absorption length. 
 
static const double PI
Mathematical constants. 
 
virtual double getPhotocathodeArea() const =0
Photo-cathode area of PMT. 
 
double ls
Scattering length. 
 
const double A
photo-cathode area [m2] 
 
virtual double getScatteringProbability(const double ct) const override
Model specific function to describe light scattering in water (integral over full solid angle normali...
 
Auxiliary classes for numerical integration. 
 
virtual double getIndexOfRefractionGroup(const double lambda) const 
Index of refraction for group velocity. 
 
then JMuonMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
 
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. 
 
Probability Density Functions of the time response of a PMT. 
 
virtual double getAngularAcceptance(const double ct) const =0
Angular acceptence of PMT. 
 
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 =0
Light yield from LED (number of p.e. 
 
JTOOLS::JElement2D< double, double > JElement2D_t
 
virtual double getPhotocathodeArea() const override
Photo-cathode area of PMT. 
 
virtual double getQE(const double lambda) const =0
Quantum efficiency of PMT (incl. 
 
Light dispersion inteface. 
 
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. 
 
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
 
virtual double getScatteringProbability(const double ct) const =0
Model specific function to describe light scattering in water (integral over full solid angle normali...
 
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.