/[PAMELA software]/DarthVader/OrbitalInfo/src/OrbitalInfo.cpp
ViewVC logotype

Diff of /DarthVader/OrbitalInfo/src/OrbitalInfo.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by mocchiut, Tue Sep 5 14:49:45 2006 UTC revision 1.18 by malakhov, Tue Mar 3 10:58:10 2015 UTC
# Line 1  Line 1 
1  #include <OrbitalInfo.h>  #include <OrbitalInfo.h>
2    
3    using namespace std;
4    
5    ClassImp(OrbitalInfoTrkVar);
6    ClassImp(OrbitalInfo);
7    
8    OrbitalInfoTrkVar::OrbitalInfoTrkVar(){
9      this->Clear();
10      //  Eij = new TMatrixD(3,3);
11      //  Sij = new TMatrixD(3,3);
12    }
13    
14    void OrbitalInfoTrkVar::Clear(Option_t *t){
15      trkseqno = 0;
16      pitch = -1000.;
17      sunangle = -1000;
18      sunmagangle = -1000;
19      cutoff = -1000.;
20      Eij.Zero();
21      Sij.Zero();
22    }
23    
24    void OrbitalInfoTrkVar::Delete(Option_t *t){
25      //  if ( Eij ) Eij->Delete();
26      //  if ( Sij ) Sij->Delete();
27    }
28    
29  OrbitalInfo::OrbitalInfo(){  OrbitalInfo::OrbitalInfo(){
30    absTime = 0;    OrbitalInfoTrk = 0; //ELENA
31    OBT = 0;    this->Clear();
   pkt_num = 0;  
32  }  }
33    
34    OrbitalInfoTrkVar::OrbitalInfoTrkVar(const OrbitalInfoTrkVar &t){
35      //
36      trkseqno = t.trkseqno;  
37      //
38      pitch = t.pitch;
39      cutoff = t.cutoff;
40      sunangle=t.sunangle;
41      sunmagangle=t.sunmagangle;
42      //
43      Eij.ResizeTo(t.Eij);  
44      Eij = t.Eij;  
45      Sij.ResizeTo(t.Sij);  
46      Sij = t.Sij;  
47      //
48    };
49    
50    void OrbitalInfo::Delete(Option_t *t){ //ELENA
51      //
52      //  if ( Iij ) Iij->Delete();
53      if(OrbitalInfoTrk){
54        OrbitalInfoTrk->Delete(); //ELENA
55        delete OrbitalInfoTrk;  //ELENA
56      }
57      //
58    }; //ELENA
59    
60    void OrbitalInfo::Set(){//ELENA
61      if ( !OrbitalInfoTrk ) OrbitalInfoTrk = new TClonesArray("OrbitalInfoTrkVar",2); //ELENA}  
62      //  if ( !Iij ) Iij = new TMatrixD(3,3);
63    }//ELENA
64    //--------------------------------------
65    //
66    //
67    //--------------------------------------
68    void OrbitalInfo::SetTrackArray(TClonesArray *track){//ELENA
69    //    if(track && strcmp(track->GetClass()->GetName(),"OrbitalInfoTrkVar")==0){
70            if(OrbitalInfoTrk)OrbitalInfoTrk->Clear("C");
71            OrbitalInfoTrk = track;
72    //    }
73    }
74    
75  void OrbitalInfo::Clear(){  OrbitalInfoTrkVar *OrbitalInfo::GetOrbitalInfoTrkVar(Int_t itrk){
76      //    
77      if(itrk >= ntrk()){
78        printf(" OrbitalInfo ERROR: track related variables set %i does not exists! \n",itrk);
79        printf("                    stored track related variables = %i \n",ntrk());
80        return(NULL);
81      }  
82      //
83      if(!OrbitalInfoTrk)return 0; //ELENA
84      TClonesArray &t = *(OrbitalInfoTrk);
85      OrbitalInfoTrkVar *orbtrack = (OrbitalInfoTrkVar*)t[itrk];
86      return orbtrack;
87    }
88    /**
89     * Retrieves the tof track matching the seqno-th tracker stored track.
90     *
91     */
92    OrbitalInfoTrkVar *OrbitalInfo::GetOrbitalInfoStoredTrack(int seqno){
93    
94      if( ntrk()==0 ){
95        printf("OrbitalInfo::GetOrbitalInfoStoredTrack(int) : requested tracker SeqNo %i but no OrbitalInforimeter tracks are stored\n",seqno);
96        return NULL;
97      };
98      
99      OrbitalInfoTrkVar *c = 0;
100      Int_t it_tof=0;
101        
102      do {
103        c = GetOrbitalInfoTrkVar(it_tof);
104        it_tof++;
105      } while( c && seqno != c->trkseqno && it_tof < ntrk());      
106      
107      if(!c || seqno != c->trkseqno){
108        c = 0;
109        if(seqno!=-1 ) printf("OrbitalInfo::GetOrbitalInfoStoredTrack(int) : requested tracker SeqNo %i does not match OrbitalInfo stored tracks\n",seqno);
110      };
111      return c;
112        
113    }
114    
115    void OrbitalInfo::Clear(Option_t *t){
116      //
117      if ( OrbitalInfoTrk ) OrbitalInfoTrk->Delete();
118      //
119    absTime = 0;    absTime = 0;
120    OBT = 0;    OBT = 0;
121    pkt_num = 0;    pkt_num = 0;
122    
123      lon = -1000.;
124      lat = -1000.;
125      alt = -1000.;
126      V.SetXYZ(-1000.,-1000.,-1000.);
127    
128      Bnorth = -1000.;
129      Beast = -1000.;
130      Bdown = -1000.;
131      Babs = -1000.;
132      M = -1000;
133      BB0 = -1000.;
134      L = -1000.;
135    
136       londip = -1000.;
137       latdip = -1000.;
138    
139      //  std::fill_n(cutoff, 20, 0.);
140      //  std::fill_n(cutoff, 2, 0.);
141      cutoffsvl = 0.;
142    
143      // Quaternions
144      q0 = -1000.;
145      q1 = -1000.;
146      q2 = -1000.;
147      q3 = -1000.;
148    
149      // Euler angles (nadir reference frame)
150      theta = -1000.;
151      phi = -1000.;
152      etha = -1000.;
153    
154      Iij.Zero();
155    
156      mode = 0;
157      qkind = -1000;
158      errq =  -1000;
159      azim =  -1000;
160      rtqual =-1000;
161      //  std::fill_n(goodAttitude, 5, 0);
162  }  }
163    
164  /**  /**
# Line 20  void OrbitalInfo::GetLevel2Struct(cOrbit Line 168  void OrbitalInfo::GetLevel2Struct(cOrbit
168    l2->abstime  = absTime;    l2->abstime  = absTime;
169    l2->obt      = OBT;    l2->obt      = OBT;
170    l2->pkt_num  = pkt_num;    l2->pkt_num  = pkt_num;
171    
172      l2->lon = lon;
173      l2->lat = lat;
174      l2->alt = alt;
175      l2->V = V;
176    
177      l2->Bnorth = Bnorth;
178      l2->Beast = Beast;
179      l2->Bdown = Bdown;
180      l2->Babs = Babs;
181      l2->M = M;
182      l2->BB0 = BB0;
183      l2->L = L;
184    
185       l2->londip = londip;
186       l2->latdip = latdip;
187    
188      l2->cutoffsvl = cutoffsvl;
189    //  memcpy(l2->cutoffsvl, cutoffsvl, sizeof(cutoffsvl));
190    
191      // Quaternions
192      l2->q0 = q0;
193      l2->q1 = q1;
194      l2->q2 = q2;
195      l2->q3 = q3;
196    
197      // Euler angles (nadir reference frame)
198      l2->theta = theta;
199      l2->phi = phi;
200      l2->etha = etha;
201    
202      l2->mode = mode;
203      l2->qkind = qkind;
204      l2->errq = errq;
205      l2->azim = azim;
206      l2->rtqual=rtqual;
207    
208    //   memcpy(l2->goodAttitude, goodAttitude, sizeof(goodAttitude));
209  }  }
210    
211  void OrbitalInfo::SetFromLevel2Struct(cOrbitalInfo *l2){  void OrbitalInfo::SetFromLevel2Struct(cOrbitalInfo *l2){
212    absTime  = l2->abstime;    absTime  = l2->abstime;
213    OBT      = l2->obt;    OBT      = l2->obt;
214    pkt_num  = l2->pkt_num;    pkt_num  = l2->pkt_num;
215    
216      lon = l2->lon;
217      lat = l2->lat;
218      alt = l2->alt;
219      V = l2->V;
220    
221      l2->Bnorth = Bnorth;
222      l2->Beast = Beast;
223      l2->Bdown = Bdown;
224      l2->Babs = Babs;
225      M = l2->M;
226      BB0 = l2->BB0;
227      L = l2->L;
228    
229       londip = l2->londip;
230       latdip = l2->latdip;
231    
232    //  memcpy(cutoff, l2->cutoff, sizeof(l2->cutoff));
233      l2->cutoffsvl = cutoffsvl;
234    
235      // Quaternions
236      q0 = l2->q0;
237      q1 = l2->q1;
238      q2 = l2->q2;
239      q3 = l2->q3;
240    
241      // Euler angles (nadir reference frame)
242      theta = l2->theta;
243      phi = l2->phi;
244      etha = l2->etha;
245    
246      mode = l2->mode;
247      qkind = l2->qkind;
248      errq = l2->errq;
249      azim = l2->azim;
250      rtqual=l2->rtqual;
251    
252    //   memcpy(goodAttitude, l2->goodAttitude, sizeof(l2->goodAttitude));
253  }  }
254    
 ClassImp(OrbitalInfo)  
   

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.18

  ViewVC Help
Powered by ViewVC 1.1.23