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

Annotation of /DarthVader/OrbitalInfo/src/OrbitalInfo.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.15 - (hide 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 mocchiut 1.1 #include <OrbitalInfo.h>
2    
3 mocchiut 1.11 using namespace std;
4 pam-rm2 1.6
5 mocchiut 1.11 ClassImp(OrbitalInfoTrkVar);
6     ClassImp(OrbitalInfo);
7 pam-rm2 1.6
8 mocchiut 1.11 OrbitalInfoTrkVar::OrbitalInfoTrkVar(){
9     this->Clear();
10 mocchiut 1.13 // Eij = new TMatrixD(3,3);
11     // Sij = new TMatrixD(3,3);
12 mocchiut 1.11 }
13 pam-rm2 1.6
14 mocchiut 1.11 void OrbitalInfoTrkVar::Clear(Option_t *t){
15     trkseqno = 0;
16     pitch = -1000.;
17 mocchiut 1.14 cutoff = -1000.;
18 mocchiut 1.13 Eij.Zero();
19     Sij.Zero();
20 mocchiut 1.11 }
21 pam-rm2 1.6
22 mocchiut 1.13 void OrbitalInfoTrkVar::Delete(Option_t *t){
23     // if ( Eij ) Eij->Delete();
24     // if ( Sij ) Sij->Delete();
25     }
26 pam-rm2 1.6
27 mocchiut 1.11 OrbitalInfo::OrbitalInfo(){
28     OrbitalInfoTrk = 0; //ELENA
29     this->Clear();
30     }
31 pam-rm2 1.6
32 mocchiut 1.14 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 mocchiut 1.11 void OrbitalInfo::Delete(Option_t *t){ //ELENA
47     //
48 mocchiut 1.13 // if ( Iij ) Iij->Delete();
49 mocchiut 1.11 if(OrbitalInfoTrk){
50     OrbitalInfoTrk->Delete(); //ELENA
51     delete OrbitalInfoTrk; //ELENA
52     }
53     //
54     }; //ELENA
55    
56     void OrbitalInfo::Set(){//ELENA
57 mocchiut 1.13 if ( !OrbitalInfoTrk ) OrbitalInfoTrk = new TClonesArray("OrbitalInfoTrkVar",2); //ELENA}
58     // if ( !Iij ) Iij = new TMatrixD(3,3);
59 mocchiut 1.11 }//ELENA
60 mocchiut 1.1
61 mocchiut 1.12 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 mocchiut 1.1
75 mocchiut 1.10 void OrbitalInfo::Clear(Option_t *t){
76 mocchiut 1.11 //
77     if ( OrbitalInfoTrk ) OrbitalInfoTrk->Delete();
78     //
79 mocchiut 1.5 absTime = 0;
80     OBT = 0;
81     pkt_num = 0;
82 pam-rm2 1.6
83     lon = -1000.;
84     lat = -1000.;
85     alt = -1000.;
86    
87     Bnorth = -1000.;
88     Beast = -1000.;
89     Bdown = -1000.;
90     Babs = -1000.;
91 pam-mep 1.15 M = -1000;
92 pam-rm2 1.6 BB0 = -1000.;
93     L = -1000.;
94    
95 mocchiut 1.13 // 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 pam-rm2 1.6
111     // Quaternions
112     q0 = -1000.;
113     q1 = -1000.;
114     q2 = -1000.;
115     q3 = -1000.;
116    
117     // Euler angles (nadir reference frame)
118 mocchiut 1.8 theta = -1000.;
119     phi = -1000.;
120     etha = -1000.;
121 pam-rm2 1.6
122     // Euler angles (local field reference frame)
123 mocchiut 1.9 // thetamag = -1000.;
124     // phimag = -1000.;
125     // ethamag = -1000.;
126 pam-rm2 1.6
127 mocchiut 1.13 // pamzenitangle = -1000.;
128     // pamBangle = -1000.;
129     Iij.Zero();
130 mocchiut 1.11
131 mocchiut 1.9 mode = 0;
132     // std::fill_n(goodAttitude, 5, 0);
133 mocchiut 1.3 }
134    
135 pam-fi 1.4 /**
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 pam-rm2 1.6
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 pam-mep 1.15 l2->M = M;
152 pam-rm2 1.6 l2->BB0 = BB0;
153     l2->L = L;
154    
155 mocchiut 1.13 // 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 pam-rm2 1.6
167 mocchiut 1.13 l2->cutoffsvl = cutoffsvl;
168     // memcpy(l2->cutoffsvl, cutoffsvl, sizeof(cutoffsvl));
169 pam-rm2 1.6
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 mocchiut 1.8 l2->theta = theta;
178     l2->phi = phi;
179     l2->etha = etha;
180 pam-rm2 1.6
181 mocchiut 1.9 l2->mode = mode;
182 pam-rm2 1.6 // Euler angles (local field reference frame)
183 mocchiut 1.9 // l2->thetamag = thetamag;
184     // l2->phimag = phimag;
185     // l2->ethamag = ethamag;
186 pam-rm2 1.6
187 mocchiut 1.9 // memcpy(l2->goodAttitude, goodAttitude, sizeof(goodAttitude));
188 pam-fi 1.4 }
189    
190     void OrbitalInfo::SetFromLevel2Struct(cOrbitalInfo *l2){
191     absTime = l2->abstime;
192     OBT = l2->obt;
193     pkt_num = l2->pkt_num;
194 pam-rm2 1.6
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 pam-mep 1.15 M = l2->M;
204 pam-rm2 1.6 BB0 = l2->BB0;
205     L = l2->L;
206    
207 mocchiut 1.13 // 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 pam-rm2 1.6
219 mocchiut 1.13 // memcpy(cutoff, l2->cutoff, sizeof(l2->cutoff));
220     l2->cutoffsvl = cutoffsvl;
221 pam-rm2 1.6
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 mocchiut 1.8 theta = l2->theta;
230     phi = l2->phi;
231     etha = l2->etha;
232 pam-rm2 1.6
233 mocchiut 1.9 mode = l2->mode;
234 pam-rm2 1.6 // Euler angles (local field reference frame)
235 mocchiut 1.9 // thetamag = l2->thetamag;
236     // phimag = l2->phimag;
237     // ethamag = l2->ethamag;
238 pam-rm2 1.6
239 mocchiut 1.9 // memcpy(goodAttitude, l2->goodAttitude, sizeof(l2->goodAttitude));
240 pam-fi 1.4 }
241    

  ViewVC Help
Powered by ViewVC 1.1.23