12 """Collect digitization metadata parameters as a dictionary"""
13 logDigitizationWriteMetadata = logging.getLogger(
'DigitizationParametersConfig')
20 digitMetaDataKeys = {
'doInDetNoise' :
'Digitization.DoInnerDetectorNoise',
21 'doCaloNoise' :
'Digitization.DoCaloNoise',
22 'bunchSpacing' :
'Beam.BunchSpacing',
23 'beamType' :
'Beam.Type',
24 'IOVDbGlobalTag' :
'IOVDb.GlobalTag',
25 'DetDescrVersion' :
'GeoModel.AtlasVersion',
26 'finalBunchCrossing' :
'Digitization.PU.FinalBunchCrossing',
27 'initialBunchCrossing' :
'Digitization.PU.InitialBunchCrossing',
28 'physicsList' :
'Sim.PhysicsList',
29 'digiSteeringConf' :
'Digitization.DigiSteeringConf',
30 'pileUp' :
'Digitization.PileUp',
32 logDigitizationWriteMetadata.info(
'Filling Digitization MetaData')
33 for testKey, testFlag
in digitMetaDataKeys.items():
34 if flags.hasFlag(testFlag):
35 testValue = flags._get(testFlag)
36 if isinstance(testValue, FlagEnum):
37 testValue = testValue.value
38 if not isinstance(testValue, str):
39 testValue = str(testValue)
40 params[testKey] = testValue
41 logDigitizationWriteMetadata.info(
'DigitizationMetaData: setting "%s" to be %s', testKey, testValue)
43 logDigitizationWriteMetadata.debug(
'DigitizationMetaData: ConfigFlags.%s is not available.', testFlag)
46 testKey =
"doMuonNoise"
47 testValue = str(
not flags.Common.isOverlay)
48 params[testKey] = testValue
49 logDigitizationWriteMetadata.info(
'DigitizationMetaData: setting "%s" to be %s', testKey, testValue)
52 testKey =
"BeamIntensityPattern"
53 if flags.Digitization.PileUp:
54 testValue = str(flags.Digitization.PU.BeamIntensityPattern)
57 logDigitizationWriteMetadata.info(
'DigitizationMetaData: setting "%s" to be %s', testKey, testValue)
58 params[testKey] = testValue
61 testKey =
"intraTrainBunchSpacing"
63 params[testKey] = testValue
64 logDigitizationWriteMetadata.info(
'DigitizationMetaData: setting "%s" to be %s', testKey, testValue)
67 from AthenaConfiguration.DetectorConfigFlags
import getEnabledDetectors
68 digiDets = [
'Truth'] + getEnabledDetectors(flags)
69 logDigitizationWriteMetadata.info(
"Setting 'DigitizedDetectors' = %s" , repr(digiDets))
70 params[
'DigitizedDetectors'] = repr(digiDets)
76 myRunNumber, myEndRunNumber = getMinMaxRunNumbers(flags)
77 logDigitizationWriteMetadata = logging.getLogger(
'DigitizationParametersConfig')
78 logDigitizationWriteMetadata.debug(
'Metadata BeginRun = %s', str(myRunNumber))
79 logDigitizationWriteMetadata.debug(
'Metadata EndRun = %s', str(myEndRunNumber))
81 if flags.IOVDb.WriteParametersAsMetaData:
83 from IOVDbMetaDataTools.ParameterWriterConfig
import writeParametersToMetaData
84 logDigitizationWriteMetadata.info(
'Writing digitization parameters directly to in-file metadata (bypassing DigitParams.db)')
86 return writeParametersToMetaData(flags, folderName, params, myRunNumber, myEndRunNumber)
89 from IOVDbMetaDataTools
import ParameterDbFiller
90 logDigitizationWriteMetadata.info(
'Writing digitization parameters to intermediate sqlite file (DigitParams.db)')
92 dbFiller.setBeginRun(myRunNumber)
93 dbFiller.setEndRun(myEndRunNumber)
97 for key, value
in params.items():
99 if key ==
"BeamIntensityPattern":
100 dbFiller.addDigitParam64(key, value)
102 dbFiller.addDigitParam(key, value)
104 dbFiller.genDigitDb()
109 """Read digitization parameters metadata"""
110 from IOVDbSvc.IOVDbSvcConfig
import addFolders, IOVDbSvcCfg
116 if flags.IOVDb.WriteParametersAsMetaData:
117 result = IOVDbSvcCfg(flags)
118 result.getCondAlgo(
'CondInputLoader').Load |= {(
'AthenaAttributeList', folderName)}
122 if flags.Digitization.ReadParametersFromDB:
124 return addFolders(flags, folderName, detDb=
"DigitParams.db", db=
"DIGPARAM", className=
"AthenaAttributeList")
127 return addFolders(flags, folderName, className=
"AthenaAttributeList", tag=
"HEAD")