37def Pythia8BaseCfg(flags, name="Pythia8_i", **kwargs):
38 """
39 The main Pythia8 configuration fragment that sets up the Pythia8_i algorithm
40 and returns a CA instance
41 """
42
43 base_cmds = [
44 "Main:timesAllowErrors = 500",
45 "ParticleDecays:limitTau0 = on",
46 "ParticleDecays:tau0Max = 10.0"
47 ]
48
49
50 if "CollisionEnergy" not in kwargs:
51 kwargs["CollisionEnergy"] = flags.Beam.Energy * 2 / GeV
52
53
54 base_cmds.extend([
55 "6:m0 = 172.5",
56 "23:m0 = 91.1876",
57 "23:mWidth = 2.4952",
58 "24:m0 = 80.399",
59 "24:mWidth = 2.085",
60 "StandardModel:sin2thetaW = 0.23113",
61 "StandardModel:sin2thetaWbar = 0.23146",
62 ])
63
64 user_cmds = kwargs.pop("Commands", None)
65 kwargs["Commands"] = GeneratorSettingsLayer(
66 source="base_fragment_commands",
67 values=tuple(base_cmds),
68 precedence=GeneratorSettingsPrecedence.BASE,
69 report_context="Pythia8Cfg.Commands",
70 )
71
72
73 ca = ComponentAccumulator(EvgenSequenceFactory(EvgenSequence.Generator))
74 ca.addEventAlgo(
75 CompFactory.Pythia8_i(name, **kwargs)
76 )
77
78
79 if user_cmds:
80 ca.merge(Pythia8CommandsCfg(
81 flags,
82 source="user_commands",
83 commands=user_cmds,
84 precedence=GeneratorSettingsPrecedence.USER,
85 name=name,
86 ))
87
88
89 from GeneratorConfig.GeneratorInfoSvcConfig import GeneratorInfoSvcCfg
90 ca.merge(GeneratorInfoSvcCfg(flags, Generators=["Pythia8"]), sequenceName=EvgenSequence.Generator.value)
91
92 return ca
93
94