source: Sophya/trunk/SophyaLib/SkyMap/fiospherehealpix.cc@ 1036

Last change on this file since 1036 was 853, checked in by ansari, 25 years ago

Passage SphereHealpix a SphereHEALPix , FITS_SphereHEALPix mis ds FitsIOServer

  1. Ansari 10/4/2000
File size: 4.1 KB
RevLine 
[842]1// G. Le Meur 04/2000
2
3#include "fiospherehealpix.h"
4#include "pexceptions.h"
5#include "fiondblock.h"
6
7//*******************************************************************
[853]8// Class FIO_SphereHEALPix<T>
[842]9// Les objets delegues pour la gestion de persistance
10//*******************************************************************
11
12template <class T>
[853]13FIO_SphereHEALPix<T>::FIO_SphereHEALPix()
[842]14{
[853]15 dobj_= new SphereHEALPix<T>;
[842]16 ownobj= true;
17}
18
19template <class T>
[853]20FIO_SphereHEALPix<T>::FIO_SphereHEALPix(string const& filename)
[842]21{
[853]22 dobj_= new SphereHEALPix<T>;
[842]23 dobj_->SetTemp(true);
24 ownobj= true;
25 Read(filename);
26}
27
28template <class T>
[853]29FIO_SphereHEALPix<T>::FIO_SphereHEALPix(const SphereHEALPix<T>& obj)
[842]30{
[853]31 dobj_= new SphereHEALPix<T>(obj, true);
[842]32 dobj_->SetTemp(true);
33 ownobj= true;
34}
35
36template <class T>
[853]37FIO_SphereHEALPix<T>::FIO_SphereHEALPix(SphereHEALPix<T>* obj)
[842]38{
39 dobj_= obj;
40 ownobj= false;
41}
42
43template <class T>
[853]44FIO_SphereHEALPix<T>::~FIO_SphereHEALPix()
[842]45{
46 if (ownobj && dobj_) delete dobj_;
47}
48
49template <class T>
[853]50AnyDataObj* FIO_SphereHEALPix<T>::DataObj()
[842]51{
52 return(dobj_);
53}
54
55template <class T>
[853]56void FIO_SphereHEALPix<T>::SetDataObj(AnyDataObj & o)
[842]57{
[853]58 SphereHEALPix<T> * po = dynamic_cast< SphereHEALPix<T> * >(&o);
[842]59 if (po == NULL) return;
60 if (ownobj && dobj_) delete dobj_;
61 dobj_ = po; ownobj = false;
62}
63
64template <class T>
[853]65void FIO_SphereHEALPix<T>::ReadSelf(PInPersist& is)
[842]66{
67
68 if(dobj_ == NULL)
69 {
[853]70 dobj_= new SphereHEALPix<T>;
[842]71 dobj_->SetTemp(true);
72 ownobj= true;
73 }
74
75// On lit les 3 premiers uint_8
76uint_8 itab[3];
77is.Get(itab, 3);
78// Let's Read the SphereCoordSys object -- ATTENTIOn - $CHECK$
79 FIO_SphereCoordSys fio_scs( dobj_->GetCoordSys());
80 fio_scs.Read(is);
81 // Pour savoir s'il y avait un DVList Infodobj->Info(); associe
82 char strg[256];
83 is.GetLine(strg, 255);
84 bool hadinfo= false;
85 if(strncmp(strg+strlen(strg)-7, "HasInfo", 7) == 0) hadinfo= true;
86 if(hadinfo)
87 { // Lecture eventuelle du DVList Info
88 is >> dobj_->Info();
89 }
90
91 int_4 nSide;
92 is.GetI4(nSide);
93 int_4 nPix;
94 is.GetI4(nPix);
95 double Omega;
96 is.GetR8(Omega);
97 dobj_->setParameters(nSide,nPix, Omega);
98
99// On lit les DataBlocks;
100 FIO_NDataBlock<T> fio_nd(&dobj_->pixels_);
101 fio_nd.Read(is);
102 FIO_NDataBlock<int> fio_ndi1(&dobj_->sliceBeginIndex_);
103 fio_ndi1.Read(is);
104 FIO_NDataBlock<int> fio_ndi2(&dobj_->sliceLenght_);
105 fio_ndi2.Read(is);
106}
107
108template <class T>
[853]109void FIO_SphereHEALPix<T>::WriteSelf(POutPersist& os) const
[842]110{
111 if(dobj_ == NULL)
112 {
113 cout << " WriteSelf:: dobj_= null " << endl;
114 return;
115 }
116
117// On ecrit 3 uint_8
118// 0 : Numero de version, 1 : Size index, 2 reserve a l
119uint_8 itab[3];
120itab[0] = 1;
121itab[1] = dobj_->SizeIndex();
122itab[2] = 0;
123os.Put(itab, 3);
124// Let's write the SphereCoordSys object
125 FIO_SphereCoordSys fio_scs( dobj_->GetCoordSys());
126 fio_scs.Write(os);
127
128 char strg[256];
129 int_4 nSide= dobj_->SizeIndex();
130 int_4 nPix = dobj_->NbPixels();
131
132 if(dobj_->ptrInfo())
133 {
[853]134 sprintf(strg,"SphereHEALPix: NSide=%6d NPix=%9d HasInfo",nSide,nPix);
[842]135 os.PutLine(strg);
136 os << dobj_->Info();
137 }
138 else
139 {
[853]140 sprintf(strg,"SphereHEALPix: NSide=%6d NPix=%9d ",nSide,nPix);
[842]141 os.PutLine(strg);
142 }
143
144 os.PutI4(nSide);
145 os.PutI4(nPix);
146 os.PutR8(dobj_->PixSolAngle());
147// On ecrit les dataBlocks
148 FIO_NDataBlock<T> fio_nd(&dobj_->pixels_);
149 fio_nd.Write(os);
150 FIO_NDataBlock<int> fio_ndi1(&dobj_->sliceBeginIndex_);
151 fio_ndi1.Write(os);
152 FIO_NDataBlock<int> fio_ndi2(&dobj_->sliceLenght_);
153 fio_ndi2.Write(os);
154}
155
156//*******************************************************************
157
158#ifdef __CXX_PRAGMA_TEMPLATES__
[853]159#pragma define_template FIO_SphereHEALPix<r_8>
160#pragma define_template FIO_SphereHEALPix<r_4>
161#pragma define_template FIO_SphereHEALPix< complex<r_4> >
162#pragma define_template FIO_SphereHEALPix< complex<r_8> >
[842]163#endif
164#if defined(ANSI_TEMPLATES) || defined(GNU_TEMPLATES)
[853]165template class FIO_SphereHEALPix<r_8>;
166template class FIO_SphereHEALPix<r_4>;
167template class FIO_SphereHEALPix< complex<r_4> >;
168template class FIO_SphereHEALPix< complex<r_8> >;
[842]169#endif
Note: See TracBrowser for help on using the repository browser.