1 #ifndef __JPHYSICS__JLED__
2 #define __JPHYSICS__JLED__
18 namespace JPP {
using namespace JPHYSICS; }
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;
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.
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.
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"` typeset -Z 4 STRING JOpera1D -f hydrophone.root
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 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.