source: Sophya/trunk/SophyaLib/SkyMap/sphericalmap.h@ 4041

Last change on this file since 4041 was 2990, checked in by ansari, 19 years ago

Ajouts methode GetThetaSliceDataPtr() dans SphericalMap, SphereThetaPhi SphereHEALPix SphereECP pour optimisation calcul transforme Ylm + passage TypeOfMap TETAFI->ECP pour SphereECP , Reza 23/6/2006

File size: 2.0 KB
Line 
1#ifndef SPHERICALMAP_SEEN
2#define SPHERICALMAP_SEEN
3
4// valeurs de Pi, 2*Pi, etc
5#include "smathconst.h"
6#include <math.h>
7#include "pixelmap.h"
8#include "tvector.h"
9
10// Map of pixels on a whole sphere.
11// Class hierarchy :
12// PixelMap
13// SphericalMap
14// SphereThetaPhi
15// SphereGorski
16// SphereIco
17// LocalMap
18
19
20
21
22namespace SOPHYA {
23
24/*!
25 \class SphericalMap
26 \ingroup SkyMap
27 Base class (pure virtual) for 4Pi spherical maps
28*/
29
30template<class T>
31class SphericalMap : public PixelMap<T>
32{
33
34public :
35
36SphericalMap() {};
37virtual ~SphericalMap() {};
38
39// Overloading of () to access pixel number k.
40inline T& operator()(int k) {return(this->PixVal(k));}
41inline T const& operator()(int k) const {return(this->PixVal(k));}
42inline T& operator()(double theta,double phi) {return(this->PixValSph(theta,phi));};
43inline T const& operator()(double theta,double phi) const {return(this->PixValSph(theta,phi));};
44
45// index characterizing the size pixelization : m for SphereThetaPhi
46// nside for Gorski sphere...
47virtual void Resize(int_4 m)=0;
48virtual uint_4 NbThetaSlices() const=0;
49virtual r_8 ThetaOfSlice(int_4 index) const=0;
50/*!
51 Return true if some theta slices have a symmetric counter-part at (Pi-Theta)
52 (the default implementation return true)
53*/
54virtual bool HasSymThetaSlice() const { return false; }
55/*!
56 Return the slice index for the symmetric slice theta=Pi-ThetaOfSlice(idx)
57 an invalid index is returned if the symmetric slice does not exist
58*/
59virtual int_4 GetSymThetaSliceIndex(int_4 idx) const { return -1; }
60virtual void GetThetaSlice(int_4 index,r_8& theta, TVector<r_8>& phi, TVector<T>& value) const=0;
61virtual void GetThetaSlice(int_4 sliceIndex, r_8& theta, r_8& phi0, TVector<int_4>& pixelIndices,TVector<T>& value) const=0 ;
62/*!
63 If possible return a pointer to the slice pixel data. return NULL otherwise
64*/
65virtual T* GetThetaSliceDataPtr(int_4 sliceIndex) { return NULL; }
66};
67
68
69} // Fin du namespace
70
71
72
73
74#endif
75
76
77
78
79
80
Note: See TracBrowser for help on using the repository browser.