Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

AlUserTrack.cpp

Go to the documentation of this file.
00001 #include "AlUserTrack.h"
00002 
00003 // default constructor
00004 AlUserTrack::AlUserTrack()
00005 {
00006   _daughters.resize(0);
00007   HepSymMatrix temp1(5,0);
00008   _EM.assign(temp1);
00009   HepSymMatrix temp2(4,0);
00010   _EM_kin.assign(temp2);
00011   HepMatrix temp3(3,3,0);
00012   _corr_track_vertex = temp3;
00013 
00014   eVertex = NULL;  
00015   
00016 }
00017  
00018 // copy constructor
00019 AlUserTrack::AlUserTrack(const AlUserTrack& rhsAt): QvecBase(rhsAt)
00020 {
00021   _daughters.resize(rhsAt._daughters.size());
00022     
00023   for (unsigned int i = 0; i < rhsAt._daughters.size(); i++) {
00024     _daughters[i] = rhsAt._daughters[i];
00025   }
00026    
00027   eVertex = rhsAt.eVertex;  // dangerous, but don't know how to do better
00028   _EM = rhsAt._EM;
00029   _EM_kin = rhsAt._EM_kin;
00030   _corr_track_vertex = rhsAt._corr_track_vertex;
00031 
00032 }
00033 
00034 //-----------------------------------------------------------------------
00035 AlephCollection<AlObject*>& AlUserTrack::getDaughters() 
00036 { 
00037   return _daughters;
00038 }
00039      
00040 //-----------------------------------------------------------------------
00041 void AlUserTrack::addDaughter(AlObject* d)
00042 { 
00043   _daughters.push_back(d); 
00044 }
00045 
00046 //-----------------------------------------------------------------------
00047 float  AlUserTrack::EM(int i) const
00048 { 
00049   if (i < 0 || i > 15) return -9999.;
00050   int j = 0;
00051   float val;
00052   for (int m = 1; m <= 5; m++) {
00053     for (int n = 1; n <= m; n++) {
00054       if (++j == i) { 
00055         val = _EM(m,n);
00056         break;
00057       }
00058     }      
00059   } 
00060   return val;
00061 }
00062 
00063 //-----------------------------------------------------------------------
00064 float  AlUserTrack::EM(int m, int n) const
00065 { 
00066   return _EM(m,n);
00067 }
00068 
00069 //-----------------------------------------------------------------------
00070 HepSymMatrix&  AlUserTrack::EM() 
00071 { 
00072   return _EM;
00073 }
00074 
00075 //-----------------------------------------------------------------------
00076 void AlUserTrack::setEM(int i, float val)
00077 { 
00078   if (i > 0 && i < 15) {
00079     int j = 0;
00080     for (int m = 1; m <= 5; m++) {
00081       for (int n = 1; n <= m; n++) {
00082         if (++j == i) _EM(m,n) = val;
00083       }      
00084     } 
00085   }
00086 }  
00087 
00088 //-----------------------------------------------------------------------
00089 void AlUserTrack::setEM(const HepSymMatrix& em)
00090 { 
00091   for (int m = 1; m <= 5; m++) {
00092     for (int n = 1; n <= m; n++) { 
00093       _EM(m,n) = em(m,n);
00094     }      
00095   } 
00096 }  
00097 
00098 
00099 //-----------------------------------------------------------------------
00100 float  AlUserTrack::SIG(int i) const
00101 { 
00102   if (i < 0 || i > 15) return -9999.;
00103   int j = 0;
00104   float val;
00105   for (int m = 1; m <= 5; m++) {
00106     for (int n = 1; n <= m; n++) {
00107       if (++j == i) { 
00108         val = _EM_kin(m,n);
00109         break;
00110       }
00111     }      
00112   } 
00113   return val;
00114 }
00115 
00116 //-----------------------------------------------------------------------
00117 float  AlUserTrack::EM_kin(int m, int n) const
00118 { 
00119   return _EM_kin(m,n);
00120 }
00121 
00122 //-----------------------------------------------------------------------
00123 HepSymMatrix&  AlUserTrack::EM_kin()
00124 { 
00125   return _EM_kin;
00126 }
00127 
00128 //-----------------------------------------------------------------------
00129 void AlUserTrack::setEM_kin(int i, float val) 
00130 { 
00131   if (i > 0 && i < 15) {
00132     int j = 0;
00133     for (int m = 1; m <= 5; m++) {
00134       for (int n = 1; n <= m; n++) {
00135         if (++j == i) {
00136           _EM_kin(m,n) = val;
00137           break;
00138         }
00139       }      
00140     } 
00141   }
00142 }  
00143 
00144 //-----------------------------------------------------------------------
00145 void AlUserTrack::setEM_kin(const HepSymMatrix& em)
00146 { 
00147   for (int m = 1; m <= 5; m++) {
00148     for (int n = 1; n <= m; n++) { 
00149       _EM_kin(m,n) = em(m,n);
00150     }      
00151   } 
00152 }  
00153 
00154 //-----------------------------------------------------------------------
00155 float AlUserTrack::SIGEE() const { return SIG(10);}
00156 
00157 //-----------------------------------------------------------------------
00158 float AlUserTrack::SIGPP() const { return  
00159 (  QX()*QX()*SIG(1) +
00160    QY()*QY()*SIG(3) +
00161    QZ()*QZ()*SIG(6) +
00162    2*( QX()*( QY()*SIG(2) + QZ()*SIG(4) ) + QY()*QZ()*SIG(5) )   ) / (QP()*QP()); }
00163  
00164 //----------------------------------------------------------------------- 
00165 float AlUserTrack::SIGMM() const { return
00166 ( QM()*
00167   ( QE()*QE()*SIG(10) + 
00168     QX()*QX()*SIG(1)  +
00169     QY()*QY()*SIG(3)  + 
00170     QZ()*QZ()*SIG(6)  +
00171     2*( QX()*( QY()*SIG(2) + QZ()*SIG(4) ) + QY()*QZ()*SIG(5) - QE()*(QX()*SIG(7) + QY()*SIG(8) + QZ()*SIG(9)) )   )     ); }
00172 
00173 
00174 //-----------------------------------------------------------------------
00175 float  AlUserTrack::corrMatrix(int m, int n) const
00176 { 
00177   return _corr_track_vertex(m,n);
00178 }
00179 
00180 //-----------------------------------------------------------------------
00181 HepMatrix&  AlUserTrack::corrMatrix()
00182 { 
00183   return _corr_track_vertex;
00184 }
00185 
00186 //-----------------------------------------------------------------------
00187 void AlUserTrack::setCorrMatrix(int i, int j, float val)
00188 { 
00189   _corr_track_vertex(i,j) = val;
00190         
00191 }  
00192 
00193 //-----------------------------------------------------------------------
00194 void AlUserTrack::setCorrMatrix(const HepMatrix& cm)
00195 { 
00196   for (int m = 1; m <= 3; m++) {
00197     for (int n = 1; n <= 3; n++) { 
00198       _corr_track_vertex(m,n) = cm(m,n);
00199     }      
00200   } 
00201 }  

Generated at Wed Jun 18 17:19:11 2003 for ALPHA++ by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001