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 run = flags.GeoModel.Run
58 if run == LHCPeriod.Run2:
59 return defaultGeometryTags.RUN2_ZDC
60 if run == LHCPeriod.Run3:
61 return defaultGeometryTags.RUN3_ZDC24
66 zdcConfigMap[
'data15_hi'] = {}
67 zdcConfigMap[
'data16_hip5TeV'] = {}
68 zdcConfigMap[
'data16_hip8TeV'] = {}
69 zdcConfigMap[
'data17_13TeV'] = {}
70 zdcConfigMap[
'data18_hi'] = {}
71 zdcConfigMap[
'data22_13p6TeV'] = {}
72 zdcConfigMap[
'data23_5p36TeV'] = {}
73 zdcConfigMap[
'data23_13p6TeV'] = {}
74 zdcConfigMap[
'data23_hi'] = {}
75 zdcConfigMap[
'data23_comm'] = {}
76 zdcConfigMap[
'data23_5p36TeV'] = {}
77 zdcConfigMap[
'data24_900GeV'] = {}
79 zdcConfigMap[
'data24_13p6TeV'] = {}
80 zdcConfigMap[
'data24_13p6TeV'][
'default'] =
'pp2024'
82 zdcConfigMap[
'data24_refcomm'] = {}
83 zdcConfigMap[
'data24_refcomm'][
'default'] =
'pp2024'
84 zdcConfigMap[
'data24_refcomm'][
'calibration_ZdcInjCalib'] =
'Injectorpp2024'
86 zdcConfigMap[
'data24_hicomm'] = {}
87 zdcConfigMap[
'data24_hicomm'][
'default'] =
'PbPb2024'
88 zdcConfigMap[
'data24_hicomm'][
'calibration_ZdcInjCalib'] =
'InjectorPbPb2024'
90 zdcConfigMap[
'data24_hi'] = {}
91 zdcConfigMap[
'data24_hi'][
'default']=
"PbPb2024"
92 zdcConfigMap[
'data24_hi'][
'calibration_ZdcInjCalib']=
"InjectorPbPb2024"
97 if flags.Input.RunNumbers:
98 run_num = flags.Input.RunNumbers[0]
99 aa = getTypeForRun(run_num)
101 aa_type = aa.getBeam1Type()
102 print(
'ZdcRecConfig::SetConfigTag(): Getting config for type %d' % (aa_type))
104 if flags.Input.ProjectName ==
"data25_comm" and flags.Input.TriggerStream ==
"calibration_ZDCCalib":
105 config =
"InjectorPbPb2024"
107 elif flags.Input.TriggerStream ==
"calibration_ZDCInjCalib" or flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor":
108 config =
"InjectorpOOONeNe2025"
109 if flags.Input.ProjectName ==
"data24_5p36TeV" or flags.Input.ProjectName ==
"data24_900GeV" or flags.Input.ProjectName ==
"data24_13p6TeV" or flags.Input.ProjectName ==
"data24_refcomm":
110 config =
"Injectorpp2024"
111 if flags.Input.ProjectName
in [
"data24_hi",
"data24_hicomm"]:
112 config =
"InjectorPbPb2024"
113 if flags.Input.ProjectName
in [
"data25_hi",
"data25_hicomm",
"data25_hip"] :
114 if (aa_type == 8
or aa_type == 10):
115 config =
"InjectorpOOONeNe2025"
117 config =
"configZDC_PbPb2025.inj.v1.json"
122 run = flags.GeoModel.Run
123 if run == LHCPeriod.Run3:
125 config =
"MonteCarloPbPb2023"
126 elif flags.Input.ProjectName ==
"data22_13p6TeV":
128 elif flags.Input.ProjectName
in [
"data23_5p36TeV",
"data23_900GeV",
"data23_13p6TeV"]:
130 elif flags.Input.ProjectName
in [
"data23_hi",
"data23_comm"]:
132 elif flags.Input.ProjectName
in [
"data24_5p36TeV",
"data24_900GeV",
"data24_13p6TeV",
"data24_refcomm"]:
134 elif flags.Input.ProjectName
in [
"data24_hi",
"data24_hicomm"]:
135 config =
"configZDC_PbPb2024.v5.json"
136 elif flags.Input.ProjectName
in [
"data25_hipcomm"]:
138 elif flags.Input.ProjectName
in [
"data25_hip"]:
140 elif flags.Input.ProjectName
in [
"data25_hi",
"data25_hicomm"]:
141 if (aa_type == 8
or aa_type == 10):
142 config =
"OONeNe2025"
144 config =
"configZDC_PbPb2025.v1.json"
145 elif flags.Input.ProjectName
in [
"data26_comm",
"data26_cos",
"data26_900GeV",
"data26_13p6TeV"]:
146 config =
"configZDC_PbPb2025.v1.json"
148 elif run == LHCPeriod.Run2:
149 if flags.Input.ProjectName ==
"data15_hi":
151 elif flags.Input.ProjectName ==
"data17_13TeV":
153 elif flags.Input.ProjectName ==
"data16_hip5TeV":
155 elif flags.Input.ProjectName ==
"data16_hip8TeV":
157 config =
"configZDC_pPb2016.v1.json"
159 config =
"configZDC_Pbp2016.v1.json"
160 elif flags.Input.ProjectName ==
"data18_hi":
167 '''set generic flags needed for ZDC reconstruction that are independent of stream type
168 Also fills flags from input arguments'''
170 flags.Scheduler.CheckDependencies =
True
171 flags.Scheduler.ShowDataDeps =
True
172 flags.Scheduler.ShowDataFlow =
True
173 flags.Scheduler.ShowControlFlow =
True
174 flags.Scheduler.EnableVerboseViews =
True
176 flags.Detector.GeometryZDC=
True
177 flags.Detector.GeometryAFP=
False
178 flags.Detector.GeometryALFA=
False
179 flags.Detector.GeometryLucid=
False
180 flags.Detector.GeometryMDT=
False
181 flags.Detector.GeometryMM=
False
182 flags.Detector.GeometryMuon=
False
184 flags.Trigger.decodeHLT=
False
185 flags.Trigger.enableL1MuonPhase1=
False
186 flags.Trigger.L1.doMuon=
False
187 flags.Trigger.L1.doCalo=
False
188 flags.Trigger.L1.doTopo=
False
194 parser = flags.getArgumentParser()
195 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")
196 flags.fillFromArgs(parser=parser)
200 '''Function that checks on data type from triggerstream tag
201 and sets run-type-and-year-dependent settings
202 Returns: a tuple of the following four values
203 isLED - bool, true if running on LED data
204 isInj - bool, true if running on Inj data
205 isCalib - bool, true if running on Calib data
206 pn - string, project name such as data24_hi
209 isComm = (flags.Input.ProjectName ==
"data25_comm" and flags.Input.TriggerStream ==
"calibration_ZDCCalib")
210 isLED = (flags.Input.TriggerStream ==
"calibration_ZDCLEDCalib")
211 isInj = (flags.Input.TriggerStream ==
"calibration_ZDCInjCalib" or isComm)
212 isCalib = (flags.Input.TriggerStream
in [
"calibration_ZDCCalib",
"calibration_zdcCalib"]
or "physics_" in flags.Input.TriggerStream
or flags.Input.TriggerStream ==
"express_express" and not isComm)
214 if flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor":
215 runInjForStandaloneDataArgValid =
False
217 if flags.hasFlag(
"runInjForStandaloneData"):
218 if flags.runInjForStandaloneData.lower() ==
"inj":
220 runInjForStandaloneDataArgValid =
True
221 elif flags.runInjForStandaloneData.lower() ==
"led":
223 runInjForStandaloneDataArgValid =
True
225 if not runInjForStandaloneDataArgValid:
226 log.warning(
"runInjForStandaloneData is either not a defined flag or has invalid value (value must be Inj / LED, case insensitive).")
227 log.warning(
"Running nominal reconstruction (injector-pulse) by default for standalone data")
228 log.warning(
"Could lead to undesired behavior if pulsing LED in standalone mode")
232 log.info(
'ZdcRecConfig: Running LED data!')
234 log.info(
'ZdcRecConfig: Running Injected pulse data!')
236 log.info(
'ZdcRecConfig: Running ZDC calibration data!')
238 log.info(
'ZdcRecConfig: Running over MC Samples')
239 flags.Input.ProjectName =
"data23_hi"
240 flags.Reco.EnableTrigger =
False
243 pn = flags.Input.ProjectName
245 raise ValueError(
'Unknown project name')
247 if isLED
or isInj
or pn ==
'data_test':
248 flags.Trigger.EDMVersion=3
249 flags.GeoModel.Run = LHCPeriod.Run3
250 flags.IOVDb.GlobalTag=defaultConditionsTags.RUN3_DATA
252 year = int(pn.split(
'_')[0].
split(
'data')[1])
254 flags.Trigger.EDMVersion=2
255 flags.GeoModel.Run = LHCPeriod.Run2
256 flags.IOVDb.GlobalTag=defaultConditionsTags.RUN2_DATA
258 flags.Trigger.EDMVersion=3
259 flags.GeoModel.Run = LHCPeriod.Run3
260 flags.IOVDb.GlobalTag=defaultConditionsTags.RUN3_DATA
263 log.info(
'ZdcRecConfig: Overriding MC run to be Run 3!')
264 flags.GeoModel.Run = LHCPeriod.Run3
267 or flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor"
268 or pn ==
"data22_13p6TeV"):
269 flags.Detector.EnableZDC_RPD =
False
271 if flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor":
272 flags.DQ.useTrigger =
False
273 flags.DQ.triggerDataAvailable =
False
277 return isLED, isInj, isCalib, pn
282 acc = ComponentAccumulator()
285 if flags.Input.Format
is Format.BS:
286 ZDC_ItemList.append(
"xAOD::ZdcModuleContainer#ZdcModules")
287 ZDC_ItemList.append(
"xAOD::ZdcModuleAuxContainer#ZdcModulesAux.")
288 ZDC_ItemList.append(
"xAOD::ZdcModuleContainer#ZdcSums")
289 ZDC_ItemList.append(
"xAOD::ZdcModuleAuxContainer#ZdcSumsAux.")
291 acc.merge(addToESD(flags,ZDC_ItemList))
292 acc.merge(addToAOD(flags,ZDC_ItemList))
294 if flags.Output.doWriteAOD:
295 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
296 acc.merge(SetupMetaDataForStreamCfg(flags,streamName=
"AOD"))
301def ZdcAnalysisToolCfg(flags, run, config="PbPb2023", DoCalib=False, DoFADCCorr=False, DoNonLinCorr=False, DoTimeCalib=False, DoTrigEff=False, ForceCalibRun=-1, ForceCalibLB=814, AuxSuffix=""):
302 acc = ComponentAccumulator()
304 log.info(
'ZdcAnalysisToolCfg: setting up ZdcAnalysisTool with config='+config)
308 if (config[-5:]==
'.json'):
311 log.info(
'ZdcAnalysisToolCfg: setting up with JSON file '+jsonFile)
313 acc.setPrivateTools(CompFactory.ZDC.ZdcAnalysisTool(
314 name =
'ZdcAnalysisTool'+config,
315 Configuration = config,
317 DoFADCCorr = DoFADCCorr,
318 DoFADCCorrPerSample =
True,
319 DoNonLinCorr = DoNonLinCorr,
320 DoTimeCalib = DoTimeCalib,
321 DoTrigEff = DoTrigEff,
322 ForceCalibRun = ForceCalibRun,
323 ForceCalibLB = ForceCalibLB,
324 AuxSuffix = AuxSuffix,
325 JSONConfigurationFile=jsonFile,
327 CombineDelay =
True if flags.Input.ProjectName ==
"data16_hip8TeV" else False))
331 acc = ComponentAccumulator()
333 log.info(
'ZdcAnalysisToolCfg: setting up ZdcAnalysisTool with config='+config)
334 acc.setPrivateTools(CompFactory.ZDC.ZdcLEDAnalysisTool(name =
'ZdcLEDAnalysisTool'+config,
335 Configuration = config,
336 DoFADCCorr = DoFADCCorr))
341 acc = ComponentAccumulator()
343 acc.merge(TrigDecisionToolCfg(flags))
345 trigValTool = CompFactory.ZDC.ZdcTrigValidTool(
346 name =
'ZdcTrigValTool',
349 filepath_LUT =
'TrigT1ZDC/zdc_json_PbPb5.36TeV_2023.json')
351 trigValTool.TrigDecisionTool = acc.getPublicTool(
'TrigDecisionTool')
353 trigValTool.triggerList = [c
for c
in getL1MenuAccess(flags)
if 'L1_ZDC_BIT' in c]
355 acc.setPrivateTools(trigValTool)
360 acc = ComponentAccumulator()
362 CompFactory.ZDC.RPDAnalysisTool(
363 name=
"RPDAnalysisTool",
364 Configuration=config,
365 AuxSuffix = AuxSuffix
371 acc = ComponentAccumulator()
373 CompFactory.ZDC.RpdSubtractCentroidTool(
374 name=
"RpdSubtractCentroidTool",
375 Configuration=config,
376 AuxSuffix = AuxSuffix
382 acc = ComponentAccumulator()
384 CompFactory.ZDC.LISAnalysisTool(
385 name=
"LISAnalysisTool",
386 Configuration=config,
391 ChannelPedestals=[100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0]
397 acc = ComponentAccumulator()
398 LisNtuple = CompFactory.LisNtuple(
"LisNtuple")
399 LisNtuple.enableOutputTree =
True
400 LisNtuple.lisInj = lisInj
401 LisNtuple.lisLED = lisLED
402 LisNtuple.enableTrigger = enableTrigger
403 acc.addEventAlgo(LisNtuple)
404 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
408 acc = ComponentAccumulator()
410 log.info (
'ZdcRecConfig.py: Running with config tag%s', config)
418 if flags.Input.ProjectName ==
"data15_hi":
422 elif flags.Input.ProjectName ==
"data17_13TeV":
426 elif flags.Input.ProjectName ==
"data16_hip5TeV":
430 elif flags.Input.ProjectName ==
"data16_hip8TeV":
434 elif flags.Input.ProjectName ==
"data18_hi":
439 acc.merge(ByteStreamReadCfg(flags, type_names=[
'xAOD::TriggerTowerContainer/ZdcTriggerTowers',
440 'xAOD::TriggerTowerAuxContainer/ZdcTriggerTowersAux.']))
442 acc.addEventAlgo(CompFactory.ZdcByteStreamRawDataV2())
443 acc.addEventAlgo(CompFactory.ZdcRecV3Decode())
445 anaTool = acc.popToolsAndMerge(
ZdcAnalysisToolCfg(flags,2,config,doCalib,doFADCCorr,doNonLinCorr,doTimeCalib,doTrigEff))
447 acc.addEventAlgo(CompFactory.ZdcRecV3(
"ZdcRecV3",ZdcAnalysisTool=anaTool))
453 acc = ComponentAccumulator()
455 log.info (
'ZdcRecConfig.py: Running with config tag %s', config)
466 if flags.Input.TriggerStream !=
"calibration_ZDCInjCalib" and flags.Input.TriggerStream !=
"calibration_DcmDummyProcessor":
467 if flags.Common.isOnline:
470 if flags.Input.ProjectName ==
"data24_5p36TeV" or flags.Input.ProjectName ==
"data24_refcomm":
471 ForceCalibRun = 488239
473 elif flags.Input.ProjectName ==
"data24_hi" or flags.Input.ProjectName ==
"data24_hicomm":
474 ForceCalibRun = 488980
479 elif flags.Input.ProjectName ==
"data23_comm":
481 elif flags.Input.ProjectName ==
"data23_hi":
484 elif flags.Input.ProjectName ==
"data24_hi":
489 elif flags.Input.ProjectName
in [
"data25_hip",
"data25_hipcomm"]:
494 elif flags.Input.ProjectName
in [
"data25_hicomm"]:
499 elif flags.Input.ProjectName
in [
"data25_hi"]:
509 doRPD = flags.Detector.EnableZDC_RPD
511 log.info(
'ZdcRecRun3Cfg: doCalib = '+str(doCalib)+
' for project '+flags.Input.ProjectName)
512 log.info(
'RPD enable flag is '+str(doRPD))
515 if "ZdcModules" in flags.Input.Collections:
516 log.info(
'ZdcRecConfig.py: found ZdcModules in input, reprocessing mode set')
520 anaTool = acc.popToolsAndMerge(
ZdcAnalysisToolCfg(flags,3,config,doCalib,doFADCCorr,doNonLinCorr,doTimeCalib,doTrigEff,ForceCalibRun,ForceCalibLB, AuxSuffix))
527 if flags.Input.isMC :
530 zdcTools += [rpdAnaTool,centroidTool]
531 elif flags.Trigger.doZDC :
533 elif flags.Input.TriggerStream ==
"calibration_ZDCInjCalib" or flags.Input.TriggerStream ==
"calibration_DcmDummyProcessor":
535 elif flags.Common.isOnline:
538 zdcTools += [rpdAnaTool,centroidTool]
542 zdcTools += [rpdAnaTool,centroidTool]
545 zdcTools = [anaTool,trigTool]
547 zdcTools += [rpdAnaTool,centroidTool]
549 if flags.Input.Format
is Format.BS:
550 acc.addEventAlgo(CompFactory.ZdcByteStreamLucrodData())
551 acc.addEventAlgo(CompFactory.ZdcRecRun3Decode())
554 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
555 acc.merge(PoolReadCfg(flags))
556 acc.addEventAlgo(CompFactory.ZdcMCTruthAlg())
558 zdcAlg = CompFactory.ZdcRecRun3(
"ZdcRecRun3",ZdcAnalysisTools=zdcTools)
559 acc.addEventAlgo(zdcAlg, primary=
True)
565 acc = ComponentAccumulator()
566 run = flags.GeoModel.Run
568 if run == LHCPeriod.Run2:
569 log.info (
'ZdcRecConfig.py: setting up Run 2 ntuple!')
571 elif run == LHCPeriod.Run3:
572 log.info (
'ZdcRecConfig.py: setting up Run 3 ntuples!')
575 log.info (
'ZdcRecConfig.py: setting up no ntuple!')
581 acc = ComponentAccumulator()
582 acc.merge(ZdcNtupleCfg(flags,
585 enableTrigger =
False,
586 enableOutputSamples =
True,
587 enableOutputTree =
True,
588 writeOnlyTriggers =
False,
592 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
597 acc = ComponentAccumulator()
598 acc.merge(ZdcNtupleCfg(flags,
604 isMC = flags.Input.isMC,
605 enableTrigger =
not flags.Input.isMC,
606 enableOutputSamples =
True,
607 enableOutputTree =
True,
608 writeOnlyTriggers =
False,
609 enableRPD = flags.Detector.EnableZDC_RPD,
610 enableCentroid = flags.Detector.EnableZDC_RPD,
614 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
620 acc = ComponentAccumulator()
621 acc.merge(ZdcNtupleCfg(flags,
628 enableTrigger =
False,
629 enableOutputSamples =
True,
630 enableOutputTree =
True,
631 writeOnlyTriggers =
False,
633 enableCentroid =
False,
637 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
642 acc = ComponentAccumulator()
643 zdcLEDNtuple = CompFactory.ZdcLEDNtuple(
"ZdcLEDNtuple")
644 zdcLEDNtuple.enableOutputTree =
True
645 acc.addEventAlgo(zdcLEDNtuple)
646 acc.addService(CompFactory.THistSvc(Output = [
"ANALYSIS DATAFILE='NTUP.root' OPT='RECREATE'"]))
651 acc = ComponentAccumulator()
653 if flags.Input.Format
is Format.BS:
654 run = flags.GeoModel.Run
657 log.info (
"ZdcRecConfig.py: run = "+run.name)
659 config =
'ppPbPb2023'
663 if flags.Input.ProjectName
in [
"data24_hi",
"data25_hip",
"data25_hi"]:
666 acc.addEventAlgo(CompFactory.ZdcByteStreamLucrodData())
667 acc.addEventAlgo(CompFactory.ZdcRecRun3Decode())
672 zdcTools += [anaTool]
675 zdcAlg = CompFactory.ZdcRecRun3(
"ZdcRecRun3",DAQMode=2, ForcedEventType=2, ZdcAnalysisTools=zdcTools)
676 acc.addEventAlgo(zdcAlg, primary=
True)
678 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
685 acc = ComponentAccumulator()
688 tdmv = CompFactory.TrigDec.TrigDecisionMakerValidator()
689 tdmv.errorOnFailure =
True
690 tdmv.TrigDecisionTool = acc.getPrimaryAndMerge(TrigDecisionToolCfg(flags))
691 tdmv.NavigationKey = getRun3NavigationContainerFromInput(flags)
692 acc.addEventAlgo( tdmv )
698 acc = ComponentAccumulator()
700 run = flags.GeoModel.Run
703 log.info (
"LisRecConfig.py: run = "+run.name)
708 if flags.Input.ProjectName
in [
"data26_comm",
"data26_900GeV",
"data26_13p6TeV",
"data26_cos"]:
710 elif flags.Input.ProjectName
in []:
715 isLED = (flags.Input.TriggerStream ==
"calibration_ZDCLEDCalib")
720 if flags.Input.Format
is Format.BS:
721 acc.merge(ByteStreamReadCfg(flags))
722 acc.addEventAlgo(CompFactory.ZdcByteStreamLucrodData())
723 acc.addEventAlgo(CompFactory.ZdcRecRun3Decode( DecodeRunMode = DecodeRunMode ))
725 evtType = 2
if isLED
else 1
726 DAQMode = 2
if isLED
else 3
728 zdcAlg = CompFactory.ZdcRecRun3(
"ZdcRecRun3",DAQMode=DAQMode, ForcedEventType=evtType, ZdcAnalysisTools=zdcTools)
729 acc.addEventAlgo(zdcAlg, primary=
True)
731 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
737 """Configure Zdc analysis alg
738 Additional arguments are useful in calibration runs
741 acc = ComponentAccumulator()
743 run = flags.GeoModel.Run
746 log.info (
"ZdcRecConfig.py: run = "+run.name)
748 if run == LHCPeriod.Run2:
749 log.info (
'ZdcRecConfig.py: setting up Run 2!')
751 elif run == LHCPeriod.Run3:
752 log.info (
'ZdcRecConfig.py: setting up Run 3!')
755 log.warning (
'ZdcRecConfig.py: setting up nothing (problem)!')
757 if flags.Output.doWriteESD
or flags.Output.doWriteAOD:
763if __name__ ==
'__main__':
765 """ This is selftest & ZDC calibration transform at the same time"""
771 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
772 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
774 flags = initConfigFlags()
778 ProjectNamesLIS = [
"data26_cos",
"data26_900GeV",
"data26_13p6TeV",
"data26_comm",
"data_test"]
782 flags.Output.AODFileName=
"AOD.pool.root"
783 flags.Output.HISTFileName=
"HIST.root"
784 flags.Output.doWriteAOD=
True
788 log.debug(
'ZdcRecConfig: Running on project name '+pn +
' with trigger stream '+flags.Input.TriggerStream +
' isLED: ' + str(isLED) +
' isInj: ' + str(isInj) +
' isCalib: ' + str(isCalib))
792 acc=MainServicesCfg(flags)
794 from AtlasGeoModel.ForDetGeoModelConfig
import ForDetGeometryCfg
795 acc.merge(ForDetGeometryCfg(flags))
797 if not flags.Input.isMC
and pn !=
'data_test':
798 from TriggerJobOpts.TriggerRecoConfig
import TriggerRecoCfgData
799 acc.merge(TriggerRecoCfgData(flags))
801 if pn
not in ProjectNamesLIS:
809 if not flags.Input.isMC:
811 from ZdcMonitoring.ZdcLEDMonitorAlgorithm
import ZdcLEDMonitoringConfig
812 acc.merge(ZdcLEDMonitoringConfig(flags,
'ppPbPb2023'))
816 if (flags.GeoModel.Run==LHCPeriod.Run3):
817 from ZdcMonitoring.ZdcMonitorAlgorithm
import ZdcMonitoringConfig
818 acc.merge(ZdcMonitoringConfig(flags))
820 if flags.Input.TriggerStream !=
"calibration_DcmDummyProcessor":
824 from ZdcMonitoring.ZdcMonitorAlgorithm
import ZdcMonitoringConfig
825 zdcMonitorAcc = ZdcMonitoringConfig(flags)
826 acc.merge(zdcMonitorAcc)
836 acc.printConfig(withDetails=
True)
839 with open(
"config.pkl",
"wb")
as f:
843 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)