00001 #include "IMPL/TrackImpl.h"
00002
00003
00004 using namespace EVENT ;
00005
00006 namespace IMPL {
00007
00008 TrackImpl::TrackImpl() :
00009 _type(0),
00010 _d0(0),
00011 _phi(0),
00012 _omega(0),
00013 _z0(0),
00014 _tanLambda(0),
00015 _isReferencePointPCA(0),
00016 _chi2(0),
00017 _ndf(0),
00018 _dEdx(0),
00019 _dEdxError(0),
00020 _radiusOfInnermostHit(0) {
00021
00022 for(int i=0 ; i < NCOVMATRIX ; i++ ) {
00023 _covMatrix.push_back( 0.0 ) ;
00024 }
00025 _reference[0] = 0.0 ;
00026 _reference[1] = 0.0 ;
00027 _reference[2] = 0.0 ;
00028
00029 _type.set( BIT_ISREFERENCEPOINTDCA ) ;
00030
00031 }
00032
00033 TrackImpl::~TrackImpl() {
00034
00035
00036
00037
00038
00039 }
00040
00041
00042
00043 int TrackImpl::getType() const { return _type.to_ulong() ; }
00044
00045
00046
00047
00048
00049 float TrackImpl::getD0() const { return _d0 ;}
00050 float TrackImpl::getPhi() const { return _phi ; }
00051 float TrackImpl::getOmega() const { return _omega ; }
00052 float TrackImpl::getZ0() const { return _z0 ;}
00053 float TrackImpl::getTanLambda() const { return _tanLambda ;}
00054
00055 const FloatVec& TrackImpl::getCovMatrix() const { return _covMatrix ; }
00056 const float* TrackImpl::getReferencePoint() const { return _reference ; }
00057
00058 bool TrackImpl::isReferencePointPCA() const {
00059
00060 return _type.test( BIT_ISREFERENCEPOINTDCA ) ;
00061 }
00062
00063 float TrackImpl::getChi2() const { return _chi2 ;}
00064 int TrackImpl::getNdf() const { return _ndf ;}
00065 float TrackImpl::getdEdx() const { return _dEdx ; }
00066 float TrackImpl::getdEdxError() const { return _dEdxError ; }
00067
00068
00069 float TrackImpl::getRadiusOfInnermostHit() const {
00070 return _radiusOfInnermostHit ;
00071 }
00072
00073 const IntVec & TrackImpl::getSubdetectorHitNumbers() const {
00074 return _subdetectorHitNumbers ;
00075 }
00076 const TrackerHitVec & TrackImpl::getTrackerHits() const {
00077 return _hits ;
00078 }
00079
00080 const TrackVec & TrackImpl::getTracks() const {
00081 return _tracks ;
00082 }
00083
00084 void TrackImpl::setTypeBit( int index, bool val){
00085 checkAccess("TrackImpl::setTypeBit") ;
00086 _type.set( index, val ) ;
00087 }
00088
00089
00090 void TrackImpl::setType( int type ){
00091 checkAccess("TrackImpl::setType") ;
00092
00093
00094
00095
00096
00097 _type = type ;
00098 }
00099
00100 void TrackImpl::setD0( float d0 ){
00101 checkAccess("TrackImpl::setD0") ;
00102 _d0 = d0 ;
00103 }
00104 void TrackImpl::setPhi( float phi ){
00105 checkAccess("TrackImpl::setPhi") ;
00106 _phi = phi ;
00107 }
00108 void TrackImpl::setOmega( float omega ) {
00109 checkAccess("TrackImpl::setOmega") ;
00110 _omega = omega ;
00111 }
00112 void TrackImpl::setZ0( float z0 ){
00113 checkAccess("TrackImpl::setZ0") ;
00114 _z0 = z0 ;
00115 }
00116 void TrackImpl::setTanLambda( float tanLambda ){
00117 checkAccess("TrackImpl::setTanLambda") ;
00118 _tanLambda = tanLambda ;
00119 }
00120
00121
00122 void TrackImpl::setCovMatrix( float* cov ){
00123 checkAccess("TrackImpl::setCovMatrix") ;
00124 for(int i=0;i<NCOVMATRIX;i++) {
00125 _covMatrix[i] = cov[i] ;
00126 }
00127 }
00128 void TrackImpl::setCovMatrix( const FloatVec& cov ){
00129 checkAccess("TrackImpl::setCovMatrix") ;
00130 for(int i=0;i<NCOVMATRIX;i++) {
00131 _covMatrix[i] = cov[i] ;
00132 }
00133 }
00134
00135 void TrackImpl::setReferencePoint( float* rPnt){
00136 checkAccess("TrackImpl::setReferencePoint") ;
00137 for(int i=0;i<3;i++) {
00138 _reference[i] = rPnt[i] ;
00139 }
00140 }
00141
00142 void TrackImpl::setIsReferencePointPCA( bool val){
00143 checkAccess("TrackImpl::setIsReferencePointPCA") ;
00144
00145 _type.set( BIT_ISREFERENCEPOINTDCA , val ) ;
00146
00147 }
00148
00149 void TrackImpl::setChi2( float chi2 ){
00150 checkAccess("TrackImpl::setChi2") ;
00151 _chi2 = chi2 ;
00152 }
00153 void TrackImpl::setNdf( int ndf ){
00154 checkAccess("TrackImpl::setNdf") ;
00155 _ndf = ndf ;
00156 }
00157 void TrackImpl::setdEdx( float dEdx ){
00158 checkAccess("TrackImpl::setdEdx") ;
00159 _dEdx = dEdx ;
00160 }
00161 void TrackImpl::setdEdxError( float dEdxError ){
00162 checkAccess("TrackImpl::setdEdxError") ;
00163 _dEdxError = dEdxError ;
00164 }
00165
00166 void TrackImpl::addHit( TrackerHit* hit) {
00167 _hits.push_back( hit ) ;
00168 }
00169
00170 void TrackImpl::addTrack( EVENT::Track* trk ) {
00171 checkAccess("TrackImpl::addTrack") ;
00172 _tracks.push_back( trk ) ;
00173 }
00174
00175 IntVec & TrackImpl::subdetectorHitNumbers(){
00176 checkAccess("TrackImpl::subdetectorHitNumbers") ;
00177 return _subdetectorHitNumbers ;
00178 }
00179
00180 void TrackImpl::setRadiusOfInnermostHit( float r ){
00181 checkAccess("TrackImpl::setRadiusOfInnermostHit") ;
00182 _radiusOfInnermostHit = r ;
00183 }
00184
00185 }
00186
00187