31 int main(
int argc,
char **argv)
50 JParser<> zap(
"Program to plot PDF of Cherenkov light from muon using interpolation tables.");
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;
64 catch(
const exception &error) {
65 FATAL(error.what() << endl);
75 const int N = inputFile.size();
82 for (
int i = 0; i != N; ++i) {
84 NOTICE(
"loading input from file " << inputFile[i] <<
"... " << flush);
88 pdf [i].load(inputFile[i].c_str());
90 pdf [i].setExceptionHandler(
new JFunction1D_t::JDefaultResult(
JMATH::zero));
100 FATAL(error.what() << endl);
104 const double E_emission =
gWater.
getE(E, z_emission );
108 for (
double dt; cin >> dt; ) {
110 for (
int i = 0; i != N; ++i) {
112 JFunction1D_t::result_type
y = pdf[i](R, dir.
getTheta(), dir.
getPhi(), dt);
120 cout << setw(2) << type[i] <<
' '
122 <<
FIXED(5,1) << R <<
' '
123 <<
FIXED(5,1) << z <<
' '
126 <<
FIXED(5,1) << dt <<
' '
142 const double t0 = 0.0;
164 for (
int i = 1; i <= h0.GetNbinsX(); ++i) {
166 const double dt = h0.GetBinCenter(i) - t0;
170 for (
int j = 0;
j != N; ++
j) {
174 if (z_emission >= 0 && z_emission <=
gWater(E)) {
Various implementations of functional maps.
General purpose messaging.
Numbering scheme for PDF types.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
int main(int argc, char **argv)
I/O formatting auxiliaries.
Data structure for angles in three dimensions.
double getTheta() const
Get theta angle.
double getPhi() const
Get phi angle.
Utility class to parse command line options.
virtual double getE(const double E, const double dx) const override
Get energy of muon after specified distance.
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.
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.
static const double MASS_MUON
muon mass [GeV]
bool is_bremsstrahlung(const int pdf)
Test if given PDF type corresponds to Cherenkov light from Bremsstrahlung.
static const JGeaneWater gWater
Function object for energy loss of muon in sea water.
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
@ DIRECT_LIGHT_FROM_MUON
direct light from muon
static const double COS_THETA_C_WATER
Average cosine corresponding to the group velocity.
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.