42{
45
47 JLimit_t& numberOfEvents = inputFile.getLimit();
48 string detectorFile;
50 double Tmax_s;
52
53 try {
54
55 JParser<> zap(
"Example program to check contents of acoustic events.");
56
57 zap[
'f'] =
make_field(inputFile,
"output of JKatoomba[.sh]");
63
64 zap(argc, argv);
65 }
66 catch(const exception &error) {
67 FATAL(error.what() << endl);
68 }
69
70
72
73 try {
75 }
78 }
79
80
82
83 STATUS(
"loading input from file(s) " << inputFile <<
"... " << flush);
84
85 dynamics.load(inputFile);
86
88
90
91 const double Z = cylinder.getZmax() * 0.5;
92
95
96 Double_t
xmin = numeric_limits<Double_t>::max();
97 Double_t
xmax = numeric_limits<Double_t>::lowest();
98
100
101 if (!string->second.empty()) {
102 xmin = min(xmin, string->second.getXmin());
103 xmax = max(xmax, string->second.getXmax());
104 }
105 }
106
107 const JFormat_t format(4, 0, std::ios_base::fmtflags(),
'0');
108
109 JManager<int, TH2D> H2(
new TH2D (
"[%].tilt", NULL, 300, -3.0, +3.0, 300, -3.0, +3.0),
'%', format);
111
112 JManager<int, TH1D> HO(
new TH1D (
"H[%].orientation", NULL, 1000, xmin, xmax),
'%', format);
114
116
117 TH1D* ho = HO[string->first];
118 TH1D* ha = HA[string->first];
119
120 for (Int_t i = 1; i <= HO->GetXaxis()->GetNbins(); ++i) {
121
122 const Double_t
x = HO->GetXaxis()->GetBinCenter(i);
123
124 try {
125
127
128 ho->SetBinContent(i, tilt.
getAngle());
130 }
131 catch(const exception& error) {
132
133 }
134 }
135 }
136
137
139
140 if (string->second.size() > 1) {
141
142 TH2D* h2 = H2[string->first];
143 TH1D* ht = HT[string->first];
144
146
147 const double t1 = q->getX() - p->getX();
148
149 HT->Fill(log10(t1));
150 ht->Fill(log10(t1));
151
152 const double tx = 600.0e3 * ((q->getY().tx + q->getY().tx2 * Z) - (p->getY().tx + p->getY().tx2 * Z)) / t1;
153 const double ty = 600.0e3 * ((q->getY().ty + q->getY().ty2 * Z) - (p->getY().ty + p->getY().ty2 * Z)) / t1;
154
155 if (t1 > 0 && t1 < Tmax_s) {
156 H2->Fill(tx, ty);
157 h2->Fill(tx, ty);
158 }
159 }
160
162 ZO[string->first].put(i->getX(), i->getY().getAngle());
163 ZA[string->first].put(i->getX(), i->getY().getLength());
164 }
165 }
166 }
167
168
170
171 out << *H2 << H2 << *HT << HT << HO << HA;
172
175 }
176
179 }
180
181 out.Write();
182 out.Close();
183}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
#define MAKE_CSTRING(A)
Make C-string.
Utility class to parse command line options.
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
General purpose class for object reading from a list of file names.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for sequence of same character.
double getAngle() const
Get angle.
double getLength() const
Get length.
data_type::const_iterator const_iterator
Dynamic detector calibration.
Auxiliary data structure to build TGraph.
Auxiliary class for defining the range of iterations of objects.
static counter_type max()
Get maximum counter value.