49 const double dt)
const
53 static const double sigma = 2.0;
55 const double x = dt /
sigma;
80 int main(
int argc,
char **argv)
92 double absorptionLength;
93 double scatteringLength;
98 JParser<> zap(
"Example program to draw PDF from LED beacon.");
104 zap[
'A'] =
make_field(absorptionLength) = 50.0;
105 zap[
'S'] =
make_field(scatteringLength) = 50.0;
114 catch(
const exception &error) {
115 FATAL(error.what() << endl);
119 const double theta = dir.first;
120 const double phi = dir.second;
126 const double P_atm = 240.0;
127 const double tmin = -10.0;
128 const double tmax = +10.0;
129 const double A = 440e-4;
130 const double R_Hz = 0.0e3;
132 const JDispersion dispersion(P_atm);
135 const double lm = scatteringLength / 0.83;
136 const double lr = scatteringLength / 0.17;
138 const double cs = 0.83 * 0.92;
140 const double l_abs = absorptionLength;
141 const double ls = scatteringLength;
142 const double l_att = l_abs * lr / (l_abs + lr);
147 cout <<
"Rayleigh scattering length " << lr <<
" m" << endl;
148 cout <<
"Mie scattering length " << lm <<
" m" << endl;
149 cout <<
"Absorption length " << l_abs <<
" m" << endl;
163 JCotangent(number_of_points),
180 JCotangent(number_of_points),
187 TH1D h0(
"h0", NULL, 430, -15.0, +200.0);
188 TH1D h1(
"h1", NULL, 430, -15.0, +200.0);
189 TH1D h2(
"h2", NULL, 430, -15.0, +200.0);
190 TH1D h3(
"h3", NULL, 430, -15.0, +200.0);
191 TH1D ha(
"ha", NULL, 430, -15.0, +200.0);
193 JSplineFunction1S_t
f[4];
194 JSplineFunction1S_t
f1;
197 for (
int i = 1; i <= h1.GetNbinsX(); ++i) {
199 const double t1 = h1.GetBinCenter(i);
201 const double F1 = pdfMie .getDirectLightFromLED (
D, ct, theta, phi, t1);
202 const double F2 = pdfMie .getScatteredLightFromLED(
D, ct, theta, phi, t1);
203 const double F3 = pdfRayleigh.getScatteredLightFromLED(
D, ct, theta, phi, t1);
206 h0.SetBinContent(i, F1 + F2 + F3);
207 h1.SetBinContent(i, F1);
208 h2.SetBinContent(i, F2);
209 h3.SetBinContent(i, F3);
214 f[3][t1] = F1 + F2 + F3;
216 f1[t1] = F1 + F2 + F3;
221 for (
int i = 3; i !=
sizeof(
f)/
sizeof(
f[0]); ++i) {
225 JQuantiles quantiles(
f[i]);
228 const double lz = l_abs * ls / (l_abs*(1.0-cs) + ls);
230 NOTICE(
"int " << quantiles.getIntegral() *
D*
D *
exp(
D/lz) << endl);
233 DEBUG(
"ct " << ct << endl);
234 DEBUG(
"theta " << theta << endl);
235 DEBUG(
"phi " << phi << endl);
236 DEBUG(
"int " << quantiles.getIntegral() << endl);
237 DEBUG(
"t1 " << quantiles.getX() << endl);
238 DEBUG(
"max " << quantiles.getY() << endl);
239 DEBUG(
"FWHM " << quantiles.getFWHM() << endl);
243 const double Tmin = ha.GetXaxis()->GetXmin();
244 const double Tmax = ha.GetXaxis()->GetXmax();
246 const double V =
f1.rbegin()->
getIntegral() + R_Hz * 1e-9 * (Tmax - Tmin);
248 for (
int i = 1; i <= ha.GetNbinsX(); ++i) {
250 const double t1 = ha.GetBinCenter(i);
252 JSplineFunction1S_t::result_type p =
f1(t1);
254 double v = p.v + R_Hz * 1e-9 * (t1 - Tmin);
255 double y = p.f + R_Hz * 1e-9;
257 const double W =
exp(-v) * y / (1.0 -
exp(-
V));
259 ha.SetBinContent(i,W);
const JPolynome F1
Integral.
Utility class to parse command line options.
int main(int argc, char *argv[])
double getQE(const double lambda, const bool option)
Get quantum efficiency of PMT.
o $QUALITY_ROOT d $DEBUG!CHECK_EXIT_CODE JPlot1D f
Properties of Antares PMT and deep-sea water.
double rayleigh(const double a, const double x)
Auxiliary method to describe light scattering in water (Rayleigh).
Interface for emission profile from LED.
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
Light yield from LED (number of p.e.
double getLightFromLED(const double ct, const double phi, const double dt) const
Light yield from LED (number of p.e.
const JPolynome f1(1.0, 2.0, 3.0)
Function.
Properties of KM3NeT PMT and deep-sea water.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
static const double PI
Mathematical constants.
General purpose messaging.
double getIntegral(const double x) const
Integral value.
std::istream & operator>>(std::istream &in, JAANET::JHead &header)
Read header from input.
Utility class to parse command line options.
double getAngularAcceptance(const double x)
Get angular acceptance of PMT.
double henyey_greenstein(const double g, const double x)
Auxiliary method to describe light scattering in water (Henyey-Greenstein).
std::pair< double, double > orientation
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
source $JPP_DIR setenv csh $JPP_DIR &dev null eval JShellParser o a A
do echo Generating $dir eval D
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable STRING $argv[2] set_array QUANTILES set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable MODULE `getModule -a $DETECTOR -L "$STRING 0"` source JAcousticsToolkit.sh typeset -A TRIPODS get_tripods $WORKDIR/tripod.txt TRIPODS XMEAN
#define DEBUG(A)
Message macros.
double getAngularAcceptance(const double x)
Angular acceptence of PMT.