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

Contents of /DarthVader/OrbitalInfo/src/OrbitalInfo.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (show annotations) (download)
Thu Jun 7 14:04:00 2012 UTC (12 years, 5 months ago) by pam-mep
Branch: MAIN
Changes since 1.14: +3 -0 lines
Earth magnetic dipole

1 #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(){
28 OrbitalInfoTrk = 0; //ELENA
29 this->Clear();
30 }
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 // memcpy(goodAttitude, l2->goodAttitude, sizeof(l2->goodAttitude));
240 }
241

  ViewVC Help
Powered by ViewVC 1.1.23