81{
83
86 int number_of_points;
88 double D;
89 double ct;
91 double wavelength;
92 double absorptionLength;
93 double scatteringLength;
95
96 try {
97
98 JParser<> zap(
"Example program to draw PDF from LED beacon.");
99
104 zap[
'A'] =
make_field(absorptionLength) = 50.0;
105 zap[
'S'] =
make_field(scatteringLength) = 50.0;
111
112 zap(argc, argv);
113 }
114 catch(const exception &error) {
115 FATAL(error.what() << endl);
116 }
117
118
119 const double theta = dir.first;
120 const double phi = dir.second;
121
123
124
125
126 const double P_atm = 240.0;
127 const double tmin = -10.0;
128 const double tmax = +10.0;
129 const double A = 440e-4;
130 const double R_Hz = 0.0e3;
131
133
134
135 const double lm = scatteringLength / 0.83;
136 const double lr = scatteringLength / 0.17;
137
138 const double cs = 0.83 * 0.92;
139
140 const double l_abs = absorptionLength;
141 const double ls = scatteringLength;
142 const double l_att = l_abs * lr / (l_abs + lr);
143
144
146
147 cout << "Rayleigh scattering length " << lr << " m" << endl;
148 cout << "Mie scattering length " << lm << " m" << endl;
149 cout << "Absorption length " << l_abs << " m" << endl;
150
152 pdfMie(A,
153 led,
154 ANTARES::getQE,
156 l_abs,
157 lm,
158 henyey_greenstein,
159 P_atm,
160 wavelength,
161 tmin,
162 tmax,
165 epsilon);
166
167
169 pdfRayleigh(A,
170 led,
171 ANTARES::getQE,
173 l_att,
174 lr,
175 rayleigh,
176 P_atm,
177 wavelength,
178 tmin,
179 tmax,
182 epsilon);
183
184
186
187 TH1D h0("h0", NULL, 430, -15.0, +200.0);
188 TH1D h1("h1", NULL, 430, -15.0, +200.0);
189 TH1D h2("h2", NULL, 430, -15.0, +200.0);
190 TH1D h3("h3", NULL, 430, -15.0, +200.0);
191 TH1D ha("ha", NULL, 430, -15.0, +200.0);
192
195
196
197 for (int i = 1; i <= h1.GetNbinsX(); ++i) {
198
199 const double t1 = h1.GetBinCenter(i);
200
201 const double F1 = pdfMie .getDirectLightFromLED (D, ct, theta, phi, t1);
202 const double F2 = pdfMie .getScatteredLightFromLED(D, ct, theta, phi, t1);
203 const double F3 = pdfRayleigh.getScatteredLightFromLED(D, ct, theta, phi, t1);
204
205
206 h0.SetBinContent(i, F1 + F2 + F3);
207 h1.SetBinContent(i, F1);
208 h2.SetBinContent(i, F2);
209 h3.SetBinContent(i, F3);
210
212 f[1][t1] = F2;
213 f[2][t1] = F3;
214 f[3][t1] =
F1 + F2 + F3;
215
216 f1[t1] =
F1 + F2 + F3;
217 }
218
220
221 for (int i = 3; i != sizeof(f)/sizeof(f[0]); ++i) {
222
223 f[i].compile();
224
226
227
228 const double lz = l_abs *
ls / (l_abs*(1.0-cs) +
ls);
229
230 NOTICE(
"int " << quantiles.getIntegral() * D*D * exp(D/lz) << endl);
231
232 DEBUG(
"D " << D << endl);
233 DEBUG(
"ct " << ct << endl);
234 DEBUG(
"theta " << theta << endl);
235 DEBUG(
"phi " << phi << endl);
236 DEBUG(
"int " << quantiles.getIntegral() << endl);
237 DEBUG(
"t1 " << quantiles.getX() << endl);
238 DEBUG(
"max " << quantiles.getY() << endl);
239 DEBUG(
"FWHM " << quantiles.getFWHM() << endl);
240 }
241
242
243 const double Tmin = ha.GetXaxis()->GetXmin();
244 const double Tmax = ha.GetXaxis()->GetXmax();
245
246 const double V =
f1.rbegin()->
getIntegral() + R_Hz * 1e-9 * (Tmax - Tmin);
247
248 for (int i = 1; i <= ha.GetNbinsX(); ++i) {
249
250 const double t1 = ha.GetBinCenter(i);
251
252 JSplineFunction1S_t::result_type p =
f1(t1);
253
254 double v = p.v + R_Hz * 1e-9 * (t1 - Tmin);
255 double y = p.f + R_Hz * 1e-9;
256
257 const double W = exp(-v) *
y / (1.0 - exp(-V));
258
259 ha.SetBinContent(i,W);
260 }
261
262 delete led;
263
264 out.Write();
265 out.Close();
266}
double getAngularAcceptance(const double x)
Angular acceptence of PMT.
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Utility class to parse command line options.
Implementation of dispersion for water in deep sea.
Probability Density Functions of the time response of a PMT (C-like interface)
Light yield from LED (number of p.e.
const JPolynome F1
Integral.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
double getIntegral(const double x) const
Integral value.
Auxiliary data structure to list files in directory.