35def StarlightBaseCfg(flags, name="Starlight_i", safety=1., **kwargs):
36 """
37 The main Starlight configuration fragment that sets up the Starlight_i algorithm
38 and returns a CA instance.
39 By default Starlight is set to Pb+Pb collisions.
40 """
41
42
43 kwargs.setdefault("lheOutput", False)
44
45
46
47 kwargs.setdefault("maxevents", _get_nevents(flags, safety))
48
49 kwargs.setdefault("beam1Energy", flags.Beam.Energy/GeV)
50 kwargs.setdefault("beam2Energy", flags.Beam.Energy/GeV)
51
52
53
54 gamma1 = 208 * kwargs['beam1Energy'] / (207.9766359 * 0.931494)
55 gamma2 = 208 * kwargs['beam2Energy'] / (207.9766359 * 0.931494)
56
57
58 base_init = [
59 "beam1Z 82", "beam1A 208",
60 "beam2Z 82", "beam2A 208",
61 f"beam1Gamma {int(gamma1)}",
62 f"beam2Gamma {int(gamma2)}",
63 "maxW -1",
64 "minW -1",
65 "nmbWBins 400",
66 "maxRapidity 3.",
67 "nmbRapidityBins 300",
68 "accCutPt 0",
69 "accCutEta 0",
70
71 f"nmbEventsTot {kwargs["maxevents"] if kwargs["lheOutput"] else 1}",
72 "interferenceEnabled 0",
73 "interferenceStrength 1.",
74 "coherentProduction 1",
75 "incoherentFactor 1.",
76 "maxPtInterference 0.24",
77 "nmbPtBinsInterference 120",
78 "xsecMethod 0",
79 "nThreads 1",
80 "pythFullRec 0"
81 ]
82
83
84 user_init = kwargs.pop("Initialize", None)
85 kwargs["Initialize"] = GeneratorSettingsLayer(
86 source="base_initialize",
87 values=tuple(base_init),
88 precedence=GeneratorSettingsPrecedence.BASE,
89 report_context="Starlight.Initialize",
90 )
91
92
93 ca = ComponentAccumulator(EvgenSequenceFactory(EvgenSequence.Generator))
94 ca.addEventAlgo(
95 CompFactory.Starlight_i(name, **kwargs)
96 )
97
98
99 if user_init:
100 ca.merge(StarlightInitializeCfg(
101 flags,
102 source="user_initialize",
103 values=user_init,
104 precedence=GeneratorSettingsPrecedence.USER,
105 name=name,
106 ))
107
108
109 from GeneratorConfig.GeneratorInfoSvcConfig import GeneratorInfoSvcCfg
110 ca.merge(GeneratorInfoSvcCfg(flags, Generators=["Starlight"]), sequenceName=EvgenSequence.Generator.value)
111
112 return ca
113
114