Fit function.
211 {
213 using namespace JFIT;
215
217
219
221
222
223
225
227
228 if (!in.empty()) {
230 }
231
232 for (JEvt::const_iterator track = in.begin(); track != in.end(); ++track) {
233
237
241 }
242
244
245
246
248
249 for (buffer_type::const_iterator i =
data.begin(); i !=
data.end(); ++i) {
250
252
253 hit.rotate(R);
254
255 if (match(hit)) {
256 buffer.push_back(hit);
257 }
258 }
259
260
261
263
264 buffer_type::iterator __end = unique(buffer.begin(), buffer.end(), equal_to<JDAQPMTIdentifier>());
265
266
267 const int NDF =
distance(buffer.begin(), __end) - this->parameters.size();
268
269 if (NDF > 0) {
270
271
272
275 else
276 JRegressor_t::E_GeV = track->getE();
277
278 const double chi2 = (*this)(
JLine3Z(tz), buffer.begin(), __end);
279
280
281
282 bool status = true;
283
284 for (size_t i = 0; i != this->V.size(); ++i) {
285 if (std::isnan(this->V(i,i)) || this->V(i,i) <= 0.0) {
286 status = false;
287 }
288 }
289
290 if (status) {
291
293
294 tb.rotate_back(R);
295
297
298
299
300 const size_t N = this->V.size();
301
302 TMatrixDSym M(N);
303
304 for (size_t row = 0; row != N; ++row) {
305 for (size_t col = 0; col != N; ++col) {
306 M(row,col) = this->V(row,col);
307 }
308 }
309
310 const TMatrixDSymEigen E(M);
311 const TVectorD& Y = E.GetEigenValues();
312
313 out.rbegin()->setV(this->V.size(), this->V);
314
315 out.rbegin()->setW(track->getW());
316 out.rbegin()->setW(
JGANDALF_BETA0_RAD, sqrt(this->error.getDX() * this->error.getDX() +
317 this->error.getDY() * this->error.getDY()));
318 out.rbegin()->setW(
JGANDALF_BETA1_RAD, sqrt(this->error.getDX() * this->error.getDY()));
324 }
325 }
326 }
327
328 {
329 for (JEvt::iterator i = out.begin(); i != out.end(); ++i) {
330
331 double Q = numeric_limits<double>::max();
332
333 for (JEvt::iterator p = out.begin(); p != out.end(); ++p) {
334 if (p != i) {
336 if (i->getQ() - p->getQ() < Q) {
337 Q = i->getQ() - p->getQ();
338 }
339 }
340 }
341 }
342
344 }
345 }
346
347
348
350
351 copy(input.in.begin(), input.in.end(), back_inserter(out));
352
353 return out;
354 }
Data structure for fit of straight line paralel to z-axis.
Data structure for fit of straight line in positive z-direction.
JPosition3D & rotate(const JRotation3D &R)
Rotate.
static const int JGANDALF_LIKELIHOOD_RATIO
likelihood ratio between this and best alternative fit see JRECONSTRUCTION::JMuonGandalf
static const int JSTART_ZMAX_M
end position of track see JRECONSTRUCTION::JMuonStart
static const int JGANDALF_LAMBDA
largest eigenvalue of error matrix see JRECONSTRUCTION::JMuonGandalf
static const int JPP_COVERAGE_POSITION
coverage of dynamic position calibration of this event
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 JSTART_ZMIN_M
start position of track see JRECONSTRUCTION::JMuonStart
static const int JGANDALF_BETA0_RAD
ile KM3NeT Data Definitions v3.6.2-4-g8b3df20 https://git.km3net.de/common/km3net-dataformat
static const int JGANDALF_NUMBER_OF_ITERATIONS
number of iterations see JRECONSTRUCTION::JMuonGandalf
static const int JPP_COVERAGE_ORIENTATION
coverage of dynamic orientation calibration of this event
static const int JGANDALF_BETA1_RAD
uncertainty on the reconstructed track direction from the error matrix [rad] see JRECONSTRUCTION::JMu...
static const int JGANDALF_NUMBER_OF_HITS
number of hits see JRECONSTRUCTION::JMuonGandalf
Auxiliary classes and methods for linear and iterative data regression.
JTOOLS::JRange< double > JZRange
Auxiliary classes and methods for 3D geometrical objects and operations.
double getQuality(const double chi2, const int N, const int NDF)
Get quality of fit.
JPosition3D getPosition(const JFit &fit)
Get position.
void copy(const JFIT::JEvt::const_iterator __begin, const JFIT::JEvt::const_iterator __end, Evt &out)
Copy tracks.
bool qualitySorter(const JFit &first, const JFit &second)
Comparison of fit results.
double getDot(const JFit &first, const JFit &second)
Get dot product.
JFit getFit(const JHistory &history, const JTrack3D &track, const double Q, const int NDF, const double energy=0.0, const int status=SINGLE_STAGE)
Get fit.
JDirection3D getDirection(const JFit &fit)
Get direction.
Model for fit to acoustics data.
Transmission with position.
Auxiliary class to test history.
double cosLR
maximal cosine space angle likelihood ratio test
double ZMax_m
maximal z-positon [m]
double ZMin_m
minimal z-positon [m]
size_t numberOfPrefits
number of prefits
Auxiliary data structure for sorting of hits.