55 int main(
int argc,
char **argv)
69 JParser<> zap(
"Program to create interpolation tables of the PDF of the arrival time of the Cherenkov light from a shower.");
87 catch(
const exception &error) {
88 FATAL(error.what() << endl);
92 typedef double (
JPDF::*fcn)(
const double,
133 NOTICE(
"building multi-dimensional function object <" <<
function <<
">... " << flush);
144 if (zmap.find(
function) == zmap.end()) {
145 FATAL(
"illegal function specifier" << endl);
148 fcn f = zmap[
function].first;
149 JFunction4DTransformer_t transformer = zmap[
function].second;
183 for (JQuadrature::const_iterator i = qeant.begin(); i != qeant.end(); ++i)
194 for (
double buffer[] = { 0.0, 0.005, 0.01, 0.015, -1 }, *
x = buffer; *
x >= 0; ++
x) {
199 for (
double x = 0.02;
x < 0.99;
x += 0.01)
274 const double grid = 7.0;
276 const double alpha = 2.0 * sqrt(1.0 - cos(grid *
PI / 180.0));
281 const double D_m = *d;
285 const double cd = *c;
287 const unsigned int number_of_theta_points = max(2u, (
unsigned int) (180.0/(1.4 * grid)));
289 for (
double theta = 0.0; theta <=
PI +
epsilon; theta +=
PI/number_of_theta_points) {
291 const unsigned int number_of_phi_points = max(2u, (
unsigned int) (
PI * sin(theta) / alpha));
293 for (
double phi = 0.0; phi <=
PI +
epsilon; phi +=
PI/number_of_phi_points) {
295 JFunction1D_t&
f1 = pdf[D_m][cd][theta][phi];
297 const JArray_t
array(D_m, cd, theta, phi);
299 double t_old = transformer.getXn(
array, *X.begin());
304 const double t = transformer.getXn(
array, *
x);
305 const double y = (pdf_c.*f)(D_m, cd, theta, phi, t);
310 WARNING(
"dt < 0 " << *
x <<
' ' << D_m <<
' ' << t <<
' ' <<
y << endl);
334 pdf.transform(transformer);
348 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
Auxiliary classes for numerical integration.
Properties of KM3NeT PMT and deep-sea water.
Utility class to parse command line options.
virtual double getIndexOfRefractionGroup(const double lambda) const
Index of refraction for group velocity.
Function object for the probability density function of photon emission from EM-shower as a function ...
Probability density function of photon emission from EM-shower as a function of cosine of the emissio...
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.
static const JGeanx geanx(0.35, -5.40)
Function object for the number of photons from EM-shower as a function of emission angle.
double getMinimalWavelength()
Get minimal wavelength for PDF evaluations.
@ SCATTERED_LIGHT_FROM_EMSHOWER
scattered light from EM shower
@ SCATTERED_LIGHT_FROM_MUON_5D
scattered light from muon
@ DIRECT_LIGHT_FROM_EMSHOWER
direct light from EM shower
double getMaximalWavelength()
Get maximal wavelength for PDF evaluations.
static const double C
Physics constants.
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)...