00001 #include "StMuPrimaryTrackCovariance.h"
00002 #include "TMath.h"
00003 #include "Stiostream.h"
00004 #include "TRSymMatrix.h"
00005 ClassImp(StMuPrimaryTrackCovariance);
00006 StMuPrimaryTrackCovariance::StMuPrimaryTrackCovariance() {memset(mBeg,0,mEnd-mBeg+1);}
00007 StMuPrimaryTrackCovariance::StMuPrimaryTrackCovariance(StMatrixF cov) {
00008 memset(mBeg,0,mEnd-mBeg+1);
00009 Float_t *covv = &mTanTan;
00010 for (Int_t i = 0; i < 3; i++) {
00011 for (Int_t j = 0; j <= i; j++) {
00012 Int_t ij = i*(i+1)/2 + j;
00013 covv[ij] = cov(i+3,j+3);
00014 if (i == 1) covv[ij] *= TMath::DegToRad();
00015 if (j == 1) covv[ij] *= TMath::DegToRad();
00016 }
00017 }
00018 }
00019
00020 StMuPrimaryTrackCovariance::StMuPrimaryTrackCovariance(const Float_t *cov) {
00021 memset(mBeg,0,mEnd-mBeg+1);
00022 mTanTan = cov[ 9];
00023 mPsiTan = cov[10]*TMath::DegToRad(); mPsiPsi = cov[12]*TMath::DegToRad()*TMath::DegToRad();
00024 mPtiTan = cov[11] ; mPtiPsi = cov[13]*TMath::DegToRad() ; mPtiPti = cov[14];
00025 }
00026 ostream& operator<<(ostream& os, const StMuPrimaryTrackCovariance& v) {
00027 TRSymMatrix cov(3,v.errMatrix());
00028 os << "StMuPrimaryTrackCovariance: " << cov;
00029 }
00030 void StMuPrimaryTrackCovariance::Print(Option_t *option) const {cout << *this << endl;}