Warning, file /include/IRT/IRTSolution.h was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002 #include <TVector3.h>
0003
0004 #ifndef _IRT_SOLUTION_
0005 #define _IRT_SOLUTION_
0006
0007 class IRTSolution {
0008 friend class IRT;
0009
0010 public:
0011 IRTSolution(): m_Converged(false), m_Theta(0.0), m_SigmaTheta(0.0), m_Phi(0.0),
0012 m_DtDx(0.0), m_DtDy(0.0), m_DtDz(0.0), m_DtDt(0.0), m_DtDf(0.0),
0013 m_SigmaDx(0.0), m_SigmaDy(0.0), m_SigmaDz(0.0), m_SigmaDt(0.0), m_SigmaDf(0.0) {};
0014 ~IRTSolution() {};
0015
0016 bool Converged( void ) const { return m_Converged; }
0017 double GetTheta( void ) const { return m_Theta; };
0018 double GetSigmaTheta( void ) const { return m_SigmaTheta; };
0019 double GetPhi( void ) const { return m_Phi; };
0020 #if _LATER_
0021 IRTSolution& operator = (IRTSolution other) {
0022 m_Converged = false; m_Theta = other.m_Theta; m_SigmaTheta = 0.0; m_Phi = other.m_Phi;
0023 return *this;
0024 };
0025 #endif
0026 void SetSigmaDx(double value) { m_SigmaDx = value; };
0027 void SetSigmaDy(double value) { m_SigmaDy = value; };
0028 void SetSigmaDz(double value) { m_SigmaDz = value; };
0029 void SetSigmaDt(double value) { m_SigmaDt = value; };
0030 void SetSigmaDf(double value) { m_SigmaDf = value; };
0031
0032 void CalculateSigmaThetaEstimate( void ) {
0033
0034 const unsigned dim = 5;
0035 double sigma [dim] = {m_SigmaDx, m_SigmaDy, m_SigmaDz, m_SigmaDt, m_SigmaDf};
0036 double derivative[dim] = { m_DtDx, m_DtDy, m_DtDz, m_DtDt, m_DtDf};
0037 m_SigmaTheta = 0.0;
0038 for(unsigned iq=0; iq<dim; iq++)
0039 m_SigmaTheta += pow(sigma[iq]*derivative[iq], 2);
0040 m_SigmaTheta = sqrt(m_SigmaTheta);
0041 };
0042
0043
0044 TVector3 m_Direction;
0045
0046 private:
0047 bool m_Converged;
0048 double m_Theta, m_SigmaTheta, m_Phi;
0049
0050
0051
0052 double m_DtDx, m_DtDy, m_DtDz, m_DtDt, m_DtDf;
0053
0054
0055 double m_SigmaDx, m_SigmaDy, m_SigmaDz, m_SigmaDt, m_SigmaDf;
0056 };
0057
0058 #endif