2 #ifndef __JPHYSICS__TOULON__ 
    3 #define __JPHYSICS__TOULON__ 
   86     const double x = lambda;
 
   88     if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
 
   90       map_t::const_iterator i = zmap.lower_bound(x);
 
   91       map_t::const_iterator 
j = i;
 
   95       if (i == zmap.begin()) {
 
  100       const double x1 = i->first;
 
  101       const double x2 = j->first;
 
  103       const double y1 = i->second;
 
  104       const double y2 = j->second;
 
  106       return y1  +  (y2 - y1) * (x - x1) / (x2 - x1);
 
  128       zmap[300.0] =  32.290;
 
  129       zmap[310.0] =  34.000;
 
  130       zmap[320.0] =  35.730;
 
  131       zmap[330.0] =  37.480;
 
  132       zmap[340.0] =  39.260;
 
  133       zmap[350.0] =  41.070;
 
  134       zmap[360.0] =  42.890;
 
  135       zmap[370.0] =  44.740;
 
  136       zmap[380.0] =  46.600;
 
  137       zmap[390.0] =  48.490;
 
  138       zmap[400.0] =  50.390;
 
  139       zmap[410.0] =  52.310;
 
  140       zmap[420.0] =  54.250;
 
  141       zmap[430.0] =  56.210;
 
  142       zmap[440.0] =  58.180;
 
  143       zmap[450.0] =  60.160;
 
  144       zmap[460.0] =  62.160;
 
  145       zmap[470.0] =  64.180;
 
  146       zmap[480.0] =  66.210;
 
  147       zmap[490.0] =  68.240;
 
  148       zmap[500.0] =  70.300;
 
  149       zmap[510.0] =  72.360;
 
  150       zmap[520.0] =  74.430;
 
  151       zmap[530.0] =  76.510;
 
  152       zmap[540.0] =  78.610;
 
  153       zmap[550.0] =  80.710;
 
  154       zmap[560.0] =  82.820;
 
  155       zmap[570.0] =  84.940;
 
  156       zmap[580.0] =  87.070;
 
  157       zmap[590.0] =  89.200;
 
  158       zmap[600.0] =  91.340;
 
  159       zmap[610.0] =  93.490;
 
  160       zmap[620.0] =  95.000;
 
  163     const double x = lambda;
 
  165     if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
 
  167       map_t::const_iterator i = zmap.lower_bound(x);
 
  168       map_t::const_iterator 
j = i;
 
  172       if (i == zmap.begin()) {
 
  177       const double x1 = i->first;
 
  178       const double x2 = j->first;
 
  180       const double y1 = i->second;
 
  181       const double y2 = j->second;
 
  183       return y1  +  (y2 - y1) * (x - x1) / (x2 - x1);
 
  205       zmap[300.0] =  43.410;
 
  206       zmap[310.0] =  49.990;
 
  207       zmap[320.0] =  57.300;
 
  208       zmap[330.0] =  65.400;
 
  209       zmap[340.0] =  74.360;
 
  210       zmap[350.0] =  84.230;
 
  211       zmap[360.0] =  95.080;
 
  212       zmap[370.0] = 106.970;
 
  213       zmap[380.0] = 119.970;
 
  214       zmap[390.0] = 134.140;
 
  215       zmap[400.0] = 149.570;
 
  216       zmap[410.0] = 166.330;
 
  217       zmap[420.0] = 184.490;
 
  218       zmap[430.0] = 204.130;
 
  219       zmap[440.0] = 225.340;
 
  220       zmap[450.0] = 248.200;
 
  221       zmap[460.0] = 272.800;
 
  222       zmap[470.0] = 299.230;
 
  223       zmap[480.0] = 327.590;
 
  224       zmap[490.0] = 357.960;
 
  225       zmap[500.0] = 390.450;
 
  226       zmap[510.0] = 425.150;
 
  227       zmap[520.0] = 462.170;
 
  228       zmap[530.0] = 501.620;
 
  229       zmap[540.0] = 543.610;
 
  230       zmap[550.0] = 588.240;
 
  231       zmap[560.0] = 635.620;
 
  232       zmap[570.0] = 685.890;
 
  233       zmap[580.0] = 739.150;
 
  234       zmap[590.0] = 795.530;
 
  235       zmap[600.0] = 855.150;
 
  236       zmap[610.0] = 918.140;
 
  237       zmap[620.0] = 979.000;
 
  240     const double x = lambda;
 
  242     if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
 
  244       map_t::const_iterator i = zmap.lower_bound(x);
 
  245       map_t::const_iterator 
j = i;
 
  249       if (i == zmap.begin()) {
 
  254       const double x1 = i->first;
 
  255       const double x2 = j->first;
 
  257       const double y1 = i->second;
 
  258       const double y2 = j->second;
 
  260       return y1  +  (y2 - y1) * (x - x1) / (x2 - x1);
 
  279     const double a0 = 1.0 / (1.0 + a/3.0) / (4*
PI);
 
  281     return a0 * (1.0 + a*x*x); 
 
  309       f1[+0.0017] = +19.377;
 
  310       f1[+0.0022] = +17.907;
 
  311       f1[+0.0028] = +16.464;
 
  312       f1[+0.0035] = +15.333;
 
  313       f1[+0.0044] = +14.148;
 
  314       f1[+0.0055] = +13.043;
 
  315       f1[+0.0069] = +12.059;
 
  316       f1[+0.0087] = +12.021;
 
  317       f1[+0.0110] =  +9.992;
 
  318       f1[+0.0139] =  +8.898;
 
  319       f1[+0.0175] =  +7.853;
 
  320       f1[+0.0220] =  +6.845;
 
  321       f1[+0.0277] =  +5.900;
 
  322       f1[+0.0348] =  +4.989;
 
  323       f1[+0.0438] =  +4.175;
 
  324       f1[+0.0552] =  +3.473;
 
  325       f1[+0.0695] =  +2.870;
 
  326       f1[+0.0875] =  +2.358;
 
  327       f1[+0.1101] =  +1.938;
 
  328       f1[+0.1386] =  +1.579;
 
  329       f1[+0.1745] =  +1.258;
 
  330       f1[+0.2618] =  +0.796;
 
  331       f1[+0.3491] =  +0.525;
 
  332       f1[+0.4363] =  +0.391;
 
  333       f1[+0.5236] =  +0.270;
 
  334       f1[+0.6109] =  +0.214;
 
  335       f1[+0.6981] =  +0.170;
 
  336       f1[+0.7854] =  +0.136;
 
  337       f1[+0.8727] =  +0.110;
 
  338       f1[+0.9599] =  +0.087;
 
  339       f1[+1.0472] =  +0.071;
 
  340       f1[+1.1345] =  +0.060;
 
  341       f1[+1.2217] =  +0.050;
 
  342       f1[+1.3090] =  +0.042;
 
  343       f1[+1.3963] =  +0.036;
 
  344       f1[+1.4835] =  +0.031;
 
  345       f1[+1.5708] =  +0.027;
 
  346       f1[+1.6581] =  +0.024;
 
  347       f1[+1.7453] =  +0.021;
 
  348       f1[+1.8326] =  +0.019;
 
  349       f1[+1.9199] =  +0.017;
 
  350       f1[+2.0071] =  +0.016;
 
  351       f1[+2.0944] =  +0.015;
 
  352       f1[+2.1817] =  +0.013;
 
  353       f1[+2.2689] =  +0.012;
 
  354       f1[+2.3562] =  +0.011;
 
  355       f1[+2.4435] =  +0.009;
 
  356       f1[+2.5307] =  +0.008;
 
  357       f1[+2.6180] =  +0.007;
 
  358       f1[+2.7053] =  +0.007;
 
  359       f1[+2.7925] =  +0.006;
 
  360       f1[+2.8798] =  +0.005;
 
  361       f1[+2.9671] =  +0.003;
 
  362       f1[+3.0543] =  +0.002;
 
  363       f1[+3.1416] =  -0.000;
 
  367         const double x = i->getX();
 
  368         const double y = i->getY();
 
  378     const double x = acos(ct);
 
  815   inline double getQE(
const double lambda, 
const bool option)
 
  819       tuple(
const double __QE,
 
  820             const double __l_gel,
 
  821             const double __l_glass) :
 
  832     static const tuple ntuple[] = {
 
  833       tuple(0.000e-2,   0.00,   0.00),
 
  834       tuple(1.988e-2, 100.81, 148.37),
 
  835       tuple(2.714e-2,  99.94, 142.87),
 
  836       tuple(3.496e-2,  99.89, 135.64),
 
  837       tuple(4.347e-2,  96.90, 134.58),
 
  838       tuple(5.166e-2,  96.42, 138.27),
 
  839       tuple(6.004e-2,  94.36, 142.40),
 
  840       tuple(6.885e-2,  89.09, 147.16),
 
  841       tuple(8.105e-2,  90.10, 151.80),
 
  842       tuple(10.13e-2,  86.95, 150.88),
 
  843       tuple(13.03e-2,  85.88, 145.68),
 
  844       tuple(15.29e-2,  84.49, 139.70),
 
  845       tuple(16.37e-2,  81.08, 126.55),
 
  846       tuple(17.11e-2,  78.18, 118.86),
 
  847       tuple(17.86e-2,  76.48, 113.90),
 
  848       tuple(18.95e-2,  74.55, 116.08),
 
  849       tuple(20.22e-2,  72.31, 109.23),
 
  850       tuple(21.26e-2,  68.05,  81.63),
 
  851       tuple(22.10e-2,  66.91,  65.66),
 
  852       tuple(22.65e-2,  64.48,  77.30),
 
  853       tuple(23.07e-2,  62.53,  73.02),
 
  854       tuple(23.14e-2,  59.38,  81.25),
 
  855       tuple(23.34e-2,  56.64, 128.04),
 
  856       tuple(22.95e-2,  53.29,  61.84),
 
  857       tuple(22.95e-2,  48.96,  19.23),
 
  858       tuple(22.74e-2,  45.71,  27.21),
 
  859       tuple(23.48e-2,  41.88,  18.09),
 
  860       tuple(22.59e-2,  37.14,   8.41),
 
  861       tuple(20.61e-2,  30.49,   3.92),
 
  862       tuple(17.68e-2,  23.08,   1.82),
 
  863       tuple(13.18e-2,  15.60,   0.84),
 
  864       tuple(7.443e-2,   8.00,   0.39),
 
  865       tuple(2.526e-2,   0.00,   0.17),
 
  866       tuple(0.000e-2,   0.00,   0.00)
 
  869     static const double cola    = 0.9;      
 
  870     static const double x_glass = 1.5;      
 
  871     static const double x_gel   = 1.0;      
 
  874     static const int    N    = 
sizeof(ntuple) / 
sizeof(ntuple[0])  -  1;
 
  876     static const double xmax = 620.0;       
 
  877     static const double xmin = 290.0;       
 
  879     const double x = lambda;
 
  883     if (x > xmin && x < xmax) {
 
  885       const int i = (int) (N * (x - xmax) / (xmin - xmax));
 
  886       const int j = (i == N ? i - 1 : i + 1); 
 
  888       const double x1 = xmax  +  i * (xmin - xmax) / N;
 
  889       const double x2 = xmax  +  j * (xmin - xmax) / N;
 
  891       const double dx = (x - x1) / (x1 - x2);
 
  893       const double QE      = ntuple[i].QE       +  (ntuple[i].QE      - ntuple[
j].QE     ) * dx;
 
  894       const double l_gel   = ntuple[i].l_gel    +  (ntuple[i].l_gel   - ntuple[
j].l_gel  ) * dx;
 
  895       const double l_glass = ntuple[i].l_glass  +  (ntuple[i].l_glass - ntuple[
j].l_glass) * dx;
 
  901         if (l_glass > 0.0 && l_gel > 0.0)
 
  902           y *= 
exp(-x_glass/l_glass) * 
exp(-x_gel/l_gel);
 
  918   inline double getQE(
const double lambda)
 
  920     return getQE(lambda, 
true);
 
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
 
static const double PI
Mathematical constants. 
 
double getQE(const double lambda, const bool option)
Quantum efficiency of 10-inch Hamamatsu PMT. 
 
const double getPhotocathodeArea()
Photo-cathode area 10 inch PMT. 
 
double getAngularAcceptance(const double x)
Angular acceptence of Antares PMT. 
 
double getRayleighScatteringLength(const double lambda)
Rayleigh scattering length. 
 
then $JPP_DIR software JCalibrate JCalibrateToT a
 
double rayleigh(const double a, const double x)
Auxiliary method to describe light scattering in water (Rayleigh) 
 
double getMieScatteringLength(const double lambda)
Mie scattering length. 
 
then usage $script[input file[working directory[option]]] nWhere option can be N
 
double getAbsorptionLength(const double lambda)
Absoption length. 
 
double getPetzholdScatteringProbability(const double ct)
Function to describe light scattering in water.