196def createRootMap(inFileName, outFileName):
197
198 print('Create ROOT map {0} from {1}'.format(outFileName, inFileName))
199
200
201 theFile = ROOT.TFile.Open(outFileName, 'recreate')
202
203 rangeTree = ROOT.TTree('Range', 'Range')
204 rangeTree.SetDirectory(theFile)
205
206
207 rStruct = ROOT.rangeStruct()
208 rangeTree.Branch('xMin', ROOT.AddressOf(rStruct, 'xMin'), 'xMin/F')
209 rangeTree.Branch('xMax', ROOT.AddressOf(rStruct, 'xMax'), 'xMax/F')
210 rangeTree.Branch('dx', ROOT.AddressOf(rStruct, 'dx'), 'dx/F')
211 rangeTree.Branch('yMin', ROOT.AddressOf(rStruct, 'yMin'), 'yMin/F')
212 rangeTree.Branch('yMax', ROOT.AddressOf(rStruct, 'yMax'), 'yMax/F')
213 rangeTree.Branch('dy', ROOT.AddressOf(rStruct, 'dy'), 'dy/F')
214 rangeTree.Branch('zMin', ROOT.AddressOf(rStruct, 'zMin'), 'zMin/F')
215 rangeTree.Branch('zMax', ROOT.AddressOf(rStruct, 'zMax'), 'zMax/F')
216 rangeTree.Branch('dz', ROOT.AddressOf(rStruct, 'dz'), 'dz/F')
217
218 dataTree = ROOT.TTree('Data', 'Data')
219 dataTree.SetDirectory(theFile)
220
221
222
223
224
225 dStruct = ROOT.dataStruct()
226 dataTree.Branch('Bx', ROOT.AddressOf(dStruct, 'Bx'), 'Bx/F')
227 dataTree.Branch('By', ROOT.AddressOf(dStruct, 'By'), 'By/F')
228 dataTree.Branch('Bz', ROOT.AddressOf(dStruct, 'Bz'), 'Bz/F')
229
230
231 iLine = 0
232
233
234 Nx = 0
235 Ny = 0
236 Nz = 0
237 Nzy = 0
238
239 with open(inFileName, 'r') as f:
240
241 for line in f:
242 iLine += 1
243 sLine = line.split()
244
245
246 if iLine == 1:
247 rStruct.xMin = float(sLine[1])
248 rStruct.xMax = float(sLine[2])
249 rStruct.dx = float(sLine[3])
250 rStruct.yMin = float(sLine[4])
251 rStruct.yMax = float(sLine[5])
252 rStruct.dy = float(sLine[6])
253 rStruct.zMin = float(sLine[7])
254 rStruct.zMax = float(sLine[8])
255 rStruct.dz = float(sLine[9])
256
257 Nx = int(((rStruct.xMax - rStruct.xMin)/rStruct.dx) + 1.0)
258 Ny = int(((rStruct.yMax - rStruct.yMin)/rStruct.dy) + 1.0)
259 Nz = int(((rStruct.zMax - rStruct.zMin)/rStruct.dz) + 1.0)
260 Nzy = Nz*Ny
261
262 print('Nx = {0}, Ny = {1}, Nz = {2}'.format(Nx, Ny, Nz))
263
264 rangeTree.Fill()
265
266 elif iLine > 2:
267
268
269 dStruct.Bx = float(sLine[0])
270 dStruct.By = float(sLine[1])
271 dStruct.Bz = float(sLine[2])
272
273
274
275
276
277
278
279
280
281
282
283 dataTree.Fill()
284
285 theFile.cd()
286 rangeTree.Write()
287 dataTree.Write()
288 theFile.Close()
289
290