Auxiliary program to determine PDF of L1 hit. 
   53     JParser<> zap(
"Auxiliary program to determine PDF of L1 hit.");
 
   57     zap[
'E'] = 
make_field(E,         
"muon energy [GeV]")          = 1.0;
 
   58     zap[
'R'] = 
make_field(R,         
"distance of approach [m]");
 
   59     zap[
'D'] = 
make_field(dir,       
"(theta, phi) of PMT [rad]");
 
   60     zap[
'T'] = 
make_field(T_ns,      
"time window [ns]")           = 10.0;          
 
   61     zap[
'B'] = 
make_field(R_Hz,      
"background rate [Hz]")       =  0.0;
 
   67   catch(
const exception &error) {
 
   68     FATAL(error.what() << endl);
 
   77   JFunction1D_t::JSupervisor supervisor(
new JFunction1D_t::JDefaultResult(
zero));
 
   86   const int  N = 
sizeof(pdf_t) / 
sizeof(pdf_t[0]);
 
   90   for (
int i = 0; i != N; ++i) {
 
   94       const string file_name = 
getFilename(inputFile, pdf_t[i]);
 
   96       NOTICE(
"loading input from file " << file_name << 
"... " << flush);
 
   98       pdf[i].load(file_name.c_str());
 
  106     pdf[i].setExceptionHandler(supervisor);
 
  117   JModule module = getModule<JKM3NeT_t>(1);
 
  130     const double t2 = t1 + T_ns;
 
  132     JFunction1D_t::result_type y1;
 
  133     JFunction1D_t::result_type y2;
 
  135     for (
int i = 0; i != N; ++i) {
 
  137       JFunction1D_t::result_type 
p1;
 
  138       JFunction1D_t::result_type p2;
 
  142       for (
const auto& pmt : module) {
 
  143         p1 += pdf[i](R, pmt.getTheta(), pmt.getPhi(), t1);
 
  144         p2 += pdf[i](R, pmt.getTheta(), pmt.getPhi(), t2);
 
  165     zsp[t1] = y1.f * (1.0 - exp(y1.v - y2.v));                    
 
  170   for (
int ix = 1; ix <= h0.GetNbinsX(); ++ix) {
 
  172     const double t1 = h0.GetBinCenter(ix);
 
  176       const JFunction1D_t::result_type 
result = zsp(t1);
 
  180       h0.SetBinContent(ix, W);
 
  182     catch(
const exception&) {}
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
Data structure for a composite optical module.
 
void rotate(const JRotation3D &R)
Rotate module.
 
Data structure for angles in three dimensions.
 
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.
 
JAbstractHistogram< double > JHistogram_t
Type definition for scan along axis.
 
std::string getFilename(const std::string &file_name)
Get file name part, i.e. part after last JEEP::PATHNAME_SEPARATOR if any.
 
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.
 
@ 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
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).