43def MuonWallTileTBCfg(flags, name="MuonWallTileTB", **kwargs):
44
45 if flags.TestBeam.Eta != 'NONE' and (flags.TestBeam.Theta != 'NONE' or flags.TestBeam.Z != 'NONE'):
46 raise ValueError('THE ETA PARAMETER CAN NOT BE SET TOGETHER WITH THETA AND Z')
47 elif (flags.TestBeam.Theta == 'NONE' or flags.TestBeam.Z == 'NONE') and flags.TestBeam.Eta == 'NONE':
48 raise ValueError('THETA AND Z ARE NOT SET')
49 import math
50 from AthenaCommon import PhysicalConstants
51 if flags.TestBeam.Eta != 'NONE':
52
53 eta=flags.TestBeam.Eta
54 ThetaY=-(PhysicalConstants.pi*0.5)+2*math.atan(math.exp(-eta))
55 DeltaF=0.0
56 elif not (flags.TestBeam.Theta == 'NONE' or flags.TestBeam.Z == 'NONE'):
57 theta=flags.TestBeam.Theta
58 z=flags.TestBeam.Z
59 eta=0.0
60 if abs(theta) < 70.01:
61
62
63
64
65 ThetaY=math.radians(theta)
66 DeltaF=(2290.0*math.tan(-ThetaY)-z)
67 elif abs(abs(theta)-90.0) < 0.01:
68
69
70
71
72 sign=int(theta>0)*2-1
73 ThetaY=sign*math.radians(90.0)
74 DeltaF=0.0
75 else:
76 print ('Tile table rotation: ERROR unknown rotation mode')
77 raise ValueError('UNKNOWN MODE - NEITHER ETA NOR THETA AND Z ARE SET')
78 zmax=2380.22441662
79 r=5115.0
80 z=0.0
81 if (math.fabs(ThetaY)<1.57):
82 z=r*math.tan(-ThetaY)-DeltaF
83 elif (eta!=0):
84 z=r/math.tan(2*math.atan(math.exp(-eta)))
85 if (z>zmax):
86 z=zmax
87 elif (z<-zmax):
88 z=-zmax
89 kwargs.setdefault("OffsetX", r)
90 kwargs.setdefault("OffsetY", 0.0)
91 kwargs.setdefault("OffsetZ", z)
92 return MuonWallToolCfg(flags, name, **kwargs)
93