20ROOT.gROOT.ProcessLine(
38ROOT.gROOT.ProcessLine(
51 inFileName: str =
"FieldTest.txt",
52 rootFileName: str =
"BFieldTest.root",
54 storeCoords: bool =
False,
59def createRootMap(inFileName, rootFileName, cmScale, storeCoords) -> None:
60 print(f
"Create map {rootFileName} from {inFileName} using cmScale = {cmScale}")
61 if storeCoords
is True:
62 print(f
"We will also store the x,y,z field coordinates in {rootFileName}")
67 theFile = ROOT.TFile.Open(rootFileName,
"recreate")
69 rangeTree = ROOT.TTree(
"Range",
"Range")
70 rangeTree.SetDirectory(theFile)
73 rStruct = ROOT.rangeStruct()
74 rangeTree.Branch(
"xMin", ROOT.addressof(rStruct,
"xMin"),
"xMin/F")
75 rangeTree.Branch(
"xMax", ROOT.addressof(rStruct,
"xMax"),
"xMax/F")
76 rangeTree.Branch(
"dx", ROOT.addressof(rStruct,
"dx"),
"dx/F")
77 rangeTree.Branch(
"yMin", ROOT.addressof(rStruct,
"yMin"),
"yMin/F")
78 rangeTree.Branch(
"yMax", ROOT.addressof(rStruct,
"yMax"),
"yMax/F")
79 rangeTree.Branch(
"dy", ROOT.addressof(rStruct,
"dy"),
"dy/F")
80 rangeTree.Branch(
"zMin", ROOT.addressof(rStruct,
"zMin"),
"zMin/F")
81 rangeTree.Branch(
"zMax", ROOT.addressof(rStruct,
"zMax"),
"zMax/F")
82 rangeTree.Branch(
"dz", ROOT.addressof(rStruct,
"dz"),
"dz/F")
84 rStruct.xMin = rangeInfo[
"xMin"]
85 rStruct.xMax = rangeInfo[
"xMax"]
86 rStruct.dx = rangeInfo[
"dx"]
87 rStruct.yMin = rangeInfo[
"yMin"]
88 rStruct.yMax = rangeInfo[
"yMax"]
89 rStruct.dy = rangeInfo[
"dy"]
90 rStruct.zMin = rangeInfo[
"zMin"]
91 rStruct.zMax = rangeInfo[
"zMax"]
92 rStruct.dz = rangeInfo[
"dz"]
95 x0 = 0.5 * (rStruct.xMin + rStruct.xMax)
96 y0 = 0.5 * (rStruct.yMin + rStruct.yMax)
97 z0 = 0.5 * (rStruct.zMin + rStruct.zMax)
104 print(f
"Centering field map using coordinate shift {x0} {y0} {z0} cm")
107 rStruct.xMin = rStruct.xMin - x0
108 rStruct.xMax = rStruct.xMax - x0
110 rStruct.yMin = rStruct.yMin - y0
111 rStruct.yMax = rStruct.yMax - y0
113 rStruct.zMin = rStruct.zMin - z0
114 rStruct.zMax = rStruct.zMax - z0
116 print(f
"x range = {rStruct.xMin} to {rStruct.xMax}")
117 print(f
"y range = {rStruct.yMin} to {rStruct.yMax}")
118 print(f
"z range = {rStruct.zMin} to {rStruct.zMax}")
124 dataTree = ROOT.TTree(
"Data",
"Data")
125 dataTree.SetDirectory(theFile)
131 dStruct = ROOT.dataStruct()
132 if storeCoords
is True:
133 dataTree.Branch(
"x", ROOT.addressof(dStruct,
"x"),
"x/F")
134 dataTree.Branch(
"y", ROOT.addressof(dStruct,
"y"),
"y/F")
135 dataTree.Branch(
"z", ROOT.addressof(dStruct,
"z"),
"z/F")
137 dataTree.Branch(
"Bx", ROOT.addressof(dStruct,
"Bx"),
"Bx/F")
138 dataTree.Branch(
"By", ROOT.addressof(dStruct,
"By"),
"By/F")
139 dataTree.Branch(
"Bz", ROOT.addressof(dStruct,
"Bz"),
"Bz/F")
142 with open(inFileName)
as f:
150 if storeCoords
is True:
151 dStruct.x = float(sLine[0]) * cmScale - x0
152 dStruct.y = float(sLine[1]) * cmScale - y0
153 dStruct.z = float(sLine[2]) * cmScale - z0
156 dStruct.Bx = float(sLine[3])
157 dStruct.By = float(sLine[4])
158 dStruct.Bz = float(sLine[5])
177 with open(inFileName)
as f:
184 x = float(sLine[0]) * cmScale
185 y = float(sLine[1]) * cmScale
186 z = float(sLine[2]) * cmScale
209 dx = (xMax - xMin) / (Nx1 * 1.0)
215 dy = (yMax - yMin) / (Ny1 * 1.0)
221 dz = (zMax - zMin) / (Nz1 * 1.0)
243if __name__ ==
"__main__":
None createRootMap(inFileName, rootFileName, cmScale, storeCoords)
def findRanges(inFileName, cmScale)
None run(str inFileName="FieldTest.txt", str rootFileName="BFieldTest.root", float cmScale=1.0, bool storeCoords=False)
int open(const char *, int)
Opens a file descriptor.