52 int main(
int argc,
char **argv)
66 JParser<> zap(
"Program to create interpolation tables of the PDF of the arrival time of the Cherenkov light from a muon.");
87 catch(
const exception &error) {
88 FATAL(error.what() << endl);
92 typedef double (
JPDF::*fcn)(
const double,
131 NOTICE(
"building multi-dimensional function object <" <<
function <<
">... " << flush);
134 const double kmin = pdf_c.
getKappa(wmax);
135 const double kmax = pdf_c.
getKappa(wmin);
136 const double cmin = pdf_c.
getKmin (wmax);
147 if (zmap.find(
function) == zmap.end()) {
148 FATAL(
"illegal function specifier" << endl);
151 fcn f = zmap[
function].first;
152 JFunction3DTransformer_t transformer = zmap[
function].second;
219 for (
double buffer[] = { -0.01, -0.005, 0.0, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, -1.0 }, *
x = buffer; *
x != -1.0; ++
x) {
224 for (
double x = 0.01;
x < 0.1;
x += 0.0025) {
229 for (
double x = 0.10;
x < 0.5;
x += 0.010) {
321 const double grid = 5.0;
323 const double alpha = 2.0 * sqrt(1.0 - cos(grid *
PI / 180.0));
328 const double R_m = *
r;
330 const unsigned int number_of_theta_points = max(2u, (
unsigned int) (180.0/(1.4 * grid)));
332 for (
double theta = 0.0; theta <=
PI +
epsilon; theta +=
PI/number_of_theta_points) {
334 const unsigned int number_of_phi_points = max(2u, (
unsigned int) (
PI * sin(theta) / alpha));
336 for (
double phi = 0.0; phi <=
PI +
epsilon; phi +=
PI/number_of_phi_points) {
338 JFunction1D_t&
f1 = pdf[R_m][theta][phi];
340 const JArray_t
array(R_m, theta, phi);
342 double t_old = transformer.getXn(
array, *X.begin());
347 const double t = transformer.getXn(
array, *
x);
348 const double y = (pdf_c.*f)(R_m, theta, phi, t);
353 WARNING(
"dt < 0 " << *
x <<
' ' << R_m <<
' ' << t <<
' ' <<
y << endl);
376 pdf.transform(transformer);
390 FATAL(error.what() << endl);
Properties of Antares PMT and deep-sea water.
double getAngularAcceptance(const double x)
Angular acceptence of PMT.
Various implementations of functional maps.
int main(int argc, char **argv)
double getAbsorptionLength(const double lambda)
double getScatteringLength(const double lambda)
double absorptionLengthFactor
Scaling of absorption and scattering length.
double scatteringLengthFactor
General purpose messaging.
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.
double getKappa(const double lambda) const
Get effective index of refraction for muon light.
double getKmin(const double lambda) const
Get smallest index of refraction for Bremsstrahlung light (i.e. point at which dt/dz = 0).
Multi-dimensional PDF table for arrival time of Cherenkov light.
Probability Density Functions of the time response of a PMT with an implementation of the JAbstractPM...
Low level interface for the calculation of the Probability Density Functions (PDFs) of the arrival ti...
double getAmbientPressure()
Get ambient pressure.
double getScatteringProbability(const double x)
Function to describe light scattering in water.
double getPhotocathodeArea()
Get photo-cathode area of PMT.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
double getQE(const double R, const double mu)
Get QE for given ratio of hit probabilities and expectation value of the number of photo-electrons.
static const double PI
Mathematical constants.
double getMinimalWavelength()
Get minimal wavelength for PDF evaluations.
@ SCATTERED_LIGHT_FROM_DELTARAYS
scattered light from delta-rays
@ DIRECT_LIGHT_FROM_EMSHOWERS
direct light from EM showers
@ SCATTERED_LIGHT_FROM_EMSHOWERS
scattered light from EM showers
@ SCATTERED_LIGHT_FROM_MUON
scattered light from muon
@ DIRECT_LIGHT_FROM_DELTARAYS
direct light from delta-rays
@ DIRECT_LIGHT_FROM_MUON
direct light from muon
double getMaximalWavelength()
Get maximal wavelength for PDF evaluations.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Empty structure for specification of parser element that is not initialised (i.e. does require input)...