source: sans/XOP_Dev/MonteCarlo/MonteCarlo.h

Last change on this file was 997, checked in by srkline, 6 years ago

Updates for Xcode 7, Toolkit 7, and 64-bit version

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 */
22// for TK6
23HOST_IMPORT int XOPMain(IORecHandle ioRecHandle);
24
25 
26#define OLD_IGOR 1 + FIRST_XOP_ERR
27#define NON_EXISTENT_WAVE 2 + FIRST_XOP_ERR
28#define NEEDS_2D_WAVE 3 + FIRST_XOP_ERR
29
30
31// All structures passed to Igor are two-byte aligned.
32#pragma pack(2)
33
34struct MC_Params {     // This structure must be 2-byte-aligned because it receives parameters from Igor.
35        waveHndl resultsH;      // results of MC
36        waveHndl MC_linear_dataH;               //this is a 2D WAVE
37        waveHndl nnH;
38        waveHndl j2H;
39        waveHndl j1H;
40        waveHndl ntH;
41        waveHndl ran_devH;
42        waveHndl inputWaveH;
43        void* tp;                               //unused void for ThreadSafe functions
44        double retVal;          // return value is unused, save for error if needed
45};
46typedef struct MC_Params MC_Params;
47typedef struct MC_Params *MC_ParamsPtr;
48
49#pragma pack()          // return to default structure packing
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
57int MC_round(double x);
58int FindPixel(double testQ, double testPhi, double lam, double yg_d, double sdd, double pixSize, double xCtr, double yCtr, int *xPixel, int *yPixel);
59int NewDirection(double *vx, double *vy, double *vz, double theta, double phi);
60double path_len(double aval, double sig_tot);
61float ran1(SInt32 *idum);
62float ran3(SInt32 *idum);
63float ran1a(SInt32 *idum);
64float ran3a(SInt32 *idum);
65double locate_interp(double xx[], IndexInt n, double x);
Note: See TracBrowser for help on using the repository browser.