ATLAS Offline Software
Loading...
Searching...
No Matches
HijingConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from GeneratorConfig.GeneratorSettingsSemantics import (
6 GeneratorSettingsLayer,
7 GeneratorSettingsPrecedence
8)
9from GeneratorConfig.Sequences import EvgenSequence, EvgenSequenceFactory
10from AthenaCommon.SystemOfUnits import GeV
11
12# Get logger
13from AthenaCommon.Logging import logging
14log = logging.getLogger("HijingConfig")
15
16
17def HijingInitializeCfg(flags, source, values, precedence, name="Hijing"):
18 """
19 Return a CA fragment that adds one initialize layer to Hijing.
20 """
21 ca = ComponentAccumulator(EvgenSequenceFactory(EvgenSequence.Generator))
22 ca.addEventAlgo(
23 CompFactory.Hijing(name, Initialize=GeneratorSettingsLayer(
24 source=source,
25 values=tuple(values or ()),
26 precedence=precedence,
27 report_context="Hijing.Initialize"
28 ))
29 )
30 return ca
31
32
33def HijingBaseCfg(flags, name="Hijing", **kwargs):
34 """
35 The main Hijing configuration fragment that sets up the Hijing algorithm
36 and returns a CA instance.
37 """
38
39 # Basic initialize parameters
40 base_init = [f"efrm {2*flags.Beam.Energy/GeV}",
41 "frame CMS",
42 "proj A", "targ A",
43 "iap 208", "iat 208",
44 "izp 82", "izt 82",
45 ]
46
47 # Get user initialize parameters
48 user_init = kwargs.pop("Initialize", None)
49 kwargs["Initialize"] = GeneratorSettingsLayer(
50 source="base_initialize",
51 values=tuple(base_init),
52 precedence=GeneratorSettingsPrecedence.BASE,
53 report_context="Hijing.Initialize"
54 )
55
56 # Create CA object
57 ca = ComponentAccumulator(EvgenSequenceFactory(EvgenSequence.Generator))
58 ca.addEventAlgo(
59 CompFactory.Hijing(name, **kwargs)
60 )
61
62 # Add user initialize parameters
63 if user_init:
64 ca.merge(HijingInitializeCfg(
65 flags,
66 source="user_initialize",
67 values=user_init,
68 precedence=GeneratorSettingsPrecedence.USER,
69 name=name
70 ))
71
72 # Announce generator to service
73 from GeneratorConfig.GeneratorInfoSvcConfig import GeneratorInfoSvcCfg
74 ca.merge(GeneratorInfoSvcCfg(flags, Generators=["Hijing"]), sequenceName=EvgenSequence.Generator.value)
75
76 return ca
77
78
79
HijingInitializeCfg(flags, source, values, precedence, name="Hijing")
HijingBaseCfg(flags, name="Hijing", **kwargs)