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).
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
double getScatteringProbability(const double x)
Function to describe light scattering in water.
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"` typeset -Z 4 STRING JOpera1D -f hydrophone.root
double getAmbientPressure()
Get ambient pressure.
const JK40Rates & getK40Rates()
Get K40 rates.
double getPhotocathodeArea()
Get photo-cathode area of PMT.
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.
Auxiliary class for K40 rates.
double genova(const double x)
Angular acceptance of PMT (Genova).