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