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

Last change on this file since 435 was 435, checked in by srkline, 14 years ago

Added first pass at MonteCarlo? simulation XOP. Needs a lot of tidying, and later some work threading.

File size: 1.5 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 result;          // 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 FindPixel(double testQ, double testPhi, double lam, double sdd, double pixSize, double xCtr, double yCtr, long *xPixel, long *yPixel);
54int NewDirection(double *vx, double *vy, double *vz, double theta, double phi);
55double path_len(double aval, double sig_tot);
56float ran1(long *idum);
57float ran3(long *idum);
58double locate_interp(double xx[], long n, double x);
Note: See TracBrowser for help on using the repository browser.