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

Last change on this file since 996 was 834, checked in by srkline, 11 years ago

Changes to the XOP code to upgrade to ToolKit? v6. Changes are the ones outlined in the Appendix A of the TK6 manual. SOme of the XOP support routines and the #pragma for 2-byte structures have changed. Per Howard Rodstein, there is no need to change the c files to cpp. c should work and compile just fine.

These changes work correctly on my mac. Next is to make sure that they work correctly on the two build machines.

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 main(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
57long MC_round(double x);
58int FindPixel(double testQ, double testPhi, double lam, double yg_d, 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.