1 #ifndef __JPHYSICS__JLED__ 
    2 #define __JPHYSICS__JLED__ 
   17 namespace JPP { 
using namespace JPHYSICS; }
 
   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);
 
*fatal Wrong number of arguments esac JCookie sh JRuns D $DETECTOR d sort n k
 
JTOOLS::JElement3D< double, double > JElement3D_t
 
virtual ~JAbstractLED()
Virtual destructor. 
 
The elements in a collection are sorted according to their abscissa values and a given distance opera...
 
const JAbstractLED * led
Pointer to interface for emission profile from LED. 
 
virtual double getAngularAcceptance(const double ct) const 
Angular acceptence of PMT (normalised to one at cos() = -1). 
 
Implementation of dispersion for water in deep sea. 
 
virtual double getPhotocathodeArea() const 
Photo-cathode area of PMT. 
 
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. 
 
Light yield from LED (number of p.e. 
 
esac $JPP_DIR examples JDetector JTransitTime o $OUTPUT_FILE n N $NPE T $TTS_NS d $DEBUG for HISTOGRAM in tts tt2 pmt
 
virtual double getQE(const double lambda) const 
Quantum efficiency of PMT (incl. 
 
virtual double getLightFromLED(const double ct, const double phi, const double dt) const 
Light yield from LED (number of p.e. 
 
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) 
 
then print_variable DETECTOR INPUT_FILE INTERMEDIATE_FILE check_input_file $DETECTOR $INPUT_FILE check_output_file $INTERMEDIATE_FILE $OUTPUT_FILE JMCEvt f $INPUT_FILE o $INTERMEDIATE_FILE d
 
virtual double getAbsorptionLength(const double lambda) const =0
Absorption length. 
 
virtual double getAbsorptionLength(const double lambda) const 
Absorption length. 
 
virtual double getPhotocathodeArea() const =0
Photo-cathode area of PMT. 
 
double ls
Scattering length. 
 
const double A
photo-cathode area [m2] 
 
Auxiliary classes for numerical integration. 
 
virtual double getIndexOfRefractionGroup(const double lambda) const 
Index of refraction for group velocity. 
 
virtual double getScatteringProbability(const double ct) const 
Model specific function to describe light scattering in water (integral over full solid angle normali...
 
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 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 getScatteringLength(const double lambda) const 
Scattering length. 
 
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 eval JShellParser o a A
 
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. 
 
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable OUTPUT_FILE histogram.root JHistogram1D -o $WORKDIR/$OUTPUT_FILE -F "$FORMULA" -