14def fromRunArgs(runArgs):
15 from AthenaCommon.Logging import logging
16 log = logging.getLogger('HITtoRDO')
17 log.info('****************** STARTING HITtoRDO *****************')
18
19 log.info('**** Transformation run arguments')
20 log.info(str(runArgs))
21
22 log.info('**** Setting-up configuration flags')
23 from AthenaConfiguration.AllConfigFlags import initConfigFlags
24 flags = initConfigFlags()
25
26 commonRunArgsToFlags(runArgs, flags)
27
28 if not hasattr(runArgs, 'inputHITSFile'):
29 raise RuntimeError('No input HITS file defined')
30
31 if not hasattr(runArgs, 'outputRDOFile'):
32 raise RuntimeError('No output RDO file defined')
33
34 flags.Input.isMC = True
35 flags.Input.Files = runArgs.inputHITSFile
36 flags.Output.RDOFileName = runArgs.outputRDOFile
37
38
39 if hasattr(runArgs, 'runNumber'):
40 if flags.Input.MCChannelNumber != runArgs.runNumber:
41 log.warning('Got different MC channel number (%d) from runNumber than from metadata (%d)', runArgs.runNumber, flags.Input.MCChannelNumber)
42 flags.Input.MCChannelNumber = runArgs.runNumber
43 else:
44 log.info('MC channel number: %d', flags.Input.MCChannelNumber)
45
46
47 if hasattr(runArgs, 'detectors'):
48 detectors = runArgs.detectors
49 else:
50 detectors = None
51
52
53 from DigitizationConfig.DigitizationConfigFlags import digitizationRunArgsToFlags
54 digitizationRunArgsToFlags(runArgs, flags)
55
56
57 from DigitizationConfig.DigitizationConfigFlags import setupDigitizationFlags
58 setupDigitizationFlags(runArgs, flags)
59 log.info('Running with pile-up: %s', flags.Digitization.PileUp)
60
61
62 from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
63 setupDetectorFlags(flags, detectors, use_metadata=True, toggle_geometry=True)
64
65
66 from PerfMonComps.PerfMonConfigHelpers import setPerfmonFlagsFromRunArgs
67 setPerfmonFlagsFromRunArgs(flags, runArgs)
68
69
70 specialConfigPreInclude(flags)
71
72
73 processPreInclude(runArgs, flags)
74
75
76 processPreExec(runArgs, flags)
77
78
79 from DigitizationConfig.DigitizationConfigFlags import pileupRunArgsToFlags
80 pileupRunArgsToFlags(runArgs, flags)
81
82
83 if flags.Digitization.PileUp:
84 from RunDependentSimComps.PileUpUtils import setupPileUpProfile
85 setupPileUpProfile(flags)
86
87
88
89
90
91 flags.fillFromArgs()
92
93
94 flags.lock()
95
96
97 from DigitizationConfig.DigitizationSteering import DigitizationMainCfg
98 cfg = DigitizationMainCfg(flags)
99
100
101 from DigitizationConfig.DigitizationSteering import DigitizationMessageSvcCfg
102 cfg.merge(DigitizationMessageSvcCfg(flags))
103
104
105 specialConfigPostInclude(flags, cfg)
106
107
108 processPostInclude(runArgs, flags, cfg)
109
110
111 processPostExec(runArgs, flags, cfg)
112
113 from AthenaConfiguration.Utils import setupLoggingLevels
114 setupLoggingLevels(flags, cfg)
115
116
117 from PyUtils.AMITagHelperConfig import AMITagCfg
118 cfg.merge(AMITagCfg(flags, runArgs))
119
120
121 sc = cfg.run()
122 sys.exit(not sc.isSuccess())