ATLAS Offline Software
Loading...
Searching...
No Matches
python.DigitizationParametersConfig Namespace Reference

Functions

 collectDigitizationMetadata (flags)
 writeDigitizationMetadata (flags)
 readDigitizationParameters (flags)
 writeDigitizationParameters (flags)

Variables

str folderName = "/Digitization/Parameters"

Function Documentation

◆ collectDigitizationMetadata()

python.DigitizationParametersConfig.collectDigitizationMetadata ( flags)
Collect digitization metadata parameters as a dictionary

Definition at line 11 of file DigitizationParametersConfig.py.

11def collectDigitizationMetadata(flags):
12 """Collect digitization metadata parameters as a dictionary"""
13 logDigitizationWriteMetadata = logging.getLogger('DigitizationParametersConfig')
14 params = {}
15
16 #-------------------------------------------------
17 # Adding jobproperties to the list of MetaData
18 #-------------------------------------------------
19 # Here list the digitization jobproperties we want to write out as MetaData.
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', #TODO migrate clients to use /Simulation/Parameters metadata?
29 'digiSteeringConf' : 'Digitization.DigiSteeringConf',
30 'pileUp' : 'Digitization.PileUp',
31 }
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)
42 else :
43 logDigitizationWriteMetadata.debug('DigitizationMetaData: ConfigFlags.%s is not available.', testFlag)
44
45 # doMuonNoise no actual flag in new-style
46 testKey = "doMuonNoise"
47 testValue = str(not flags.Common.isOverlay) # Hardcoded for now
48 params[testKey] = testValue
49 logDigitizationWriteMetadata.info('DigitizationMetaData: setting "%s" to be %s', testKey, testValue)
50
51 # Bunch Structure - hardcoded for now
52 testKey = "BeamIntensityPattern"
53 if flags.Digitization.PileUp:
54 testValue = str(flags.Digitization.PU.BeamIntensityPattern)
55 else:
56 testValue = "None"
57 logDigitizationWriteMetadata.info('DigitizationMetaData: setting "%s" to be %s', testKey, testValue)
58 params[testKey] = testValue
59
60 # intraTrainBunchSpacing - hardcoded for now
61 testKey = "intraTrainBunchSpacing"
62 testValue = str(25) # This should be either be determined from the BeamIntensityPattern or set as flags.Beam.BunchSpacing
63 params[testKey] = testValue
64 logDigitizationWriteMetadata.info('DigitizationMetaData: setting "%s" to be %s', testKey, testValue)
65
66
67 from AthenaConfiguration.DetectorConfigFlags import getEnabledDetectors
68 digiDets = ['Truth'] + getEnabledDetectors(flags)
69 logDigitizationWriteMetadata.info("Setting 'DigitizedDetectors' = %s" , repr(digiDets))
70 params['DigitizedDetectors'] = repr(digiDets)
71
72 return params
73
74

◆ readDigitizationParameters()

python.DigitizationParametersConfig.readDigitizationParameters ( flags)
Read digitization parameters metadata

Definition at line 108 of file DigitizationParametersConfig.py.

108def readDigitizationParameters(flags):
109 """Read digitization parameters metadata"""
110 from IOVDbSvc.IOVDbSvcConfig import addFolders, IOVDbSvcCfg
111
112 # Direct in-file metadata mode: IOVDbMetaDataTool populates ConditionStore from file metadata or Payloads
113 # In overlay + direct metadata mode: OverlaySteering sets up IOVDbMetaDataTool.Payloads with pileup metadata,
114 # which will populate ConditionStore during job execution
115 # We still need to register the folder with CondInputLoader for multithreaded scheduling
116 if flags.IOVDb.WriteParametersAsMetaData:
117 result = IOVDbSvcCfg(flags)
118 result.getCondAlgo('CondInputLoader').Load |= {('AthenaAttributeList', folderName)}
119 return result
120
121 # Sqlite mode: use IOVDbSvc to read and populate ConditionStore
122 if flags.Digitization.ReadParametersFromDB:
123 # Reading from intermediate sqlite file DigitParams.db (during digitization job)
124 return addFolders(flags, folderName, detDb="DigitParams.db", db="DIGPARAM", className="AthenaAttributeList")
125 else:
126 # Reading from input file metadata via IOVDbSvc
127 return addFolders(flags, folderName, className="AthenaAttributeList", tag="HEAD")
128
129

◆ writeDigitizationMetadata()

python.DigitizationParametersConfig.writeDigitizationMetadata ( flags)

Definition at line 75 of file DigitizationParametersConfig.py.

75def writeDigitizationMetadata(flags):
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))
80
81 if flags.IOVDb.WriteParametersAsMetaData:
82 # Direct in-file metadata mode: bypass intermediate sqlite files
83 from IOVDbMetaDataTools.ParameterWriterConfig import writeParametersToMetaData
84 logDigitizationWriteMetadata.info('Writing digitization parameters directly to in-file metadata (bypassing DigitParams.db)')
85 params = collectDigitizationMetadata(flags)
86 return writeParametersToMetaData(flags, folderName, params, myRunNumber, myEndRunNumber)
87 else:
88 # Sqlite mode: write to DigitParams.db intermediate file
89 from IOVDbMetaDataTools import ParameterDbFiller
90 logDigitizationWriteMetadata.info('Writing digitization parameters to intermediate sqlite file (DigitParams.db)')
91 dbFiller = ParameterDbFiller.ParameterDbFiller()
92 dbFiller.setBeginRun(myRunNumber)
93 dbFiller.setEndRun(myEndRunNumber)
94
95 # Collect parameters and write to dbFiller
96 params = collectDigitizationMetadata(flags)
97 for key, value in params.items():
98 # Handle the special case of BeamIntensityPattern which uses addDigitParam64
99 if key == "BeamIntensityPattern":
100 dbFiller.addDigitParam64(key, value)
101 else:
102 dbFiller.addDigitParam(key, value)
103
104 dbFiller.genDigitDb()
105 return writeDigitizationParameters(flags)
106
107

◆ writeDigitizationParameters()

python.DigitizationParametersConfig.writeDigitizationParameters ( flags)
Write digitization parameters metadata (sqlite mode only)

Definition at line 130 of file DigitizationParametersConfig.py.

130def writeDigitizationParameters(flags):
131 """Write digitization parameters metadata (sqlite mode only)"""
132 if flags.Overlay.DataOverlay:
133 return ComponentAccumulator()
134
135 from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg, addFolders
136 acc = IOVDbSvcCfg(flags, FoldersToMetaData=[folderName])
137 # Note: addFolders only needed in sqlite mode since direct mode handles it in ParameterMetaDataWriterCfg
138 acc.merge(addFolders(flags, folderName, detDb="DigitParams.db", db="DIGPARAM"))
139 return acc

Variable Documentation

◆ folderName

str python.DigitizationParametersConfig.folderName = "/Digitization/Parameters"

Definition at line 8 of file DigitizationParametersConfig.py.