Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2024-09-28 07:03:43

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_DtDn(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     //FIXME: do it better later;
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   // This is a reconstructed direction in MARS 3D system; 
0044   TVector3 m_Direction;
0045 
0046  private:
0047   bool m_Converged;
0048   double m_Theta, m_SigmaTheta, m_Phi;
0049 
0050   // Derivatives: XY-coordinates on the sensor, emission point, "refractive index" (?), 
0051   // charged particle track theta and phi; these ones can be evaluated internally;
0052   double m_DtDx, m_DtDy, m_DtDz/*, m_DtDn*/, m_DtDt, m_DtDf;
0053 
0054   // Qaudratic error estimates as provided by the user; assume tracking errors diagonal;
0055   double m_SigmaDx, m_SigmaDy, m_SigmaDz, m_SigmaDt, m_SigmaDf;
0056 };
0057 
0058 #endif