31 class JEMShowerCorrection
41 const double P_Atm = 240.0;
47 const double xmin = 1.0 / wmax;
48 const double xmax = 1.0 / wmin;
55 const double w = 1.0 /
x;
56 const double dw = dx *
w*
w;
58 const double n = dispersion.getIndexOfRefractionPhase(
w);
67 f1[ 1.0e-3] = 90.96 / 1.0e-3;
68 f1[ 2.0e-3] = 277.36 / 2.0e-3;
69 f1[ 3.0e-3] = 485.82 / 3.0e-3;
70 f1[ 4.0e-3] = 692.83 / 4.0e-3;
71 f1[ 5.0e-3] = 890.01 / 5.0e-3;
72 f1[ 6.0e-3] = 1098.53 / 6.0e-3;
73 f1[ 7.0e-3] = 1285.47 / 7.0e-3;
74 f1[ 8.0e-3] = 1502.86 / 8.0e-3;
75 f1[ 9.0e-3] = 1687.15 / 9.0e-3;
76 f1[10.0e-3] = 1891.00 / 10.0e-3;
81 f2[-2.0] = log(1.891e3 / 1.0e-2);
82 f2[-1.0] = log(1.905e4 / 1.0e-1);
83 f2[ 0.0] = log(1.889e5 / 1.0e+0);
84 f2[+1.0] = log(1.875e6 / 1.0e+1);
85 f2[+2.0] = log(1.881e7 / 1.0e+2);
98 double operator()(
const double E)
const
100 if (E <=
f1.getXmin()) {
104 }
else if (E <=
f1.getXmax()) {
110 const double x = log10(E);
112 if (
x <= f2.getXmin()) {
114 return exp(f2.begin()->getY());
116 }
else if (
x <= f2.getXmax()) {
122 return exp(f2.rbegin()->getY());
137 static const JEMShowerCorrection getEMShowerCorrection;
147 int main(
int argc,
char **argv)
158 JParser<> zap(
"Auxiliary program to draw npe as a function of EM-energy.");
167 catch(
const exception &error) {
168 FATAL(error.what() << endl);
191 const double precision = 1.0e-10;
193 while (fabs(
xmax -
xmin) > precision) {
196 const double E =
pow(10.0,
x);
198 const double y = getEMShowerCorrection(E);
213 TH1D h0(
"h0", NULL, 10000, -4.0, +4.0);
214 TH1D h1(
"h1", NULL, 10000, -4.0, +4.0);
216 for (
int i = 1; i <= h0.GetNbinsX(); ++i) {
218 const Double_t
x = h0.GetBinCenter(i);
219 const Double_t E =
pow(10.0,
x);
222 h1.SetBinContent(i, getEMShowerCorrection(E));
double getAngularAcceptance(const double x)
Angular acceptence of PMT.
int main(int argc, char **argv)
General purpose messaging.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
I/O formatting auxiliaries.
Properties of KM3NeT PMT and deep-sea water.
Utility class to parse command line options.
Implementation of dispersion for water in deep sea.
Probability Density Functions of the time response of a PMT with an implementation of the JAbstractPM...
double getNumberOfPhotons() const
Number of Cherenkov photons per unit track length.
double getAmbientPressure()
Get ambient pressure.
double getScatteringLength(const double lambda)
Get scattering length.
double getScatteringProbability(const double x)
Function to describe light scattering in water.
double getPhotocathodeArea()
Get photo-cathode area of PMT.
double getAbsorptionLength(const double lambda)
Get absorption length.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
double getQE(const double R, const double mu)
Get QE for given ratio of hit probabilities and expectation value of the number of photo-electrons.
T pow(const T &x, const double y)
Power .
static const double MASS_ELECTRON
electron mass [GeV]
double cherenkov(const double lambda, const double n)
Number of Cherenkov photons per unit track length and per unit wavelength.
double getMinimalWavelength()
Get minimal wavelength for PDF evaluations.
double geanc()
Equivalent muon track length per unit shower energy.
double getMaximalWavelength()
Get maximal wavelength for PDF evaluations.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
JF1_t & div(const double factor)
Scale function.