Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
ANTARES Namespace Reference

Name space for Antares. More...

Functions

const JK40RatesgetK40Rates ()
 Get K40 rates.
 
double getAmbientPressure ()
 Get ambient pressure.
 
double getPhotocathodeArea ()
 Get photo-cathode area of PMT.
 
double getAbsorptionLength (const double lambda)
 Get absorption length.
 
double getScatteringLength (const double lambda)
 Get scattering length.
 
double getScatteringProbability (const double x)
 Function to describe light scattering in water.
 
double genova (const double x)
 Angular acceptance of PMT (Genova).
 
double gamelle (const double x)
 Angular acceptance of PMT (Gamelle).
 
double getAngularAcceptance (const double x)
 Get angular acceptance of PMT.
 
double getQE (const double lambda, const bool option)
 Get quantum efficiency of PMT.
 
double getQE (const double lambda)
 Get quantum efficiency of PMT.
 
double getPhotocathodeArea2D (const double x, const double lambda)
 Get effective photo-cathode area of PMT.
 
void setClock ()
 Set clock.
 

Detailed Description

Name space for Antares.

Function Documentation

◆ getK40Rates()

const JK40Rates & ANTARES::getK40Rates ( )
inline

Get K40 rates.

Returns
K40 rates [Hz]

Definition at line 27 of file Antares.hh.

28 {
29 static const JK40Rates rates_Hz(70e3, { 25.0 });
30
31 return rates_Hz;
32 }
Auxiliary class for K40 rates.
Definition JK40Rates.hh:41

◆ getAmbientPressure()

double ANTARES::getAmbientPressure ( )
inline

Get ambient pressure.

Returns
pressure [Atm]

Definition at line 40 of file Antares.hh.

41 {
42 return 240.0; // ambient pressure [Atm]
43 }

◆ getPhotocathodeArea()

double ANTARES::getPhotocathodeArea ( )
inline

Get photo-cathode area of PMT.

Returns
photo-cathode area [m^2]

Definition at line 51 of file Antares.hh.

52 {
53 return 440e-4; // photo-cathode area [m^2]
54 }

◆ getAbsorptionLength()

double ANTARES::getAbsorptionLength ( const double lambda)
inline

Get absorption length.

Parameters
lambdawavelength of light [nm]
Returns
absorption length [m]

values taken from:

afs/in2p3.fr/home/throng/antares/src/km3/v3r6/src/hit-ini_optic.f

Definition at line 63 of file Antares.hh.

64 {
65 typedef std::map<double, double> map_t;
66
67 static map_t zmap;
68
69 if (zmap.empty()) {
70 /**
71 * values taken from:
72 *
73 * afs/in2p3.fr/home/throng/antares/src/km3/v3r6/src/hit-ini_optic.f
74 */
75 //static const double a0 = 0.971;
76 static const double a0 = 1.0;
77
78 zmap[620.0] = 0.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;
111 zmap[290.0] = 0.0;
112 }
113
114 const double x = lambda;
115
116 if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
117
118 map_t::const_iterator i = zmap.lower_bound(x);
119 map_t::const_iterator j = i;
120
121 --j;
122
123 if (i == zmap.begin()) {
124 ++i;
125 ++j;
126 }
127
128 const double x1 = i->first;
129 const double x2 = j->first;
130
131 const double y1 = i->second;
132 const double y2 = j->second;
133
134 return y1 + (y2 - y1) * (x - x1) / (x2 - x1);
135
136 } else
137
138 return 0.0;
139 }
int j
Definition JPolint.hh:801

◆ getScatteringLength()

double ANTARES::getScatteringLength ( const double lambda)
inline

Get scattering length.

Parameters
lambdawavelength of light [nm]
Returns
scattering length [m]

Definition at line 148 of file Antares.hh.

149 {
150 typedef std::map<double, double> map_t;
151
152 static map_t zmap;
153
154 if (zmap.empty()) {
155
156 zmap[200.0] = 0.0;
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;
173 zmap[650.0] = 95.0;
174 }
175
176 const double x = lambda;
177
178 if (x > zmap.begin()->first && x < zmap.rbegin()->first) {
179
180 map_t::const_iterator i = zmap.lower_bound(x);
181 map_t::const_iterator j = i;
182
183 --j;
184
185 if (i == zmap.begin()) {
186 ++i;
187 ++j;
188 }
189
190 const double x1 = i->first;
191 const double x2 = j->first;
192
193 const double y1 = i->second;
194 const double y2 = j->second;
195
196 return y1 + (y2 - y1) * (x - x1) / (x2 - x1);
197
198 } else
199
200 return 0.0;
201 }

◆ getScatteringProbability()

double ANTARES::getScatteringProbability ( const double x)
inline

Function to describe light scattering in water.

Parameters
xcosine scattering angle
Returns
probability

Definition at line 210 of file Antares.hh.

211 {
212 return JPHYSICS::p00075(x);
213 }
double p00075(const double x)
Model specific function to describe light scattering in water (p00075).

◆ genova()

double ANTARES::genova ( const double x)
inline

Angular acceptance of PMT (Genova).

Parameters
xcosine of angle of incidence
Returns
probability

Definition at line 222 of file Antares.hh.

223 {
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;
230
231 const double z = -x;
232
233 double y = 0.0;
234
235 if (z < -0.65)
236 y = 0.0;
237 else
238 y = a0 + z*(a1 + z*(a2 + z*(a3 + z*(a4 + z*a5))));
239
240 return y;
241 }

◆ gamelle()

double ANTARES::gamelle ( const double x)
inline

Angular acceptance of PMT (Gamelle).

Parameters
xcosine angle of incidence
Returns
probability

Definition at line 250 of file Antares.hh.

251 {
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;
257
258 double y = 0.0;
259
260 if (x > +0.36)
261 y = 0.0;
262 else if (x < -1.00)
263 y = 1.0;
264 else {
265
266 const double z = acos(-x)*57.29578 + 57.75;
267
268 y = (a0 + z*(a1 + z*(a2 + z*(a3 + z*a4)))) / 84.0;
269 }
270
271 return y;
272 }

◆ getAngularAcceptance()

double ANTARES::getAngularAcceptance ( const double x)
inline

Get angular acceptance of PMT.

Parameters
xcosine of angle of incidence
Returns
probability

Definition at line 281 of file Antares.hh.

282 {
283 return genova(x);
284 }
double genova(const double x)
Angular acceptance of PMT (Genova).
Definition Antares.hh:222

◆ getQE() [1/2]

double ANTARES::getQE ( const double lambda,
const bool option )
inline

Get quantum efficiency of PMT.

Parameters
lambdawavelength of photon [nm]
optioninclude absorption in glass and gel (if true, otherwise not)
Returns
quantum efficiency

Definition at line 294 of file Antares.hh.

295 {
296 class tuple {
297 public:
298 tuple(const double __QE,
299 const double __l_gel,
300 const double __l_glass) :
301 QE (__QE),
302 l_gel (__l_gel),
303 l_glass(__l_glass)
304 {}
305
306 double QE; // Quantum efficiiency
307 double l_gel; // gel absorption length [cm]
308 double l_glass; // glass absorption length [cm]
309 };
310
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)
346 };
347
348 static const double cola = 0.9; // collection efficiency
349 static const double x_glass = 1.5; // glass thickness [cm]
350 static const double x_gel = 1.0; // gel thickness [cm]
351
352 // ntuple
353 static const int N = sizeof(ntuple) / sizeof(ntuple[0]) - 1;
354
355 static const double xmax = 620.0; // maximal wavelength [nm] (tuple[ 0 ])
356 static const double xmin = 290.0; // minimal wavelength [nm] (tuple[N-1])
357
358 const double x = lambda;
359
360 double y = 0.0;
361
362 if (x > xmin && x < xmax) {
363
364 const int i = (int) (N * (x - xmax) / (xmin - xmax));
365 const int j = (i == N ? i - 1 : i + 1);
366
367 const double x1 = xmax + i * (xmin - xmax) / N;
368 const double x2 = xmax + j * (xmin - xmax) / N;
369
370 const double dx = (x - x1) / (x1 - x2);
371
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;
375
376 y = cola * QE;
377
378 if (option) {
379
380 if (l_glass > 0.0 && l_gel > 0.0)
381 y *= exp(-x_glass/l_glass) * exp(-x_gel/l_gel);
382 else
383 y = 0.0;
384 }
385 }
386
387 return y;
388 }
const double xmax
const double xmin

◆ getQE() [2/2]

double ANTARES::getQE ( const double lambda)
inline

Get quantum efficiency of PMT.

Parameters
lambdawavelength of photon [nm]
Returns
quantum efficiency

Definition at line 397 of file Antares.hh.

398 {
399 return getQE(lambda, true);
400 }

◆ getPhotocathodeArea2D()

double ANTARES::getPhotocathodeArea2D ( const double x,
const double lambda )
inline

Get effective photo-cathode area of PMT.

Parameters
xcosine of angle of incidence
lambdawavelength of photon [nm]
Returns
photo-cathode area [m^2]

Definition at line 410 of file Antares.hh.

411 {
412 return getPhotocathodeArea() * getQE(lambda) * getAngularAcceptance(x);
413 }
double getAngularAcceptance(const double x)
Angular acceptence of PMT.
Definition JDrawLED.cc:68
double getPhotocathodeArea()
Get photo-cathode area of PMT.
Definition Antares.hh:51

◆ setClock()

void ANTARES::setClock ( )
inline

Set clock.

Definition at line 297 of file JDAQClock.hh.

298 {
300 }
Auxiliary class to set DAQ system clock parameters.
Definition JDAQClock.hh:27