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" -