92   double      absorptionLength;
 
   93   double      scatteringLength;
 
   98     JParser<> zap(
"Example program to draw PDF from LED beacon.");
 
  104     zap[
'A'] = 
make_field(absorptionLength) = 50.0;
 
  105     zap[
'S'] = 
make_field(scatteringLength) = 50.0;
 
  114   catch(
const exception &error) {
 
  115     FATAL(error.what() << endl);
 
  119   const double theta = dir.first;
 
  120   const double phi   = dir.second;
 
  126   const double P_atm = 240.0;       
 
  127   const double tmin  = -10.0;       
 
  128   const double tmax  = +10.0;       
 
  129   const double A     =  440e-4;     
 
  130   const double R_Hz  =  0.0e3;      
 
  135   const double lm    = scatteringLength / 0.83;
 
  136   const double lr    = scatteringLength / 0.17;
 
  138   const double cs    = 0.83 * 0.92;  
 
  140   const double l_abs = absorptionLength;
 
  141   const double ls    = scatteringLength;
 
  142   const double l_att = l_abs * lr / (l_abs + lr);
 
  147   cout << 
"Rayleigh scattering length " << lr    << 
" m" << endl;
 
  148   cout << 
"Mie      scattering length " << lm    << 
" m" << endl;
 
  149   cout << 
"Absorption length          " << l_abs << 
" m" << endl;
 
  187   TH1D h0(
"h0", NULL, 430, -15.0, +200.0);
 
  188   TH1D h1(
"h1", NULL, 430, -15.0, +200.0);
 
  189   TH1D h2(
"h2", NULL, 430, -15.0, +200.0);
 
  190   TH1D h3(
"h3", NULL, 430, -15.0, +200.0);
 
  191   TH1D ha(
"ha", NULL, 430, -15.0, +200.0);
 
  197   for (
int i = 1; i <= h1.GetNbinsX(); ++i) {
 
  199     const double t1 = h1.GetBinCenter(i);
 
  201     const double F1 = pdfMie     .getDirectLightFromLED   (D, ct, theta, phi, t1);
 
  202     const double F2 = pdfMie     .getScatteredLightFromLED(D, ct, theta, phi, t1);
 
  203     const double F3 = pdfRayleigh.getScatteredLightFromLED(D, ct, theta, phi, t1);
 
  206     h0.SetBinContent(i, 
F1 + F2 + F3);
 
  207     h1.SetBinContent(i, 
F1);
 
  208     h2.SetBinContent(i, F2);
 
  209     h3.SetBinContent(i, F3);
 
  214     f[3][t1] = 
F1 + F2 + F3;
 
  216     f1[t1] = 
F1 + F2 + F3;
 
  221   for (
int i = 3; i != 
sizeof(f)/
sizeof(f[0]); ++i) {
 
  228    const double lz = l_abs * 
ls / (l_abs*(1.0-cs) + 
ls);
 
  230     NOTICE(
"int  " << quantiles.getIntegral() * D*D * exp(D/lz) << endl);
 
  232     DEBUG(
"D     " << D                       << endl);
 
  233     DEBUG(
"ct    " << ct                      << endl);
 
  234     DEBUG(
"theta " << theta                   << endl);
 
  235     DEBUG(
"phi   " << phi                     << endl);
 
  236     DEBUG(
"int   " << quantiles.getIntegral() << endl);
 
  237     DEBUG(
"t1    " << quantiles.getX()        << endl);
 
  238     DEBUG(
"max   " << quantiles.getY()        << endl);
 
  239     DEBUG(
"FWHM  " << quantiles.getFWHM()     << endl);
 
  243   const double Tmin = ha.GetXaxis()->GetXmin();
 
  244   const double Tmax = ha.GetXaxis()->GetXmax();
 
  246   const double V = 
f1.rbegin()->
getIntegral()  +  R_Hz * 1e-9 * (Tmax - Tmin);   
 
  248   for (
int i = 1; i <= ha.GetNbinsX(); ++i) {
 
  250     const double t1 = ha.GetBinCenter(i);
 
  252     JSplineFunction1S_t::result_type p = 
f1(t1);
 
  254     double v = p.v  +  R_Hz * 1e-9 * (t1   - Tmin);
 
  255     double y = p.f  +  R_Hz * 1e-9;                   
 
  257     const double W = exp(-
v) * 
y / (1.0 - exp(-V));
 
  259     ha.SetBinContent(i,W);      
 
double getAngularAcceptance(const double x)
Angular acceptence of PMT.
 
#define DEBUG(A)
Message macros.
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Utility class to parse command line options.
 
Implementation of dispersion for water in deep sea.
 
Probability Density Functions of the time response of a PMT (C-like interface)
 
Light yield from LED (number of p.e.
 
double getQE(const double lambda, const bool option)
Get quantum efficiency of PMT.
 
const JPolynome F1
Integral.
 
const JPolynome f1(1.0, 2.0, 3.0)
Function.
 
double henyey_greenstein(const double g, const double x)
Auxiliary method to describe light scattering in water (Henyey-Greenstein).
 
double rayleigh(const double a, const double x)
Auxiliary method to describe light scattering in water (Rayleigh).
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
double getIntegral(const double x) const
Integral value.
 
Auxiliary data structure to list files in directory.