1 #ifndef __JPHYSICS__ANTARES__ 
    2 #define __JPHYSICS__ANTARES__ 
   29     static const JK40Rates rates_Hz(70e3, { 25.0 });
 
   76       static const double a0 = 1.0;
 
   79       zmap[610.0] = a0/0.2890;
 
   80       zmap[600.0] = a0/0.2440;
 
   81       zmap[590.0] = a0/0.1570;
 
   82       zmap[580.0] = a0/0.1080;
 
   83       zmap[570.0] = a0/0.0799;
 
   84       zmap[560.0] = a0/0.0708;
 
   85       zmap[550.0] = a0/0.0638;
 
   86       zmap[540.0] = a0/0.0558;
 
   87       zmap[530.0] = a0/0.0507;
 
   88       zmap[520.0] = a0/0.0477;
 
   89       zmap[510.0] = a0/0.0357;
 
   90       zmap[500.0] = a0/0.0257;
 
   91       zmap[490.0] = a0/0.0196;
 
   92       zmap[480.0] = a0/0.0182;
 
   93       zmap[470.0] = a0/0.0182;
 
   94       zmap[460.0] = a0/0.0191;
 
   95       zmap[450.0] = a0/0.0200;
 
   96       zmap[440.0] = a0/0.0218;
 
   97       zmap[430.0] = a0/0.0237;
 
   98       zmap[420.0] = a0/0.0255;
 
   99       zmap[410.0] = a0/0.0291;
 
  100       zmap[400.0] = a0/0.0325;
 
  101       zmap[390.0] = a0/0.0363;
 
  102       zmap[380.0] = a0/0.0415;
 
  103       zmap[370.0] = a0/0.0473;
 
  104       zmap[360.0] = a0/0.0528;
 
  105       zmap[350.0] = a0/0.0629;
 
  106       zmap[340.0] = a0/0.0710;
 
  107       zmap[330.0] = a0/0.0792;
 
  108       zmap[320.0] = a0/0.0946;
 
  109       zmap[310.0] = a0/0.1090;
 
  110       zmap[300.0] = a0/0.1390;
 
  114     const double x = lambda;
 
  116     if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
 
  118       map_t::const_iterator 
i = zmap.lower_bound(x);
 
  119       map_t::const_iterator 
j = 
i;
 
  123       if (i == zmap.begin()) {
 
  128       const double x1 = i->first;
 
  129       const double x2 = j->first;
 
  131       const double y1 = i->second;
 
  132       const double y2 = j->second;
 
  134       return y1  +  (y2 - y1) * (x - x1) / (x2 - x1);
 
  157       zmap[307.0] =   19.7132;
 
  158       zmap[330.0] =   23.8280;
 
  159       zmap[350.0] =   27.6075;
 
  160       zmap[370.0] =   31.5448;
 
  161       zmap[390.0] =   35.6151;
 
  162       zmap[410.0] =   39.7971;
 
  163       zmap[430.0] =   44.0726;
 
  164       zmap[450.0] =   48.4261;
 
  165       zmap[470.0] =   52.8447;
 
  166       zmap[490.0] =   57.3172;
 
  167       zmap[510.0] =   61.8344;
 
  168       zmap[530.0] =   66.3884;
 
  169       zmap[550.0] =   70.9723;
 
  170       zmap[570.0] =   75.5804;
 
  171       zmap[590.0] =   80.2077;
 
  172       zmap[610.0] =   84.8497;
 
  176     const double x = lambda;
 
  178     if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
 
  180       map_t::const_iterator 
i = zmap.lower_bound(x);
 
  181       map_t::const_iterator 
j = 
i;
 
  185       if (i == zmap.begin()) {
 
  190       const double x1 = i->first;
 
  191       const double x2 = j->first;
 
  193       const double y1 = i->second;
 
  194       const double y2 = j->second;
 
  196       return y1  +  (y2 - y1) * (x - x1) / (x2 - x1);
 
  224     static const double a0 =  0.3265;
 
  225     static const double a1 =  0.6144;
 
  226     static const double a2 = -0.0343;
 
  227     static const double a3 = -0.0641;
 
  228     static const double a4 =  0.2988;
 
  229     static const double a5 = -0.1422;
 
  238       y = a0 + z*(a1 + z*(a2 + z*(a3 + z*(a4 + z*a5))));
 
  252     static const double a0 = 59.115;
 
  253     static const double a1 =  0.52258;
 
  254     static const double a2 =  0.60944E-02;
 
  255     static const double a3 = -0.16955E-03;
 
  256     static const double a4 =  0.60929E-06;
 
  266       const double z = acos(-x)*57.29578 + 57.75;
 
  268       y = (a0 + z*(a1 + z*(a2 + z*(a3 + z*a4)))) / 84.0;
 
  294   inline double getQE(
const double lambda, 
const bool option)
 
  298       tuple(
const double __QE,
 
  299             const double __l_gel,
 
  300             const double __l_glass) :
 
  311     static const tuple ntuple[] = {
 
  312       tuple(0.000e-2,   0.00,   0.00),
 
  313       tuple(1.988e-2, 100.81, 148.37),
 
  314       tuple(2.714e-2,  99.94, 142.87),
 
  315       tuple(3.496e-2,  99.89, 135.64),
 
  316       tuple(4.347e-2,  96.90, 134.58),
 
  317       tuple(5.166e-2,  96.42, 138.27),
 
  318       tuple(6.004e-2,  94.36, 142.40),
 
  319       tuple(6.885e-2,  89.09, 147.16),
 
  320       tuple(8.105e-2,  90.10, 151.80),
 
  321       tuple(10.13e-2,  86.95, 150.88),
 
  322       tuple(13.03e-2,  85.88, 145.68),
 
  323       tuple(15.29e-2,  84.49, 139.70),
 
  324       tuple(16.37e-2,  81.08, 126.55),
 
  325       tuple(17.11e-2,  78.18, 118.86),
 
  326       tuple(17.86e-2,  76.48, 113.90),
 
  327       tuple(18.95e-2,  74.55, 116.08),
 
  328       tuple(20.22e-2,  72.31, 109.23),
 
  329       tuple(21.26e-2,  68.05,  81.63),
 
  330       tuple(22.10e-2,  66.91,  65.66),
 
  331       tuple(22.65e-2,  64.48,  77.30),
 
  332       tuple(23.07e-2,  62.53,  73.02),
 
  333       tuple(23.14e-2,  59.38,  81.25),
 
  334       tuple(23.34e-2,  56.64, 128.04),
 
  335       tuple(22.95e-2,  53.29,  61.84),
 
  336       tuple(22.95e-2,  48.96,  19.23),
 
  337       tuple(22.74e-2,  45.71,  27.21),
 
  338       tuple(23.48e-2,  41.88,  18.09),
 
  339       tuple(22.59e-2,  37.14,   8.41),
 
  340       tuple(20.61e-2,  30.49,   3.92),
 
  341       tuple(17.68e-2,  23.08,   1.82),
 
  342       tuple(13.18e-2,  15.60,   0.84),
 
  343       tuple(7.443e-2,   8.00,   0.39),
 
  344       tuple(2.526e-2,   0.00,   0.17),
 
  345       tuple(0.000e-2,   0.00,   0.00)
 
  348     static const double cola    = 0.9;      
 
  349     static const double x_glass = 1.5;      
 
  350     static const double x_gel   = 1.0;      
 
  353     static const int    N    = 
sizeof(ntuple) / 
sizeof(ntuple[0])  -  1;
 
  355     static const double xmax = 620.0;       
 
  356     static const double xmin = 290.0;       
 
  358     const double x = lambda;
 
  362     if (x > xmin && x < xmax) {
 
  364       const int i = (int) (N * (x - xmax) / (xmin - 
xmax));
 
  365       const int j = (i == N ? i - 1 : i + 1); 
 
  367       const double x1 = xmax  +  i * (xmin - 
xmax) / N;
 
  368       const double x2 = xmax  +  j * (xmin - 
xmax) / N;
 
  370       const double dx = (x - x1) / (x1 - x2);
 
  372       const double QE      = ntuple[
i].QE       +  (ntuple[
i].QE      - ntuple[
j].QE     ) * dx;
 
  373       const double l_gel   = ntuple[
i].l_gel    +  (ntuple[
i].l_gel   - ntuple[
j].l_gel  ) * dx;
 
  374       const double l_glass = ntuple[
i].l_glass  +  (ntuple[
i].l_glass - ntuple[
j].l_glass) * dx;
 
  380         if (l_glass > 0.0 && l_gel > 0.0)
 
  381           y *= 
exp(-x_glass/l_glass) * 
exp(-x_gel/l_gel);
 
  397   inline double getQE(
const double lambda)
 
  399     return getQE(lambda, 
true);
 
double getPhotocathodeArea2D(const double x, const double lambda)
Get effective photo-cathode area of PMT. 
 
double getQE(const double lambda, const bool option)
Get quantum efficiency of PMT. 
 
double gamelle(const double x)
Angular acceptance of PMT (Gamelle). 
 
double getScatteringProbability(const double x)
Function to describe light scattering in water. 
 
double getAmbientPressure()
Get ambient pressure. 
 
const JK40Rates & getK40Rates()
Get K40 rates. 
 
double getPhotocathodeArea()
Get photo-cathode area of PMT. 
 
then usage $script[energy[distance[z of PMT]]] fi case set_variable z
 
then usage $script< input file >[option[primary[working directory]]] nWhere option can be N
 
double getAbsorptionLength(const double lambda)
Get absorption length. 
 
double p00075(const double x)
Model specific function to describe light scattering in water (p00075). 
 
double getScatteringLength(const double lambda)
Get scattering length. 
 
double getAngularAcceptance(const double x)
Get angular acceptance of PMT. 
 
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
 
Auxiliary class for K40 rates. 
 
double genova(const double x)
Angular acceptance of PMT (Genova).