Jpp  19.0.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
UNESCO.cc File Reference

Example program to plot UNESCO sound velocity. More...

#include <iostream>
#include <iomanip>
#include <string>
#include "TROOT.h"
#include "TFile.h"
#include "TH1D.h"
#include "TH2D.h"
#include "JAcoustics/JUNESCO.hh"
#include "Jeep/JPrint.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Example program to plot UNESCO sound velocity.

Author
mdejong

Definition in file UNESCO.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 58 of file UNESCO.cc.

59 {
60  using namespace std;
61  using namespace JPP;
62 
63  string outputFile;
64  double D;
65  double S;
66  double T;
67  string model;
68  int debug;
69 
70  try {
71 
72  JParser<> zap("Example program to plot UNESCO sound velocity.");
73 
74  zap['o'] = make_field(outputFile);
75  zap['D'] = make_field(D, "Depth [m]");
76  zap['S'] = make_field(S, "Salinity [ppk]") = 38.7;
77  zap['T'] = make_field(T, "Temperature [C]") = 14.0;
78  zap['M'] = make_field(model, "model") = mackenzie_t, coppens_t, unesco_t, delgrosso_t;
79  zap['d'] = make_field(debug) = 2;
80 
81  zap(argc, argv);
82  }
83  catch(const exception &error) {
84  FATAL(error.what() << endl);
85  }
86 
87 
88  const double Z[] = { 2000.0, 3450.0 };
89 
90  STATUS("Velocity "
91  << setw(10) << left << model << right << ' '
92  << FIXED(9,2) << getVelocity(Z[0], S, T, model) << ' '
93  << SCIENTIFIC(12,3) << (getVelocity(Z[0], S, T, model) - getVelocity(Z[1], S, T, model)) / (Z[1] - Z[0]) << ' '
94  << FIXED(9,2) << -Z[0] << endl);
95 
96  TFile out(outputFile.c_str(), "recreate");
97 
98  TH1D h1(MAKE_CSTRING("h1 [" << model << "]"), NULL, 1000, 2000.0, 3500);
99  TH2D h2(MAKE_CSTRING("h2 [" << model << "]"), NULL, 1000, 10.0, 20.0, 1000, 25.0, 40.0);
100 
101  for (Int_t ix = 1; ix <= h1.GetXaxis()->GetNbins(); ++ix) {
102 
103  const Double_t D = h1.GetXaxis()->GetBinCenter(ix);
104  const double V = getVelocity(D, S, T, model);
105 
106  h1.SetBinContent(ix, V);
107  }
108 
109  for (Int_t ix = 1; ix <= h2.GetXaxis()->GetNbins(); ++ix) {
110  for (Int_t iy = 1; iy <= h2.GetXaxis()->GetNbins(); ++iy) {
111 
112  const Double_t T = h2.GetXaxis()->GetBinCenter(ix);
113  const Double_t S = h2.GetYaxis()->GetBinCenter(iy);
114 
115  const double V = getVelocity(D, S, T, model);
116 
117  h2.SetBinContent(ix, iy, V);
118  }
119  }
120 
121  out.Write();
122  out.Close();
123 }
Utility class to parse command line options.
Definition: JParser.hh:1711
#define STATUS(A)
Definition: JMessage.hh:63
#define MAKE_CSTRING(A)
Make C-string.
Definition: JPrint.hh:136
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
V(JDAQEvent-JTriggerReprocessor)*1.0/(JDAQEvent+1.0e-10)
string outputFile
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:2158
do set_variable OUTPUT_DIRECTORY $WORKDIR T
#define FATAL(A)
Definition: JMessage.hh:67
do set_variable MODULE getModule a $WORKDIR detector_a datx L $STRING JEditDetector a $WORKDIR detector_a datx M $MODULE setz o $WORKDIR detector_a datx JEditDetector a $WORKDIR detector_b datx M $MODULE setz o $WORKDIR detector_b datx done echo Output stored at $WORKDIR detector_a datx and $WORKDIR tripod_a txt JDrawDetector2D a $WORKDIR detector_a datx a $WORKDIR detector_b datx L BL o detector $FORMAT $BATCH JDrawDetector2D T $WORKDIR tripod_a txt T $WORKDIR tripod_b txt L BL o tripod $FORMAT $BATCH JCompareDetector a $WORKDIR detector_a datx b $WORKDIR detector_b datx o $WORKDIR abc root &dev null for KEY in X Y Z
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:486
do echo Generating $dir eval D
Definition: JDrawLED.sh:53
int debug
debug level