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

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

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

revision 1.4 by pam-mep, Fri Mar 28 20:47:15 2014 UTC revision 1.5 by malakhov, Wed Sep 10 06:34:12 2014 UTC
# Line 36  TMatrixD OrientationInfo::QuatoECI(Float Line 36  TMatrixD OrientationInfo::QuatoECI(Float
36    
37  TMatrixD OrientationInfo::ECItoGreenwich(TMatrixD Aij, UInt_t t){  TMatrixD OrientationInfo::ECItoGreenwich(TMatrixD Aij, UInt_t t){
38      TMatrixD Gij(3,3);      TMatrixD Gij(3,3);
39        UInt_t t1=t-t%86400;
40        UInt_t t2=t1+86400;
41      Double_t omg = (7.292115e-5)*a;                     // Earth rotation velosity (Around polar axis);      Double_t omg = (7.292115e-5)*a;                     // Earth rotation velosity (Around polar axis);
42      Double_t d = (t-10957*86400-43200);                      //Number of day, passing from 01/01/2000 12:00:00 to t;      Double_t d = (t1-10957*86400-43200);                     //Number of day, passing from 01/01/2000 12:00:00 to t;
43      d = d/86400;      d = d/86400;
44      Double_t T = d/36525;                                    //Number of Julian centuries;      Double_t T = d/36525;                                    //Number of Julian centuries;
45            Double_t Se = 6*3600+41*60+236.555367908*d+0.093104*T*T-(6.2e-6)*T*T*T;  //18 <-> 6
46      Double_t Se = 6*3600+41*60+236.555367908*d+0.093104*pow(T,2)-(6.2e-6)*pow(T,3);      Double_t tr = (t1-10957*86400)%86400;
47        Double_t Somg1 = (Se+49.077+omg*86400*tr/360.)*360/86400.;
     Int_t tr = (t-10957*86400)%86400;  
48    
49      Double_t Somg = (Se+49.077+omg*86400*tr/360)*360/86400;      d = (t2-10957*86400-43200);                      //Number of day, passing from 01/01/2000 12:00:00 to t;
50        d = d/86400;
51      //Somg = 25; //for test transition      T = d/36525;                                     //Number of Julian centuries;
52        Se = 6*3600+41*60+236.555367908*d+0.093104*T*T-(6.2e-6)*T*T*T;  //18 <-> 6
53        tr = (t2-10957*86400)%86400;
54        Double_t Somg2 = (Se+49.077+omg*86400*tr/360.)*360/86400.;
55        Somg2+=360.0;
56    
57        Double_t kk=(Somg2-Somg1)/(t2-t1);
58        Double_t bb= Somg1-kk*t1;
59        Double_t Somg=kk*t+bb;
60    
61      Gij(0,0) = cos(Somg/a);      Gij(0,0) = cos(Somg/a);
62      Gij(0,1) = -sin(Somg/a);      Gij(0,1) = -sin(Somg/a);
# Line 132  TMatrixD OrientationInfo::EulertoEci(Dou Line 141  TMatrixD OrientationInfo::EulertoEci(Dou
141       Double_t u21 = (-by+uj*sqrt(Ds))/(2*ab);       Double_t u21 = (-by+uj*sqrt(Ds))/(2*ab);
142       Double_t u21s = -TMath::Sign(1.,Bank)*TMath::Abs(u21);       Double_t u21s = -TMath::Sign(1.,Bank)*TMath::Abs(u21);
143       Double_t u01 = TMath::Sign(1.,Yaw)*TMath::Abs((u10*u11+u20*u21)/u00);       Double_t u01 = TMath::Sign(1.,Yaw)*TMath::Abs((u10*u11+u20*u21)/u00);
144  //    cerr<<"by = " << by<<"\tuj"<<uj<<"\tab: "<<ab<<"\t"<<by*by-4*ab*cy<<endl;  
 //    cerr<<"u21: "<<u21<<"\tu01: "<<u01<<"\t"<<TMath::Abs((u10*u11+u20*u21)/u00)<<"\t"<<TMath::Sign(1.,Yaw)<<"\t"<<(u10*u11+u20*u21)<<endl;  
145      Int_t fj=1;      Int_t fj=1;
146      if(TMath::Sign(1.,SPitch)>0 && TMath::Sign(1.,Yaw)>0) fj=-1;      if(TMath::Sign(1.,SPitch)>0 && TMath::Sign(1.,Yaw)>0) fj=-1;
 //    cout<<"bla-bla-bla"<<endl;  
147    
148       Double_t u22 = (-bz+fj*sqrt(bz*bz-4*ab*cz))/(2*ab);       Double_t u22 = (-bz+fj*sqrt(bz*bz-4*ab*cz))/(2*ab);
149       Double_t u22s = -TMath::Sign(1.,SPitch)*TMath::Abs(u22);       Double_t u22s = -TMath::Sign(1.,SPitch)*TMath::Abs(u22);
150       Double_t u02 = -TMath::Abs((u10*u12+u20*u22)/u00);       Double_t u02 = -TMath::Abs((u10*u12+u20*u22)/u00);
151    
 //    cout<<fj<<"\t"<<ab<<"\t"<<by<<"\t"<<cy<<"\t"<<bz<<"\t"<<cz<<endl;  
 //    cout<<"INSIDE EULERTOECI"<<endl;  
 //    cout<<u00<<"\t"<<u01<<"\t"<<u02<<endl;  
 //    cout<<u10<<"\t"<<u11<<"\t"<<u12<<endl;  
 //    cout<<u20<<"\t"<<u21s<<"\t"<<u22s<<endl;  
   
152      TMatrixD Dij(3,3);      TMatrixD Dij(3,3);
153      Dij(0,0) = u00;  Dij(0,1) = u01;  Dij(0,2) = u02;      Dij(0,0) = u00;  Dij(0,1) = u01;  Dij(0,2) = u02;
154      Dij(1,0) = u10;  Dij(1,1) = u11;  Dij(1,2) = u12;      Dij(1,0) = u10;  Dij(1,1) = u11;  Dij(1,2) = u12;
# Line 165  TMatrixD OrientationInfo::EulertoEci(Dou Line 166  TMatrixD OrientationInfo::EulertoEci(Dou
166    
167  TMatrixD OrientationInfo::ECItoGEO(TMatrixD Aij, UInt_t t, Double_t lat, Double_t lon){  TMatrixD OrientationInfo::ECItoGEO(TMatrixD Aij, UInt_t t, Double_t lat, Double_t lon){
168      TMatrixD Gij(3,3);      TMatrixD Gij(3,3);
169        UInt_t t1=t-t%86400;
170        UInt_t t2=t1+86400;
171      Double_t omg = (7.292115e-5)*a;                     // Earth rotation velosity (Around polar axis);      Double_t omg = (7.292115e-5)*a;                     // Earth rotation velosity (Around polar axis);
172      Double_t d = (t-10957*86400-43200);                      //Number of day, passing from 01/01/2000 12:00:00 to t;      Double_t d = (t1-10957*86400-43200);                     //Number of day, passing from 01/01/2000 12:00:00 to t;
173      d = d/86400;      d = d/86400;
174      Double_t T = d/36525;                                    //Number of Julian centuries;      Double_t T = d/36525;                                    //Number of Julian centuries;
175            Double_t Se = 6*3600+41*60+236.555367908*d+0.093104*T*T-(6.2e-6)*T*T*T;  //18 <-> 6
176      Double_t Se = 6*3600+41*60+236.555367908*d+0.093104*pow(T,2)-(6.2e-6)*pow(T,3);      Double_t tr = (t1-10957*86400)%86400;
177        Double_t Somg1 = (Se+49.077+omg*86400*tr/360.)*360/86400.;
     Int_t tr = (t-10957*86400)%86400;  
178    
179      Double_t Somg = (Se+49.077+omg*86400*tr/360)*360/86400;      d = (t2-10957*86400-43200);                      //Number of day, passing from 01/01/2000 12:00:00 to t;
180        d = d/86400;
181        T = d/36525;                                     //Number of Julian centuries;
182        Se = 6*3600+41*60+236.555367908*d+0.093104*T*T-(6.2e-6)*T*T*T;  //18 <-> 6
183        tr = (t2-10957*86400)%86400;
184        Double_t Somg2 = (Se+49.077+omg*86400*tr/360.)*360/86400.;
185        Somg2+=360.0;
186    
187        Double_t kk=(Somg2-Somg1)/(t2-t1);
188        Double_t bb= Somg1-kk*t1;
189        Double_t Somg=kk*t+bb;
190    
191      lon=(-lon)/a; lat=(-lat)/a;      lon=(-lon)/a; lat=(-lat)/a;
192    
# Line 195  TMatrixD OrientationInfo::ECItoGEO(TMatr Line 207  TMatrixD OrientationInfo::ECItoGEO(TMatr
207    
208  TMatrixD OrientationInfo::GEOtoECI(TMatrixD Aij, UInt_t t, Double_t lat, Double_t lon){  TMatrixD OrientationInfo::GEOtoECI(TMatrixD Aij, UInt_t t, Double_t lat, Double_t lon){
209     TMatrixD Gij(3,3);     TMatrixD Gij(3,3);
210     Double_t omg = (7.292115e-5)*a;                              // Earth rotation velosity (Around polar axis);      UInt_t t1=t-t%86400;
211     Double_t d = (t-10957*86400-43200);                          //Number of day, passing from 01/01/2000 12:00:00 to t;      UInt_t t2=t1+86400;
212     d = d/86400;      Double_t omg = (7.292115e-5)*a;                     // Earth rotation velosity (Around polar axis);
213     Double_t T = d/36525;                                        //Number of Julian centuries;      Double_t d = (t1-10957*86400-43200);                     //Number of day, passing from 01/01/2000 12:00:00 to t;
214            d = d/86400;
215     Double_t Se = 6*3600+41*60+236.555367908*d+0.093104*pow(T,2)-(6.2e-6)*pow(T,3);      Double_t T = d/36525;                                    //Number of Julian centuries;
216        Double_t Se = 6*3600+41*60+236.555367908*d+0.093104*T*T-(6.2e-6)*T*T*T;  //18 <-> 6
217     Int_t tr = (t-10957*86400)%86400;      Double_t tr = (t1-10957*86400)%86400;
218        Double_t Somg1 = (Se+49.077+omg*86400*tr/360.)*360/86400.;
219    
220     Double_t Somg = (Se+49.077+omg*86400*tr/360)*360/86400;      d = (t2-10957*86400-43200);                      //Number of day, passing from 01/01/2000 12:00:00 to t;
221        d = d/86400;
222        T = d/36525;                                     //Number of Julian centuries;
223        Se = 6*3600+41*60+236.555367908*d+0.093104*T*T-(6.2e-6)*T*T*T;  //18 <-> 6
224        tr = (t2-10957*86400)%86400;
225        Double_t Somg2 = (Se+49.077+omg*86400*tr/360.)*360/86400.;
226        Somg2+=360.0;
227    
228        Double_t kk=(Somg2-Somg1)/(t2-t1);
229        Double_t bb= Somg1-kk*t1;
230        Double_t Somg=kk*t+bb;
231    
232     lon=(-lon)/a; lat=(-lat)/a;     lon=(-lon)/a; lat=(-lat)/a;
233    

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

  ViewVC Help
Powered by ViewVC 1.1.23