66     JParser<> zap(
"Program to create interpolation tables of the PDF of the arrival time of the Cherenkov light from a muon.");
 
   70     zap[
'e'] = 
make_field(epsilon,                
"precision for integration")  = 1.0e-10;
 
   87   catch(
const exception &error) {
 
   88     FATAL(error.what() << endl);
 
   93   typedef double (
JPDF::*fcn)(
const double,
 
  120   typedef JSplineFunction1D_t                                     JFunction1D_t;
 
  121   typedef JMAPLIST<JPolint1FunctionalMap,
 
  122                    JPolint1FunctionalGridMap,
 
  123                    JPolint1FunctionalGridMap>::maplist            JMapList_t;
 
  124   typedef JPDFTable<JFunction1D_t, JMapList_t>                    JPDF_t;
 
  126   typedef JPDFTransformer<3, JFunction1D_t::argument_type>        JFunction3DTransformer_t;
 
  127   typedef JArray<3, JFunction1D_t::argument_type>                 JArray_t;
 
  132   NOTICE(
"building multi-dimensional function object <" << 
function << 
">... " << flush);
 
  135   const double kmin = pdf_c.getKappa(wmax);
 
  136   const double kmax = pdf_c.getKappa(wmin);
 
  137   const double cmin = pdf_c.getKmin (wmax);
 
  148   if (zmap.find(
function) == zmap.end()) {
 
  149     FATAL(
"illegal function specifier" << endl);
 
  152   fcn                      
f           = zmap[
function].first;    
 
  153   JFunction3DTransformer_t transformer = zmap[
function].second;   
 
  220     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) {
 
  225     for (
double x = 0.01; 
x < 0.1; 
x += 0.0025) {
 
  230     for (
double x = 0.10; 
x < 0.5; 
x += 0.010) {
 
  322   const double grid  =  5.0;                        
 
  324   const double alpha = 2.0 * sqrt(1.0 - cos(grid * 
PI / 180.0));  
 
  329     const double R_m = *
r;
 
  331     const unsigned int number_of_theta_points = max(2
u, (
unsigned int) (180.0/(1.4 * grid)));
 
  333     for (
double theta = 0.0; theta <= 
PI + epsilon; theta += 
PI/number_of_theta_points) {
 
  335       const unsigned int number_of_phi_points = max(2
u, (
unsigned int) (
PI * sin(theta) / alpha));
 
  337       for (
double phi = 0.0; phi <= 
PI + epsilon; phi += 
PI/number_of_phi_points) {
 
  339         JFunction1D_t& f1 = pdf[R_m][theta][phi];
 
  341         const JArray_t array(R_m, theta, phi);
 
  343         double t_old = transformer.getXn(array, *
X.begin());
 
  348           const double t = transformer.getXn(array, *
x);
 
  349           const double y = (pdf_c.*
f)(R_m, theta, phi, t);
 
  354               WARNING(
"dt < 0 " << *
x << 
' ' << R_m << 
' ' << t << 
' ' << y << endl);
 
  377   pdf.transform(transformer);
 
  390   catch(
const JException& error) {
 
  391     FATAL(error.what() << endl);
 
Utility class to parse command line options. 
 
o $QUALITY_ROOT d $DEBUG!JPlot1D f
 
double absorptionLengthFactor
Scaling of absorption and scattering length. 
 
direct light from EM showers 
 
double getScatteringProbability(const double x)
Function to describe light scattering in water. 
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
double getMinimalWavelength()
Get minimal wavelength for PDF evaluations. 
 
scattered light from muon 
 
double getMaximalWavelength()
Get maximal wavelength for PDF evaluations. 
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
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...
 
double getAmbientPressure()
Get ambient pressure. 
 
scattered light from delta-rays 
 
then break fi done getCenter read X Y Z let X
 
static const double PI
Mathematical constants. 
 
double getPhotocathodeArea()
Get photo-cathode area of PMT. 
 
scattered light from EM showers 
 
then usage $script[distance] fi case set_variable R
 
direct light from delta-rays 
 
Empty structure for specification of parser element that is not initialised (i.e. does require input)...
 
double getAbsorptionLength(const double lambda)
Get absorption length. 
 
double getScatteringLength(const double lambda)
Get scattering length. 
 
double scatteringLengthFactor
 
double getAngularAcceptance(const double x)
Angular acceptence of PMT. 
 
Auxiliary data structure for muon PDF.