45def ForwardRegionPropertiesCfg(flags, name="ForwardRegionProperties", **kwargs):
46 from AthenaCommon.Logging import logging
47 msg = logging.getLogger("ForwardRegionPropertiesCfg")
48 result = ComponentAccumulator()
49
50 twiss_beam1 = resolveTwissBeamFilePath(flags.Sim.TwissFileBeam1, msg)
51 twiss_beam2 = resolveTwissBeamFilePath(flags.Sim.TwissFileBeam2, msg)
52 twiss_momentum = -1.
53 if twiss_beam1 is None or twiss_beam2 is None:
54 msg.info("Attempting to build TwissFileBeam paths manually")
55
56 twiss_beam1 = buildTwissFilePath(flags, msg, 'beam1.tfs')
57 twiss_beam2 = buildTwissFilePath(flags, msg, 'beam2.tfs')
58 import re,math
59 twiss_energy = '%1.1fTeV'%(float(flags.Sim.TwissEnergy)*0.000001)
60 twiss_momentum = math.sqrt(float(re.findall("\\d+.\\d+", twiss_energy)[0])**2 - (0.938e-3)**2)*1e3
61 else:
62
63 tmp = twiss_beam1.split('TeV')[0]
64 tmp_spot = len(tmp)
65 if flags.Sim.TwissEnergy:
66 twiss_energy = '%1.1fTeV'%(float(flags.Sim.TwissEnergy)*0.000001)
67 else:
68 while True:
69 try:
70 tmp_energy = float( tmp[tmp_spot:] )
71 tmp_spot -= 1
72 except ValueError:
73 twiss_energy = float( tmp[tmp_spot+1:] )
74 break
75 pass
76 import re,math
77 twiss_momentum = math.sqrt(float(re.findall("\\d+.\\d+", twiss_energy)[0])**2 - (0.938e-3)**2)*1e3
78
79
80 kwargs.setdefault("twissFileB1", twiss_beam1)
81 kwargs.setdefault("twissFileB2", twiss_beam2)
82 kwargs.setdefault("momentum", twiss_momentum)
83 result.setPrivateTools(CompFactory.ForwardRegionProperties(name, **kwargs))
84 return result