source: sans/Dev/trunk/NCNR_User_Procedures/Reduction/SANS/InitializeILL.ipf @ 448

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

Adding Lionel's changes to read in and correct ILL data tube-by-tube for deadtime

Updated loaders to v520

  • Property svn:executable set to *
File size: 5.6 KB
Line 
1#pragma rtGlobals=1             // Use modern global access method.
2#pragma version=5.1
3#pragma IgorVersion=6.0
4
5//***********************
6// 091901 Vers 1.2
7//
8// Initialization procedures that must be run before any analysis is started
9// this is accomplished by placing:
10//
11// Initialize()
12// #include "includes"
13//
14// in the built-in procedure window of the .pxt (template) experiment
15// IGOR recognizes this, and executes Initialize() immediately after
16// compiling all of the included procedures. This is all done as the blank
17// template is opened
18//
19// Choosing initialize from the SANS menu will do the same, and no harm is done
20// to the experiment by re- initializing. no data or folders are overwritten
21//
22//************************
23
24//this is the main initualization procedure that must be the first thing
25//done when opening a new Data reduction experiment
26//
27//sets up data folders, globals, protocols, and draws the main panel
28Proc Initialize()
29
30        Variable/G root:SANS_RED_VERSION=5.10
31       
32        if(itemsinlist(WinList("Includes.ipf", ";","INCLUDE:6"),";") != 0)
33                //must be opening a v4.2 or earlier template
34                DoAlert 0,"This experiment was created with an old version of the macros. I'll try to make this work, but please start new work with a current template"
35        endif
36       
37        InitFolders()
38        InitFakeProtocols()
39        InitGlobals()   
40        InitFacilityGlobals()
41        DoWindow/F Main_Panel
42        If(V_flag == 0)
43                //draw panel
44                Main_Panel()
45        Endif
46        ResizeCmdWindow()
47End
48
49//creates all the necessary data folders in the root folder
50//does not overwrite any existing folders of the same name
51//it leaves data in them untouched
52Function InitFolders()
53       
54        NewDataFolder/O root:myGlobals
55        NewDataFolder/O root:myGlobals:CatVSHeaderInfo
56        NewDataFolder/O root:RAW
57        NewDataFolder/O root:SAM
58        NewDataFolder/O root:EMP
59        NewDataFolder/O root:BGD
60        NewDataFolder/O root:COR
61        NewDataFolder/O root:DIV
62        NewDataFolder/O root:MSK
63        NewDataFolder/O root:ABS
64        NewDataFolder/O root:CAL
65        NewDataFolder/O root:STO
66        NewDataFolder/O root:SUB
67        NewDataFolder/O root:DRK
68       
69        Return(0)
70End
71
72//Global folder already exists...
73//adds appropriate globals to the newly created myGlobals folder
74//return data folder to root: before leaving
75//
76// global parameters used for detector constants are facility specific
77// and have been moved
78//
79Function InitGlobals()
80       
81        Variable/G root:myGlobals:gIsLogScale = 0
82        String/G root:myGlobals:gDataDisplayType = "RAW"
83       
84        //check platform, so Angstrom can be drawn correctly
85       
86        if(cmpstr("Macintosh",IgorInfo(2)) == 0)
87                String/G root:myGlobals:gAngstStr = num2char(-127)
88                Variable/G root:myGlobals:gIsMac = 1
89        else
90                //either Windows or Windows NT
91                String/G root:myGlobals:gAngstStr = num2char(-59)
92                Variable/G root:myGlobals:gIsMac = 0
93                //SetIgorOption to keep some PC's (graphics cards?) from smoothing the 2D image
94                Execute "SetIgorOption WinDraw,forceCOLORONCOLOR=1"
95        endif
96       
97        //global to set log scale as the default for display of RAW data
98        //these can be set using the Misc->Preferences panel
99        Variable/G root:myGlobals:gLogScalingAsDefault=1
100        Variable/G root:myGlobals:gAllowDRK=0                   //don't show DRK as default
101        Variable/G root:myGlobals:gDoTransCheck=1
102        Variable/G root:myGlobals:gBinWidth=1
103        Variable/G root:myGlobals:gNPhiSteps=72
104       
105        // flags to turn detector corrections on/off for testing (you should leave these ON)
106        Variable/G root:myGlobals:gDoDetectorEffCorr = 0
107        Variable/G root:myGlobals:gDoTransmissionCorr = 1
108        Variable/G root:myGlobals:gDoDetectorEffCorrILL = 1
109
110        //set flag if Demo Version is detected
111        Variable/G root:myGlobals:isDemoVersion = isDemo()
112       
113        Return(0)
114End
115
116//creates the "base" protocols that should be available, after creating the data folder
117//
118//all protocols are kept in the root:myGlobals:Protocols folder, created here
119//
120Function InitFakeProtocols()
121       
122        //*****as of 0901, protocols are 8 points long, [6] is used for work.drk, [7] is unused
123        NewDataFolder/O root:myGlobals:Protocols
124        Make/O/T $"root:myGlobals:Protocols:Base"={"none","none","ask","ask","none","AVTYPE=Circular;SAVE=Yes;NAME=Manual;PLOT=Yes","DRK=none,DRKMODE=0,",""}
125        Make/O/T $"root:myGlobals:Protocols:DoAll"={"ask","ask","ask","ask","ask","AVTYPE=Circular;SAVE=Yes;NAME=Manual;PLOT=Yes","DRK=none,DRKMODE=0,",""}
126        Make/O/T/N=8 $"root:myGlobals:Protocols:CreateNew"                      //null wave
127        //Initialize waves to store values in
128       
129        String/G root:myGlobals:Protocols:gProtoStr=""
130        String/G root:myGlobals:Protocols:gNewStr=""
131        String/G root:myGlobals:Protocols:gAvgInfoStr = "AVTYPE=Circular;SAVE=Yes;NAME=Auto;PLOT=Yes;"
132       
133        Return(0)
134End
135
136//simple function to resize the comand window to a nice size, no matter what the resolution
137//need to test out on several different monitors and both platforms
138//
139// could easily be incorporated into the initialization routines to ensure that the
140// command window is always visible at startup of the macros. No need for a hook function
141//
142Function ResizeCmdWindow()
143
144        String str=IgorInfo(0),rect="",platform=igorinfo(2)
145        Variable depth,left,top,right,bottom,factor
146       
147        if(cmpstr(platform,"Macintosh")==0)
148                factor=1
149        else
150                factor = 0.6            //fudge factor to get command window on-screen on Windows
151        endif
152        rect = StringByKey("SCREEN1", str  ,":",";")   
153        sscanf rect,"DEPTH=%d,RECT=%d,%d,%d,%d",depth, left,top,right,bottom
154        MoveWindow/C  (left+3)*factor,(bottom-150)*factor,(right-50)*factor,(bottom-10)*factor
155End
156
157
158//returns 1 if demo version, 0 if full version
159Function IsDemo()
160
161        // create small offscreen graph
162        Display/W=(3000,3000,3010,3010)
163        DoWindow/C IsDemoGraph
164
165        // try to save a PICT or bitmap of it to the clipboard
166        SavePICT/Z  as "Clipboard"
167        Variable isDemo= V_Flag != 0    // if error: must be demo
168        DoWindow/K IsDemoGraph
169        return isDemo
170End
Note: See TracBrowser for help on using the repository browser.