2 #ifndef __JPHYSICS__TOULON__
3 #define __JPHYSICS__TOULON__
88 const double x = lambda;
90 if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
92 map_t::const_iterator i = zmap.lower_bound(x);
93 map_t::const_iterator
j = i;
97 if (i == zmap.begin()) {
102 const double x1 = i->first;
103 const double x2 = j->first;
105 const double y1 = i->second;
106 const double y2 = j->second;
108 return y1 + (y2 - y1) * (x - x1) / (x2 - x1);
130 zmap[300.0] = 32.290;
131 zmap[310.0] = 34.000;
132 zmap[320.0] = 35.730;
133 zmap[330.0] = 37.480;
134 zmap[340.0] = 39.260;
135 zmap[350.0] = 41.070;
136 zmap[360.0] = 42.890;
137 zmap[370.0] = 44.740;
138 zmap[380.0] = 46.600;
139 zmap[390.0] = 48.490;
140 zmap[400.0] = 50.390;
141 zmap[410.0] = 52.310;
142 zmap[420.0] = 54.250;
143 zmap[430.0] = 56.210;
144 zmap[440.0] = 58.180;
145 zmap[450.0] = 60.160;
146 zmap[460.0] = 62.160;
147 zmap[470.0] = 64.180;
148 zmap[480.0] = 66.210;
149 zmap[490.0] = 68.240;
150 zmap[500.0] = 70.300;
151 zmap[510.0] = 72.360;
152 zmap[520.0] = 74.430;
153 zmap[530.0] = 76.510;
154 zmap[540.0] = 78.610;
155 zmap[550.0] = 80.710;
156 zmap[560.0] = 82.820;
157 zmap[570.0] = 84.940;
158 zmap[580.0] = 87.070;
159 zmap[590.0] = 89.200;
160 zmap[600.0] = 91.340;
161 zmap[610.0] = 93.490;
162 zmap[620.0] = 95.000;
165 const double x = lambda;
167 if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
169 map_t::const_iterator i = zmap.lower_bound(x);
170 map_t::const_iterator
j = i;
174 if (i == zmap.begin()) {
179 const double x1 = i->first;
180 const double x2 = j->first;
182 const double y1 = i->second;
183 const double y2 = j->second;
185 return y1 + (y2 - y1) * (x - x1) / (x2 - x1);
207 zmap[300.0] = 43.410;
208 zmap[310.0] = 49.990;
209 zmap[320.0] = 57.300;
210 zmap[330.0] = 65.400;
211 zmap[340.0] = 74.360;
212 zmap[350.0] = 84.230;
213 zmap[360.0] = 95.080;
214 zmap[370.0] = 106.970;
215 zmap[380.0] = 119.970;
216 zmap[390.0] = 134.140;
217 zmap[400.0] = 149.570;
218 zmap[410.0] = 166.330;
219 zmap[420.0] = 184.490;
220 zmap[430.0] = 204.130;
221 zmap[440.0] = 225.340;
222 zmap[450.0] = 248.200;
223 zmap[460.0] = 272.800;
224 zmap[470.0] = 299.230;
225 zmap[480.0] = 327.590;
226 zmap[490.0] = 357.960;
227 zmap[500.0] = 390.450;
228 zmap[510.0] = 425.150;
229 zmap[520.0] = 462.170;
230 zmap[530.0] = 501.620;
231 zmap[540.0] = 543.610;
232 zmap[550.0] = 588.240;
233 zmap[560.0] = 635.620;
234 zmap[570.0] = 685.890;
235 zmap[580.0] = 739.150;
236 zmap[590.0] = 795.530;
237 zmap[600.0] = 855.150;
238 zmap[610.0] = 918.140;
239 zmap[620.0] = 979.000;
242 const double x = lambda;
244 if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
246 map_t::const_iterator i = zmap.lower_bound(x);
247 map_t::const_iterator
j = i;
251 if (i == zmap.begin()) {
256 const double x1 = i->first;
257 const double x2 = j->first;
259 const double y1 = i->second;
260 const double y2 = j->second;
262 return y1 + (y2 - y1) * (x - x1) / (x2 - x1);
281 const double a0 = 1.0 / (1.0 + a/3.0) / (4*
PI);
283 return a0 * (1.0 + a*x*x);
307 static JPolint2Function1D_t f1;
311 f1[+0.0017] = +19.377;
312 f1[+0.0022] = +17.907;
313 f1[+0.0028] = +16.464;
314 f1[+0.0035] = +15.333;
315 f1[+0.0044] = +14.148;
316 f1[+0.0055] = +13.043;
317 f1[+0.0069] = +12.059;
318 f1[+0.0087] = +12.021;
319 f1[+0.0110] = +9.992;
320 f1[+0.0139] = +8.898;
321 f1[+0.0175] = +7.853;
322 f1[+0.0220] = +6.845;
323 f1[+0.0277] = +5.900;
324 f1[+0.0348] = +4.989;
325 f1[+0.0438] = +4.175;
326 f1[+0.0552] = +3.473;
327 f1[+0.0695] = +2.870;
328 f1[+0.0875] = +2.358;
329 f1[+0.1101] = +1.938;
330 f1[+0.1386] = +1.579;
331 f1[+0.1745] = +1.258;
332 f1[+0.2618] = +0.796;
333 f1[+0.3491] = +0.525;
334 f1[+0.4363] = +0.391;
335 f1[+0.5236] = +0.270;
336 f1[+0.6109] = +0.214;
337 f1[+0.6981] = +0.170;
338 f1[+0.7854] = +0.136;
339 f1[+0.8727] = +0.110;
340 f1[+0.9599] = +0.087;
341 f1[+1.0472] = +0.071;
342 f1[+1.1345] = +0.060;
343 f1[+1.2217] = +0.050;
344 f1[+1.3090] = +0.042;
345 f1[+1.3963] = +0.036;
346 f1[+1.4835] = +0.031;
347 f1[+1.5708] = +0.027;
348 f1[+1.6581] = +0.024;
349 f1[+1.7453] = +0.021;
350 f1[+1.8326] = +0.019;
351 f1[+1.9199] = +0.017;
352 f1[+2.0071] = +0.016;
353 f1[+2.0944] = +0.015;
354 f1[+2.1817] = +0.013;
355 f1[+2.2689] = +0.012;
356 f1[+2.3562] = +0.011;
357 f1[+2.4435] = +0.009;
358 f1[+2.5307] = +0.008;
359 f1[+2.6180] = +0.007;
360 f1[+2.7053] = +0.007;
361 f1[+2.7925] = +0.006;
362 f1[+2.8798] = +0.005;
363 f1[+2.9671] = +0.003;
364 f1[+3.0543] = +0.002;
365 f1[+3.1416] = -0.000;
367 for (JPolint1Function1D_t::iterator i = f1.begin(); i != f1.end(); ++i) {
369 const double x = i->getX();
370 const double y = i->getY();
377 f1.setExceptionHandler(
new JPolint2Function1D_t::JDefaultResult(0.0));
380 const double x = acos(ct);
394 static JGridPolint1Function1D_t f1;
802 f1.setExceptionHandler(
new JGridPolint1Function1D_t::JDefaultResult(0.0));
817 inline double getQE(
const double lambda,
const bool option)
821 tuple(
const double __QE,
822 const double __l_gel,
823 const double __l_glass) :
834 static const tuple ntuple[] = {
835 tuple(0.000e-2, 0.00, 0.00),
836 tuple(1.988e-2, 100.81, 148.37),
837 tuple(2.714e-2, 99.94, 142.87),
838 tuple(3.496e-2, 99.89, 135.64),
839 tuple(4.347e-2, 96.90, 134.58),
840 tuple(5.166e-2, 96.42, 138.27),
841 tuple(6.004e-2, 94.36, 142.40),
842 tuple(6.885e-2, 89.09, 147.16),
843 tuple(8.105e-2, 90.10, 151.80),
844 tuple(10.13e-2, 86.95, 150.88),
845 tuple(13.03e-2, 85.88, 145.68),
846 tuple(15.29e-2, 84.49, 139.70),
847 tuple(16.37e-2, 81.08, 126.55),
848 tuple(17.11e-2, 78.18, 118.86),
849 tuple(17.86e-2, 76.48, 113.90),
850 tuple(18.95e-2, 74.55, 116.08),
851 tuple(20.22e-2, 72.31, 109.23),
852 tuple(21.26e-2, 68.05, 81.63),
853 tuple(22.10e-2, 66.91, 65.66),
854 tuple(22.65e-2, 64.48, 77.30),
855 tuple(23.07e-2, 62.53, 73.02),
856 tuple(23.14e-2, 59.38, 81.25),
857 tuple(23.34e-2, 56.64, 128.04),
858 tuple(22.95e-2, 53.29, 61.84),
859 tuple(22.95e-2, 48.96, 19.23),
860 tuple(22.74e-2, 45.71, 27.21),
861 tuple(23.48e-2, 41.88, 18.09),
862 tuple(22.59e-2, 37.14, 8.41),
863 tuple(20.61e-2, 30.49, 3.92),
864 tuple(17.68e-2, 23.08, 1.82),
865 tuple(13.18e-2, 15.60, 0.84),
866 tuple(7.443e-2, 8.00, 0.39),
867 tuple(2.526e-2, 0.00, 0.17),
868 tuple(0.000e-2, 0.00, 0.00)
871 static const double cola = 0.9;
872 static const double x_glass = 1.5;
873 static const double x_gel = 1.0;
876 static const int N =
sizeof(ntuple) /
sizeof(ntuple[0]) - 1;
878 static const double xmax = 620.0;
879 static const double xmin = 290.0;
881 const double x = lambda;
885 if (x > xmin && x < xmax) {
887 const int i = (int) (N * (x - xmax) / (xmin - xmax));
888 const int j = (i == N ? i - 1 : i + 1);
890 const double x1 = xmax + i * (xmin - xmax) / N;
891 const double x2 = xmax + j * (xmin - xmax) / N;
893 const double dx = (x - x1) / (x1 - x2);
895 const double QE = ntuple[i].QE + (ntuple[i].QE - ntuple[
j].QE ) * dx;
896 const double l_gel = ntuple[i].l_gel + (ntuple[i].l_gel - ntuple[
j].l_gel ) * dx;
897 const double l_glass = ntuple[i].l_glass + (ntuple[i].l_glass - ntuple[
j].l_glass) * dx;
903 if (l_glass > 0.0 && l_gel > 0.0)
904 y *=
exp(-x_glass/l_glass) *
exp(-x_gel/l_gel);
920 inline double getQE(
const double lambda)
922 return getQE(lambda,
true);
fi JEventTimesliceWriter a
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.
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable OUTPUT_FILE histogram.root JHistogram1D -o $WORKDIR/$OUTPUT_FILE -F "$FORMULA" -