| [2615] | 1 | #include "sopnamsp.h" | 
|---|
| [254] | 2 | #include "machdefs.h" | 
|---|
| [228] | 3 | #include <stdlib.h> | 
|---|
|  | 4 | #include <stdio.h> | 
|---|
| [254] | 5 | #include <math.h> | 
|---|
| [228] | 6 |  | 
|---|
|  | 7 | #include "scan.h" | 
|---|
| [567] | 8 | #include <complex> | 
|---|
| [809] | 9 | #include "fiondblock.h" | 
|---|
| [228] | 10 |  | 
|---|
|  | 11 | // valeurs de Pi, 2*Pi, etc | 
|---|
| [809] | 12 | #include "smathconst.h" | 
|---|
| [228] | 13 |  | 
|---|
|  | 14 |  | 
|---|
|  | 15 | // | 
|---|
|  | 16 | //++ | 
|---|
|  | 17 | // Class        Scan | 
|---|
|  | 18 | // | 
|---|
| [567] | 19 | // include      scan.h  dvlist.h math.h nbmath.h | 
|---|
| [228] | 20 | // | 
|---|
| [567] | 21 | //    Storage and treatment of data for a scanning of a part of the sky | 
|---|
|  | 22 | //    with a set of given values for parameters (see constructor) | 
|---|
| [228] | 23 | //-- | 
|---|
|  | 24 | //++ | 
|---|
|  | 25 | Scan::Scan(float Ouv,float* Omega,float Fech,float T, | 
|---|
|  | 26 | float t0=0., float phi0=0.) | 
|---|
|  | 27 |  | 
|---|
|  | 28 | // | 
|---|
| [567] | 29 | //    * Ouv      = aperture angle (rad) | 
|---|
|  | 30 | //    * Omega[3] = direction of rotation axis of the satellite (teta,phi) | 
|---|
|  | 31 | //    and rotation velocity (rad/s) | 
|---|
|  | 32 | //    * Fech     = sampling frequency  (Hz) | 
|---|
|  | 33 | //    * T        = total time of data acquistion (s) | 
|---|
|  | 34 | //    * t0       = starting time (s) | 
|---|
|  | 35 | //    * phi0     = offset of antenna (rad) | 
|---|
| [228] | 36 | //-- | 
|---|
|  | 37 | { | 
|---|
|  | 38 | mInfo_=NULL; | 
|---|
|  | 39 | // On memorise les arguments d'appel | 
|---|
|  | 40 | Ouverture_= Ouv; | 
|---|
|  | 41 | OmegaTeta_= Omega[0]; | 
|---|
|  | 42 | // | 
|---|
|  | 43 | // je ne comprends pas ce qui se passe ci-apres (GLM) | 
|---|
|  | 44 | if( (Omega[0]== 0.0) || (Omega[0]==(float)Pi) ) | 
|---|
|  | 45 | OmegaPhi_ = Omega[1]; | 
|---|
|  | 46 | else | 
|---|
|  | 47 | OmegaPhi_ = Omega[1]+(float)Pi/2.; | 
|---|
|  | 48 | OmegaRad_ = Omega[2]; | 
|---|
|  | 49 | FrequenceEch_  = Fech; | 
|---|
|  | 50 | TempsFinal_    = T; | 
|---|
|  | 51 | TempsInitial_  = t0; | 
|---|
|  | 52 | PhiZero_ = phi0; | 
|---|
|  | 53 |  | 
|---|
|  | 54 | float aux= 0.0; | 
|---|
|  | 55 | // Nombre total de points | 
|---|
|  | 56 | aux= (TempsFinal_-TempsInitial_)*FrequenceEch_; | 
|---|
|  | 57 | NmaxPts_= (int_4)(aux); | 
|---|
|  | 58 |  | 
|---|
|  | 59 | // Nombre total de tours | 
|---|
|  | 60 | aux= OmegaRad_*(TempsFinal_-TempsInitial_)/(2.*Pi); | 
|---|
|  | 61 | NmaxTrs_= (int_4)(aux); | 
|---|
|  | 62 |  | 
|---|
|  | 63 | // Nombre de points par tour | 
|---|
|  | 64 | aux= 2.*Pi*FrequenceEch_/OmegaRad_; | 
|---|
|  | 65 | NPts1Tr_= (int_4)(aux); | 
|---|
|  | 66 |  | 
|---|
|  | 67 | // Creation et initialisation du vecteur des mesures aux points | 
|---|
| [567] | 68 | //  sPix_ = new r_8[NmaxPts_]; | 
|---|
|  | 69 | sPix_.ReSize(NmaxPts_); | 
|---|
|  | 70 | sPix_.Reset(); | 
|---|
|  | 71 | //  for( int_4 i=0; i<NmaxPts_; i++ )  sPix_[i]= 0.; | 
|---|
|  | 72 | for( int_4 i=0; i<NmaxPts_; i++ )  sPix_(i)= 0.; | 
|---|
| [228] | 73 |  | 
|---|
|  | 74 | // matrice de passage du systeme lie au satellite au systeme fixe | 
|---|
|  | 75 |  | 
|---|
|  | 76 | Rota_[0]=  cos((double)OmegaPhi_); | 
|---|
|  | 77 | Rota_[1]= -sin((double)OmegaPhi_)*cos((double)OmegaTeta_); | 
|---|
|  | 78 | Rota_[2]=  sin((double)OmegaPhi_)*sin((double)OmegaTeta_); | 
|---|
|  | 79 | Rota_[3]=  sin((double)OmegaPhi_); | 
|---|
|  | 80 | Rota_[4]=  cos((double)OmegaPhi_)*cos((double)OmegaTeta_); | 
|---|
|  | 81 | Rota_[5]= -cos((double)OmegaPhi_)*sin((double)OmegaTeta_); | 
|---|
|  | 82 | Rota_[6]=  0.0; | 
|---|
|  | 83 | Rota_[7]=  sin((double)OmegaTeta_); | 
|---|
|  | 84 | Rota_[8]=  cos((double)OmegaTeta_); | 
|---|
|  | 85 |  | 
|---|
|  | 86 |  | 
|---|
|  | 87 | // printf("%f  %f  %f \n",Rota_[0],Rota_[1],Rota_[2]); | 
|---|
|  | 88 | // printf("%f  %f  %f \n",Rota_[3],Rota_[4],Rota_[5]); | 
|---|
|  | 89 | // printf("%f  %f  %f \n",Rota_[6],Rota_[7],Rota_[8]); | 
|---|
|  | 90 |  | 
|---|
|  | 91 | } | 
|---|
| [567] | 92 |  | 
|---|
|  | 93 |  | 
|---|
| [228] | 94 | //++ | 
|---|
| [701] | 95 | Scan::Scan(const Scan& s,  bool share) :  sPix_(s.sPix_ , share) | 
|---|
| [228] | 96 |  | 
|---|
| [567] | 97 | //    copy  constructor | 
|---|
| [228] | 98 | //-- | 
|---|
|  | 99 | { | 
|---|
| [567] | 100 | NmaxPts_      = s.NmaxPts_; | 
|---|
| [228] | 101 | Ouverture_    = s.Ouverture_; | 
|---|
|  | 102 | OmegaTeta_    = s.OmegaTeta_; | 
|---|
|  | 103 | OmegaPhi_     = s.OmegaPhi_; | 
|---|
|  | 104 | OmegaRad_     = s.OmegaRad_; | 
|---|
| [567] | 105 | FrequenceEch_ = s.FrequenceEch_; | 
|---|
|  | 106 | TempsFinal_   = s.TempsFinal_; | 
|---|
| [228] | 107 | TempsInitial_ = s.TempsInitial_; | 
|---|
| [567] | 108 | PhiZero_      = s.PhiZero_; | 
|---|
|  | 109 | for (int k=0; k<9; k++) Rota_[k]=s. Rota_[k]; | 
|---|
| [228] | 110 | } | 
|---|
|  | 111 | //++ | 
|---|
| [567] | 112 | // Titre        Destructor | 
|---|
| [228] | 113 | //-- | 
|---|
|  | 114 | //++ | 
|---|
|  | 115 | Scan::~Scan() | 
|---|
|  | 116 |  | 
|---|
|  | 117 | // | 
|---|
|  | 118 | //-- | 
|---|
|  | 119 | { | 
|---|
| [567] | 120 | // delete[] sPix_ ; | 
|---|
| [228] | 121 | } | 
|---|
|  | 122 |  | 
|---|
|  | 123 |  | 
|---|
|  | 124 | //++ | 
|---|
| [567] | 125 | // Titre        Public Methods | 
|---|
| [228] | 126 | //-- | 
|---|
|  | 127 |  | 
|---|
|  | 128 | //++ | 
|---|
|  | 129 | int_4 Scan::NbPoints() const | 
|---|
|  | 130 |  | 
|---|
| [567] | 131 | //    Return the number of points in the scan | 
|---|
| [228] | 132 | //-- | 
|---|
|  | 133 | { | 
|---|
|  | 134 | return(NmaxPts_); | 
|---|
|  | 135 | } | 
|---|
|  | 136 |  | 
|---|
|  | 137 | /* --Methode-- */ | 
|---|
|  | 138 | //++ | 
|---|
|  | 139 | int_4 Scan::NbTours() const | 
|---|
|  | 140 |  | 
|---|
| [567] | 141 | //    Return total nomber of turns | 
|---|
| [228] | 142 | //-- | 
|---|
|  | 143 | { | 
|---|
|  | 144 | return(NmaxTrs_); | 
|---|
|  | 145 | } | 
|---|
|  | 146 |  | 
|---|
|  | 147 | /* --Methode-- */ | 
|---|
|  | 148 | //++ | 
|---|
|  | 149 | int_4 Scan::NbPts1Tr() const | 
|---|
|  | 150 |  | 
|---|
| [567] | 151 | //    Return  nomber of points for 1 turn | 
|---|
| [228] | 152 | //-- | 
|---|
|  | 153 | { | 
|---|
|  | 154 | return(NPts1Tr_); | 
|---|
|  | 155 | } | 
|---|
|  | 156 |  | 
|---|
|  | 157 | /* --Methode-- */ | 
|---|
|  | 158 | //++ | 
|---|
|  | 159 | int_4 Scan::ValueIndex(float t) const | 
|---|
|  | 160 |  | 
|---|
| [567] | 161 | //    Return index of pixel associated to time t | 
|---|
| [228] | 162 | //-- | 
|---|
|  | 163 | { | 
|---|
|  | 164 | int_4 k; | 
|---|
|  | 165 | float eps= 1.0E-06; | 
|---|
|  | 166 |  | 
|---|
|  | 167 | // verification si t est dans [TempsInitial_,TempsFinal_] | 
|---|
|  | 168 | if( (t< TempsInitial_) || (t> TempsFinal_) ) { | 
|---|
|  | 169 | printf("\n ValueIndex:: probleme sur le temps t= %f",t); | 
|---|
|  | 170 | return(-1); | 
|---|
|  | 171 | } | 
|---|
|  | 172 |  | 
|---|
|  | 173 | k= (int_4)((t-TempsInitial_)*FrequenceEch_+eps); | 
|---|
|  | 174 | if ( (k< 0) || (k >= NmaxPts_) ) { | 
|---|
|  | 175 | printf("\n ValueIndex:: probleme sur l'indice du point k= %d",k); | 
|---|
|  | 176 | return(-1); | 
|---|
|  | 177 | } | 
|---|
|  | 178 | return(k); | 
|---|
|  | 179 | } | 
|---|
|  | 180 |  | 
|---|
|  | 181 | /* --Methode-- */ | 
|---|
|  | 182 | //++ | 
|---|
|  | 183 | void Scan::Direction(float t, float&  teta , float&  phi) | 
|---|
|  | 184 |  | 
|---|
| [567] | 185 | //    Return  (teta,phi) coordinate of pixel related to time t | 
|---|
| [228] | 186 | //-- | 
|---|
|  | 187 | { | 
|---|
|  | 188 | r_8 alfa,xs,ys,zs,x,y,z; | 
|---|
|  | 189 |  | 
|---|
|  | 190 | // coordonnees dans le systeme du satellite | 
|---|
|  | 191 | alfa= OmegaRad_*(t-TempsInitial_)+PhiZero_; | 
|---|
|  | 192 | xs = sin((double)Ouverture_)*cos(alfa); | 
|---|
|  | 193 | ys = sin((double)Ouverture_)*sin(alfa); | 
|---|
|  | 194 | zs = cos((double)Ouverture_); | 
|---|
|  | 195 |  | 
|---|
|  | 196 | // coordonnees dans le systeme fixe | 
|---|
|  | 197 | x = Rota_[0]*xs+Rota_[1]*ys+Rota_[2]*zs; | 
|---|
|  | 198 | y = Rota_[3]*xs+Rota_[4]*ys+Rota_[5]*zs; | 
|---|
|  | 199 | z = Rota_[6]*xs+Rota_[7]*ys+Rota_[8]*zs; | 
|---|
|  | 200 |  | 
|---|
|  | 201 | // angles teta,phi | 
|---|
|  | 202 | teta = acos(z); | 
|---|
|  | 203 | phi  = atan2(y,x); | 
|---|
|  | 204 | if( phi< 0. ) phi= DeuxPi+phi; | 
|---|
|  | 205 | } | 
|---|
|  | 206 |  | 
|---|
|  | 207 | /* --Methode-- */ | 
|---|
|  | 208 | //++ | 
|---|
|  | 209 | void Scan::DirectionIndex(int_4 k, float&  teta, float&  phi) | 
|---|
|  | 210 |  | 
|---|
| [567] | 211 | //    Return  (teta,phi) coordinates of  pixel with index k | 
|---|
| [228] | 212 | //-- | 
|---|
|  | 213 | { | 
|---|
|  | 214 | float t; | 
|---|
|  | 215 |  | 
|---|
|  | 216 | //recupere le temps associe a l'indice k du pixel | 
|---|
|  | 217 | t= TempsInitial_+(float)k/FrequenceEch_; | 
|---|
|  | 218 |  | 
|---|
|  | 219 | // angles teta,phi | 
|---|
|  | 220 | Direction(t, teta, phi); | 
|---|
|  | 221 | } | 
|---|
|  | 222 |  | 
|---|
|  | 223 | static r_8 dummy_pixel = 0; | 
|---|
|  | 224 | /* --Methode-- */ | 
|---|
|  | 225 | //++ | 
|---|
| [567] | 226 | r_8 const& Scan::PixelValue(int_4 k) const | 
|---|
| [228] | 227 |  | 
|---|
|  | 228 | //    Retourne la valeur du contenu du pixel d'indice k | 
|---|
|  | 229 | //-- | 
|---|
|  | 230 | { | 
|---|
|  | 231 | if ( (k<0) || (k >=  NmaxPts_) ) { | 
|---|
|  | 232 | printf("\n ValueIndex::indice du pixel errone k= %d",k); | 
|---|
|  | 233 | return(dummy_pixel); | 
|---|
|  | 234 | } | 
|---|
| [567] | 235 | //  return(sPix_[k]); | 
|---|
|  | 236 | //return(sPix_(k)); | 
|---|
|  | 237 | return *(sPix_.Data()+k); | 
|---|
| [228] | 238 | } | 
|---|
| [567] | 239 | //++ | 
|---|
|  | 240 | r_8 & Scan::PixelValue(int_4 k) | 
|---|
| [228] | 241 |  | 
|---|
| [567] | 242 | //    Retourne la valeur du contenu du pixel d'indice k | 
|---|
|  | 243 | //-- | 
|---|
|  | 244 | { | 
|---|
|  | 245 | if ( (k<0) || (k >=  NmaxPts_) ) { | 
|---|
|  | 246 | printf("\n ValueIndex::indice du pixel errone k= %d",k); | 
|---|
|  | 247 | return(dummy_pixel); | 
|---|
|  | 248 | } | 
|---|
|  | 249 | //  return(sPix_[k]); | 
|---|
|  | 250 | //return(sPix_(k)); | 
|---|
|  | 251 | return *(sPix_.Data()+k); | 
|---|
|  | 252 | } | 
|---|
|  | 253 |  | 
|---|
|  | 254 | //void Scan::Clear() { | 
|---|
|  | 255 | //  if (sPix_)  delete[] sPix_; | 
|---|
|  | 256 | //} | 
|---|
| [228] | 257 | void Scan::InitNull() { | 
|---|
| [567] | 258 | //  sPix_=NULL; | 
|---|
| [701] | 259 | //  sPix_.Reset(); pas de reset (pour le cas de share) | 
|---|
| [228] | 260 | mInfo_=NULL; | 
|---|
|  | 261 | } | 
|---|
| [567] | 262 | Scan&  Scan::operator = (const Scan& s) | 
|---|
|  | 263 | { | 
|---|
|  | 264 | NmaxPts_      = s.NmaxPts_; | 
|---|
|  | 265 | Ouverture_    = s.Ouverture_; | 
|---|
|  | 266 | OmegaTeta_    = s.OmegaTeta_; | 
|---|
|  | 267 | OmegaPhi_     = s.OmegaPhi_; | 
|---|
|  | 268 | OmegaRad_     = s.OmegaRad_; | 
|---|
|  | 269 | FrequenceEch_ = s.FrequenceEch_; | 
|---|
|  | 270 | TempsFinal_   = s.TempsFinal_; | 
|---|
|  | 271 | TempsInitial_ = s.TempsInitial_; | 
|---|
|  | 272 | PhiZero_      = s.PhiZero_; | 
|---|
|  | 273 | sPix_=s.sPix_; | 
|---|
|  | 274 | for (int k=0; k<9; k++) Rota_[k]=s. Rota_[k]; | 
|---|
|  | 275 | return *this; | 
|---|
|  | 276 | } | 
|---|
| [228] | 277 |  | 
|---|
|  | 278 |  | 
|---|
|  | 279 | //++ | 
|---|
| [567] | 280 | // Titre        Operators | 
|---|
| [228] | 281 | //-- | 
|---|
|  | 282 | //++ | 
|---|
|  | 283 | // Links        double&        operator()(int_4 k) | 
|---|
|  | 284 | //-- | 
|---|
|  | 285 | //++ | 
|---|
| [567] | 286 | //    fill and/or return value of the pixel with index k | 
|---|
| [228] | 287 | //-- | 
|---|
|  | 288 |  | 
|---|
|  | 289 |  | 
|---|
|  | 290 |  | 
|---|
|  | 291 |  | 
|---|
|  | 292 |  | 
|---|
| [567] | 293 | //++ | 
|---|
|  | 294 | // Titre        class FIO_Scan | 
|---|
|  | 295 | //    Delegated objects for persitance management | 
|---|
|  | 296 | //-- | 
|---|
|  | 297 |  | 
|---|
|  | 298 | //******************************************************************* | 
|---|
|  | 299 | // class FIO_Scan | 
|---|
|  | 300 | //  Les objets delegues pour la gestion de persistance | 
|---|
|  | 301 | //******************************************************************* | 
|---|
|  | 302 |  | 
|---|
|  | 303 | //++ | 
|---|
|  | 304 | FIO_Scan::FIO_Scan() | 
|---|
|  | 305 | // | 
|---|
|  | 306 | //-- | 
|---|
|  | 307 | { | 
|---|
|  | 308 | dobj= new Scan; | 
|---|
|  | 309 | ownobj= true; | 
|---|
|  | 310 | } | 
|---|
|  | 311 | //++ | 
|---|
|  | 312 | FIO_Scan::FIO_Scan(string const& filename) | 
|---|
|  | 313 | // | 
|---|
|  | 314 | //-- | 
|---|
|  | 315 | { | 
|---|
|  | 316 | dobj= new Scan; | 
|---|
|  | 317 | ownobj= true; | 
|---|
|  | 318 | Read(filename); | 
|---|
|  | 319 | } | 
|---|
|  | 320 | //++ | 
|---|
|  | 321 | FIO_Scan::FIO_Scan(const Scan& obj) | 
|---|
|  | 322 | // | 
|---|
|  | 323 | //-- | 
|---|
|  | 324 | { | 
|---|
|  | 325 | dobj= new Scan(obj); | 
|---|
|  | 326 | ownobj= true; | 
|---|
|  | 327 | } | 
|---|
|  | 328 | FIO_Scan::FIO_Scan(Scan* obj) | 
|---|
|  | 329 | { | 
|---|
|  | 330 | dobj= obj; | 
|---|
|  | 331 | ownobj= false; | 
|---|
|  | 332 | } | 
|---|
|  | 333 | //++ | 
|---|
|  | 334 | FIO_Scan::~FIO_Scan() | 
|---|
|  | 335 | // | 
|---|
|  | 336 | //-- | 
|---|
|  | 337 | { | 
|---|
|  | 338 | if (ownobj && dobj) delete dobj; | 
|---|
|  | 339 | } | 
|---|
|  | 340 | //++ | 
|---|
|  | 341 | AnyDataObj* FIO_Scan::DataObj() | 
|---|
|  | 342 | // | 
|---|
|  | 343 | //-- | 
|---|
|  | 344 | { | 
|---|
|  | 345 | return(dobj); | 
|---|
|  | 346 | } | 
|---|
|  | 347 |  | 
|---|
|  | 348 | //++ | 
|---|
|  | 349 | void FIO_Scan::ReadSelf(PInPersist& is) | 
|---|
|  | 350 | // | 
|---|
|  | 351 | //-- | 
|---|
|  | 352 | { | 
|---|
|  | 353 |  | 
|---|
| [682] | 354 | int_4 NmaxPts, NmaxTrs, NPts1Tr; | 
|---|
| [567] | 355 | r_4 Ouverture, OmegaTeta, OmegaPhi, OmegaRad, FrequenceEch; | 
|---|
|  | 356 | r_4 TempsFinal,  TempsInitial, PhiZero; | 
|---|
|  | 357 | r_8 Rota[9]; | 
|---|
|  | 358 |  | 
|---|
|  | 359 | if(dobj == NULL) | 
|---|
|  | 360 | { | 
|---|
|  | 361 | dobj= new Scan; | 
|---|
|  | 362 | } | 
|---|
|  | 363 |  | 
|---|
|  | 364 | // Pour savoir s'il y avait un DVList Info associe | 
|---|
|  | 365 | char strg[256]; | 
|---|
|  | 366 | is.GetLine(strg, 255); | 
|---|
|  | 367 | bool hadinfo= false; | 
|---|
|  | 368 | if (strncmp(strg+strlen(strg)-7, "HasInfo", 7) == 0)  hadinfo = true; | 
|---|
|  | 369 | if(hadinfo) | 
|---|
|  | 370 | {    // Lecture eventuelle du DVList Info | 
|---|
|  | 371 | is >> dobj->Info(); | 
|---|
|  | 372 | } | 
|---|
|  | 373 |  | 
|---|
|  | 374 |  | 
|---|
|  | 375 | is.GetI4(NmaxPts); | 
|---|
|  | 376 | is.GetI4(NmaxTrs); | 
|---|
|  | 377 | is.GetI4(NPts1Tr); | 
|---|
|  | 378 | dobj->SetIntParams(NmaxPts,NmaxTrs,NPts1Tr); | 
|---|
|  | 379 |  | 
|---|
|  | 380 | is.GetR4(Ouverture); | 
|---|
|  | 381 | is.GetR4(OmegaTeta); | 
|---|
|  | 382 | is.GetR4(OmegaPhi); | 
|---|
|  | 383 | is.GetR4(OmegaRad); | 
|---|
|  | 384 | is.GetR4(FrequenceEch); | 
|---|
|  | 385 | is.GetR4(TempsFinal); | 
|---|
|  | 386 | is.GetR4(TempsInitial); | 
|---|
|  | 387 | is.GetR4(PhiZero); | 
|---|
|  | 388 | is.GetR8s(Rota, 9); | 
|---|
|  | 389 | dobj->SetFloatParams(Ouverture,OmegaTeta,OmegaPhi,OmegaRad, | 
|---|
|  | 390 | FrequenceEch,TempsFinal,TempsInitial,PhiZero,Rota); | 
|---|
| [701] | 391 | // On lit le DataBlock; | 
|---|
|  | 392 | FIO_NDataBlock<r_8> fio_nd(&dobj->DataBlock()); | 
|---|
|  | 393 | fio_nd.Read(is); | 
|---|
| [567] | 394 | } | 
|---|
|  | 395 | //++ | 
|---|
|  | 396 | void FIO_Scan::WriteSelf(POutPersist& os) const | 
|---|
|  | 397 | // | 
|---|
|  | 398 | //-- | 
|---|
|  | 399 | { | 
|---|
|  | 400 | r_4 Ouverture, OmegaTeta, OmegaPhi, OmegaRad, FrequenceEch; | 
|---|
|  | 401 | r_4 TempsFinal,  TempsInitial, PhiZero; | 
|---|
|  | 402 | r_8 Rota[9]; | 
|---|
|  | 403 | char strg[256]; | 
|---|
|  | 404 |  | 
|---|
|  | 405 | if(dobj == NULL) | 
|---|
|  | 406 | { | 
|---|
|  | 407 | cout << " FIO_Scan::WriteSelf:: dobj= null " << endl; | 
|---|
|  | 408 | return; | 
|---|
|  | 409 | } | 
|---|
|  | 410 | dobj->GetFloatParams(Ouverture,OmegaTeta,OmegaPhi,OmegaRad, | 
|---|
|  | 411 | FrequenceEch,TempsFinal,TempsInitial,PhiZero,Rota); | 
|---|
|  | 412 | if (dobj->ptrInfo()) | 
|---|
|  | 413 | {sprintf(strg, "Scan: Theta=%9f Phi=%9f omega=%9f HasInfo", | 
|---|
|  | 414 | (float)OmegaTeta, (float)OmegaPhi, (float)OmegaRad); | 
|---|
|  | 415 | os.PutLine(strg); | 
|---|
|  | 416 | os << dobj->Info(); | 
|---|
|  | 417 | } | 
|---|
|  | 418 | else | 
|---|
|  | 419 | { | 
|---|
|  | 420 | sprintf(strg, "Scan: Theta=%9f Phi=%9f omega=%9f ", | 
|---|
|  | 421 | (float)OmegaTeta, (float)OmegaPhi, (float)OmegaRad); | 
|---|
|  | 422 | os.PutLine(strg); | 
|---|
|  | 423 | } | 
|---|
|  | 424 |  | 
|---|
|  | 425 | os.PutI4(dobj->NbPoints()); | 
|---|
|  | 426 | os.PutI4(dobj->NbTours()); | 
|---|
|  | 427 | os.PutI4(dobj->NbPts1Tr()); | 
|---|
|  | 428 |  | 
|---|
|  | 429 | os.PutR4(Ouverture); | 
|---|
|  | 430 | os.PutR4(OmegaTeta); | 
|---|
|  | 431 | os.PutR4(OmegaPhi); | 
|---|
|  | 432 | os.PutR4(OmegaRad); | 
|---|
|  | 433 | os.PutR4(FrequenceEch); | 
|---|
|  | 434 | os.PutR4(TempsFinal); | 
|---|
|  | 435 | os.PutR4(TempsInitial); | 
|---|
|  | 436 | os.PutR4(PhiZero); | 
|---|
|  | 437 | os.PutR8s(Rota, 9); | 
|---|
|  | 438 |  | 
|---|
| [701] | 439 | // On ecrit le dataBlock | 
|---|
|  | 440 | FIO_NDataBlock<r_8> fio_nd(&dobj->DataBlock()); | 
|---|
|  | 441 | fio_nd.Write(os); | 
|---|
| [567] | 442 |  | 
|---|
|  | 443 | } | 
|---|