--- DarthVader/OrbitalInfo/src/OrbitalInfo.cpp 2008/11/11 10:46:44 1.13 +++ DarthVader/OrbitalInfo/src/OrbitalInfo.cpp 2015/11/17 10:10:04 1.19 @@ -14,6 +14,9 @@ void OrbitalInfoTrkVar::Clear(Option_t *t){ trkseqno = 0; pitch = -1000.; + sunangle = -1000; + sunmagangle = -1000; + cutoff = -1000.; Eij.Zero(); Sij.Zero(); } @@ -28,6 +31,22 @@ this->Clear(); } +OrbitalInfoTrkVar::OrbitalInfoTrkVar(const OrbitalInfoTrkVar &t){ + // + trkseqno = t.trkseqno; + // + pitch = t.pitch; + cutoff = t.cutoff; + sunangle=t.sunangle; + sunmagangle=t.sunmagangle; + // + Eij.ResizeTo(t.Eij); + Eij = t.Eij; + Sij.ResizeTo(t.Sij); + Sij = t.Sij; + // +}; + void OrbitalInfo::Delete(Option_t *t){ //ELENA // // if ( Iij ) Iij->Delete(); @@ -42,6 +61,16 @@ if ( !OrbitalInfoTrk ) OrbitalInfoTrk = new TClonesArray("OrbitalInfoTrkVar",2); //ELENA} // if ( !Iij ) Iij = new TMatrixD(3,3); }//ELENA +//-------------------------------------- +// +// +//-------------------------------------- +void OrbitalInfo::SetTrackArray(TClonesArray *track){//ELENA +// if(track && strcmp(track->GetClass()->GetName(),"OrbitalInfoTrkVar")==0){ + if(OrbitalInfoTrk)OrbitalInfoTrk->Clear("C"); + OrbitalInfoTrk = track; +// } +} OrbitalInfoTrkVar *OrbitalInfo::GetOrbitalInfoTrkVar(Int_t itrk){ // @@ -56,6 +85,32 @@ OrbitalInfoTrkVar *orbtrack = (OrbitalInfoTrkVar*)t[itrk]; return orbtrack; } +/** + * Retrieves the tof track matching the seqno-th tracker stored track. + * + */ +OrbitalInfoTrkVar *OrbitalInfo::GetOrbitalInfoStoredTrack(int seqno){ + + if( ntrk()==0 ){ + printf("OrbitalInfo::GetOrbitalInfoStoredTrack(int) : requested tracker SeqNo %i but no OrbitalInforimeter tracks are stored\n",seqno); + return NULL; + }; + + OrbitalInfoTrkVar *c = 0; + Int_t it_tof=0; + + do { + c = GetOrbitalInfoTrkVar(it_tof); + it_tof++; + } while( c && seqno != c->trkseqno && it_tof < ntrk()); + + if(!c || seqno != c->trkseqno){ + c = 0; + if(seqno!=-1 ) printf("OrbitalInfo::GetOrbitalInfoStoredTrack(int) : requested tracker SeqNo %i does not match OrbitalInfo stored tracks\n",seqno); + }; + return c; + +} void OrbitalInfo::Clear(Option_t *t){ // @@ -68,25 +123,18 @@ lon = -1000.; lat = -1000.; alt = -1000.; + V.SetXYZ(-1000.,-1000.,-1000.); Bnorth = -1000.; Beast = -1000.; Bdown = -1000.; Babs = -1000.; + M = -1000; BB0 = -1000.; L = -1000.; -// londip = -1000.; -// latdip = -1000.; -// altdip = -1000.; - -// loncgm = -1000.; -// latcgm = -1000.; -// altcgm = -1000.; - -// loncbm = -1000.; -// latcbm = -1000.; -// altcbm = -1000.; + londip = -1000.; + latdip = -1000.; // std::fill_n(cutoff, 20, 0.); // std::fill_n(cutoff, 2, 0.); @@ -103,16 +151,13 @@ phi = -1000.; etha = -1000.; - // Euler angles (local field reference frame) - // thetamag = -1000.; - // phimag = -1000.; - // ethamag = -1000.; - - // pamzenitangle = -1000.; - // pamBangle = -1000.; Iij.Zero(); mode = 0; + qkind = -1000; + errq = -1000; + azim = -1000; + rtqual =-1000; // std::fill_n(goodAttitude, 5, 0); } @@ -127,25 +172,18 @@ l2->lon = lon; l2->lat = lat; l2->alt = alt; + l2->V = V; l2->Bnorth = Bnorth; l2->Beast = Beast; l2->Bdown = Bdown; l2->Babs = Babs; + l2->M = M; 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->cutoffsvl = cutoffsvl; // memcpy(l2->cutoffsvl, cutoffsvl, sizeof(cutoffsvl)); @@ -162,10 +200,12 @@ l2->etha = etha; l2->mode = mode; - // Euler angles (local field reference frame) -// l2->thetamag = thetamag; -// l2->phimag = phimag; -// l2->ethamag = ethamag; + l2->qkind = qkind; + l2->errq = errq; + l2->azim = azim; + l2->rtqual=rtqual; + + l2->Iij=Iij; // memcpy(l2->goodAttitude, goodAttitude, sizeof(goodAttitude)); } @@ -178,25 +218,18 @@ lon = l2->lon; lat = l2->lat; alt = l2->alt; + V = l2->V; - l2->Bnorth = Bnorth; - l2->Beast = Beast; - l2->Bdown = Bdown; - l2->Babs = Babs; + Bnorth = l2->Bnorth; + Beast = l2->Beast; + Bdown = l2->Bdown; + Babs = l2->Babs; + M = l2->M; 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; // memcpy(cutoff, l2->cutoff, sizeof(l2->cutoff)); l2->cutoffsvl = cutoffsvl; @@ -213,10 +246,12 @@ etha = l2->etha; mode = l2->mode; - // Euler angles (local field reference frame) -// thetamag = l2->thetamag; -// phimag = l2->phimag; -// ethamag = l2->ethamag; + qkind = l2->qkind; + errq = l2->errq; + azim = l2->azim; + rtqual=l2->rtqual; + + Iij=l2->Iij; // memcpy(goodAttitude, l2->goodAttitude, sizeof(l2->goodAttitude)); }