ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
ForwardDetectors
ForwardRec
python
AFPRecConfig.py
Go to the documentation of this file.
1
#!/bin/env python
2
3
# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
4
5
# file AFPRecConfig.py
6
# author Petr Balek <petr.balek@cern.ch>
7
# date 2022-03-31
8
9
# brief A script that provides setup for AFP reconstruction included in RecJobTransforms/RecoSteering.py.
10
# It also allows to run standalone AFP reconstruction. To use it:
11
# 0. setup athena enviroment
12
# 1a. run this script:
13
# $ python AFPRecConfig.py
14
# 1b. feel free to change the input file:
15
# $ python AFPRecConfig.py --filesInput=/afs/cern.ch/user/p/pbalek/workspace/public/data17_13TeV.00338480.physics_Main.daq.RAW/data17_13TeV.00338480.physics_Main.daq.RAW._lb0275._SFO-7._0007.data
16
# 1c. run the whole reconstruction with:
17
# $ RecoSteeringTest.py --filesInput=/afs/cern.ch/user/p/pbalek/workspace/public/data17_13TeV.00338480.physics_Main.daq.RAW/data17_13TeV.00338480.physics_Main.daq.RAW._lb0275._SFO-7._0007.data --RAW
18
19
from
AthenaConfiguration.ComponentAccumulator
import
ComponentAccumulator
20
from
AthenaConfiguration.Enums
import
Format
21
22
def
AFPRecOutputCfg
(flags):
23
"""defines outputs for ESD and AOD; provides the same information as in ForwardRec/AFP_Rec_OutputItemList_jobOptions.py"""
24
from
OutputStreamAthenaPool.OutputStreamConfig
import
OutputStreamCfg
25
acc = ComponentAccumulator()
26
27
AFP_ItemList=[]
28
29
if
flags.Input.Format
is
Format.BS:
30
# AFP Silicon hits containers
31
AFP_ItemList.append(
"xAOD::AFPSiHitContainer#AFPSiHitContainer"
)
32
AFP_ItemList.append(
"xAOD::AFPSiHitAuxContainer#AFPSiHitContainerAux."
)
33
AFP_ItemList.append(
"xAOD::AFPSiHitsClusterContainer#AFPSiHitsClusterContainer"
)
34
AFP_ItemList.append(
"xAOD::AFPSiHitsClusterAuxContainer#AFPSiHitsClusterContainerAux."
)
35
36
# for runs with more BCX ids i.e. before timing in the detectors
37
for
bcIDshift
in
range (1, 6):
38
name =
"AFPSiHitContainerBcIDplus"
+ str(bcIDshift)
39
AFP_ItemList.append(
"xAOD::AFPSiHitContainer#"
+ name)
40
AFP_ItemList.append(
"xAOD::AFPSiHitAuxContainer#"
+ name +
"Aux."
)
41
42
AFP_ItemList.append(
"xAOD::AFPTrackContainer#AFPTrackContainer"
)
43
AFP_ItemList.append(
"xAOD::AFPTrackAuxContainer#AFPTrackContainerAux."
)
44
AFP_ItemList.append(
"xAOD::AFPToFHitContainer#AFPToFHitContainer"
)
45
AFP_ItemList.append(
"xAOD::AFPToFHitAuxContainer#AFPToFHitContainerAux."
)
46
AFP_ItemList.append(
"xAOD::AFPProtonContainer#AFPProtonContainer"
)
47
AFP_ItemList.append(
"xAOD::AFPProtonAuxContainer#AFPProtonContainerAux."
)
48
AFP_ItemList.append(
"xAOD::AFPToFTrackContainer#AFPToFTrackContainer"
)
49
AFP_ItemList.append(
"xAOD::AFPToFTrackAuxContainer#AFPToFTrackContainerAux."
)
50
AFP_ItemList.append(
"xAOD::AFPVertexContainer#AFPVertexContainer"
)
51
AFP_ItemList.append(
"xAOD::AFPVertexAuxContainer#AFPVertexContainerAux."
)
52
53
54
if
flags.Output.doWriteESD:
55
acc.merge(OutputStreamCfg(flags,
"ESD"
, AFP_ItemList))
56
if
flags.Output.doWriteAOD:
57
acc.merge(OutputStreamCfg(flags,
"AOD"
, AFP_ItemList))
58
return
acc
59
60
61
def
AFPRecCfg
(flags):
62
"""defines AFP reconstruction; provides the same setup as used to be in ForwardRec/ForwardRec_jobOptions.py"""
63
acc = ComponentAccumulator()
64
65
if
flags.Input.Format
is
Format.BS:
66
from
AthenaConfiguration.ComponentFactory
import
CompFactory
67
68
acc.addEventAlgo(CompFactory.AFP_RawDataProvider(
"AFP_RawDataProvider"
))
69
acc.addEventAlgo(CompFactory.AFP_Raw2Digi(
"AFP_Raw2Digi"
))
70
71
#cluster reconstruction
72
from
AFP_SiClusterTools.AFP_SiClusterTools
import
AFP_SiClusterTools_Cfg
73
acc.merge(AFP_SiClusterTools_Cfg(flags))
74
75
# tracks reconstruction
76
from
AFP_LocReco.AFP_LocReco
import
AFP_LocReco_SiD_Cfg, AFP_LocReco_TD_Cfg
77
acc.merge(AFP_LocReco_SiD_Cfg(flags))
78
acc.merge(AFP_LocReco_TD_Cfg(flags))
79
80
# protons reconstruction
81
from
AFP_GlobReco.AFP_GlobReco
import
AFP_GlobReco_Cfg
82
acc.merge(AFP_GlobReco_Cfg(flags))
83
84
# vertex reconstruction
85
from
AFP_VertexReco.AFP_VertexReco
import
AFP_VertexReco_Cfg
86
acc.merge(AFP_VertexReco_Cfg(flags))
87
88
# Setup output
89
if
flags.Output.doWriteESD
or
flags.Output.doWriteAOD:
90
acc.merge(
AFPRecOutputCfg
(flags))
91
92
return
acc
93
94
95
if
__name__ ==
"__main__"
:
96
97
98
from
AthenaConfiguration.AllConfigFlags
import
initConfigFlags
99
flags = initConfigFlags()
100
flags.Scheduler.CheckDependencies =
True
101
flags.Scheduler.ShowDataDeps =
True
102
flags.Scheduler.ShowDataFlow =
True
103
flags.Scheduler.ShowControlFlow =
True
104
flags.Scheduler.EnableVerboseViews =
True
105
106
flags.Output.doWriteAOD =
True
107
flags.Output.AODFileName =
"AOD.pool.root"
108
flags.Exec.MaxEvents = 500
109
flags.Concurrency.NumThreads = 4
110
111
from
AthenaConfiguration.TestDefaults
import
defaultConditionsTags
112
from
AthenaConfiguration.Enums
import
LHCPeriod
113
114
flags.fillFromArgs()
# enable unit tests to switch only parts of reco: python -m HIRecConfig.HIRecConfig HeavyIon.doGlobal = 0 and so on
115
flags.IOVDb.GlobalTag = defaultConditionsTags.RUN3_DATA
if
flags.GeoModel.Run
is
LHCPeriod.Run3
and
not
flags.Input.isMC
else
defaultConditionsTags.autoconfigure(flags)
116
flags.lock()
117
flags.dump()
118
119
from
AthenaConfiguration.MainServicesConfig
import
MainServicesCfg
120
acc = MainServicesCfg(flags)
121
122
from
ByteStreamCnvSvc.ByteStreamConfig
import
ByteStreamReadCfg
123
acc.merge(ByteStreamReadCfg(flags))
124
125
acc.merge(
AFPRecCfg
(flags))
126
127
from
AthenaCommon.Constants
import
DEBUG
128
acc.foreach_component(
"*AFP*"
).OutputLevel=DEBUG
129
130
acc.printConfig(withDetails=
True
, summariseProps=
True
)
131
132
status = acc.run()
133
if
status.isFailure():
134
import
sys
135
sys.exit(-1)
136
AFPRecConfig.AFPRecCfg
AFPRecCfg(flags)
Definition
AFPRecConfig.py:61
AFPRecConfig.AFPRecOutputCfg
AFPRecOutputCfg(flags)
Definition
AFPRecConfig.py:22
Constants
Generated on
for ATLAS Offline Software by
1.17.0