Jpp 20.0.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JSeaBird.cc File Reference
#include <string>
#include <iostream>
#include <iomanip>
#include <fstream>
#include "TROOT.h"
#include "TFile.h"
#include "TH1D.h"
#include "TGraph.h"
#include "JROOT/JGraph.hh"
#include "JROOT/JRootToolkit.hh"
#include "JAcoustics/JSoundVelocity.hh"
#include "JAcoustics/JUNESCO.hh"
#include "JTools/JRange.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 94 of file JSeaBird.cc.

95{
96 using namespace std;
97 using namespace JPP;
98
100
101 string inputFile;
102 string outputFile;
103 JSoundVelocity V = getSoundVelocity; // default sound velocity
104 range_type D;
105 bool option;
106 int debug;
107
108 try {
109
110 JParser<> zap;
111
112 zap['f'] = make_field(inputFile);
113 zap['o'] = make_field(outputFile) = "seabird.root";
114 zap['V'] = make_field(V) = JPARSER::initialised();
115 zap['D'] = make_field(D) = range_type(2500.0, 3450);
116 zap['O'] = make_field(option);
117 zap['d'] = make_field(debug) = 2;
118
119 zap(argc, argv);
120 }
121 catch(const exception &error) {
122 FATAL(error.what() << endl);
123 }
124
125
126 V.set(-D.getUpperLimit());
127
128 const double latitude = 36.0 + 16.0/60.0;
129 const double g = getGravity(latitude);
130
131 DEBUG("Latitude " << FIXED(7,3) << latitude << endl);
132 DEBUG("Gravitational constant [m/s^2] " << FIXED(7,3) << g << endl);
133
134 ifstream in(inputFile.c_str());
135
136 while (in.peek() == '#') {
137 in.ignore(numeric_limits<streamsize>::max(), '\n');
138 }
139
140 JGraph_t ga;
141 JGraph_t gb;
142 JGraph_t gc;
143 JGraph_t gd;
144
145 TH1D hz("hz", NULL, 101, -2.5, +2.5);
146 TH1D h1("v1 [DelGrosso]", NULL, 101, -1.0, +1.0);
147 TH1D h2("v2 [KM3NeT]", NULL, 101, -1.0, +1.0);
148
149 {
150 for (seabird object; in >> object; ) {
151
152 const double z = getDepth(object.P * 1.0e-2, latitude, option);
153 const double v1 = getVelocityDelGrosso(object.P * 0.1, object.S, object.T);
154 const double v2 = V(D.getUpperLimit() - object.z);
155 const double P = getPressure(object.z, latitude, option);
156
157 if (debug >= debug_t) {
158
159 cout << FIXED(9,3) << object.P << ' ';
160
161 cout << FIXED(9,3) << object.z << ' '
162 << FIXED(9,6) << object.v << ' ';
163
164 cout << FIXED(9,6) << v1 << ' '
165 << FIXED(9,6) << v2 << ' ';
166
167 cout << FIXED(9,4) << object.rho << ' ';
168
169 cout << FIXED(9,6) << P << ' ';
170 cout << FIXED(9,3) << z << ' ';
171 cout << endl;
172 }
173
174 if (D(object.z)) {
175 hz.Fill(object.z - z);
176 h1.Fill(object.v - v1);
177 h2.Fill(object.v - v2);
178 }
179
180 ga.put(object.z, object.v);
181 gb.put(object.z, v1);
182 gc.put(object.z, object.v - v1);
183 gd.put(object.z, object.v - v2);
184 }
185 }
186
187
188 TFile out(outputFile.c_str(), "recreate");
189
190 out << hz << h1 << h2;
191
192 out << JGraph(ga, "ga");
193 out << JGraph(gb, "gb");
194 out << JGraph(gc, "gc");
195 out << JGraph(gd, "gd");
196
197 out.Write();
198 out.Close();
199}
string outputFile
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Utility class to parse command line options.
Definition JParser.hh:1698
Range of values.
Definition JRange.hh:42
T getUpperLimit() const
Get upper limit.
Definition JRange.hh:213
double getPressure(const double z, const double phi, const bool option=true)
Get pressure.
Definition JUNESCO.hh:259
double getVelocityDelGrosso(const double p, const double S, const double T)
Get sound velocity.
Definition JUNESCO.hh:182
double getGravity(const double phi)
Get gravitational constant.
Definition JUNESCO.hh:25
double getDepth(const double P, const double phi, const bool option=true)
Get depth.
Definition JUNESCO.hh:237
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for floating point format specification.
Definition JManip.hh:448
Implementation for depth dependend velocity of sound.
JSoundVelocity & set(const double z0)
Set depth.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68
Auxiliary data structure to build TGraph.
Definition JGraph.hh:44