7 fGeo = ROOT.gGeoManager
8 run = sys.modules[
'__main__'].run
9 if hasattr(sys.modules[
'__main__'],
'h'): h = sys.modules[
'__main__'].h
12 xmin,ymin,zmin = -4*u.m,-5*u.m,-100*u.m
13 xmax,ymax,zmax = 4*u.m,5*u.m,50*u.m
14 dx,dy,dz = (xmax-xmin)/grid[0],(ymax-ymin)/grid[1],(zmax-zmin)/grid[2]
15 ut.bookHist(h,
'Bx-',
'Bx- component ;z [cm];x [cm];y [cm]',grid[2],zmin,zmax,grid[0],xmin,xmax,grid[1],ymin,ymax)
16 ut.bookHist(h,
'By-',
'By- component ;z [cm];x [cm];y [cm]',grid[2],zmin,zmax,grid[0],xmin,xmax,grid[1],ymin,ymax)
17 ut.bookHist(h,
'Bz-',
'Bz- component ;z [cm];x [cm];y [cm]',grid[2],zmin,zmax,grid[0],xmin,xmax,grid[1],ymin,ymax)
18 ut.bookHist(h,
'Bx+',
'Bx+ component ;z [cm];x [cm];y [cm]',grid[2],zmin,zmax,grid[0],xmin,xmax,grid[1],ymin,ymax)
19 ut.bookHist(h,
'By+',
'By+ component ;z [cm];x [cm];y [cm]',grid[2],zmin,zmax,grid[0],xmin,xmax,grid[1],ymin,ymax)
20 ut.bookHist(h,
'Bz+',
'Bz+ component ;z [cm];x [cm];y [cm]',grid[2],zmin,zmax,grid[0],xmin,xmax,grid[1],ymin,ymax)
21 h[
'Bx-'].SetMarkerColor(ROOT.kGreen-3)
22 h[
'Bx+'].SetMarkerColor(ROOT.kGreen+3)
23 h[
'By-'].SetMarkerColor(ROOT.kBlue-3)
24 h[
'By+'].SetMarkerColor(ROOT.kBlue+3)
25 h[
'Bz-'].SetMarkerColor(ROOT.kCyan-2)
26 h[
'Bz+'].SetMarkerColor(ROOT.kCyan+2)
27 for ix
in range(grid[0]):
28 for iy
in range(grid[1]):
29 for iz
in range(grid[2]):
30 x,y,z = xmin + ix*dx,ymin + iy*dy,zmin + iz*dz
31 n = fGeo.FindNode(x,y,z)
32 f = n.GetVolume().GetField()
34 if f.GetFieldValue()[0]<0: rc=h[
'Bx-'].Fill(z,x,y,-f.GetFieldValue()[0]/u.tesla)
35 if f.GetFieldValue()[0]>0: rc=h[
'Bx+'].Fill(z,x,y,f.GetFieldValue()[0]/u.tesla)
36 if f.GetFieldValue()[1]<0: rc=h[
'By-'].Fill(z,x,y,-f.GetFieldValue()[1]/u.tesla)
37 if f.GetFieldValue()[1]>0: rc=h[
'By+'].Fill(z,x,y,f.GetFieldValue()[1]/u.tesla)
38 if f.GetFieldValue()[2]<0: rc=h[
'Bz-'].Fill(z,x,y,-f.GetFieldValue()[2]/u.tesla)
39 if f.GetFieldValue()[2]>0: rc=h[
'Bz+'].Fill(z,x,y,f.GetFieldValue()[2]/u.tesla)
41 if f.GetBx(x,y,z)<0: rc=h[
'Bx-'].Fill(z,x,y,-f.GetBx(x,y,z)/u.tesla)
42 if f.GetBx(x,y,z)>0: rc=h[
'Bx+'].Fill(z,x,y,f.GetBx(x,y,z)/u.tesla)
43 if f.GetBy(x,y,z)<0: rc=h[
'By-'].Fill(z,x,y,-f.GetBy(x,y,z)/u.tesla)
44 if f.GetBy(x,y,z)>0: rc=h[
'By+'].Fill(z,x,y,f.GetBy(x,y,z)/u.tesla)
47 if hi.ClassName()==
'TH3F':
48 h[x+
'_xz']=h[x].Project3D(
'xy')
49 h[x+
'_xz'].SetTitle(hi.GetTitle()+
' top view')
50 h[x+
'_yz']=h[x].Project3D(
'xz')
51 h[x+
'_yz'].SetTitle(hi.GetTitle()+
' side view')
55 txt = {
'y':[
' Up',
' Down'],
'x':[
' Right',
' Left']}
57 for p
in [
'_xz',
'_yz']:
59 ut.bookCanvas(h,key=cn,title=
'field check',nx=1600,ny=1200,cx=1,cy=1)
61 h[
'B'+pol+
'+'+p].Draw()
62 h[
'B'+pol+
'-'+p].Draw(
'same')
63 h[
'B'+pol+
'L'+p] = ROOT.TLegend(0.79,0.72,0.91,0.87)
64 h[
'B'+pol+
'L'+p].AddEntry(h[
'B'+pol+
'+'],
'B'+pol+txt[pol][0],
'PM')
65 h[
'B'+pol+
'L'+p].AddEntry(h[
'B'+pol+
'-'],
'B'+pol+txt[pol][1],
'PM')
66 h[
'B'+pol+
'L'+p].Draw()
68 h[cn].Print(
'FieldB'+pol+
'Proj'+p+
'.png')