32{
   35 
   37 
   40  double         E;
   41  double         R;
   42  double         z;
   44  double         TTS_ns;
   47 
   48  try { 
   49 
   50    JParser<> zap(
"Auxiliary program to plot PDF of Cherenkov light from muon using interpolation tables.");
 
   51 
   54    zap[
'E'] = 
make_field(E,         
"muon energy at vertex [GeV]") = 1.0;
 
   55    zap[
'R'] = 
make_field(R,         
"distance of approach [m]");
 
   56    zap[
'z'] = 
make_field(z,         
"PMT z-position [m]");
 
   57    zap[
'D'] = 
make_field(dir,       
"(theta, phi) of PMT [rad]");
 
   58    zap[
'T'] = 
make_field(TTS_ns,    
"PMT time smearing [ns]")      = 0.0;
 
   61 
   62    zap(argc, argv);
   63  }
   64  catch(const exception &error) {
   65    FATAL(error.what() << endl);
 
   66  }
   67 
   68 
   74 
   75  const int N = inputFile.size();
   76 
   77  int    type[N];
   78  JPDF_t pdf [N];
   79 
   80  try {
   81 
   82    for (int i = 0; i != N; ++i) {
   83 
   84      NOTICE(
"loading input from file " << inputFile[i] << 
"... " << flush);
 
   85      
   87 
   88      pdf [i].load(inputFile[i].c_str());
   89 
   90      pdf [i].setExceptionHandler(
new JFunction1D_t::JDefaultResult(
JMATH::zero));
 
   91      
   92      if (TTS_ns > 0.0) {
   93        pdf[i].blur(TTS_ns);
   94      }
   95      
   97    }
   98  }
  101  }
  102 
  103  const double z_emission = z - R/getTanThetaC();             
  104  const double E_emission = gWater.getE(E, z_emission);       
  105 
  107 
  108    for (double dt; cin >> dt; ) {
  109      
  110      for (int i = 0; i != N; ++i) {
  111 
  112        JFunction1D_t::result_type 
y = pdf[i](R, dir.
getTheta(), dir.
getPhi(), dt);
 
  113 
  118        }
  119      
  120        cout << setw(2)         << type[i]        << ' '
  122             << 
FIXED(5,1)      << R              << 
' ' 
  123             << 
FIXED(5,1)      << z              << 
' ' 
  126             << 
FIXED(5,1)      << dt             << 
' ' 
  128      }
  129    }
  130 
  131    return 0;
  132  }
  133 
  135    
  136  int function = 0;
  137    
  138  if (inputFile.size() == 1 && 
getPDFType(inputFile[0]) == DIRECT_LIGHT_FROM_MUON) {
 
  139    function = 1;
  140  }
  141    
  142  const double t0   =  0.0;                                   
  143 
  145 
  146    if (function == 1) {
  147 
  149 
  151 
  152    } else {
  153 
  155 
  157    }
  158  }
  159  
  163    
  164  for (int i = 1; i <= h0.GetNbinsX(); ++i) {
  165      
  166    const double dt = h0.GetBinCenter(i) - t0;
  167 
  169 
  170    for (
int j = 0; 
j != N; ++
j) {
 
  171 
  172      if ( E_emission >= MASS_MUON* (1/SIN_THETA_C_WATER ) ) {      
  173 
  174        if (z_emission >= 0 && z_emission <= gWater(E)) {     
  175          
  177 
  182          }
  184        }  
  185      }
  186    }
  187 
  188 
  189    h0.SetBinContent(i, get_value     (Y));
  191    h2.SetBinContent(i, get_integral  (Y));
  192  }
  193 
  194  out.Write();
  195  out.Close();
  196}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Data structure for angles in three dimensions.
 
double getTheta() const
Get theta angle.
 
double getPhi() const
Get phi angle.
 
virtual const char * what() const override
Get error message.
 
Utility class to parse command line options.
 
Multi-dimensional PDF table for arrival time of Cherenkov light.
 
static const JZero zero
Function object to assign zero value.
 
double getDeltaRaysFromMuon(const double E, const JRange< double > T_GeV=JRange< double >(DELTARAY_TMIN, DELTARAY_TMAX))
Equivalent EM-shower energy due to delta-rays per unit muon track length.
 
bool is_deltarays(const int pdf)
Test if given PDF type corresponds to Cherenkov light from delta-rays.
 
bool is_bremsstrahlung(const int pdf)
Test if given PDF type corresponds to Cherenkov light from Bremsstrahlung.
 
int getPDFType(const std::string &file_name)
Get PDF type.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Auxiliary data structure for floating point format specification.
 
Auxiliary data structure for floating point format specification.