Changeset 607 in Sophya for trunk/SophyaLib/SkyT/skymixer.cc
- Timestamp:
- Nov 20, 1999, 10:00:54 PM (26 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaLib/SkyT/skymixer.cc
r601 r607 32 32 PixelMap<double>& mapToAdd, RadSpectra& rs, double K=1.); 33 33 34 int CheckCards(DataCards & dc, string & msg); 35 char * BuildFITSFileName(string const & fname); 36 void RadSpec2Nt(RadSpectra & rs, POutPersist & so, string name); 37 void SpectralResponse2Nt(SpectralResponse& sr, POutPersist & so, string name); 38 39 // ----- Variable globale ------------ 40 static char mapPath[256]; // Path for input maps 41 static int hp_nside = 32; // HealPix NSide 42 static int nskycomp = 0; // Number of sky components 43 static int debuglev = 0; // debuglevel 44 34 45 // ------------------------------------------------------------------------- 35 46 // main program … … 37 48 int main(int narg, char * arg[]) 38 49 { 39 if ((narg < 2) || (strcmp(arg[1], "-h") == 0)) {40 cout << " skymixer / Error args \n Usage: skymixer parameterFile" << endl;50 if ((narg < 3) || ((narg > 1) && (strcmp(arg[1], "-h") == 0) )) { 51 cout << " Usage: skymixer parameterFile outputfitsname [outppfname]" << endl; 41 52 exit(0); 42 53 } … … 46 57 string msg; 47 58 int rc = 0; 48 59 POutPersist * so = NULL; 60 49 61 try { 50 62 string dcard = arg[1]; … … 52 64 DataCards dc(dcard); 53 65 54 // Cheking datacards 55 if ( (!dc.HasKey("SKYMIX")) || (!dc.HasKey("FILTER")) ) { 56 rc = 71; 57 msg = "Invalid parameters - NO @SKYMIX or @FILTER card "; 58 goto problem; 59 } 60 61 // Decoding number of component and pixelisation parameter 62 int mg = 32; 63 int ncomp = 0; 64 ncomp = dc.IParam("SKYMIX", 0, 0); 65 mg = dc.IParam("SKYMIX", 1, 32); 66 if (ncomp < 1) { 67 msg = "Invalid parameters - Check datacards @SKYMIX "; 68 rc = 72; 69 goto problem; 70 } 71 72 int kc; 73 string key; 74 char buff[256]; 75 bool pb = false; 76 for(kc=0; kc<ncomp; kc++) { 77 sprintf(buff, "SCMFILE%d", kc+1); 78 key = buff; 79 if (dc.NbParam(key) < 1) { 80 msg = "Missing or invalid card : " + key; 81 pb = true; break; 82 } 83 sprintf(buff, "SCSPEC%d", kc+1); 84 key = buff; 85 if (dc.NbParam(key) < 1) { 86 msg = "Missing or invalid card : " + key; 87 pb = true; break; 88 } 89 90 } 91 92 if (pb) { 93 rc = 72; 94 goto problem; 95 } 96 97 cout << " skymix/Info : NComp = " << ncomp << " M_SphereGorski= " << mg << endl; 98 99 SphereGorski<float> outgs(mg); 100 cout << " Creating Output Gorski Map NbPixels= " << outgs.NbPixels() << endl; 66 rc = CheckCards(dc, msg); 67 if (rc) goto Fin; 68 69 cout << " skymix/Info : NComp = " << nskycomp << " SphereGorski_NSide= " << hp_nside << endl; 70 cout << " ... MapPath = " << (string)mapPath << " DbgLev= " << debuglev << endl; 71 72 // We create an output persist file for writing debug objects 73 if (debuglev > 0) so = new POutPersist("skymixdbg.ppf"); 74 75 SphereGorski<float> outgs(hp_nside); 76 cout << " Output Gorski Map created - NbPixels= " << outgs.NbPixels() << endl; 101 77 outgs.SetPixels(0.); 102 78 … … 111 87 cout << filt << endl; 112 88 89 // FOR debug 90 if (debuglev > 0) SpectralResponse2Nt(filt, *so, "filter"); 91 113 92 PrtTim(" After FilterCreation "); 114 } 93 94 SphereGorski<float> * ings = NULL; // Our input map 95 FitsIoServer fios; // Our FITS IO Server 96 char * flnm, buff[64]; 97 string key; 98 99 // Loop over sky component 100 int sk; 101 for(sk = 0; sk<nskycomp; sk++) { 102 cout << " Processing sky component No " << sk+1 << endl; 103 if (ings) { delete ings; ings = NULL; } 104 ings = new SphereGorski<float>(hp_nside); 105 sprintf(buff, "MAPFITSFILE%d", sk+1); 106 key = buff; 107 flnm = BuildFITSFileName(dc.SParam(key, 0)); 108 cout << " Reading Input FITS map " << (string)flnm << endl; 109 fios.load(*ings, flnm, 1); 110 111 if (debuglev > 4) { // Writing tne input map to the outppf 112 FIO_SphereGorski<float> fiog(ings); 113 fiog.Write(*so, key); 114 } 115 } 116 } // End of try block 115 117 116 118 catch (PException exc) { 117 119 msg = exc.Msg(); 118 120 cerr << " !!!! skymixer - Catched exception - Msg= " << exc.Msg() << endl; 119 rc = 70;121 rc = 90; 120 122 } 121 123 122 124 123 problem: 125 Fin: 126 if (so) delete so; // Closing the debug ppf file 124 127 if (rc == 0) return(0); 125 128 cerr << " Error condition -> Rc= " << rc << endl; … … 128 131 } 129 132 133 /* Nouvelle-Fonction */ 134 int CheckCards(DataCards & dc, string & msg) 135 // Function to check datacards 136 { 137 mapPath[0] = '\0'; 138 hp_nside = 32; 139 nskycomp = 0; 140 debuglev = 0; 141 142 int rc = 0; 143 // Cheking datacards 144 if ( (!dc.HasKey("SKYMIX")) || (!dc.HasKey("FILTER")) ) { 145 rc = 71; 146 msg = "Invalid parameters - NO @SKYMIX or @FILTER card "; 147 return(rc); 148 } 149 150 // Decoding number of component and pixelisation parameter 151 int mg = 32; 152 int ncomp = 0; 153 ncomp = dc.IParam("SKYMIX", 0, 0); 154 mg = dc.IParam("SKYMIX", 1, 32); 155 if (ncomp < 1) { 156 msg = "Invalid parameters - Check datacards @SKYMIX "; 157 rc = 72; 158 return(rc); 159 } 160 161 // Checking input FITS file specifications 162 int kc; 163 string key, key2; 164 char buff[256]; 165 bool pb = false; 166 for(kc=0; kc<ncomp; kc++) { 167 sprintf(buff, "MAPFITSFILE%d", kc+1); 168 key = buff; 169 if (dc.NbParam(key) < 1) { 170 msg = "Missing or invalid card : " + key; 171 pb = true; break; 172 } 173 sprintf(buff, "SPECTRAFITSFILE%d", kc+1); 174 key = buff; 175 sprintf(buff, "SPECTRAFUNC%d", kc+1); 176 key2 = buff; 177 if ( (dc.NbParam(key) < 1) && (dc.NbParam(key2) < 2) ) { 178 msg = "Missing card or invalid parameters : " + key + " or " + key2; 179 pb = true; break; 180 } 181 182 } 183 184 if (pb) { 185 rc = 72; 186 return(72); 187 } 188 189 // Checking detection filter specification 190 key = "FILTER"; 191 if (dc.NbParam(key) < 3) { 192 msg = "Missing card or invalid parameters : " + key; 193 rc = 73; return(rc); 194 } 195 196 // Initialiazing parameters 197 rc = 0; 198 msg = "OK"; 199 nskycomp = ncomp; 200 hp_nside = mg; 201 202 // Checking for PATH definition card 203 key = "MAPPATH"; 204 if (dc.NbParam(key) < 3) strncpy(mapPath, dc.SParam(key, 0).c_str(), 255); 205 mapPath[255] = '\0'; 206 key = "DEBUGLEVEL"; 207 debuglev = dc.IParam(key, 0, 0); 208 return(rc); 209 } 210 211 static char buff_flnm[1024]; // Mal protege ! 212 /* Nouvelle-Fonction */ 213 char* BuildFITSFileName(string const & fname) 214 { 215 if (mapPath[0] != '\0') sprintf(buff_flnm, "%s/%s", mapPath, fname.c_str()); 216 else sprintf(buff_flnm, "%s", fname.c_str()); 217 return(buff_flnm); 218 } 219 220 /* Nouvelle-Fonction */ 130 221 // template <class T> 131 222 void addComponent(SpectralResponse& sr, PixelMap<float>& finalMap, … … 144 235 } 145 236 237 /* Nouvelle-Fonction */ 146 238 void addComponent(SpectralResponse& sr, PixelMap<double>& finalMap, 147 239 PixelMap<double>& mapToAdd, RadSpectra& rs, double K) … … 158 250 } 159 251 } 252 253 254 /* Nouvelle-Fonction */ 255 void RadSpec2Nt(RadSpectra & rs, POutPersist & so, string name) 256 { 257 char *ntn[2] = {"nu","fnu"}; 258 NTuple nt(2,ntn); // Creation NTuple (AVEC new ) 259 float xnt[2]; 260 double nu; 261 double numin = rs.minFreq(); 262 double numax = rs.maxFreq(); 263 int nmax = 500; 264 double dnu = (numax-numin)/nmax; 265 for(int k=0; k<nmax; k++) { 266 nu = numin+k*dnu; 267 xnt[0] = nu; 268 xnt[1] = rs.flux(nu); 269 nt.Fill(xnt); 270 } 271 ObjFileIO<NTuple> oiont(nt); 272 oiont.Write(so, name); 273 return; 274 } 275 276 /* Nouvelle-Fonction */ 277 void SpectralResponse2Nt(SpectralResponse& sr, POutPersist & so, string name) 278 { 279 char *ntn[2] = {"nu","tnu"}; 280 NTuple nt(2,ntn); // Creation NTuple (AVEC new ) 281 float xnt[2]; 282 double nu; 283 double numin = sr.minFreq(); 284 double numax = sr.maxFreq(); 285 int nmax = 500; 286 double dnu = (numax-numin)/nmax; 287 for(int k=0; k<nmax; k++) { 288 nu = numin+k*dnu; 289 xnt[0] = nu; 290 xnt[1] = sr.transmission(nu); 291 nt.Fill(xnt); 292 } 293 ObjFileIO<NTuple> oiont(nt); 294 oiont.Write(so, name); 295 return; 296 } 297
Note:
See TracChangeset
for help on using the changeset viewer.