Package reflectometry :: Package model1d :: Package model :: Module staj

Source Code for Module reflectometry.model1d.model.staj

  1  #!/usr/bin/env python 
  2   
  3  from reflectometry.model1d.profileview.staj2model import Staj2Model,Staj2MModel 
  4   
5 -class BaseStaj:
6 #meta data 7 _wavelength=4.75 8 _wavelengthDiv=0.0021 9 _angularDiv=0.007 10 _intensity=1.0 11 _background=0.0 12 13 _nFit = 0 14 _nRough = 7 15 16 _names = None 17 _depth = None 18 _rough = None 19 _rho = None 20 _mu = None 21 22 _qmin=0 23 _qmax=1.0 24 _nQ=0 25 26 _profileType = None 27 _stajdatafile = None 28 _outfile = None 29
30 - def __init__(self):
31 pass
32
33 - def get_name(self): return self._names
34 - def set_name(self, name): self._names = name
35 names = property(get_name, set_name) 36 37
38 - def get_depth(self): return self._depth
39 - def set_depth(self, d): self._depth = d
40 depth = property(get_depth, set_depth) 41
42 - def get_rough(self): return self._rough
43 - def set_rough(self, r): self._rough = r
44 rough = property(get_rough, set_rough) 45
46 - def get_rho(self): return self._rho
47 - def set_rho(self, rho): self._rho = rho
48 rho = property(get_rho, set_rho) 49
50 - def get_mu(self): return self._mu
51 - def set_mu(self, m): self._mu = m
52 mu = property(get_mu, set_mu) 53 54
55 - def get_ProfileType(self): return self._profileType
56 - def set_ProfileType(self, t): self._profileType = t
57 PT = property(get_ProfileType, set_ProfileType) 58
59 - def get_Stajdatafile(self): return self._stajdatafile
60 - def set_Stajdatafile(self, fn): self._stajdatafile, = fn
61 fin = property(get_Stajdatafile, set_Stajdatafile) 62
63 - def get_Outfile(self): return self._outfile
64 - def set_Outfile(self, fn): self._outfile, = fn
65 fout = property(get_Outfile, set_Outfile) 66
67 - def get_Qmin(self): return self._qmin
68 - def set_Qmin(self, q): self._qmin = q
69 Qmin = property(get_Qmin, set_Qmin) 70 71
72 - def get_Qmax(self): return self._qmax
73 - def set_Qmax(self, q): self._qmax = q
74 Qmax = property(get_Qmax, set_Qmax) 75 76
77 - def get_nQ(self): return self._nQ
78 - def set_nQ(self, n): self._nQ = n
79 nQ = property(get_nQ, set_nQ) 80 81
82 - def get_nFit(self): return self._nFit
83 - def set_nFit(self, n): self._nFit = n
84 nF = property(get_nFit, set_nFit) 85 86
87 - def get_nRough(self): return self._nRough
88 - def set_nRough(self, n): self._nRough = n
89 nRough = property(get_nRough, set_nRough) 90 91
92 - def getWavelength(self): return self._wavelength
93 - def setWavelength(self, L): self._wavelength = L
94 L = property(getWavelength, setWavelength) 95 96
97 - def getWavelengthDiv(self): return self._wavelengthDiv
98 - def setWavelengthDiv(self, LD): self._wavelengthDiv = LD
99 LD = property(getWavelengthDiv, setWavelengthDiv) 100 101
102 - def getAngularDiv(self): return self.angularDiv
103 - def setAngularDiv(self, AD): self.angularDiv = AD
104 AD = property(getAngularDiv, setAngularDiv) 105 106
107 - def getIntensity(self): return self.intensity
108 - def setIntensity(self, I): self.intensity = I
109 I = property(getIntensity, setIntensity) 110 111
112 - def getBackground(self): return self.background
113 - def setBackground(self, BG): self.background = BG
114 B = property(getBackground, setBackground)
115 116 117 118
119 -class Staj(BaseStaj):
120 """ 121 Non magnetic case 122 """ 123 _nTLayer = 0 124 _nMLayer = 0 125 _nBLayer = 0 126 _nRepeat = 0 127 128 _rhom = None 129 _names = None 130 131
132 - def __init__(self, 133 filename, # file which contains staj, 134 scale = False 135 ):
136 s2m = Staj2Model( filename, scale=True )._toModel() 137 self.build(s2m)
138 139
140 - def parseStajLayerName(self, pLists, nT, nM, nB ):
141 142 _name = [] 143 for x in xrange( len(pLists) ): 144 if x <= nT: 145 _name.append( 'T%d'%(x) ) 146 elif x >nT and x <= nT + nM: 147 _name.append( 'M%d'%(x-nT) ) 148 else: 149 _name.append( 'B%d'%(x-nT-nM) ) 150 151 return _name
152 153
154 - def build(self, s2m):
155 #get meta data 156 (self.wavelength, self.wavelengthDiv, self.angularDiv, self.intensity, 157 self.background) = s2m[1] 158 159 ( self._nTLayer, self._nMLayer, self._nBLayer, self._nRepeat, 160 self._nFit, self._nRough )=s2m[2] 161 162 ( self._depth, self._rough, self._rho, self._mu, self._rhom) = s2m[0] 163 164 self._names = self.parseStajLayerName( self._depth, self._nTLayer, 165 self._nMLayer, self._nBLayer) 166 167 ( self._qmin, self._qmax, self._npnts) = s2m[3] 168 ( self._proftyp, self._stajdatafile, self._outfile) = s2m[4]
169 170
171 - def get_rhom(self): return self._rhom
172 - def set_rhom(self, rm): self._rhom = rm
173 rhom = property(get_rhom, set_rhom) 174 175
176 - def get_nTLayer(self): return self._nTlayer
177 - def set_nTLayer(self, n): self._nTLayer = n
178 nT = property(get_nTLayer, set_nTLayer) 179 180
181 - def get_nMLayer(self): return self._nMLayer
182 - def set_nMLayer(self, n): self._nMLayer = n
183 nM = property(get_nMLayer, set_nMLayer) 184 185
186 - def get_nBLayer(self): return self._nBlayer
187 - def set_nBLayer(self, n): self._nBLayer = n
188 nB = property(get_nBLayer, set_nBLayer) 189 190
191 - def get_nRepeat(self): return self._nRepeat
192 - def set_nRepeat(self, n): self._nRepeat = n
193 nRepeat = property(get_nRepeat, set_nRepeat) 194 195
196 - def getProfiles(self):
197 return (self._depth, self._rough, self._rho, self._mu)
198
199 - def getMeta(self):
200 return (self.wavelength, self.wavelengthDiv, self.angularDiv, 201 self.intensity, self.background)
202 203 204 205 206
207 -class MStaj(BaseStaj):
208 """ 209 Magnetic case 210 """ 211 _Aguide = -90 212 _nLayer = 0 213 214 _depthm = None 215 _roughm = None 216 _phi = None 217 _theta = None 218
219 - def __init__(self, 220 filename, # file which contains staj, 221 scale = False 222 ):
223 s2m = Staj2MModel( filename, scale=True )._toModel() 224 self.build(s2m)
225 226
227 - def build(self, s2m):
228 #get meta data 229 (self._wavelength, self._wavelengthDiv, self._angularDiv, 230 self._intensity, self._background, self._Aguide ) = s2m[0] 231 232 ( self._rho, self._phi, self._depth, self._depthm, self._rough, 233 self._roughm, self._mu, self._theta )= s2m[1] 234 235 #( self._qmin, self._qmax, self._nQ) = s2m[2] 236 (self._nLayer, self._nRough , self._nFit ) = s2m[3] 237 238 (self._profileType, _suffix, self._outfile) = s2m[4] 239 240 self._stajdatafile = self._outfile+_suffix[0] 241 242 self._names = [] 243 for x in xrange( len(self._depth) ): 244 if x ==0: self._names.append( 'MV' ) 245 else: self._names.append( 'M%d'%(x) )
246 247 248
249 - def get_Aguide(self): return self._Aguide
250 - def set_Aguide(self, eps): self._Aguide = eps
251 Aguide = property(get_Aguide, set_Aguide) 252
253 - def get_phi(self): return self._phi
254 - def set_phi(self, v): self._phi = v
255 phi = property(get_phi, set_phi) 256
257 - def get_theta(self): return self._theta
258 - def set_theta(self, v): self._theta = v
259 theta = property(get_theta, set_theta) 260
261 - def get_depthm(self): return self._depthm
262 - def set_depthm(self, d): self._depthm = d
263 depthm = property(get_depthm, set_depthm) 264
265 - def get_roughm(self): return self._roughm
266 - def set_roughm(self, r): self._roughm = r
267 roughm = property(get_roughm, set_roughm) 268
269 - def get_nLayer(self): return self._nLayer
270 - def set_nLayer(self, n): self._nLayer = n
271 nL = property(get_nLayer, set_nLayer) 272 273
274 - def getProfiles(self):
275 return (self._depth, self._rough, self._rho, self._mu, 276 self._phi, self._theta)
277
278 - def getMeta(self):
279 return (self._wavelength, self._wavelengthDiv, self._angularDiv, 280 self._intensity, self._background, self._Aguide)
281 282 283 284 ############################ TEST CODE ################################
285 -def demo1():
286 Filename = "xrayl523c6A15.staj" 287 s2m = Staj( Filename ) 288 print s2m.getWavelength() 289 print s2m.I
290 291 if __name__ == '__main__': 292 demo1() 293