- Timestamp:
- Aug 26, 2010, 9:18:39 AM (16 years ago)
- Location:
- branches/sc_branches/trunkTest
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
ppSim/src/ppSimMakeGalaxies.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/sc_branches/trunkTest
- Property svn:mergeinfo changed
-
branches/sc_branches/trunkTest/ppSim/src/ppSimMakeGalaxies.c
r18011 r29060 18 18 int galaxyGridDX = psMetadataLookupS32(&mdok, recipe, "GALAXY.GRID.DX"); // Density of fakes 19 19 int galaxyGridDY = psMetadataLookupS32(&mdok, recipe, "GALAXY.GRID.DY"); // Density of fakes 20 bool galaxyGridRandom = psMetadataLookupBool(&mdok, recipe, "GALAXY.GRID.RANDOM"); // Density of fakes 20 21 21 22 float galaxyRmajorMax = psMetadataLookupF32(&mdok, recipe, "GALAXY.RMAJOR.MAX"); // Density of fakes … … 43 44 44 45 if (galaxyDensity <= 0) return true; 46 47 if (galaxyGridRandom) { 48 long A, B; 49 A = time(NULL); 50 for (B = 0; A == time(NULL); B++); 51 srand48(B); 52 } 45 53 46 54 // Size of FPA … … 81 89 psLogMsg("ppSim", PS_LOG_INFO, "Adding grid of %ld galaxies\n", num); 82 90 83 float galaxyIndexSlope = (galaxyIndexMax - galaxyIndexMin) / num;84 float galaxyThetaSlope = (galaxyThetaMax - galaxyThetaMin) / num;85 float galaxyARatioSlope = (galaxyARatioMax - galaxyARatioMin) / num;86 float galaxyRmajorSlope = (galaxyRmajorMax - galaxyRmajorMin) / num;91 float galaxyIndexSlope = (galaxyIndexMax - galaxyIndexMin); 92 float galaxyThetaSlope = (galaxyThetaMax - galaxyThetaMin); 93 float galaxyARatioSlope = (galaxyARatioMax - galaxyARatioMin); 94 float galaxyRmajorSlope = (galaxyRmajorMax - galaxyRmajorMin); 87 95 88 96 int i = 0; … … 96 104 galaxy->y = iy; 97 105 98 galaxy->peak = 20000;106 galaxy->peak = 1000; 99 107 100 galaxy->index = (galaxyIndexMin + i * galaxyIndexSlope); 101 galaxy->Rmaj = (galaxyRmajorMin + i * galaxyRmajorSlope); 102 galaxy->Rmin = (galaxyARatioMin + i * galaxyARatioSlope) * galaxy->Rmaj; 103 galaxy->theta = (galaxyThetaMin + i * galaxyThetaSlope); 108 // galaxyIndex from user should be for function of this form: exp(-r^(1/n)) 109 // galaxy->index = (1/2n) 110 111 float rndValue; 112 113 rndValue = galaxyGridRandom ? drand48() : i / num; 114 float index = (galaxyIndexMin + rndValue * galaxyIndexSlope); 115 galaxy->index = 0.5/index; // factor of 0.5 because the Sersic model creates exp(-z^n), not exp(-r^n) 116 117 rndValue = galaxyGridRandom ? drand48() : i / num; 118 float scale = (galaxyRmajorMin + rndValue * galaxyRmajorSlope); 119 120 // for a sersic model, 121 float bn = 1.9992*index - 0.3271; 122 float fR = 1.0 / (sqrt(2.0) * pow (bn, index)); 123 float Io = exp(bn); 124 125 galaxy->Rmaj = scale; 126 127 rndValue = galaxyGridRandom ? drand48() : i / num; 128 galaxy->Rmin = (galaxyARatioMin + rndValue * galaxyARatioSlope) * galaxy->Rmaj; 129 130 rndValue = galaxyGridRandom ? drand48() : i / num; 131 galaxy->theta = (galaxyThetaMin + rndValue * galaxyThetaSlope); 132 133 // galaxy->peak *= Io; 134 135 if (0) { 136 fprintf (stderr, "Rmaj: %f, scale: %f, index: %f, bn: %f, Ro: %f, Io: %f\n", galaxy->Rmaj, scale, index, bn, fR, Io); 137 } 104 138 105 139 psArrayAdd (galaxies, 100, galaxy); … … 124 158 galaxy->y = psRandomUniform(rng) * ySize; // y position 125 159 126 galaxy->flux = pow ((double)((i + 1) / norm), (double) (1.0 / galaxyLum)); 160 float index = (sqrt(psRandomUniform(rng)) * galaxyIndexSlope + galaxyIndexMin); 161 galaxy->index = 0.5/index; // factor of 0.5 because the Sersic model creates exp(-z^n), not exp(-r^n) 127 162 128 galaxy->index = (psRandomUniform(rng) * galaxyIndexSlope + galaxyIndexMin); 163 float scale = (psRandomUniform(rng) * galaxyRmajorSlope + galaxyRmajorMin); 164 165 // for a sersic model, 166 float bn = 1.9992*index - 0.3271; 167 float fR = 1.0 / (sqrt(2.0) * pow (bn, index)); 168 float Io = exp(bn); 169 170 galaxy->Rmaj = scale; 171 172 galaxy->Rmin = (PS_SQR(psRandomUniform(rng)) * galaxyARatioSlope + galaxyARatioMin) * galaxy->Rmaj; 173 129 174 galaxy->theta = (psRandomUniform(rng) * galaxyThetaSlope + galaxyThetaMin); 130 galaxy->Rmaj = (psRandomUniform(rng) * galaxyRmajorSlope + galaxyRmajorMin);131 galaxy->Rmin = (psRandomUniform(rng) * galaxyARatioSlope + galaxyARatioMin) * galaxy->Rmaj;132 175 176 // the flux is only approximately correct (scaling of the peak is wrong) 177 // elsewhere (ppSimInsertGalaxies.c) we calculate the true galaxy flux 133 178 galaxy->flux = expf((logf(i + 1) - logf(norm)) / galaxyLum); // Peak flux 134 179 galaxy->peak = galaxy->flux / (2.0*M_PI*PS_SQR(seeing)); 135 // galaxy->peak = 5000; 180 181 if (0) { 182 fprintf (stderr, "Rmaj: %f, scale: %f, index: %f, bn: %f, Ro: %f, Io: %f\n", galaxy->Rmaj, scale, index, bn, fR, Io); 183 } 136 184 137 185 psArrayAdd (galaxies, 100, galaxy);
Note:
See TracChangeset
for help on using the changeset viewer.
