31int main(
int argc,
char **argv)
50 JParser<> zap(
"Auxiliary 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);
86 type[i] = getPDFType(inputFile[i]);
88 pdf [i].load(inputFile[i].c_str());
90 pdf [i].setExceptionHandler(
new JFunction1D_t::JDefaultResult(
JMATH::zero));
100 FATAL(error.what() << endl);
103 const double z_emission = z - R/getTanThetaC();
104 const double E_emission = gWater.getE(E, z_emission);
108 cout <<
"enter time (^C to exit) > " << flush;
110 for (
double dt; cin >> dt; ) {
112 for (
int i = 0; i != N; ++i) {
114 JFunction1D_t::result_type y = pdf[i](R, dir.
getTheta(), dir.
getPhi(), dt);
116 if (is_bremsstrahlung(type[i])) {
118 }
else if (is_deltarays(type[i])) {
119 y *= JDeltaRays::getEnergyLossFromMuon(E_emission);
122 cout << setw(2) << type[i] <<
' '
124 <<
FIXED(5,1) << R <<
' '
125 <<
FIXED(5,1) << z <<
' '
128 <<
FIXED(5,1) << dt <<
' '
140 if (inputFile.size() == 1 && getPDFType(inputFile[0]) == DIRECT_LIGHT_FROM_MUON) {
144 const double t0 = 0.0;
166 for (
int i = 1; i <= h0.GetNbinsX(); ++i) {
168 const double dt = h0.GetBinCenter(i) - t0;
172 for (
int j = 0; j != N; ++j) {
174 if ( E_emission >= MASS_MUON* (1/SIN_THETA_C_WATER ) ) {
176 if (z_emission >= 0 && z_emission <= gWater(E)) {
178 JFunction1D_t::result_type y = pdf[j](R, dir.
getTheta(), dir.
getPhi(), dt);
180 if (is_bremsstrahlung(type[j])) {
182 }
else if (is_deltarays(type[j])) {
183 y *= JDeltaRays::getEnergyLossFromMuon(E_emission);
191 h0.SetBinContent(i, get_value (Y));
192 h1.SetBinContent(i, get_derivative(Y));
193 h2.SetBinContent(i, get_integral (Y));