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 kwargs.setdefault("RandomSeed", flags.Random.SeedOffset)
55 kwargs.setdefault("Dsid", flags.Generator.DSID)
56
57
58 base_cmds.extend([
59 "6:m0 = 172.5",
60 "23:m0 = 91.1876",
61 "23:mWidth = 2.4952",
62 "24:m0 = 80.399",
63 "24:mWidth = 2.085",
64 "StandardModel:sin2thetaW = 0.23113",
65 "StandardModel:sin2thetaWbar = 0.23146",
66 ])
67
68 user_cmds = kwargs.pop("Commands", None)
69 kwargs["Commands"] = GeneratorSettingsLayer(
70 source="base_fragment_commands",
71 values=tuple(base_cmds),
72 precedence=GeneratorSettingsPrecedence.BASE,
73 report_context="Pythia8Cfg.Commands",
74 )
75
76
77 ca = ComponentAccumulator(EvgenSequenceFactory(EvgenSequence.Generator))
78 ca.addEventAlgo(
79 CompFactory.Pythia8_i(name, **kwargs)
80 )
81
82
83 if user_cmds:
84 ca.merge(Pythia8CommandsCfg(
85 flags,
86 source="user_commands",
87 commands=user_cmds,
88 precedence=GeneratorSettingsPrecedence.USER,
89 name=name,
90 ))
91
92
93 from GeneratorConfig.GeneratorInfoSvcConfig import GeneratorInfoSvcCfg
94 ca.merge(GeneratorInfoSvcCfg(flags, Generators=["Pythia8"]), sequenceName=EvgenSequence.Generator.value)
95
96 return ca
97
98