GeometryChi2.cc
Go to the documentation of this file.
1 #include "GeometryChi2.h"
2 #include "SphericalShowerFront.h"
3 #include "GeometryFitter.h"
4 
5 #include <vector>
6 #include <iostream>
7 
8 #include <utl/ErrorLogger.h>
9 #include <utl/PhysicalConstants.h>
10 #include <utl/Math.h>
11 
12 using std::cout;
13 using std::endl;
14 
15 namespace MdGeometryFitterAG {
16 
17  double
18  GeometryChi2::operator()(const std::vector<double>& par)
19  const
20  {
21 
22  DEBUGLOG("Starting GeometryChi2()");
23 
24  const double u = par[0];
25  const double v = par[1];
26  const double ct0 = par[2];
27  const double radius = par[3];
28  const double xcore = par[4];
29  const double ycore = par[5];
30  const double zcore = par[6];
31 
32 // cout << "u = " << u << ", v = " << v << ", ct0 = " << ct0 << endl;
33 
34  const double w2 = 1 - utl::Sqr(u) - utl::Sqr(v);
35  if (w2 < 0) {
36  ERROR("complex w");
37  double value = 1e30;
38  return value;
39  }
40  const double w = sqrt(w2);
41 
42  const TVector3 axis(u,v,w);
43  const TVector3 core(xcore, ycore, zcore);
44 
45  DEBUGLOG("Calculating the chi2");
46 // cout << "detector observedValue expectedValue deviance variance chi2" << endl;
47 
48  const double t0 = ct0 / utl::kSpeedOfLight;
49  SphericalShowerFront showerFront(axis, t0, radius, core);
50 
51  double chi2 = 0;
52  for (std::vector<TimeData>::const_iterator it=timeData.begin(); it!=timeData.end(); ++it) {
53  const double deviance = it->time - showerFront(it->pos); // difference between observed and expected time
54  const double variance = it->sigma * it->sigma;
55  chi2 += deviance*deviance / variance;
56  }
57 
58  DEBUGLOG("Finishing GeometryChi2()");
59 
60  return chi2;
61  }
62 
63 }
double operator()(const std::vector< double > &) const
Definition: GeometryChi2.cc:18
constexpr T Sqr(const T &x)
std::vector< TimeData > timeData
Definition: GeometryChi2.h:19
#define DEBUGLOG(message)
Macro for logging debugging messages.
Definition: ErrorLogger.h:157
constexpr double kSpeedOfLight
#define ERROR(message)
Macro for logging error messages.
Definition: ErrorLogger.h:165

, generated on Tue Sep 26 2023.