/[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.3 by mocchiut, Fri Jun 30 09:21:58 2006 UTC revision 1.15 by pam-mep, Thu Jun 7 14:04:00 2012 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      cutoff = -1000.;
18      Eij.Zero();
19      Sij.Zero();
20    }
21    
22    void OrbitalInfoTrkVar::Delete(Option_t *t){
23      //  if ( Eij ) Eij->Delete();
24      //  if ( Sij ) Sij->Delete();
25    }
26    
27  OrbitalInfo::OrbitalInfo(){  OrbitalInfo::OrbitalInfo(){
28    absTime = 0ULL;    OrbitalInfoTrk = 0; //ELENA
29    OBT = 0ULL;    this->Clear();
30    pkt_num = 0ULL;  }
31    
32    OrbitalInfoTrkVar::OrbitalInfoTrkVar(const OrbitalInfoTrkVar &t){
33      //
34      trkseqno = t.trkseqno;  
35      //
36      pitch = t.pitch;
37      cutoff = t.cutoff;
38      //
39      Eij.ResizeTo(t.Eij);  
40      Eij = t.Eij;  
41      Sij.ResizeTo(t.Sij);  
42      Sij = t.Sij;  
43      //
44    };
45    
46    void OrbitalInfo::Delete(Option_t *t){ //ELENA
47      //
48      //  if ( Iij ) Iij->Delete();
49      if(OrbitalInfoTrk){
50        OrbitalInfoTrk->Delete(); //ELENA
51        delete OrbitalInfoTrk;  //ELENA
52      }
53      //
54    }; //ELENA
55    
56    void OrbitalInfo::Set(){//ELENA
57      if ( !OrbitalInfoTrk ) OrbitalInfoTrk = new TClonesArray("OrbitalInfoTrkVar",2); //ELENA}  
58      //  if ( !Iij ) Iij = new TMatrixD(3,3);
59    }//ELENA
60    
61    OrbitalInfoTrkVar *OrbitalInfo::GetOrbitalInfoTrkVar(Int_t itrk){
62      //    
63      if(itrk >= ntrk()){
64        printf(" OrbitalInfo ERROR: track related variables set %i does not exists! \n",itrk);
65        printf("                    stored track related variables = %i \n",ntrk());
66        return(NULL);
67      }  
68      //
69      if(!OrbitalInfoTrk)return 0; //ELENA
70      TClonesArray &t = *(OrbitalInfoTrk);
71      OrbitalInfoTrkVar *orbtrack = (OrbitalInfoTrkVar*)t[itrk];
72      return orbtrack;
73  }  }
74    
75    void OrbitalInfo::Clear(Option_t *t){
76      //
77      if ( OrbitalInfoTrk ) OrbitalInfoTrk->Delete();
78      //
79      absTime = 0;
80      OBT = 0;
81      pkt_num = 0;
82    
83      lon = -1000.;
84      lat = -1000.;
85      alt = -1000.;
86    
87      Bnorth = -1000.;
88      Beast = -1000.;
89      Bdown = -1000.;
90      Babs = -1000.;
91      M = -1000;
92      BB0 = -1000.;
93      L = -1000.;
94    
95    //   londip = -1000.;
96    //   latdip = -1000.;
97    //   altdip = -1000.;
98    
99    //   loncgm = -1000.;
100    //   latcgm = -1000.;
101    //   altcgm = -1000.;
102    
103    //   loncbm = -1000.;
104    //   latcbm = -1000.;
105    //   altcbm = -1000.;
106    
107      //  std::fill_n(cutoff, 20, 0.);
108      //  std::fill_n(cutoff, 2, 0.);
109      cutoffsvl = 0.;
110    
111      // Quaternions
112      q0 = -1000.;
113      q1 = -1000.;
114      q2 = -1000.;
115      q3 = -1000.;
116    
117      // Euler angles (nadir reference frame)
118      theta = -1000.;
119      phi = -1000.;
120      etha = -1000.;
121    
122      // Euler angles (local field reference frame)
123      //  thetamag = -1000.;
124      //  phimag = -1000.;
125      //  ethamag = -1000.;
126    
127      //  pamzenitangle = -1000.;
128      //  pamBangle = -1000.;
129      Iij.Zero();
130    
131      mode = 0;
132      //  std::fill_n(goodAttitude, 5, 0);
133    }
134    
135    /**
136     * Fills a struct cOrbitalInfo with values from a OrbitalInfo object (to put data into a F77 common).
137     */
138    void OrbitalInfo::GetLevel2Struct(cOrbitalInfo *l2) const{
139      l2->abstime  = absTime;
140      l2->obt      = OBT;
141      l2->pkt_num  = pkt_num;
142    
143      l2->lon = lon;
144      l2->lat = lat;
145      l2->alt = alt;
146    
147      l2->Bnorth = Bnorth;
148      l2->Beast = Beast;
149      l2->Bdown = Bdown;
150      l2->Babs = Babs;
151      l2->M = M;
152      l2->BB0 = BB0;
153      l2->L = L;
154    
155    //   l2->londip = londip;
156    //   l2->latdip = latdip;
157    //   l2->altdip = altdip;
158    
159    //   l2->loncgm = loncgm;
160    //   l2->latcgm = latcgm;
161    //   l2->altcgm = altcgm;
162    
163    //   l2->loncbm = loncbm;
164    //   l2->latcbm = latcbm;
165    //   l2->altcbm = altcbm;
166    
167      l2->cutoffsvl = cutoffsvl;
168    //  memcpy(l2->cutoffsvl, cutoffsvl, sizeof(cutoffsvl));
169    
170      // Quaternions
171      l2->q0 = q0;
172      l2->q1 = q1;
173      l2->q2 = q2;
174      l2->q3 = q3;
175    
176      // Euler angles (nadir reference frame)
177      l2->theta = theta;
178      l2->phi = phi;
179      l2->etha = etha;
180    
181      l2->mode = mode;
182      // Euler angles (local field reference frame)
183    //   l2->thetamag = thetamag;
184    //   l2->phimag = phimag;
185    //   l2->ethamag = ethamag;
186    
187    //   memcpy(l2->goodAttitude, goodAttitude, sizeof(goodAttitude));
188    }
189    
190    void OrbitalInfo::SetFromLevel2Struct(cOrbitalInfo *l2){
191      absTime  = l2->abstime;
192      OBT      = l2->obt;
193      pkt_num  = l2->pkt_num;
194    
195      lon = l2->lon;
196      lat = l2->lat;
197      alt = l2->alt;
198    
199      l2->Bnorth = Bnorth;
200      l2->Beast = Beast;
201      l2->Bdown = Bdown;
202      l2->Babs = Babs;
203      M = l2->M;
204      BB0 = l2->BB0;
205      L = l2->L;
206    
207    //   londip = l2->londip;
208    //   latdip = l2->latdip;
209    //   altdip = l2->altdip;
210    
211    //   loncgm = l2->loncgm;
212    //   latcgm = l2->latcgm;
213    //   altcgm = l2->altcgm;
214    
215    //   loncbm = l2->loncbm;
216    //   latcbm = l2->latcbm;
217    //   altcbm = l2->altcbm;
218    
219    //  memcpy(cutoff, l2->cutoff, sizeof(l2->cutoff));
220      l2->cutoffsvl = cutoffsvl;
221    
222      // Quaternions
223      q0 = l2->q0;
224      q1 = l2->q1;
225      q2 = l2->q2;
226      q3 = l2->q3;
227    
228      // Euler angles (nadir reference frame)
229      theta = l2->theta;
230      phi = l2->phi;
231      etha = l2->etha;
232    
233      mode = l2->mode;
234      // Euler angles (local field reference frame)
235    //   thetamag = l2->thetamag;
236    //   phimag = l2->phimag;
237    //   ethamag = l2->ethamag;
238    
239  void OrbitalInfo::Clear(){  //   memcpy(goodAttitude, l2->goodAttitude, sizeof(l2->goodAttitude));
   absTime = 0ULL;  
   OBT = 0ULL;  
   pkt_num = 0ULL;  
240  }  }
241    
 ClassImp(OrbitalInfo)  
   

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.15

  ViewVC Help
Powered by ViewVC 1.1.23