329 JParser<> zap(
"Example program for sound ray tracing.");
338 catch(
const exception &error) {
339 FATAL(error.what() << endl);
345 const JBellhop bellhop(
V, precision);
360 cout <<
"> " << flush;
361 cin >> x0 >> z0 >> x1 >> z1;
366 const double D = hypot(x1 - x0, z1 - z0);
367 const sin_t s0 = bellhop(x0, z0, x1, z1);
368 const JBellhop_t
result = bellhop(s0, x0, z0, x1, z1);
370 cout <<
"s " <<
SCIENTIFIC(12,5) << (x1 - x0) / D << endl;
371 cout <<
"s0 " <<
SCIENTIFIC(12,5) << s0.value <<
' ' << s0.option << endl;
372 cout <<
"s1 " <<
SCIENTIFIC(12,5) << result.s.value << endl;
373 cout <<
"x' " <<
FIXED (12,5) << result.x <<
" [m]" << endl;
374 cout <<
"z' " <<
FIXED (12,5) << result.z <<
" [m]" << endl;
375 cout <<
"D " <<
FIXED (12,5) << D <<
" [m]" << endl;
376 cout <<
"D' " <<
FIXED (12,5) << result.d <<
" [m]" << endl;
377 cout <<
"t " <<
FIXED (12,5) <<
V.getTime(D, z0, z1) <<
" [s]" << endl;
378 cout <<
"t' " <<
FIXED (12,5) << result.t <<
" [s]" << endl;
381 const double v0 =
V(z0);
382 const double v1 =
V(z1);
383 const double b = (v1 - v0) / (z1 - z0);
384 const double c = v1 / v0;
385 const double u = (v0 + v1) / v1;
386 const double v = (v0 - v1) / v1;
387 const double st = s0.value;
389 cout <<
"v0 " <<
FIXED (12,5) << v0 <<
" [m/s]" << endl;
390 cout <<
"v1 " <<
FIXED (12,5) << v1 <<
" [m/s]" << endl;
396 dx = (sqrt(2.0 + st) * sqrt(0.0 - st) - sqrt(1.0 + c + c * st) * sqrt(1.0 - c - c * st)) * v0 / (1.0 + st) / b;
400 dx = (sqrt(1.0 + st) * sqrt(1.0 - st) - sqrt(1.0 + c * st) * sqrt(1.0 - c * st)) * v0 / ( st ) / b;
403 cout <<
"x' " <<
FIXED (12,5) << dx <<
" [m]" << endl;
405 const double x = s0.getc();
406 const double y = (s0.option ? c * sqrt(u + st) * sqrt(v - st) : sqrt(1.0 + c * st) * sqrt(1.0 - c * st));
408 cout <<
"t' " <<
FIXED (12,5) << (atanh(x) - atanh(y)) / b << endl;
410 catch(
const exception& error) {
411 cerr << error.what() << endl;
417 const double x0 = 0.0;
418 const double z0 = 0.0;
425 TH2D h2(
"h2", NULL, 50, 1.0, 3.5, 50, -1.0, 3.0);
427 for (
int ix = 1; ix <= h2.GetXaxis()->GetNbins(); ++ix) {
428 for (
int iy = 1; iy <= h2.GetYaxis()->GetNbins(); ++iy) {
430 const double x1 =
pow(10.0, h2.GetXaxis()->GetBinCenter(ix));
431 const double z1 =
pow(10.0, h2.GetYaxis()->GetBinCenter(iy));
438 const double D = hypot(x1 - x0, z1 - z0);
439 const sin_t s0 = bellhop(x0, z0, x1, z1);
440 const JBellhop_t result = bellhop(s0, x0, z0, x1, z1);
442 Qx.put(result.x - x1);
443 Qz.put(result.z - z1);
445 h2.SetBinContent(ix, iy, (result.t -
V.getTime(D, z0, z1)) * 1.0e6);
447 catch(
const exception& error) {
448 ERROR(error.what() << endl);
Utility class to parse command line options.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Auxiliary data structure for floating point format specification.
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
static const JSoundVelocity getSoundVelocity(1541.0,-17.0e-3,-2000.0)
Function object for velocity of sound.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
T pow(const T &x, const double y)
Power .
$WORKDIR ev_configure_dqsimulator txt echo process $DQ_SIMULATOR $i $SOURCE_HOST[$index] csh c(setenv ROOTSYS $ROOTSYS &&source $JPP_DIR/setenv.csh $JPP_DIR &&($DQ_SIMULATOR\-u\$NAME\$\-H\$SERVER\$\-M\$LOGGER\$\-d $DEBUG</dev/null > &/dev/null &))'
Auxiliary data structure for floating point format specification.
do echo Generating $dir eval D
#define DEBUG(A)
Message macros.