/[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.12 - (hide annotations) (download)
Fri Oct 31 15:49:00 2008 UTC (16 years, 1 month ago) by mocchiut
Branch: MAIN
Changes since 1.11: +13 -0 lines
Compilation variables changed to speed up execution

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

  ViewVC Help
Powered by ViewVC 1.1.23