185def createRootMap(inFileName, outFileName) -> None:
186 print(f"Create ROOT map {outFileName} from {inFileName}")
187
188
189 theFile = ROOT.TFile.Open(outFileName, "recreate")
190
191 rangeTree = ROOT.TTree("Range", "Range")
192 rangeTree.SetDirectory(theFile)
193
194
195 rStruct = ROOT.rangeStruct()
196 rangeTree.Branch("xMin", ROOT.addressof(rStruct, "xMin"), "xMin/F")
197 rangeTree.Branch("xMax", ROOT.addressof(rStruct, "xMax"), "xMax/F")
198 rangeTree.Branch("dx", ROOT.addressof(rStruct, "dx"), "dx/F")
199 rangeTree.Branch("yMin", ROOT.addressof(rStruct, "yMin"), "yMin/F")
200 rangeTree.Branch("yMax", ROOT.addressof(rStruct, "yMax"), "yMax/F")
201 rangeTree.Branch("dy", ROOT.addressof(rStruct, "dy"), "dy/F")
202 rangeTree.Branch("zMin", ROOT.addressof(rStruct, "zMin"), "zMin/F")
203 rangeTree.Branch("zMax", ROOT.addressof(rStruct, "zMax"), "zMax/F")
204 rangeTree.Branch("dz", ROOT.addressof(rStruct, "dz"), "dz/F")
205
206 dataTree = ROOT.TTree("Data", "Data")
207 dataTree.SetDirectory(theFile)
208
209
210
211
212
213 dStruct = ROOT.dataStruct()
214 dataTree.Branch("Bx", ROOT.addressof(dStruct, "Bx"), "Bx/F")
215 dataTree.Branch("By", ROOT.addressof(dStruct, "By"), "By/F")
216 dataTree.Branch("Bz", ROOT.addressof(dStruct, "Bz"), "Bz/F")
217
218
219 iLine = 0
220
221
222 Nx = 0
223 Ny = 0
224 Nz = 0
225
226 with open(inFileName)
as f:
227 for line in f:
228 iLine += 1
229 sLine = line.split()
230
231
232 if iLine == 1:
233 rStruct.xMin = float(sLine[1])
234 rStruct.xMax = float(sLine[2])
235 rStruct.dx = float(sLine[3])
236 rStruct.yMin = float(sLine[4])
237 rStruct.yMax = float(sLine[5])
238 rStruct.dy = float(sLine[6])
239 rStruct.zMin = float(sLine[7])
240 rStruct.zMax = float(sLine[8])
241 rStruct.dz = float(sLine[9])
242
243 Nx = int(((rStruct.xMax - rStruct.xMin) / rStruct.dx) + 1.0)
244 Ny = int(((rStruct.yMax - rStruct.yMin) / rStruct.dy) + 1.0)
245 Nz = int(((rStruct.zMax - rStruct.zMin) / rStruct.dz) + 1.0)
246
247 print(f"Nx = {Nx}, Ny = {Ny}, Nz = {Nz}")
248
249 rangeTree.Fill()
250
251 elif iLine > 2:
252
253 dStruct.Bx = float(sLine[0])
254 dStruct.By = float(sLine[1])
255 dStruct.Bz = float(sLine[2])
256
257
258
259
260
261
262
263
264
265
266
267 dataTree.Fill()
268
269 theFile.cd()
270 rangeTree.Write()
271 dataTree.Write()
272 theFile.Close()
273
274
int open(const char *, int)
Opens a file descriptor.