Changeset 1516 in Sophya
- Timestamp:
- Jun 12, 2001, 6:00:35 PM (24 years ago)
- Location:
- trunk/ArchTOIPipe
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ArchTOIPipe/Kernel/flagtoidef.h
r1502 r1516 1 #ifndef FLAGTOIDEF_H 2 #define FLAGTOIDEF_H 1 3 2 4 enum FlagToiDef { 3 // Out of Range Value tof Range Value5 // Out of Range Value of Range Value 4 6 FlgToiOut = (unsigned long long)1 << 0, 5 7 // Spike-like sample (ex: glitch) 6 FlgToiSpike = (unsigned long long)1 << 2,8 FlgToiSpike = (unsigned long long)1 << 1, 7 9 // Discontinuity-like sample (ex: step) 8 FlgToiDisc = (unsigned long long)1 << 3,10 FlgToiDisc = (unsigned long long)1 << 2, 9 11 // Large-Sigma-like sample 10 FlgToiSigma = (unsigned long long)1 << 4,12 FlgToiSigma = (unsigned long long)1 << 3, 11 13 // Cleaned sample (ex: clean after spike,step...) 12 FlgToiClean = (unsigned long long)1 << 5,14 FlgToiClean = (unsigned long long)1 << 4, 13 15 // Sample Value has been interpolated/Replaced ... 14 FlgToiInterp = (unsigned long long)1 << 6, 16 FlgToiInterp = (unsigned long long)1 << 5, 17 }; 18 15 19 // et on peut continuer ainsi jusqu'a 1<<63 cad le bit 64 ieme 16 20 // Pour imprimer la valeur: cout<<(unsigned long long)FlgToi...<<endl; 17 }18 21 22 #endif -
trunk/ArchTOIPipe/ProcWSophya/toi2map.cc
r1498 r1516 4 4 #include "ctimer.h" 5 5 #include "toi2map.h" 6 #include "xastropack.h"7 6 8 7 //////////////////////////////////////////////////////////////////////// 9 8 TOI2Map::TOI2Map(SphereHEALPix<r_8>* sph,SphereHEALPix<r_8>* wsph) 10 : mSph(sph), mWSph(wsph), mWSphInternal(false) , mTypCoor(false), fTypCoor(false), mActualYear(2001.)9 : mSph(sph), mWSph(wsph), mWSphInternal(false) 11 10 { 11 SetEquinox(); 12 SetCoorIn(); 13 SetCoorOut(); 14 12 15 if(mSph->NbPixels()<1) { 13 16 cout<<"TOI2Map::TOI2Map() Bad number of pixels in sphere mSph " … … 44 47 declareInput("Coord1In"); // input index 0 45 48 declareInput("Coord2In"); // input index 1 46 declareInput("BoloIn"); // input index 249 declareInput("BoloIn"); // input index 2 47 50 } 48 51 … … 61 64 throw ParmError("TOI2Map::run() Output TOI (Coord1In or Coord2In or BoloIn) not connected!"); 62 65 } 66 if( !(mTypCoorIn&TypCoordEq || mTypCoorIn&TypCoordGal) ) { 67 cout<<"TOI2Map::run() - Input Coordinates not Eq or Gal! "<<endl; 68 throw ParmError("TOI2Map::run() - Input Coordinates not Eq or Gal!"); 69 } 70 if( !(mTypCoorOut&TypCoordEq || mTypCoorOut&TypCoordGal) ) { 71 cout<<"TOI2Map::run() - Output Coordinates not Eq or Gal! "<<endl; 72 throw ParmError("TOI2Map::run() - Output Coordinates not Eq or Gal!"); 73 } 63 74 64 75 //--------------------------------------------------------- … … 69 80 uint_4 mNSnFill=0, mNpixFill=0, NFill[NFILL]; 70 81 for(ii=0;ii<NFILL;ii++) NFill[ii]=0; 82 double mjd = MJDfrYear(mActualYear); 71 83 72 84 // Remplissage des spheres 73 85 for(int s=snb;s<=sne;s++) { 74 int_8 fgbolo = 0; 86 int_8 fgbolo = 0; 75 87 double bolo; 88 // Equatoriales / Galactiques 89 // coord1,2 = alpha,delta / gLon,gLat 90 double coord1 = getData(0,s); 91 double coord2 = getData(1,s); 76 92 77 double coord1 = getData(0,s); // gLat ou delta entre [-90,90] en degres78 double coord2 = getData(1,s); // gLon entre [0,360[ en degres ou alpha entre [0,24[ en heures79 93 getData(2,s,bolo,fgbolo); 94 if(bolo<-32767.) continue; // Bidouille (A CORRIGER QUAND FGBOLO DISPO) 80 95 81 if(coord2<-90. || coord2>90.) fgbolo=1; 82 if((coord1<0.) || (!mTypCoor && coord1>=24.) || (mTypCoor && coord1>=360.) ) {fgbolo=1; 83 cout << "!!!!!!!!" <<coord1 << endl; 96 // sphere phi entre [0,2*Pi] en radians 97 // sphere theta entre [0,Pi] en radians 98 double phi,theta; 99 CoordConvertToStd(mTypCoorIn,coord1,coord2); 100 if(mTypCoorIn&TypCoordEq && mTypCoorOut&TypCoordGal) { // Eq -> Gal 101 EqtoGal(mjd,coord1,coord2,&coord1,&coord2); 102 phi = coord1 * M_PI/180.; 103 } else if(mTypCoorIn&TypCoordGal && mTypCoorOut&TypCoordEq) { // Gal -> Eq 104 GaltoEq(mjd,coord1,coord2,&coord1,&coord2); 105 phi = coord1 * M_PI/12.; 106 } else if(mTypCoorOut&TypCoordGal) { // Gal -> Gal 107 phi = coord1 * M_PI/180.; 108 } else if(mTypCoorOut&TypCoordEq) { // Eq -> Eq 109 phi = coord1 * M_PI/12.; 84 110 } 85 86 87 88 if(bolo<-32767.) fgbolo=1; // Bidouille Archeops 89 90 if(!fgbolo) { 91 // sphere phi entre [0,2*Pi] en radians 92 // sphere phi entre [0,2*Pi] en radians 93 // sphere theta entre [0,Pi] en radians 94 double phi,theta; 95 if(fTypCoor && !mTypCoor) { //on a alpha,delta et on veut l,b 96 double mjd = MJDfrYear(mActualYear); 97 EqtoGal(mjd,coord1,coord2,&coord1,&coord2); 98 } 111 theta = (90.-coord2) * M_PI/180.; 112 if(phi<0. || phi>=2*M_PI) continue; 113 if(theta<0. || theta>=M_PI) continue; 99 114 100 if(!fTypCoor && mTypCoor) { //on a l,b et on veut alpha,delta 101 double mjd = MJDfrYear(mActualYear); 102 GaltoEq(mjd,coord1,coord2,&coord1,&coord2); 103 } 104 105 if(fTypCoor) phi = coord1 * M_PI/180.; 106 else phi = coord1 * M_PI/12.; 107 108 theta = (90.-coord2)*M_PI/180.; 109 110 int_4 ipix = mSph->PixIndexSph(theta,phi); 111 (*mSph)(ipix) += bolo; 112 ((*mWSph)(ipix))++; 113 mNSnFill++; 114 } 115 int_4 ipix = mSph->PixIndexSph(theta,phi); 116 (*mSph)(ipix) += bolo; 117 ((*mWSph)(ipix))++; 118 mNSnFill++; 115 119 } 116 120 … … 129 133 <<" mNpixFill="<<mNpixFill 130 134 <<" mNSnFill="<<mNSnFill<<endl 131 <<" --> FracSky="<<mNpixFill*100./(double)mSph->NbPixels()<<"%"<<endl132 <<" NFill["<<NFILL<<"] ="<<endl;133 for(ii=0;ii<NFILL;ii++) cout<<NFill[ii]<<" ";135 <<" --> FracSky="<<mNpixFill*100./(double)mSph->NbPixels()<<"%" 136 <<" NFill["<<NFILL<<"] ="<<endl; 137 for(ii=0;ii<NFILL;ii++) {cout<<NFill[ii]<<" "; if(ii%10==9) cout<<endl;} 134 138 cout<<endl; 135 139 -
trunk/ArchTOIPipe/ProcWSophya/toi2map.h
r1498 r1516 5 5 #include "toiprocessor.h" 6 6 #include "spherehealpix.h" 7 #include "flagtoidef.h" 8 #include "xastropack.h" 7 9 8 10 //-- Un projecteur de TOI sur une sphere Healpix 9 // Lecture de 3 TOI alpha,delta,boloMuV10 // Sortie rien11 // Lecture de 3 TOI coord1,coord2,boloMuV 12 // Sortie pas de TOI, une (2) sphere(s) Healpix 11 13 // 12 14 // Structure generale : 13 // (les alpha[0,360[,delta[-90,90] sont en degres decimaux) 14 // |---->Sphere 15 // | 16 // ----------- 15 // |---->Sphere 16 // | 17 // ----------- 17 18 // toi Coord1In ---> | | 18 19 // toi Coord2In ---> | TOI2Map | 19 // toi BoloIn ---> | | 20 // ----------- 20 // toi BoloIn ---> | | 21 // ----------- 22 // Gestion du type de coordonnees : 23 // Coord1In,Coord2In : soit Equatoriales (Alpha,Delta) 24 // soit Galactiques (GLong,GLat) 25 // Sortie sur une sphere en coordonnees Equatoriales ou Galactiques 21 26 22 27 class TOI2Map : public TOIProcessor { … … 25 30 virtual ~TOI2Map(); 26 31 27 virtual void init(void); 32 virtual void init(void); 28 33 virtual void run(void); 29 inline void SetCoorGal(bool mfg=false,bool ffg=false,double actualyear=2000.) 30 {mTypCoor = mfg; fTypCoor = ffg; mActualYear = actualyear;} 31 34 35 // Coordonnees donnees en entree et en sortie 36 inline void SetEquinox(double actualyear=2000.) 37 {mActualYear = actualyear;} 38 inline void SetCoorIn(TypAstroCoord mfg=TypCoordGalStd) 39 {mTypCoorIn = mfg;} 40 inline void SetCoorOut(TypAstroCoord mfg=TypCoordGalStd) 41 {mTypCoorOut = mfg;} 42 32 43 protected: 33 44 SphereHEALPix<r_8>* mSph; 34 45 SphereHEALPix<r_8>* mWSph; 35 46 bool mWSphInternal; 36 bool mTypCoor; 37 bool fTypCoor; 47 TypAstroCoord mTypCoorIn, mTypCoorOut; 38 48 double mActualYear; 39 49 }; -
trunk/ArchTOIPipe/SMakefile
r1496 r1516 15 15 $(AOBJ)simtoipr.o $(AOBJ)map2toi.o $(AOBJ)toi2map.o $(AOBJ)nooppr.o 16 16 EXEOLIST := $(AOBJ)fits2asc.o $(AOBJ)tsttoi.o $(AOBJ)tsttoi2.o $(AOBJ)simtst.o \ 17 $(AOBJ)tstrztoi.o $(AOBJ)rztoi.o \17 $(AOBJ)tstrztoi.o $(AOBJ)rztoi.o $(AOBJ)sfftc.o $(AOBJ)mesovh.o \ 18 18 $(AOBJ)fits2ascii.o $(AOBJ)tgenw.o $(AOBJ)tstmap2toi.o $(AOBJ)tsttoi2map.o 19 19 EXELIST := $(AOBJ)sfftc $(AOBJ)simtst $(AOBJ)mesovh $(AOBJ)tstrztoi $(AOBJ)fits2asc $(AOBJ)tsttoi \ -
trunk/ArchTOIPipe/TestPipes/tsttoi2map.cc
r1498 r1516 19 19 cout<<"tsttoi2map [-h] [-p lp] [-s samplemin,samplemax] [-w data_window_size]"<<endl 20 20 <<" [-a label_coord1] [-d label_coord2] [-b label_bolomuv]"<<endl 21 <<" [-n nlat] coord_ini coord_fin fitsin_bolo fitsin_point fitsphout fitsphwout"<<endl 22 <<" coord_ini[_fin] = G for Galactic coordinates"<<endl 23 <<" = Q for equatorial coordinates"<<endl 24 <<" coord1 = alpha or longitude ; coord2 = delta or latitude"<<endl; 25 return; 21 <<" [-n nlat] [-i c,h] [-o c,h]"<<endl 22 <<" fitsin_point fitsin_bolo fitsphout [fitsphwout]"<<endl 23 <<" -p lp : print level (def=0)"<<endl 24 <<" -s samplemin,samplemax : sample range to be treated (def=all)"<<endl 25 <<" -w data_window_size : window size for pipe (def=8192)"<<endl 26 <<" -a label_coord1 : label fits for alpha/gLong (def=coord1)"<<endl 27 <<" -d label_coord2 : label fits for delta/gLat (def=coord2)"<<endl 28 <<" coord1 = alpha or gLong ; coord2 = delta or gLat"<<endl 29 <<" -b label_bolomuv : label fits for bolo value (def=boloMuV)"<<endl 30 <<" -n nlat : nlat for Healpix sphere (def=128)"<<endl 31 <<" -i c,h : coord1 caracteristics (c=G/E h=H/D) (def=G,D)"<<endl 32 <<" -o c,h : idem -i for coord2"<<endl 33 <<" fitsin_point : fits file for pointing"<<endl 34 <<" fitsin_bolo : fits file for bolo values"<<endl 35 <<" fitsphout : fits file for output Healpix sphere"<<endl 36 <<" fitsphwout : fits file for output Healpix nFilled sphere (def=no)"<<endl; 37 } 38 39 unsigned long typecoord(char typc=' ',char hd=' '); 40 unsigned long typecoord(char typc,char hd) 41 // typc : G=galactiques, E=equatoriales, autres=galactiques 42 // hd : H=heure, D=degre, autres=(heure si typc==E, degre si typc==G) 43 { 44 if(typc!='G' && typc!='E') typc='G'; 45 if(hd!='H' && hd!='D') {if(typc=='E') hd='H'; else hd='D';} 46 unsigned long rc=TypCoordUndef; 47 if(typc=='G') rc |= TypCoordGal; 48 else rc |= TypCoordEq; 49 if(hd=='D') rc |= TypCoordDD; 50 else rc |= TypCoordHD; 51 return rc; 26 52 } 27 53 … … 36 62 char *label_coord1 = "coord1", *label_coord2 = "coord2", *label_bolomuv = "boloMuV"; 37 63 long sdeb,sfin; 38 int c; 39 while((c = getopt(narg,arg,"hGp:s:w:a:d:b:n:")) != -1) { 64 string fitsphwout = ""; 65 unsigned long tcoorin=typecoord(), tcoorout=typecoord(); 66 int c; char t=' ',h=' '; 67 while((c = getopt(narg,arg,"hp:s:w:a:d:b:n:i:o:")) != -1) { 40 68 switch (c) { 41 69 case 's' : … … 43 71 cout<<"Requested Samples from "<<sdeb<<" , "<<sfin<<endl; 44 72 if(sfin>=sdeb) mgr->setRequestedSample(sdeb,sfin); 45 else {cout<<"Bad sample interval "<<endl; exit( -2);}73 else {cout<<"Bad sample interval "<<endl; exit(2);} 46 74 break; 47 75 case 'w' : … … 67 95 if(nlat<0) nlat=128; 68 96 break; 97 case 'i' : 98 sscanf(optarg,"%c,%c",&t,&h); 99 tcoorin=typecoord(t,h); 100 break; 101 case 'o' : 102 sscanf(optarg,"%c,%c",&t,&h); 103 tcoorout=typecoord(t,h); 104 break; 69 105 case 'h' : 70 usage(); exit(-1);71 break;72 106 default: 73 usage(); exit(-1); 107 usage(); exit(1); 108 break; 74 109 } 75 110 } 76 if(optind+3>=narg) {usage(); exit(-2);} 77 bool mcoorgal=true; 78 bool fcoorgal=true; 111 if(optind+2>=narg) {usage(); exit(3);} 79 112 80 if ( strcmp(arg[optind],"Q") == 0) mcoorgal=false; 81 if ( strcmp(arg[optind+1],"Q") == 0) fcoorgal=false; 82 83 char * fitsin_bolo = arg[optind+2]; 84 char * fitsin_point = arg[optind+3]; 85 string const fitsphout = arg[optind+4]; 86 string fitsphwout = ""; 87 if(optind+5<narg) fitsphwout = arg[optind+5]; 88 113 char * fitsin_point = arg[optind]; 114 char * fitsin_bolo = arg[optind+1]; 115 string const fitsphout = arg[optind+2]; 116 if(optind+3<narg) fitsphwout = arg[optind+3]; 117 118 { 119 unsigned long tg,te,hd,dd; 89 120 cout<<">>>> tsttoi2map:"<<endl 90 <<"Fits Infile(snum,bolomuv)= "<<fitsin_bolo<<endl 91 <<"Fits Infile(snum,coord1,coord2)= "<<fitsin_point<<endl 92 <<" ...label_coord1 "<<label_coord1<<" , label_coord2 "<<label_coord2<<endl 93 <<" with coordinates Gal "<<mcoorgal<<endl 94 <<" ...label_bolomuv "<<label_bolomuv<<endl 95 <<"Fits Sphere Healpix"<<fitsphout<<endl 121 <<"Pipe Window Size "<<width<<endl 122 <<"Fits Infile Bolo "<<fitsin_bolo<<endl 123 <<" ...label_bolomuv "<<label_bolomuv<<endl; 124 tg = tcoorin&TypCoordGal; te = tcoorin&TypCoordEq; 125 hd = tcoorin&TypCoordHD; dd = tcoorin&TypCoordDD; 126 cout<<" ...label_coord1 "<<label_coord1<<endl 127 <<" ...label_coord2 "<<label_coord2<<endl 128 <<" ...... Gal="<<tg<<" Eq="<<te<<" hour="<<hd<<" deg="<<dd<<endl; 129 tg = tcoorout&TypCoordGal; te = tcoorout&TypCoordEq; 130 hd = tcoorout&TypCoordHD; dd = tcoorout&TypCoordDD; 131 cout<<"Fits Healpix Sphere "<<fitsphout<<endl 96 132 <<" ...nlat "<<nlat<<endl 97 <<" with coordinates Gal "<<fcoorgal<<endl 98 <<"Fits Sphere Healpix Error "<<fitsphwout<<endl; 133 <<" ...... Gal="<<tg<<" Eq="<<te<<" hour="<<hd<<" deg="<<dd<<endl; 134 cout<<"Fits Healpix Weight Sphere "<<fitsphwout<<endl; 135 } 99 136 100 137 SophyaInit(); … … 109 146 int ncolb = rfitsb.getNOut(); 110 147 cout<<"Number of columns in fits Infile_bolo : "<<ncolb<<endl; 111 if(ncolb<1) exit(- 3);148 if(ncolb<1) exit(-4); 112 149 113 150 FITSTOIReader rfitsp(fitsin_point); 114 151 int ncolp = rfitsp.getNOut(); 115 152 cout<<"Number of columns in fits Infile_point : "<<ncolp<<endl; 116 if(ncolp<2) exit(- 3);153 if(ncolp<2) exit(-5); 117 154 118 155 // Creation de la sphere Healpix … … 126 163 wsph = new SphereHEALPix<r_8>; 127 164 cout<<"SphereHEALPix Weight: Type de map : "<<wsph->TypeOfMap()<<endl 128 <<" 165 <<" Nombre de pixels : "<<wsph->NbPixels()<<endl; 129 166 } 130 167 … … 132 169 TOI2Map toi2m(sph,wsph); 133 170 cout<<"TOI2Map created"<<endl; 134 toi2m.SetCoorGal(mcoorgal,fcoorgal,2000.); // equinoxe de ref. 2000. (pour archtoi) 171 toi2m.SetEquinox(2000.); 172 toi2m.SetCoorIn((TypAstroCoord) tcoorin); 173 toi2m.SetCoorOut((TypAstroCoord) tcoorout); 135 174 136 175 // Definition des tuyaux 137 176 TOISeqBuffered * toicoord1in = new TOISeqBuffered("toi_coord1_in",width); 138 if(lp)toicoord1in->setDebugLevel(1);177 // toicoord1in->setDebugLevel(1); 139 178 rfitsp.addOutput(label_coord1,toicoord1in); 140 179 toi2m.addInput("Coord1In",toicoord1in); 141 180 142 181 TOISeqBuffered * toicoord2in = new TOISeqBuffered("toi_coord2_in",width); 143 if(lp)toicoord2in->setDebugLevel(1);182 // toicoord2in->setDebugLevel(1); 144 183 rfitsp.addOutput(label_coord2,toicoord2in); 145 184 toi2m.addInput("Coord2In",toicoord2in); 146 185 147 186 TOISeqBuffered * toibolin = new TOISeqBuffered("toi_bolo_in",width); 148 if(lp)toibolin->setDebugLevel(1);187 // toibolin->setDebugLevel(1); 149 188 rfitsb.addOutput(label_bolomuv,toibolin); 150 189 toi2m.addInput("BoloIn",toibolin);
Note:
See TracChangeset
for help on using the changeset viewer.