6from AthenaConfiguration.ComponentFactory
import CompFactory
7from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
9from ZdcNtuple.ZdcNtupleConfig
import ZdcNtupleCfg
10from ZdcRecConfig
import ZdcGenericFlagSetting, ZdcStreamDependentFlagSetting
14 """additional flag settings in possible scenarios we may need FCal info"""
18 IsPhysicsStream =
"physics_" in flags.Input.TriggerStream
or flags.Input.TriggerStream ==
"express_express"
20 if flags.Input.TriggerStream ==
"calibration_ZDCCalib" or IsPhysicsStream:
21 flags.Trigger.L1.doCTP =
True
24 flags.Trigger.L1.doCaloInputs =
True
26 flags.Detector.EnableCalo = IsPhysicsStream
29 """Calorimeter and HIGlobal reconstruction config for ZDC-FCal correlations"""
31 acc = ComponentAccumulator()
33 from CaloRec.CaloRecoConfig
import CaloRecoCfg
34 acc.merge(CaloRecoCfg(flags))
35 from HIGlobal.HIGlobalConfig
import HIGlobalRecCfg
36 acc.merge(HIGlobalRecCfg(flags))
42 """ZDC Ntuple configuration for run3 data potential with Calorimeter-info retrieving & writing
43 Depends on the flag Detector.EnableCalo to be correctly set
44 Retrieves and writes calorimeter info in ZdcNTuple if and only if Detector.EnableCalo is true"""
46 acc = ComponentAccumulator()
47 ZdcNtupleAcc = ZdcNtupleCfg(flags,
49 zdcOnly =
not flags.Detector.EnableCalo,
53 isMC = flags.Input.isMC,
54 enableTrigger =
not flags.Input.isMC,
55 enableOutputSamples =
True,
56 enableOutputTree =
True,
57 writeOnlyTriggers =
False,
58 enableRPD = flags.Detector.EnableZDC_RPD,
59 enableRPDAmp = flags.Detector.EnableZDC_RPD,
60 enableCentroid = flags.Detector.EnableZDC_RPD,
61 enableCalo = flags.Detector.EnableCalo,
64 ZdcNtupleAcc.getEventAlgo(
'ZdcNtuple').OutputLevel = outputlevel
65 acc.merge(ZdcNtupleAcc)
67 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
71if __name__ ==
'__main__':
74 start_time = time.time()
76 """ This is selftest & ZDC calibration transform at the same time"""
77 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
78 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
80 flags = initConfigFlags()
82 ZdcGenericFlagSetting(flags)
86 flags.Output.AODFileName=
"AOD.pool.root"
87 flags.Output.HISTFileName=
"HIST.root"
88 flags.Output.doWriteAOD=
True
90 isLED, isInj, isCalib, pn = ZdcStreamDependentFlagSetting(flags)
92 from ZdcRecConfig
import SetConfigTag
93 config = SetConfigTag(flags)
96 flags.Trigger.decodeHLT = (
'pO' in config
or 'OO' in config)
and flags.DQ.useTrigger
and flags.Input.TriggerStream ==
'physics_MinBias'
99 flags.dump(evaluate=
True)
101 acc=MainServicesCfg(flags)
103 from AtlasGeoModel.ForDetGeoModelConfig
import ForDetGeometryCfg
104 acc.merge(ForDetGeometryCfg(flags))
106 if not flags.Input.isMC
and pn !=
'data_test':
107 from TriggerJobOpts.TriggerRecoConfig
import TriggerRecoCfgData
108 acc.merge(TriggerRecoCfgData(flags))
111 from ZdcRecConfig
import ZdcLEDRecCfg
112 acc.merge(ZdcLEDRecCfg(flags))
114 from ZdcRecConfig
import ZdcRecCfg
115 acc.merge(ZdcRecCfg(flags))
117 from ZdcRecConfig
import ZdcRecCfg
118 acc.merge(ZdcRecCfg(flags))
120 if (
"physics_" in flags.Input.TriggerStream
or flags.Input.TriggerStream ==
"express_express"):
123 if not flags.Input.isMC:
125 from ZdcMonitoring.ZdcLEDMonitorAlgorithm
import ZdcLEDMonitoringConfig
126 acc.merge(ZdcLEDMonitoringConfig(flags,
'ppPbPb2023'))
127 from ZdcRecConfig
import ZdcLEDNtupleCfg
128 acc.merge(ZdcLEDNtupleCfg(flags))
131 from ZdcMonitoring.ZdcMonitorAlgorithm
import ZdcMonitoringConfig
132 zdcMonitorAcc = ZdcMonitoringConfig(flags)
133 acc.merge(zdcMonitorAcc)
137 from ZdcMonitoring.ZdcMonitorAlgorithm
import ZdcMonitoringConfig
138 zdcMonitorAcc = ZdcMonitoringConfig(flags)
139 acc.merge(zdcMonitorAcc)
140 from ZdcRecConfig
import ZdcInjNtupleCfg
141 acc.merge(ZdcInjNtupleCfg(flags))
143 from ZdcRecConfig
import ZdcRecCfg, ZdcNtupleLocalCfg
144 acc.merge(ZdcRecCfg(flags))
145 acc.merge(ZdcNtupleLocalCfg(flags))
147 acc.printConfig(withDetails=
True)
150 with open(
"config.pkl",
"wb")
as f:
153 if status.isFailure():
157 end_time = time.time()
161 n_events = int(flags.Exec.MaxEvents)
if 'flags' in locals()
and flags.hasFlag(
"Exec.MaxEvents")
else -1
163 print(f
"Total time: {end_time - start_time:.2f} seconds")
165 print(f
"Average time per event: {(end_time - start_time)/n_events:.4f} seconds/event")
167 print(
"Number of events unknown, cannot compute per-event timing.")
void print(char *figname, TCanvas *c1)
ZdcNtupleWithCaloRun3Cfg(flags, outputlevel=3, **kwargs)
PhysStreamAdditionalFlagSetting(flags)