source: sans/XOP_Dev/MonteCarlo/MonteCarlo.h @ 789

Last change on this file since 789 was 758, checked in by srkline, 12 years ago

Changes to DebyeSpheres? to convert everything to double, rather than float.

Changes to MonteCarlo? to use a local definition of round(), since it's not a standard function in Visual Studio's math.h. Easier to just write my own and give it an odd name - MC_round()

File size: 1.7 KB
Line 
1/*
2 *  MonteCarlo.h
3 *  SANSAnalysis
4 *
5 *  Created by Steve Kline on 10/16/08.
6 *  Copyright 2008 __MyCompanyName__. All rights reserved.
7 *
8 */
9
10#include <math.h>
11#include <ctype.h>
12
13#include <stdlib.h>
14#include <stdio.h>
15
16#ifdef _WIN32
17#include <float.h>
18#include "winFuncs.h"
19#endif
20 
21/* Prototypes */
22HOST_IMPORT void main(IORecHandle ioRecHandle);
23
24 
25#define OLD_IGOR 1 + FIRST_XOP_ERR
26#define NON_EXISTENT_WAVE 2 + FIRST_XOP_ERR
27#define NEEDS_2D_WAVE 3 + FIRST_XOP_ERR
28
29
30// All structures passed to Igor are two-byte aligned.
31#include "XOPStructureAlignmentTwoByte.h"
32
33struct MC_Params {     // This structure must be 2-byte-aligned because it receives parameters from Igor.
34        waveHndl resultsH;      // results of MC
35        waveHndl MC_linear_dataH;               //this is a 2D WAVE
36        waveHndl nnH;
37        waveHndl j2H;
38        waveHndl j1H;
39        waveHndl ntH;
40        waveHndl ran_devH;
41        waveHndl inputWaveH;
42        void* tp;                               //unused void for ThreadSafe functions
43        double retVal;          // return value is unused, save for error if needed
44};
45typedef struct MC_Params MC_Params;
46typedef struct MC_Params *MC_ParamsPtr;
47
48#include "XOPStructureAlignmentReset.h"
49
50
51// function prototypes
52int Monte_SANSX(MC_ParamsPtr p);
53int Monte_SANSX2(MC_ParamsPtr p);
54int Monte_SANSX3(MC_ParamsPtr p);
55int Monte_SANSX4(MC_ParamsPtr p);
56
57long MC_round(double x);
58int FindPixel(double testQ, double testPhi, double lam, double sdd, double pixSize, double xCtr, double yCtr, long *xPixel, long *yPixel);
59int NewDirection(double *vx, double *vy, double *vz, double theta, double phi);
60double path_len(double aval, double sig_tot);
61float ran1(long *idum);
62float ran3(long *idum);
63float ran1a(long *idum);
64float ran3a(long *idum);
65double locate_interp(double xx[], long n, double x);
Note: See TracBrowser for help on using the repository browser.