6 from AthenaConfiguration.ComponentFactory 
import CompFactory
 
    7 from AthenaConfiguration.ComponentAccumulator 
import ComponentAccumulator
 
    9 from ZdcNtuple.ZdcNtupleConfig 
import ZdcNtupleCfg
 
   10 from 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""" 
   33     from CaloRec.CaloRecoConfig 
import CaloRecoCfg
 
   35     from HIGlobal.HIGlobalConfig 
import HIGlobalRecCfg
 
   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""" 
   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'"]))
 
   71 if __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
 
   86     flags.Output.AODFileName=
"AOD.pool.root" 
   87     flags.Output.HISTFileName=
"HIST.root" 
   88     flags.Output.doWriteAOD=
True 
   92     from ZdcRecConfig 
import SetConfigTag
 
   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) 
 
  103     from AtlasGeoModel.ForDetGeoModelConfig 
import ForDetGeometryCfg
 
  106     if not flags.Input.isMC 
and pn != 
'data_test': 
 
  107         from TriggerJobOpts.TriggerRecoConfig 
import TriggerRecoCfgData
 
  111         from ZdcRecConfig 
import ZdcLEDRecCfg
 
  114         from ZdcRecConfig 
import ZdcRecCfg
 
  117         from ZdcRecConfig 
import ZdcRecCfg
 
  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
 
  127             from ZdcRecConfig 
import ZdcLEDNtupleCfg
 
  131             from ZdcMonitoring.ZdcMonitorAlgorithm 
import ZdcMonitoringConfig
 
  133             acc.merge(zdcMonitorAcc)
 
  137             from ZdcMonitoring.ZdcMonitorAlgorithm 
import ZdcMonitoringConfig            
 
  139             acc.merge(zdcMonitorAcc)
 
  140             from ZdcRecConfig 
import ZdcInjNtupleCfg
 
  143         from ZdcRecConfig 
import ZdcRecCfg, ZdcNtupleLocalCfg
 
  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 hasattr(flags.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.")