49 JParser<> zap(
"Program to plot PDF of Cherenkov light from EM-shower using interpolation tables.");
53 zap[
'D'] =
make_field(dir,
"(theta, phi) of PMT [rad]");
54 zap[
'R'] =
make_field(D,
"distance from vertex to PMT [m]");
56 zap[
'E'] =
make_field(E,
"Energy [GeV]") = 0.0;
62 catch(
const exception &error) {
63 FATAL(error.what() << endl);
87 const int N = inputFile.size();
94 for (
int i = 0; i != N; ++i) {
96 NOTICE(
"loading input from file " << inputFile[i] <<
"... " << flush);
98 pdf[i].load(inputFile[i].c_str());
100 pdf[i].setExceptionHandler(
new JFunction1D_t::JDefaultResult(
JMATH::zero));
102 npe[i] = JNPE_t(pdf[i]);
120 TH1D h0(
"h0",
"PDF Projection; D [m]; P [npe]",
x.getNumberOfBins(),
x.getLowerLimit(),
x.getUpperLimit());
123 for (
int ix = 1; ix <= h0.GetNbinsX(); ++ix) {
125 const double cd = h0.GetBinCenter(ix);
131 const double W = 1.0 / (double) Z.size();
135 const double __D = sqrt(D*D - 2.0*(D*cd)*(*z) + (*z)*(*z));
136 const double __cd = (D * cd - (*z)) / __D;
138 for (
int i = 0; i != N; ++i) {
142 catch(
const exception& error) {}
148 for (
int i = 0; i != N; ++i) {
153 h0.SetBinContent(ix, Y);
161 for (
double cd; ; ) {
163 cout <<
"> " << flush;
166 for (
int i = 0; i != N; ++i) {
#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.
double getLength(const double E, const double P, const double eps=1.0e-3) const
Get shower length for a given integrated probability.
Custom class for integrated values of the PDF of the arrival time of Cherenkov light.
Multi-dimensional PDF table for arrival time of Cherenkov light.
JAbstractHistogram< double > JHistogram_t
Type definition for scan along axis.
static const JZero zero
Function object to assign zero value.
static const JGeanz geanz(1.85, 0.62, 0.54)
Function object for longitudinal EM-shower profile.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for floating point format specification.