6from AthenaConfiguration.ComponentFactory
import CompFactory
7from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
8from AthenaConfiguration.Enums
import Format
9from AthenaConfiguration.Enums
import LHCPeriod
11from OutputStreamAthenaPool.OutputStreamConfig
import addToAOD
12from OutputStreamAthenaPool.OutputStreamConfig
import addToESD
14from TriggerJobOpts.TriggerByteStreamConfig
import ByteStreamReadCfg
16from ZdcNtuple.ZdcNtupleConfig
import ZdcNtupleCfg
19from TrigConfigSvc.TriggerConfigAccess
import getL1MenuAccess
21from TrigDecisionTool.TrigDecisionToolConfig
import TrigDecisionToolCfg, getRun3NavigationContainerFromInput
22from AthenaConfiguration.TestDefaults
import defaultGeometryTags, defaultConditionsTags
24from AthenaCommon.Logging
import logging
25log = logging.getLogger(
"ZdcRecConfig")
27from CoolConvUtilities.ParticleTypeUtil
import getTypeForRun
32 projName = flags.Input.ProjectName
35 return defaultGeometryTags.RUN2_ZDC
37 return defaultGeometryTags.RUN2_ZDC
38 case
"data16_hip5TeV":
39 return defaultGeometryTags.RUN2_ZDC
40 case
"data16_hip8TeV":
41 return defaultGeometryTags.RUN2_ZDC
43 return defaultGeometryTags.RUN3_ZDC23
45 return defaultGeometryTags.RUN3_ZDC24
47 return defaultGeometryTags.RUN3_ZDC24
49 return defaultGeometryTags.RUN3_ZDC24
51 return defaultGeometryTags.RUN3_ZDC24
52 case
"data25_hipcomm":
53 return defaultGeometryTags.RUN3_ZDC24
55 return defaultGeometryTags.RUN3_ZDC24
57 return defaultGeometryTags.RUN3_ZDC24
59 return defaultGeometryTags.RUN3_ZDC24
61 run = flags.GeoModel.Run
62 if run == LHCPeriod.Run2:
63 return defaultGeometryTags.RUN2_ZDC
64 if run == LHCPeriod.Run3:
65 return defaultGeometryTags.RUN3_ZDC24
70 zdcConfigMap[
'data15_hi'] = {}
71 zdcConfigMap[
'data16_hip5TeV'] = {}
72 zdcConfigMap[
'data16_hip8TeV'] = {}
73 zdcConfigMap[
'data17_13TeV'] = {}
74 zdcConfigMap[
'data18_hi'] = {}
75 zdcConfigMap[
'data22_13p6TeV'] = {}
76 zdcConfigMap[
'data23_5p36TeV'] = {}
77 zdcConfigMap[
'data23_13p6TeV'] = {}
78 zdcConfigMap[
'data23_hi'] = {}
79 zdcConfigMap[
'data23_comm'] = {}
80 zdcConfigMap[
'data23_5p36TeV'] = {}
81 zdcConfigMap[
'data24_900GeV'] = {}
83 zdcConfigMap[
'data24_13p6TeV'] = {}
84 zdcConfigMap[
'data24_13p6TeV'][
'default'] =
'pp2024'
86 zdcConfigMap[
'data24_refcomm'] = {}
87 zdcConfigMap[
'data24_refcomm'][
'default'] =
'pp2024'
88 zdcConfigMap[
'data24_refcomm'][
'calibration_ZdcInjCalib'] =
'Injectorpp2024'
90 zdcConfigMap[
'data24_hicomm'] = {}
91 zdcConfigMap[
'data24_hicomm'][
'default'] =
'PbPb2024'
92 zdcConfigMap[
'data24_hicomm'][
'calibration_ZdcInjCalib'] =
'InjectorPbPb2024'
94 zdcConfigMap[
'data24_hi'] = {}
95 zdcConfigMap[
'data24_hi'][
'default']=
"PbPb2024"
96 zdcConfigMap[
'data24_hi'][
'calibration_ZdcInjCalib']=
"InjectorPbPb2024"
101 if flags.Input.RunNumbers:
102 run_num = flags.Input.RunNumbers[0]
103 aa = getTypeForRun(run_num)
105 aa_type = aa.getBeam1Type()
106 print(
'ZdcRecConfig::SetConfigTag(): Getting config for type %d' % (aa_type))
108 if flags.Input.ProjectName ==
"data25_comm" and flags.Input.TriggerStream ==
"calibration_ZDCCalib":
109 config =
"InjectorPbPb2024"
111 elif flags.Input.TriggerStream ==
"calibration_ZDCInjCalib" or flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor":
112 config =
"InjectorpOOONeNe2025"
113 if flags.Input.ProjectName ==
"data24_5p36TeV" or flags.Input.ProjectName ==
"data24_900GeV" or flags.Input.ProjectName ==
"data24_13p6TeV" or flags.Input.ProjectName ==
"data24_refcomm":
114 config =
"Injectorpp2024"
115 if flags.Input.ProjectName
in [
"data24_hi",
"data24_hicomm"]:
116 config =
"InjectorPbPb2024"
117 if flags.Input.ProjectName
in [
"data25_hi",
"data25_hicomm",
"data25_hip",
"data26_hicomm",
"data26_hi"] :
118 if (aa_type == 8
or aa_type == 10):
119 config =
"InjectorpOOONeNe2025"
121 config =
"configZDC_PbPb2025.inj.v1.json"
126 run = flags.GeoModel.Run
127 if run == LHCPeriod.Run3:
129 config =
"MonteCarloPbPb2023"
130 elif flags.Input.ProjectName ==
"data22_13p6TeV":
132 elif flags.Input.ProjectName
in [
"data23_5p36TeV",
"data23_900GeV",
"data23_13p6TeV"]:
134 elif flags.Input.ProjectName
in [
"data23_hi",
"data23_comm"]:
136 elif flags.Input.ProjectName
in [
"data24_5p36TeV",
"data24_900GeV",
"data24_13p6TeV",
"data24_refcomm"]:
138 elif flags.Input.ProjectName
in [
"data24_hi",
"data24_hicomm"]:
139 config =
"configZDC_PbPb2024.v5.json"
140 elif flags.Input.ProjectName
in [
"data25_hipcomm"]:
142 elif flags.Input.ProjectName
in [
"data25_hip"]:
144 elif flags.Input.ProjectName
in [
"data25_hi",
"data25_hicomm"]:
145 if (aa_type == 8
or aa_type == 10):
146 config =
"OONeNe2025"
148 config =
"configZDC_PbPb2025.v1.json"
149 elif flags.Input.ProjectName
in [
"data26_comm",
"data26_cos",
"data26_900GeV",
"data26_13p6TeV"]:
150 config =
"configZDC_PbPb2025.v2.1.json"
151 elif flags.Input.ProjectName
in [
"data26_hi",
"data26_hicomm"]:
152 config =
"configZDC_PbPb2026.v2.json"
154 elif run == LHCPeriod.Run2:
155 if flags.Input.ProjectName ==
"data15_hi":
157 elif flags.Input.ProjectName ==
"data17_13TeV":
159 elif flags.Input.ProjectName ==
"data16_hip5TeV":
161 elif flags.Input.ProjectName ==
"data16_hip8TeV":
163 config =
"configZDC_pPb2016.v1.json"
165 config =
"configZDC_Pbp2016.v1.json"
166 elif flags.Input.ProjectName ==
"data18_hi":
173 '''set generic flags needed for ZDC reconstruction that are independent of stream type
174 Also fills flags from input arguments'''
176 flags.Scheduler.CheckDependencies =
True
177 flags.Scheduler.ShowDataDeps =
True
178 flags.Scheduler.ShowDataFlow =
True
179 flags.Scheduler.ShowControlFlow =
True
180 flags.Scheduler.EnableVerboseViews =
True
182 flags.Detector.GeometryZDC=
True
183 flags.Detector.GeometryAFP=
False
184 flags.Detector.GeometryALFA=
False
185 flags.Detector.GeometryLucid=
False
186 flags.Detector.GeometryMDT=
False
187 flags.Detector.GeometryMM=
False
188 flags.Detector.GeometryMuon=
False
190 flags.Trigger.decodeHLT=
False
191 flags.Trigger.enableL1MuonPhase1=
False
192 flags.Trigger.L1.doMuon=
False
193 flags.Trigger.L1.doCalo=
False
194 flags.Trigger.L1.doTopo=
False
200 parser = flags.getArgumentParser()
201 parser.add_argument(
'--runInjForStandaloneData',default=
"Inj",help=
"indicate if we run inj/LED reconstruction for standalone data: inj (default) --> run injected-pulse reconstruction for injector-pulse events; LED --> run LED reconstruction for LED events")
202 flags.fillFromArgs(parser=parser)
206 '''Function that checks on data type from triggerstream tag
207 and sets run-type-and-year-dependent settings
208 Returns: a tuple of the following four values
209 isLED - bool, true if running on LED data
210 isInj - bool, true if running on Inj data
211 isCalib - bool, true if running on Calib data
212 pn - string, project name such as data24_hi
215 isComm = (flags.Input.ProjectName ==
"data25_comm" and flags.Input.TriggerStream ==
"calibration_ZDCCalib")
216 isLED = (flags.Input.TriggerStream ==
"calibration_ZDCLEDCalib")
217 isInj = (flags.Input.TriggerStream ==
"calibration_ZDCInjCalib" or isComm)
218 isCalib = (flags.Input.TriggerStream
in [
"calibration_ZDCCalib",
"calibration_zdcCalib"]
or "physics_" in flags.Input.TriggerStream
or flags.Input.TriggerStream ==
"express_express" and not isComm)
220 if flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor":
221 runInjForStandaloneDataArgValid =
False
223 if flags.hasFlag(
"runInjForStandaloneData"):
224 if flags.runInjForStandaloneData.lower() ==
"inj":
226 runInjForStandaloneDataArgValid =
True
227 elif flags.runInjForStandaloneData.lower() ==
"led":
229 runInjForStandaloneDataArgValid =
True
231 if not runInjForStandaloneDataArgValid:
232 log.warning(
"runInjForStandaloneData is either not a defined flag or has invalid value (value must be Inj / LED, case insensitive).")
233 log.warning(
"Running nominal reconstruction (injector-pulse) by default for standalone data")
234 log.warning(
"Could lead to undesired behavior if pulsing LED in standalone mode")
238 log.info(
'ZdcRecConfig: Running LED data!')
240 log.info(
'ZdcRecConfig: Running Injected pulse data!')
242 log.info(
'ZdcRecConfig: Running ZDC calibration data!')
244 log.info(
'ZdcRecConfig: Running over MC Samples')
245 flags.Input.ProjectName =
"data23_hi"
246 flags.Reco.EnableTrigger =
False
249 pn = flags.Input.ProjectName
251 raise ValueError(
'Unknown project name')
253 if isLED
or isInj
or pn ==
'data_test':
254 flags.Trigger.EDMVersion=3
255 flags.GeoModel.Run = LHCPeriod.Run3
256 flags.IOVDb.GlobalTag=defaultConditionsTags.RUN3_DATA
258 year = int(pn.split(
'_')[0].
split(
'data')[1])
260 flags.Trigger.EDMVersion=2
261 flags.GeoModel.Run = LHCPeriod.Run2
262 flags.IOVDb.GlobalTag=defaultConditionsTags.RUN2_DATA
264 flags.Trigger.EDMVersion=3
265 flags.GeoModel.Run = LHCPeriod.Run3
266 flags.IOVDb.GlobalTag=defaultConditionsTags.RUN3_DATA
269 log.info(
'ZdcRecConfig: Overriding MC run to be Run 3!')
270 flags.GeoModel.Run = LHCPeriod.Run3
273 or flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor"
274 or pn ==
"data22_13p6TeV"):
275 flags.Detector.EnableZDC_RPD =
False
277 if flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor":
278 flags.DQ.useTrigger =
False
279 flags.DQ.triggerDataAvailable =
False
283 return isLED, isInj, isCalib, pn
288 acc = ComponentAccumulator()
291 if flags.Input.Format
is Format.BS:
292 ZDC_ItemList.append(
"xAOD::ZdcModuleContainer#ZdcModules")
293 ZDC_ItemList.append(
"xAOD::ZdcModuleAuxContainer#ZdcModulesAux.")
294 ZDC_ItemList.append(
"xAOD::ZdcModuleContainer#ZdcSums")
295 ZDC_ItemList.append(
"xAOD::ZdcModuleAuxContainer#ZdcSumsAux.")
297 acc.merge(addToESD(flags,ZDC_ItemList))
298 acc.merge(addToAOD(flags,ZDC_ItemList))
300 if flags.Output.doWriteAOD:
301 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
302 acc.merge(SetupMetaDataForStreamCfg(flags,streamName=
"AOD"))
307def ZdcAnalysisToolCfg(flags, run, config="PbPb2023", DoCalib=False, DoFADCCorr=False, DoNonLinCorr=False, DoTimeCalib=False, DoTrigEff=False, ForceCalibRun=-1, ForceCalibLB=814, AuxSuffix=""):
308 acc = ComponentAccumulator()
310 log.info(
'ZdcAnalysisToolCfg: setting up ZdcAnalysisTool with config='+config)
314 if (config[-5:]==
'.json'):
317 log.info(
'ZdcAnalysisToolCfg: setting up with JSON file '+jsonFile)
319 acc.setPrivateTools(CompFactory.ZDC.ZdcAnalysisTool(
320 name =
'ZdcAnalysisTool'+config,
321 Configuration = config,
323 DoFADCCorr = DoFADCCorr,
324 DoFADCCorrPerSample =
True,
325 DoNonLinCorr = DoNonLinCorr,
326 DoTimeCalib = DoTimeCalib,
327 DoTrigEff = DoTrigEff,
328 ForceCalibRun = ForceCalibRun,
329 ForceCalibLB = ForceCalibLB,
330 AuxSuffix = AuxSuffix,
331 JSONConfigurationFile=jsonFile,
333 CombineDelay =
True if flags.Input.ProjectName ==
"data16_hip8TeV" else False))
337 acc = ComponentAccumulator()
339 log.info(
'ZdcAnalysisToolCfg: setting up ZdcAnalysisTool with config='+config)
340 acc.setPrivateTools(CompFactory.ZDC.ZdcLEDAnalysisTool(name =
'ZdcLEDAnalysisTool'+config,
341 Configuration = config,
342 DoFADCCorr = DoFADCCorr))
347 acc = ComponentAccumulator()
349 acc.merge(TrigDecisionToolCfg(flags))
351 trigValTool = CompFactory.ZDC.ZdcTrigValidTool(
352 name =
'ZdcTrigValTool',
355 filepath_LUT =
'TrigT1ZDC/zdc_json_PbPb5.36TeV_2023.json')
357 trigValTool.TrigDecisionTool = acc.getPublicTool(
'TrigDecisionTool')
359 trigValTool.triggerList = [c
for c
in getL1MenuAccess(flags)
if 'L1_ZDC_BIT' in c]
361 acc.setPrivateTools(trigValTool)
366 acc = ComponentAccumulator()
368 CompFactory.ZDC.RPDAnalysisTool(
369 name=
"RPDAnalysisTool",
370 Configuration=config,
371 AuxSuffix = AuxSuffix
377 acc = ComponentAccumulator()
379 CompFactory.ZDC.RpdSubtractCentroidTool(
380 name=
"RpdSubtractCentroidTool",
381 Configuration=config,
382 AuxSuffix = AuxSuffix
388 acc = ComponentAccumulator()
390 CompFactory.ZDC.LISAnalysisTool(
391 name=
"LISAnalysisTool",
392 Configuration=config,
397 ChannelPedestals=[100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]
403 acc = ComponentAccumulator()
404 LisNtuple = CompFactory.LisNtuple(
"LisNtuple")
405 LisNtuple.enableOutputTree =
True
406 LisNtuple.lisInj = lisInj
407 LisNtuple.lisLED = lisLED
408 LisNtuple.enableTrigger = enableTrigger
409 acc.addEventAlgo(LisNtuple)
410 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
414 acc = ComponentAccumulator()
416 log.info (
'ZdcRecConfig.py: Running with config tag%s', config)
424 if flags.Input.ProjectName ==
"data15_hi":
428 elif flags.Input.ProjectName ==
"data17_13TeV":
432 elif flags.Input.ProjectName ==
"data16_hip5TeV":
436 elif flags.Input.ProjectName ==
"data16_hip8TeV":
440 elif flags.Input.ProjectName ==
"data18_hi":
445 acc.merge(ByteStreamReadCfg(flags, type_names=[
'xAOD::TriggerTowerContainer/ZdcTriggerTowers',
446 'xAOD::TriggerTowerAuxContainer/ZdcTriggerTowersAux.']))
448 acc.addEventAlgo(CompFactory.ZdcByteStreamRawDataV2())
449 acc.addEventAlgo(CompFactory.ZdcRecV3Decode())
451 anaTool = acc.popToolsAndMerge(
ZdcAnalysisToolCfg(flags,2,config,doCalib,doFADCCorr,doNonLinCorr,doTimeCalib,doTrigEff))
453 acc.addEventAlgo(CompFactory.ZdcRecV3(
"ZdcRecV3",ZdcAnalysisTool=anaTool))
459 acc = ComponentAccumulator()
461 log.info (
'ZdcRecConfig.py: Running with config tag %s', config)
472 if flags.Input.TriggerStream !=
"calibration_ZDCInjCalib" and flags.Input.TriggerStream !=
"calibration_DcmDummyProcessor":
473 if flags.Common.isOnline:
476 if flags.Input.ProjectName ==
"data24_5p36TeV" or flags.Input.ProjectName ==
"data24_refcomm":
477 ForceCalibRun = 488239
479 elif flags.Input.ProjectName ==
"data24_hi" or flags.Input.ProjectName ==
"data24_hicomm":
480 ForceCalibRun = 488980
485 elif flags.Input.ProjectName ==
"data23_comm":
487 elif flags.Input.ProjectName ==
"data23_hi":
490 elif flags.Input.ProjectName ==
"data24_hi":
495 elif flags.Input.ProjectName
in [
"data25_hip",
"data25_hipcomm"]:
500 elif flags.Input.ProjectName
in [
"data25_hicomm"]:
505 elif flags.Input.ProjectName
in [
"data25_hi"]:
510 elif flags.Input.ProjectName
in [
"data26_hicomm"]:
515 elif flags.Input.ProjectName
in [
"data26_hi"]:
525 doRPD = flags.Detector.EnableZDC_RPD
527 log.info(
'ZdcRecRun3Cfg: doCalib = '+
str(doCalib)+
' for project '+flags.Input.ProjectName)
528 log.info(
'RPD enable flag is '+
str(doRPD))
531 if "ZdcModules" in flags.Input.Collections:
532 log.info(
'ZdcRecConfig.py: found ZdcModules in input, reprocessing mode set')
536 anaTool = acc.popToolsAndMerge(
ZdcAnalysisToolCfg(flags,3,config,doCalib,doFADCCorr,doNonLinCorr,doTimeCalib,doTrigEff,ForceCalibRun,ForceCalibLB, AuxSuffix))
543 if flags.Input.isMC :
546 zdcTools += [rpdAnaTool,centroidTool]
547 elif flags.Trigger.doZDC :
549 elif flags.Input.TriggerStream ==
"calibration_ZDCInjCalib" or flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor":
551 elif flags.Common.isOnline:
554 zdcTools += [rpdAnaTool,centroidTool]
558 zdcTools += [rpdAnaTool,centroidTool]
561 zdcTools = [anaTool,trigTool]
563 zdcTools += [rpdAnaTool,centroidTool]
565 if flags.Input.Format
is Format.BS:
566 acc.addEventAlgo(CompFactory.ZdcByteStreamLucrodData())
567 acc.addEventAlgo(CompFactory.ZdcRecRun3Decode())
570 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
571 acc.merge(PoolReadCfg(flags))
572 acc.addEventAlgo(CompFactory.ZdcMCTruthAlg())
574 zdcAlg = CompFactory.ZdcRecRun3(
"ZdcRecRun3",ZdcAnalysisTools=zdcTools)
575 acc.addEventAlgo(zdcAlg, primary=
True)
581 acc = ComponentAccumulator()
582 run = flags.GeoModel.Run
584 if run == LHCPeriod.Run2:
585 log.info (
'ZdcRecConfig.py: setting up Run 2 ntuple!')
587 elif run == LHCPeriod.Run3:
588 log.info (
'ZdcRecConfig.py: setting up Run 3 ntuples!')
591 log.info (
'ZdcRecConfig.py: setting up no ntuple!')
597 acc = ComponentAccumulator()
598 acc.merge(ZdcNtupleCfg(flags,
601 enableTrigger =
False,
602 enableOutputSamples =
True,
603 enableOutputTree =
True,
604 writeOnlyTriggers =
False,
608 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
613 acc = ComponentAccumulator()
614 acc.merge(ZdcNtupleCfg(flags,
622 isMC = flags.Input.isMC,
623 enableTrigger =
not flags.Input.isMC,
624 enableOutputSamples =
True,
625 enableOutputTree =
True,
626 writeOnlyTriggers =
False,
627 enableRPD = flags.Detector.EnableZDC_RPD,
628 enableCentroid = flags.Detector.EnableZDC_RPD,
632 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
638 acc = ComponentAccumulator()
639 acc.merge(ZdcNtupleCfg(flags,
647 enableTrigger =
False,
648 enableOutputSamples =
True,
649 enableOutputTree =
True,
650 writeOnlyTriggers =
False,
652 enableCentroid =
False,
656 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
661 acc = ComponentAccumulator()
662 zdcLEDNtuple = CompFactory.ZdcLEDNtuple(
"ZdcLEDNtuple")
663 zdcLEDNtuple.enableOutputTree =
True
664 acc.addEventAlgo(zdcLEDNtuple)
665 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
670 acc = ComponentAccumulator()
672 if flags.Input.Format
is Format.BS:
673 run = flags.GeoModel.Run
676 log.info (
"ZdcRecConfig.py: run = "+run.name)
678 config =
'ppPbPb2023'
682 if flags.Input.ProjectName
in [
"data24_hi",
"data25_hip",
"data25_hi",
"data26_hicomm",
"data26_hi"]:
685 acc.addEventAlgo(CompFactory.ZdcByteStreamLucrodData())
686 acc.addEventAlgo(CompFactory.ZdcRecRun3Decode())
691 zdcTools += [anaTool]
694 zdcAlg = CompFactory.ZdcRecRun3(
"ZdcRecRun3",DAQMode=2, ForcedEventType=2, ZdcAnalysisTools=zdcTools)
695 acc.addEventAlgo(zdcAlg, primary=
True)
697 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
704 acc = ComponentAccumulator()
707 tdmv = CompFactory.TrigDec.TrigDecisionMakerValidator()
708 tdmv.errorOnFailure =
True
709 tdmv.TrigDecisionTool = acc.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
710 tdmv.NavigationKey = getRun3NavigationContainerFromInput(flags)
711 acc.addEventAlgo( tdmv )
717 acc = ComponentAccumulator()
719 run = flags.GeoModel.Run
722 log.info (
"LisRecConfig.py: run = "+run.name)
727 if flags.Input.ProjectName
in [
"data26_comm",
"data26_900GeV",
"data26_13p6TeV",
"data26_cos"]:
729 elif flags.Input.ProjectName
in []:
734 isLED = (flags.Input.TriggerStream ==
"calibration_ZDCLEDCalib")
739 if flags.Input.Format
is Format.BS:
740 acc.merge(ByteStreamReadCfg(flags))
741 acc.addEventAlgo(CompFactory.ZdcByteStreamLucrodData())
742 acc.addEventAlgo(CompFactory.ZdcRecRun3Decode( DecodeRunMode = DecodeRunMode ))
744 evtType = 2
if isLED
else 1
745 DAQMode = 2
if isLED
else 3
747 zdcAlg = CompFactory.ZdcRecRun3(
"ZdcRecRun3",DAQMode=DAQMode, ForcedEventType=evtType, ZdcAnalysisTools=zdcTools)
748 acc.addEventAlgo(zdcAlg, primary=
True)
750 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
756 """Configure Zdc analysis alg
757 Additional arguments are useful in calibration runs
760 acc = ComponentAccumulator()
762 run = flags.GeoModel.Run
765 log.info (
"ZdcRecConfig.py: run = "+run.name)
767 if run == LHCPeriod.Run2:
768 log.info (
'ZdcRecConfig.py: setting up Run 2!')
770 elif run == LHCPeriod.Run3:
771 log.info (
'ZdcRecConfig.py: setting up Run 3!')
774 log.warning (
'ZdcRecConfig.py: setting up nothing (problem)!')
776 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
782if __name__ ==
'__main__':
784 """ This is selftest & ZDC calibration transform at the same time"""
790 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
791 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
793 flags = initConfigFlags()
797 ProjectNamesLIS = [
"data26_cos",
"data26_900GeV",
"data26_13p6TeV",
"data26_comm",
"data_test"]
801 flags.Output.AODFileName=
"AOD.pool.root"
802 flags.Output.HISTFileName=
"HIST.root"
803 flags.Output.doWriteAOD=
True
807 log.debug(
'ZdcRecConfig: Running on project name '+pn +
' with trigger stream '+flags.Input.TriggerStream +
' isLED: ' +
str(isLED) +
' isInj: ' +
str(isInj) +
' isCalib: ' +
str(isCalib))
811 acc=MainServicesCfg(flags)
813 from AtlasGeoModel.ForDetGeoModelConfig
import ForDetGeometryCfg
814 acc.merge(ForDetGeometryCfg(flags))
816 if not flags.Input.isMC
and pn !=
'data_test':
817 from TriggerJobOpts.TriggerRecoConfig
import TriggerRecoCfgData
818 acc.merge(TriggerRecoCfgData(flags))
820 if pn
not in ProjectNamesLIS:
828 if not flags.Input.isMC:
830 from ZdcMonitoring.ZdcLEDMonitorAlgorithm
import ZdcLEDMonitoringConfig
831 acc.merge(ZdcLEDMonitoringConfig(flags,
'ppPbPb2023'))
835 if (flags.GeoModel.Run==LHCPeriod.Run3):
836 from ZdcMonitoring.ZdcMonitorAlgorithm
import ZdcMonitoringConfig
837 acc.merge(ZdcMonitoringConfig(flags))
839 if flags.Input.TriggerStream !=
"calibration_DcmDummyProcessor":
843 from ZdcMonitoring.ZdcMonitorAlgorithm
import ZdcMonitoringConfig
844 zdcMonitorAcc = ZdcMonitoringConfig(flags)
845 acc.merge(zdcMonitorAcc)
855 acc.printConfig(withDetails=
True)
858 with open(
"config.pkl",
"wb")
as f:
862 sys.exit(status.isFailure())
void print(char *figname, TCanvas *c1)
std::vector< std::string > split(const std::string &s, const std::string &t=":")
ZdcNtupleRun3Cfg(flags, **kwargs)
ZdcTrigValToolCfg(flags, config='PbPb2023')
ZdcNtupleRun2Cfg(flags, **kwargs)
ZdcInjNtupleCfg(flags, **kwargs)
ZdcAnalysisToolCfg(flags, run, config="PbPb2023", DoCalib=False, DoFADCCorr=False, DoNonLinCorr=False, DoTimeCalib=False, DoTrigEff=False, ForceCalibRun=-1, ForceCalibLB=814, AuxSuffix="")
ZdcLEDAnalysisToolCfg(flags, config='ppPbPb2023', DoFADCCorr=True)
RPDAnalysisToolCfg(flags, str config, AuxSuffix="")
RpdSubtractCentroidToolCfg(flags, str config, AuxSuffix="")
ZdcGenericFlagSetting(flags)
ZdcStreamDependentFlagSetting(flags)
LISAnalysisToolCfg(flags, str config)
ZdcLisNtupleCfg(flags, lisInj=False, lisLED=False, enableTrigger=True)