Fit function.
198 {
201
203
205
206
207
209
211
212 if (!in.empty()) {
214 }
215
217
219
220 double getZ() const { return z; }
221 double getP()
const {
return p; }
222
223 double z;
224 double p;
225 double y1;
226 double yx;
227 };
228
229 for (JEvt::const_iterator track = in.begin(); track != in.end(); ++track) {
230
233
235
236 for (const auto& module : input.data) {
237
239
240 pos.transform(R, tz.getPosition());
241
243
244 const double z = pos.getZ() - pos.getX() /
getTanThetaC();
246
247 const double p = module.getProbability(rates_Hz.getMultiplesRates(), T_ns + t);
248
249 double y1 = 0.0;
250 double yx = 0.0;
251
252 for (size_t i = 0; i != module->size(); ++i) {
253
254 if (module.getStatus(i)) {
255
256 JPMT pmt =
module->getPMT(i);
257
259
260 const double npe = this->getY1(pmt);
261
262 y1 += npe;
263
265 yx += npe;
266 }
267 }
268 }
269
270 data.push_back({ z, p, y1, yx });
271 }
272 }
273
274 double Zmin = 0.0;
275 double Zmax = 0.0;
276 double y1 = 0.0;
277 double yx = 0.0;
278
280
282
283 vector<JHit_t>::const_iterator q1 = start.find(
data. begin(),
data. end());
284 vector<JHit_t>::const_reverse_iterator q2 = start.find(
data.rbegin(),
data.rend());
285
286 if (q1 !=
data.end() && q2 !=
data.rend()) {
287
288 vector<JHit_t>::const_iterator
p1 = q1;
if (
p1 !=
data. begin()) { --
p1; }
289 vector<JHit_t>::const_reverse_iterator p2 = q2;
if (p2 !=
data.rbegin()) { --p2; }
290
291 Zmin = 0.5 * (
p1->getZ() + q1->getZ());
292 Zmax = 0.5 * (p2->getZ() + q2->getZ());
293
294 for (vector<JHit_t>::const_iterator i = q1; i != q2.base(); ++i) {
295 y1 += i->y1;
296 yx += i->yx;
297 }
298 }
299 }
300
302
303 fit.push_back(event());
304
305
306
308
309 out.push_back(fit);
310
311
312
313 out.rbegin()->setW(track->getW());
319 }
320
321
322
324
325 copy(input.in.begin(), input.in.end(), back_inserter(out));
326
327 return out;
328 }
Data structure for PMT geometry, calibration and status.
Data structure for fit of straight line paralel to z-axis.
void transform(const JAxis3D &axis)
Transform axis to reference frame of given axis.
Data structure for position in three dimensions.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
JPMT_t getPMT() const
Get PMT.
unsigned char JPMT_t
PMT channel in FPGA.
static const int JMUONSTART
static const int JSTART_NPE_MIP_TOTAL
number of photo-electrons along the whole track from JStart.cc
static const int JPP_COVERAGE_POSITION
coverage of dynamic position calibration from any Jpp application
static const int JSTART_LENGTH_METRES
distance between projected positions on the track of optical modules for which the response does not ...
static const int JPP_COVERAGE_ORIENTATION
coverage of dynamic orientation calibration from any Jpp application
static const int JSTART_NPE_MIP_MISSED
number of photo-electrons missed from JStart.cc
void copy(const Head &from, JHead &to)
Copy header from from to to.
double getP(const double expval, bool hit)
Get Poisson probability to observe a hit or not for given expectation value for the number of hits.
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
double getKappaC()
Get average R-dependence of arrival time of Cherenkov light (a.k.a.
const double getInverseSpeedOfLight()
Get inverse speed of light.
double getTanThetaC()
Get average tangent of Cherenkov angle of water corresponding to group velocity.
const double getSpeedOfLight()
Get speed of light.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
JPosition3D getPosition(const JFit &fit)
Get position.
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
JDirection3D getDirection(const JFit &fit)
Get direction.
Auxiliary class to test history.
size_t numberOfPrefits
number of prefits
int Nmax2
maximal number for twofold observations
double Pmin1
minimal probability single observation
double Pmin2
minimal probability for twofold observations
Auxiliary class for start or end point evaluation.
Auxiliary class to set-up Hit.