Show
Ignore:
Timestamp:
05/10/08 11:14:00 (8 months ago)
Author:
rporter
Message:

Add option to limit energy range in XSPEC option. Add line emission to diffuse atable option. In two comments, punch_line.c -> punch_line.cpp. Modify ism_grid to include the new range option on XSPEC output.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/source/grid_xspec.cpp

    r1842 r2036  
    99#include "optimize.h" 
    1010#include "cddrive.h" 
     11#include "continuum.h" 
    1112#include "rfield.h" 
    1213#include "grid.h" 
     14#include "ipoint.h" 
    1315#include "called.h" 
     16#include "physconst.h" 
    1417#include "prt.h" 
    1518 
     
    1720void gridXspec(realnum xc[], long int nInterpVars) 
    1821{ 
    19         long int i, j, k; 
    20         double averageChi2; 
     22        long int i; 
    2123 
    2224        DEBUG_ENTRY( "gridXspec()" ); 
     
    7981                grid.paramRange[i][5] = xc[i]+grid.paramIncrements[i]*(grid.numParamValues[i]-1.f)+grid.paramIncrements[i]/10.f; 
    8082 
    81                 for( j=0; j<grid.numParamValues[i]; j++ ) 
     83                for( long j=0; j<grid.numParamValues[i]; j++ ) 
    8284                { 
    8385                        grid.paramData[i][j] = xc[i]+grid.paramIncrements[i]*j; 
     
    9092        } 
    9193 
    92         /* >>chng 06 aug 23, this logic now allows non-square parameter spaces.  */ 
    9394        for( i=0; i< grid.totNumModels; i++ ) 
    9495        { 
     96                long j; 
     97                double averageChi2; 
    9598                realnum variableVector[LIMPAR]; 
    9699 
     
    105108                         * second "volume" is product of grid.numParamValues[2]*grid.numParamValues[3]*....grid.numParamValues[n] 
    106109                         * last "volume" is unity.  */ 
    107                         for( k=j+1; k<nInterpVars; k++ ) 
     110                        for( long k=j+1; k<nInterpVars; k++ ) 
    108111                        { 
    109112                                volumeOtherDimensions *= grid.numParamValues[k]; 
     
    210213        { 
    211214                long i1, i2; 
    212                 grid.numEnergies = rfield.nupper-2; 
     215 
     216                if( grid.LoEnergy_keV == 0. ) 
     217                        grid.ipLoEnergy = 0; 
     218                else 
     219                        grid.ipLoEnergy = ipoint( grid.LoEnergy_keV * 1000. / EVRYD ); 
     220 
     221                if( grid.HiEnergy_keV == 0. || grid.HiEnergy_keV >= continuum.filbnd[continuum.nrange] ) 
     222                        grid.ipHiEnergy = rfield.nflux - 1; 
     223                else 
     224                        grid.ipHiEnergy = ipoint( grid.HiEnergy_keV * 1000. / EVRYD ); 
     225 
     226                grid.numEnergies = grid.ipHiEnergy - grid.ipLoEnergy + 1; 
    213227                grid.Energies = (realnum*)MALLOC(sizeof(realnum)*(unsigned)(grid.numEnergies) ); 
    214228                grid.Spectra = (realnum***)MALLOC(sizeof(realnum**)*(unsigned)(NUM_OUTPUT_TYPES) ); 
     
    241255                 * at this point nOptimiz has already been incremented for first model */ 
    242256                if( grid.lgOutputTypeOn[i] ) 
    243                         cdSPEC2( i, grid.numEnergies, grid.Spectra[i][optimize.nOptimiz]); 
     257                        cdSPEC2( i, grid.numEnergies, grid.ipLoEnergy, grid.ipHiEnergy, grid.Spectra[i][optimize.nOptimiz]); 
    244258        } 
    245259        return;