32int main(
int argc, 
char **argv)
 
   50    JParser<> zap(
"Program to plot PDF of Cherenkov light from EM-shower using interpolation tables.");
 
   54    zap[
'D'] = 
make_field(dir,       
"(theta, phi) of PMT [rad]");
 
   57    zap[
'E'] = 
make_field(E,         
"Energy [GeV]")               = 0.0;
 
   63  catch(
const exception &error) {
 
   64    FATAL(error.what() << endl);
 
   72      Z.push_back(geanz.getLength(E, (i + 0.5) / (
double) 
numberOfPoints));  
 
   88  const int N = inputFile.size();
 
   95    for (
int i = 0; i != N; ++i) {
 
   97      NOTICE(
"loading input from file " << inputFile[i] << 
"... " << flush);
 
   99      pdf[i].load(inputFile[i].c_str());
 
  101      pdf[i].setExceptionHandler(
new JFunction1D_t::JDefaultResult(
JMATH::zero));
 
  103      npe[i] = JNPE_t(pdf[i]);
 
  109    FATAL(error.what() << endl);
 
  115  if (!x.is_valid()) { x = 
JHistogram_t(150,  0.0, 150.0); }
 
  116  if (!y.is_valid()) { y = 
JHistogram_t(200, -1.0,  +1.0); }
 
  118  TH2D h0(
"h0", 
"PDF Projection; D [m]; cos #theta_{0}",
 
  119          x.getNumberOfBins(), x.getLowerLimit(), x.getUpperLimit(),
 
  120          y.getNumberOfBins(), y.getLowerLimit(), y.getUpperLimit());
 
  122  for (
int ix = 1; ix <= h0.GetNbinsX(); ++ix) {
 
  123    for (
int iy = 1; iy <= h0.GetNbinsY(); ++iy) {
 
  125      const double cd = h0.GetYaxis()->GetBinCenter(iy);
 
  126      const double D  = h0.GetXaxis()->GetBinCenter(ix);
 
  132        const double W = 1.0 / (double) Z.size();
 
  134        for (vector<double>::const_iterator z = Z.begin(); z != Z.end(); ++z) {
 
  136          const double __D  = sqrt(D*D - 2.0*(D*cd)*(*z) + (*z)*(*z));
 
  137          const double __cd = (D * cd - (*z)) / __D; 
 
  139          for (
int i = 0; i != N; ++i) {
 
  143            catch(
const exception& error) {}
 
  149        for (
int i = 0; i != N; ++i) {  
 
  154      h0.SetBinContent(ix, iy, Y);