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);