16ROOT.gROOT.ProcessLine(
35ROOT.gROOT.ProcessLine(
44def run(inFileName: str =
"BFieldTest.txt", rootFileName: str =
"BFieldTest.root") ->
None:
49 print(f
"Create ROOT map {rootFileName} from {inFileName}")
52 theFile = ROOT.TFile.Open(rootFileName,
"recreate")
54 rangeTree = ROOT.TTree(
"Range",
"Range")
55 rangeTree.SetDirectory(theFile)
58 rStruct = ROOT.rangeStruct()
59 rangeTree.Branch(
"xMin", ROOT.addressof(rStruct,
"xMin"),
"xMin/F")
60 rangeTree.Branch(
"xMax", ROOT.addressof(rStruct,
"xMax"),
"xMax/F")
61 rangeTree.Branch(
"dx", ROOT.addressof(rStruct,
"dx"),
"dx/F")
62 rangeTree.Branch(
"yMin", ROOT.addressof(rStruct,
"yMin"),
"yMin/F")
63 rangeTree.Branch(
"yMax", ROOT.addressof(rStruct,
"yMax"),
"yMax/F")
64 rangeTree.Branch(
"dy", ROOT.addressof(rStruct,
"dy"),
"dy/F")
65 rangeTree.Branch(
"zMin", ROOT.addressof(rStruct,
"zMin"),
"zMin/F")
66 rangeTree.Branch(
"zMax", ROOT.addressof(rStruct,
"zMax"),
"zMax/F")
67 rangeTree.Branch(
"dz", ROOT.addressof(rStruct,
"dz"),
"dz/F")
69 dataTree = ROOT.TTree(
"Data",
"Data")
70 dataTree.SetDirectory(theFile)
76 dStruct = ROOT.dataStruct()
77 dataTree.Branch(
"Bx", ROOT.addressof(dStruct,
"Bx"),
"Bx/F")
78 dataTree.Branch(
"By", ROOT.addressof(dStruct,
"By"),
"By/F")
79 dataTree.Branch(
"Bz", ROOT.addressof(dStruct,
"Bz"),
"Bz/F")
99 with open(inFileName)
as f:
106 line = line.replace(
"[",
"")
107 line = line.replace(
"]",
"")
108 line = line.replace(
"mm",
"")
115 print(f
"sLine = {sLine}")
117 rStruct.xMin = float(sLine[3]) * mm2cm
118 rStruct.xMax = float(sLine[7]) * mm2cm
119 rStruct.dx = float(sLine[12]) * mm2cm
120 rStruct.yMin = float(sLine[4]) * mm2cm
121 rStruct.yMax = float(sLine[8]) * mm2cm
122 rStruct.dy = float(sLine[13]) * mm2cm
123 rStruct.zMin = float(sLine[5]) * mm2cm
124 rStruct.zMax = float(sLine[9]) * mm2cm
125 rStruct.dz = float(sLine[14]) * mm2cm
127 Nx = int(((rStruct.xMax - rStruct.xMin) / rStruct.dx) + 1.0)
128 Ny = int(((rStruct.yMax - rStruct.yMin) / rStruct.dy) + 1.0)
129 Nz = int(((rStruct.zMax - rStruct.zMin) / rStruct.dz) + 1.0)
131 print(f
"Nx = {Nx}, Ny = {Ny}, Nz = {Nz}")
134 x0 = 0.5 * (rStruct.xMin + rStruct.xMax)
135 y0 = 0.5 * (rStruct.yMin + rStruct.yMax)
136 z0 = 0.5 * (rStruct.zMin + rStruct.zMax)
138 print(f
"Centering field map using coordinate shift {x0} {y0} {z0} cm")
141 rStruct.xMin = rStruct.xMin - x0
142 rStruct.xMax = rStruct.xMax - x0
144 rStruct.yMin = rStruct.yMin - y0
145 rStruct.yMax = rStruct.yMax - y0
147 rStruct.zMin = rStruct.zMin - z0
148 rStruct.zMax = rStruct.zMax - z0
158 dStruct.x = float(sLine[0]) * m2cm - x0
159 dStruct.y = float(sLine[1]) * m2cm - y0
160 dStruct.z = float(sLine[2]) * m2cm - z0
163 dStruct.Bx = float(sLine[3])
164 dStruct.By = float(sLine[4])
165 dStruct.Bz = float(sLine[5])
175if __name__ ==
"__main__":
176 run(
"BFieldTest.txt",
"BFieldTest.root")
None createRootMap(inFileName, rootFileName)
None run(str inFileName="BFieldTest.txt", str rootFileName="BFieldTest.root")
int open(const char *, int)
Opens a file descriptor.