Jpp  master_rocky
the software that should make you happy
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

◆ main()

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 }
string outputFile
#define STATUS(A)
Definition: JMessage.hh:63
#define FATAL(A)
Definition: JMessage.hh:67
int debug
debug level
Definition: JSirene.cc:69
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:2142
#define MAKE_CSTRING(A)
Make C-string.
Definition: JPrint.hh:72
Utility class to parse command line options.
Definition: JParser.hh:1698
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JSTDTypes.hh:14
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:448
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:488