102   int         number_of_points;
 
  108   double      absorptionLength;
 
  109   double      scatteringLength;
 
  114     JParser<> zap(
"Example program to draw PDF from LED beacon.");
 
  120     zap[
'A'] = 
make_field(absorptionLength) = 50.0;
 
  121     zap[
'S'] = 
make_field(scatteringLength) = 50.0;
 
  130   catch(
const exception &error) {
 
  131     FATAL(error.what() << endl);
 
  135   const double theta = dir.first;
 
  136   const double phi   = dir.second;
 
  142   const double P_atm = 240.0;       
 
  143   const double tmin  = -10.0;       
 
  144   const double tmax  = +10.0;       
 
  145   const double A     =  440e-4;     
 
  146   const double R_Hz  =  0.0e3;      
 
  148   const JDispersion dispersion(P_atm);
 
  151   const double lm    = scatteringLength / 0.83;
 
  152   const double lr    = scatteringLength / 0.17;
 
  154   const double cs    = 0.83 * 0.92;  
 
  156   const double l_abs = absorptionLength;
 
  157   const double ls    = scatteringLength;
 
  158   const double l_att = l_abs * lr / (l_abs + lr);
 
  163   cout << 
"Rayleigh scattering length " << lr    << 
" m" << endl;
 
  164   cout << 
"Mie      scattering length " << lm    << 
" m" << endl;
 
  165   cout << 
"Absorption length          " << l_abs << 
" m" << endl;
 
  179            JCotangent(number_of_points),
 
  196                 JCotangent(number_of_points),
 
  204   TH1D h0(
"h0", NULL, 430, -15.0, +200.0);
 
  205   TH1D 
h1(
"h1", NULL, 430, -15.0, +200.0);
 
  206   TH1D h2(
"h2", NULL, 430, -15.0, +200.0);
 
  207   TH1D h3(
"h3", NULL, 430, -15.0, +200.0);
 
  208   TH1D ha(
"ha", NULL, 430, -15.0, +200.0);
 
  210   JSplineFunction1S_t 
f[4];
 
  211   JSplineFunction1S_t f1;
 
  214   for (
int i = 1; i <= 
h1.GetNbinsX(); ++i) {
 
  216     const double t1 = 
h1.GetBinCenter(i);
 
  218     const double F1 = pdfMie     .getDirectLightFromLED   (
D, ct, theta, phi, t1);
 
  219     const double F2 = pdfMie     .getScatteredLightFromLED(
D, ct, theta, phi, t1);
 
  220     const double F3 = pdfRayleigh.getScatteredLightFromLED(
D, ct, theta, phi, t1);
 
  223     h0.SetBinContent(i, F1 + F2 + F3);
 
  224     h1.SetBinContent(i, F1);
 
  225     h2.SetBinContent(i, F2);
 
  226     h3.SetBinContent(i, F3);
 
  231     f[3][t1] = F1 + F2 + F3;
 
  233     f1[t1] = F1 + F2 + F3;
 
  238   for (
int i = 3; i != 
sizeof(
f)/
sizeof(
f[0]); ++i) {
 
  242     JQuantiles quantiles(
f[i]);
 
  245    const double lz = l_abs * ls / (l_abs*(1.0-cs) + ls);
 
  247     NOTICE(
"int  " << quantiles.getIntegral() * 
D*
D * 
exp(
D/lz) << endl);
 
  250     DEBUG(
"ct    " << ct                      << endl);
 
  251     DEBUG(
"theta " << theta                   << endl);
 
  252     DEBUG(
"phi   " << phi                     << endl);
 
  253     DEBUG(
"int   " << quantiles.getIntegral() << endl);
 
  254     DEBUG(
"t1    " << quantiles.getX()        << endl);
 
  255     DEBUG(
"max   " << quantiles.getY()        << endl);
 
  256     DEBUG(
"FWHM  " << quantiles.getFWHM()     << endl);
 
  260   const double Tmin = ha.GetXaxis()->GetXmin();
 
  261   const double Tmax = ha.GetXaxis()->GetXmax();
 
  263   const double V = f1.rbegin()->getIntegral()  +  R_Hz * 1e-9 * (Tmax - Tmin);   
 
  265   for (
int i = 1; i <= ha.GetNbinsX(); ++i) {
 
  267     const double t1 = ha.GetBinCenter(i);
 
  269     JSplineFunction1S_t::result_type p = f1(t1);
 
  271     double v = p.v  +  R_Hz * 1e-9 * (t1   - Tmin);
 
  272     double y = p.f  +  R_Hz * 1e-9;                   
 
  274     const double W = 
exp(-v) * y / (1.0 - 
exp(-V));
 
  276     ha.SetBinContent(i,W);      
 
Utility class to parse command line options. 
 
do echo Generating $dir eval D
 
double rayleigh(const double ct)
 
double getQE(const double lambda, const bool option)
Quantum efficiency of 10-inch Hamamatsu PMT. 
 
then for HISTOGRAM in h0 h1
 
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))*exp(-0.5 *(y-[1])*(y-[1])/([2]*[2]))" JF2 -o $WORKDIR/f2.root -F "$FORMULA" -@ "p0
 
Light yield from LED (number of p.e. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
double henyey_greenstein(const double ct)
 
source $JPP_DIR setenv csh $JPP_DIR eval JShellParser o a A
 
#define DEBUG(A)
Message macros. 
 
double getAngularAcceptance(const double x)
Angular acceptence of PMT.