--- DarthVader/OrbitalInfo/src/OrbitalInfo.cpp 2007/03/20 20:56:29 1.8 +++ DarthVader/OrbitalInfo/src/OrbitalInfo.cpp 2008/11/11 10:46:44 1.13 @@ -1,56 +1,66 @@ #include -OrbitalInfo::OrbitalInfo(){ - absTime = 0; - OBT = 0; - pkt_num = 0; - - lon = 0.; - lat = 0.; - alt = 0.; - - Bnorth = 0.; - Beast = 0.; - Bdown = 0.; - Babs = 0.; - BB0 = 0.; - L = 0.; - - londip = -1000.; - latdip = -1000.; - altdip = -1000.; - - loncgm = -1000.; - latcgm = -1000.; - altcgm = -1000.; - - loncbm = -1000.; - latcbm = -1000.; - altcbm = -1000.; +using namespace std; - std::fill_n(cutoff, 20, 0.); +ClassImp(OrbitalInfoTrkVar); +ClassImp(OrbitalInfo); - // Quaternions - q0 = -1000.; - q1 = -1000.; - q2 = -1000.; - q3 = -1000.; +OrbitalInfoTrkVar::OrbitalInfoTrkVar(){ + this->Clear(); + // Eij = new TMatrixD(3,3); + // Sij = new TMatrixD(3,3); +} - // Euler angles (nadir reference frame) - theta = -1000.; - phi = -1000.; - etha = -1000.; +void OrbitalInfoTrkVar::Clear(Option_t *t){ + trkseqno = 0; + pitch = -1000.; + Eij.Zero(); + Sij.Zero(); +} - // Euler angles (local field reference frame) - thetamag = -1000.; - phimag = -1000.; - ethamag = -1000.; +void OrbitalInfoTrkVar::Delete(Option_t *t){ + // if ( Eij ) Eij->Delete(); + // if ( Sij ) Sij->Delete(); +} - std::fill_n(goodAttitude, 5, 0); +OrbitalInfo::OrbitalInfo(){ + OrbitalInfoTrk = 0; //ELENA + this->Clear(); } +void OrbitalInfo::Delete(Option_t *t){ //ELENA + // + // if ( Iij ) Iij->Delete(); + if(OrbitalInfoTrk){ + OrbitalInfoTrk->Delete(); //ELENA + delete OrbitalInfoTrk; //ELENA + } + // +}; //ELENA + +void OrbitalInfo::Set(){//ELENA + if ( !OrbitalInfoTrk ) OrbitalInfoTrk = new TClonesArray("OrbitalInfoTrkVar",2); //ELENA} + // if ( !Iij ) Iij = new TMatrixD(3,3); +}//ELENA + +OrbitalInfoTrkVar *OrbitalInfo::GetOrbitalInfoTrkVar(Int_t itrk){ + // + if(itrk >= ntrk()){ + printf(" OrbitalInfo ERROR: track related variables set %i does not exists! \n",itrk); + printf(" stored track related variables = %i \n",ntrk()); + return(NULL); + } + // + if(!OrbitalInfoTrk)return 0; //ELENA + TClonesArray &t = *(OrbitalInfoTrk); + OrbitalInfoTrkVar *orbtrack = (OrbitalInfoTrkVar*)t[itrk]; + return orbtrack; +} -void OrbitalInfo::Clear(){ +void OrbitalInfo::Clear(Option_t *t){ + // + if ( OrbitalInfoTrk ) OrbitalInfoTrk->Delete(); + // absTime = 0; OBT = 0; pkt_num = 0; @@ -66,19 +76,21 @@ BB0 = -1000.; L = -1000.; - londip = -1000.; - latdip = -1000.; - altdip = -1000.; - - loncgm = -1000.; - latcgm = -1000.; - altcgm = -1000.; - - loncbm = -1000.; - latcbm = -1000.; - altcbm = -1000.; - - std::fill_n(cutoff, 20, 0.); +// londip = -1000.; +// latdip = -1000.; +// altdip = -1000.; + +// loncgm = -1000.; +// latcgm = -1000.; +// altcgm = -1000.; + +// loncbm = -1000.; +// latcbm = -1000.; +// altcbm = -1000.; + + // std::fill_n(cutoff, 20, 0.); + // std::fill_n(cutoff, 2, 0.); + cutoffsvl = 0.; // Quaternions q0 = -1000.; @@ -92,11 +104,16 @@ etha = -1000.; // Euler angles (local field reference frame) - thetamag = -1000.; - phimag = -1000.; - ethamag = -1000.; + // thetamag = -1000.; + // phimag = -1000.; + // ethamag = -1000.; + + // pamzenitangle = -1000.; + // pamBangle = -1000.; + Iij.Zero(); - std::fill_n(goodAttitude, 5, 0); + mode = 0; + // std::fill_n(goodAttitude, 5, 0); } /** @@ -118,19 +135,20 @@ l2->BB0 = BB0; l2->L = L; - l2->londip = londip; - l2->latdip = latdip; - l2->altdip = altdip; - - l2->loncgm = loncgm; - l2->latcgm = latcgm; - l2->altcgm = altcgm; - - l2->loncbm = loncbm; - l2->latcbm = latcbm; - l2->altcbm = altcbm; +// l2->londip = londip; +// l2->latdip = latdip; +// l2->altdip = altdip; + +// l2->loncgm = loncgm; +// l2->latcgm = latcgm; +// l2->altcgm = altcgm; + +// l2->loncbm = loncbm; +// l2->latcbm = latcbm; +// l2->altcbm = altcbm; - memcpy(l2->cutoff, cutoff, sizeof(cutoff)); + l2->cutoffsvl = cutoffsvl; +// memcpy(l2->cutoffsvl, cutoffsvl, sizeof(cutoffsvl)); // Quaternions l2->q0 = q0; @@ -143,12 +161,13 @@ l2->phi = phi; l2->etha = etha; + l2->mode = mode; // Euler angles (local field reference frame) - l2->thetamag = thetamag; - l2->phimag = phimag; - l2->ethamag = ethamag; +// l2->thetamag = thetamag; +// l2->phimag = phimag; +// l2->ethamag = ethamag; - memcpy(l2->goodAttitude, goodAttitude, sizeof(goodAttitude)); +// memcpy(l2->goodAttitude, goodAttitude, sizeof(goodAttitude)); } void OrbitalInfo::SetFromLevel2Struct(cOrbitalInfo *l2){ @@ -167,19 +186,20 @@ BB0 = l2->BB0; L = l2->L; - londip = l2->londip; - latdip = l2->latdip; - altdip = l2->altdip; - - loncgm = l2->loncgm; - latcgm = l2->latcgm; - altcgm = l2->altcgm; - - loncbm = l2->loncbm; - latcbm = l2->latcbm; - altcbm = l2->altcbm; +// londip = l2->londip; +// latdip = l2->latdip; +// altdip = l2->altdip; + +// loncgm = l2->loncgm; +// latcgm = l2->latcgm; +// altcgm = l2->altcgm; + +// loncbm = l2->loncbm; +// latcbm = l2->latcbm; +// altcbm = l2->altcbm; - memcpy(cutoff, l2->cutoff, sizeof(l2->cutoff)); +// memcpy(cutoff, l2->cutoff, sizeof(l2->cutoff)); + l2->cutoffsvl = cutoffsvl; // Quaternions q0 = l2->q0; @@ -192,12 +212,12 @@ phi = l2->phi; etha = l2->etha; + mode = l2->mode; // Euler angles (local field reference frame) - thetamag = l2->thetamag; - phimag = l2->phimag; - ethamag = l2->ethamag; +// thetamag = l2->thetamag; +// phimag = l2->phimag; +// ethamag = l2->ethamag; - memcpy(goodAttitude, l2->goodAttitude, sizeof(l2->goodAttitude)); +// memcpy(goodAttitude, l2->goodAttitude, sizeof(l2->goodAttitude)); } -ClassImp(OrbitalInfo)