49 const double dt)
const
53 static const double sigma = 2.0;
55 const double x = dt /
sigma;
80 int main(
int argc,
char **argv)
92 double absorptionLength;
93 double scatteringLength;
98 JParser<> zap(
"Example program to draw PDF from LED beacon.");
104 zap[
'A'] =
make_field(absorptionLength) = 50.0;
105 zap[
'S'] =
make_field(scatteringLength) = 50.0;
114 catch(
const exception &error) {
115 FATAL(error.what() << endl);
119 const double theta = dir.first;
120 const double phi = dir.second;
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;
135 const double lm = scatteringLength / 0.83;
136 const double lr = scatteringLength / 0.17;
138 const double cs = 0.83 * 0.92;
140 const double l_abs = absorptionLength;
141 const double ls = scatteringLength;
142 const double l_att = l_abs * lr / (l_abs + lr);
147 cout <<
"Rayleigh scattering length " << lr <<
" m" << endl;
148 cout <<
"Mie scattering length " << lm <<
" m" << endl;
149 cout <<
"Absorption length " << l_abs <<
" m" << endl;
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);
197 for (
int i = 1; i <= h1.GetNbinsX(); ++i) {
199 const double t1 = h1.GetBinCenter(i);
206 h0.SetBinContent(i,
F1 + F2 + F3);
207 h1.SetBinContent(i,
F1);
208 h2.SetBinContent(i, F2);
209 h3.SetBinContent(i, F3);
214 f[3][t1] =
F1 + F2 + F3;
216 f1[t1] =
F1 + F2 + F3;
221 for (
int i = 3; i !=
sizeof(f)/
sizeof(f[0]); ++i) {
228 const double lz = l_abs *
ls / (l_abs*(1.0-cs) +
ls);
232 DEBUG(
"D " << D << endl);
233 DEBUG(
"ct " << ct << endl);
234 DEBUG(
"theta " << theta << endl);
235 DEBUG(
"phi " << phi << endl);
237 DEBUG(
"t1 " << quantiles.
getX() << endl);
238 DEBUG(
"max " << quantiles.
getY() << endl);
243 const double Tmin = ha.GetXaxis()->GetXmin();
244 const double Tmax = ha.GetXaxis()->GetXmax();
246 const double V =
f1.rbegin()->
getIntegral() + R_Hz * 1e-9 * (Tmax - Tmin);
248 for (
int i = 1; i <= ha.GetNbinsX(); ++i) {
250 const double t1 = ha.GetBinCenter(i);
252 JSplineFunction1S_t::result_type p =
f1(t1);
254 double v = p.v + R_Hz * 1e-9 * (t1 - Tmin);
255 double y = p.f + R_Hz * 1e-9;
257 const double W = exp(-
v) *
y / (1.0 - exp(-V));
259 ha.SetBinContent(i,W);
Properties of Antares PMT and deep-sea water.
std::pair< double, double > orientation
int main(int argc, char **argv)
std::istream & operator>>(std::istream &in, orientation &x)
double getAngularAcceptance(const double x)
Angular acceptence of PMT.
std::ostream & operator<<(std::ostream &out, const orientation &x)
General purpose messaging.
#define DEBUG(A)
Message macros.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Properties of KM3NeT PMT and deep-sea water.
Utility class to parse command line options.
Interface for emission profile from LED.
Implementation of dispersion for water in deep sea.
Probability Density Functions of the time response of a PMT (C-like interface)
double getDirectLightFromLED(const double D_m, const double cd, const double theta, const double phi, const double t_ns) const
Probability density function for direct light from LED.
double getScatteredLightFromLED(const double D_m, const double cd, const double theta, const double phi, const double t_ns) const
Probability density function for scattered light from LED.
Light yield from LED (number of p.e.
double getLightFromLED(const double ct, const double phi, const double dt) const
Light yield from LED (number of p.e.
double getAngularAcceptance(const double x)
Get angular acceptance of PMT.
double getQE(const double lambda, const bool option)
Get quantum efficiency of PMT.
const JPolynome F1
Integral.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
static const double PI
Mathematical constants.
double henyey_greenstein(const double g, const double x)
Auxiliary method to describe light scattering in water (Henyey-Greenstein).
double rayleigh(const double a, const double x)
Auxiliary method to describe light scattering in water (Rayleigh).
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.