Skip to content
Snippets Groups Projects
Commit 63e13845 authored by Peter Onyisi's avatar Peter Onyisi Committed by Walter Lampl
Browse files

Update default bunch crossing info source

Update default bunch crossing info source
parent 3a727aa2
No related branches found
No related tags found
No related merge requests found
...@@ -63,6 +63,15 @@ class energy (JobProperty): ...@@ -63,6 +63,15 @@ class energy (JobProperty):
statusOn=True statusOn=True
allowedTypes=['float'] allowedTypes=['float']
StoredValue=7*TeV StoredValue=7*TeV
#
#
class bunchStructureSource (JobProperty):
""" Specify beam energy (MeV)
"""
statusOn=True
allowedTypes=['int']
allowedValues=[0,1,2,3]
StoredValue=2
...@@ -86,7 +95,7 @@ class Beam(JobPropertyContainer): ...@@ -86,7 +95,7 @@ class Beam(JobPropertyContainer):
jobproperties.add_Container(Beam) jobproperties.add_Container(Beam)
# I want always the following flags in the Beam container # I want always the following flags in the Beam container
_list_Beam=[override,bunchSpacing,numberOfCollisions,beamType,energy] _list_Beam=[override,bunchSpacing,numberOfCollisions,beamType,energy,bunchStructureSource]
for j in _list_Beam: for j in _list_Beam:
jobproperties.Beam.add_JobProperty(j) jobproperties.Beam.add_JobProperty(j)
del _list_Beam del _list_Beam
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
from AthenaCommon.SystemOfUnits import TeV from AthenaCommon.SystemOfUnits import TeV
from AthenaConfiguration.AthConfigFlags import AthConfigFlags from AthenaConfiguration.AthConfigFlags import AthConfigFlags
from AthenaConfiguration.AutoConfigFlags import GetFileMD, getInitialTimeStampsFromRunNumbers, getRunToTimestampDict, getSpecialConfigurationMetadata from AthenaConfiguration.AutoConfigFlags import GetFileMD, getInitialTimeStampsFromRunNumbers, getRunToTimestampDict, getSpecialConfigurationMetadata
from AthenaConfiguration.Enums import BeamType, Format, ProductionStep from AthenaConfiguration.Enums import BeamType, Format, ProductionStep, BunchStructureSource
from PyUtils.moduleExists import moduleExists from PyUtils.moduleExists import moduleExists
...@@ -130,6 +130,7 @@ def _createCfgFlags(): ...@@ -130,6 +130,7 @@ def _createCfgFlags():
acf.addFlag('Beam.Energy', lambda prevFlags : GetFileMD(prevFlags.Input.Files).get('beam_energy',7*TeV)) # former global.BeamEnergy acf.addFlag('Beam.Energy', lambda prevFlags : GetFileMD(prevFlags.Input.Files).get('beam_energy',7*TeV)) # former global.BeamEnergy
acf.addFlag('Beam.estimatedLuminosity', lambda prevFlags : ( 1E33*(prevFlags.Beam.NumberOfCollisions)/2.3 ) *\ acf.addFlag('Beam.estimatedLuminosity', lambda prevFlags : ( 1E33*(prevFlags.Beam.NumberOfCollisions)/2.3 ) *\
(25./prevFlags.Beam.BunchSpacing)) # former flobal.estimatedLuminosity (25./prevFlags.Beam.BunchSpacing)) # former flobal.estimatedLuminosity
acf.addFlag('Beam.BunchStructureSource', lambda prevFlags: BunchStructureSource.MC if prevFlags.Input.isMC else BunchStructureSource.TrigConf)
......
...@@ -59,3 +59,10 @@ class BeamType(FlagEnum): ...@@ -59,3 +59,10 @@ class BeamType(FlagEnum):
Collisions = 'collisions' Collisions = 'collisions'
SingleBeam = 'singlebeam' SingleBeam = 'singlebeam'
Cosmics = 'cosmics' Cosmics = 'cosmics'
class BunchStructureSource(FlagEnum):
FILLPARAMS = 0
MC = 1
TrigConf = 2
Lumi = 3
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.ComponentFactory import CompFactory
from AthenaConfiguration.Enums import BunchStructureSource
def BunchCrossingCondAlgCfg(configFlags): def BunchCrossingCondAlgCfg(configFlags):
...@@ -11,10 +12,11 @@ def BunchCrossingCondAlgCfg(configFlags): ...@@ -11,10 +12,11 @@ def BunchCrossingCondAlgCfg(configFlags):
result=ComponentAccumulator() result=ComponentAccumulator()
run1=(configFlags.IOVDb.DatabaseInstance=='COMP200') run1=(configFlags.IOVDb.DatabaseInstance=='COMP200')
cfgsvc = None
folder = ''
if (configFlags.Input.isMC): if configFlags.Beam.BunchStructureSource == BunchStructureSource.MC:
folder = "/Digitization/Parameters" folder = "/Digitization/Parameters"
Mode = 1
from AthenaConfiguration.Enums import ProductionStep from AthenaConfiguration.Enums import ProductionStep
if configFlags.Common.ProductionStep not in [ProductionStep.Digitization, ProductionStep.PileUpPresampling, ProductionStep.Overlay, ProductionStep.FastChain]: if configFlags.Common.ProductionStep not in [ProductionStep.Digitization, ProductionStep.PileUpPresampling, ProductionStep.Overlay, ProductionStep.FastChain]:
result.merge(addFolders(configFlags,folder,None,className="AthenaAttributeList",tag='HEAD')) result.merge(addFolders(configFlags,folder,None,className="AthenaAttributeList",tag='HEAD'))
...@@ -23,16 +25,22 @@ def BunchCrossingCondAlgCfg(configFlags): ...@@ -23,16 +25,22 @@ def BunchCrossingCondAlgCfg(configFlags):
# /Digitization/Parameters metadata is not present in the # /Digitization/Parameters metadata is not present in the
# input file and will be created during the job # input file and will be created during the job
pass pass
else: #data case elif configFlags.Beam.BunchStructureSource == BunchStructureSource.FILLPARAMS:
folder = '/TDAQ/OLC/LHC/FILLPARAMS' folder = '/TDAQ/OLC/LHC/FILLPARAMS'
Mode = 0
result.merge(addFolders(configFlags,folder,'TDAQ',className = 'AthenaAttributeList',tag='HEAD')) result.merge(addFolders(configFlags,folder,'TDAQ',className = 'AthenaAttributeList',tag='HEAD'))
elif configFlags.Beam.BunchStructureSource == BunchStructureSource.TrigConf:
from TrigConfxAOD.TrigConfxAODConfig import getxAODConfigSvc
cfgsvc = result.getPrimaryAndMerge(getxAODConfigSvc(configFlags))
elif configFlags.Beam.BunchStructureSource == BunchStructureSource.Lumi:
from .LuminosityCondAlgConfig import LuminosityCondAlgCfg
result.merge(LuminosityCondAlgCfg(configFlags))
alg = BunchCrossingCondAlg('BunchCrossingCondAlgDefault', alg = BunchCrossingCondAlg('BunchCrossingCondAlgDefault',
Run1=run1, Run1=run1,
FillParamsFolderKey =folder, FillParamsFolderKey=folder,
Mode=Mode ) Mode=configFlags.Beam.BunchStructureSource.value,
TrigConfigSvc=cfgsvc
)
result.addCondAlgo(alg) result.addCondAlgo(alg)
......
...@@ -16,13 +16,17 @@ def BunchCrossingCondAlgDefault(): ...@@ -16,13 +16,17 @@ def BunchCrossingCondAlgDefault():
from LumiBlockComps.LumiBlockCompsConf import BunchCrossingCondAlg from LumiBlockComps.LumiBlockCompsConf import BunchCrossingCondAlg
from IOVDbSvc.CondDB import conddb from IOVDbSvc.CondDB import conddb
from AthenaCommon.BeamFlags import beamFlags
isMC=conddb.isMC
run1=(conddb.dbdata == 'COMP200') run1=(conddb.dbdata == 'COMP200')
folder = None
if (isMC): if conddb.isMC and beamFlags.bunchStructureSource() != 1:
mlog.info('This is MC, trying to reset beamFlags.bunchStructureSource to 1')
beamFlags.bunchStructureSource = 1
if beamFlags.bunchStructureSource() == 1:
folder = "/Digitization/Parameters" folder = "/Digitization/Parameters"
Mode = 1
from AthenaCommon.DetFlags import DetFlags from AthenaCommon.DetFlags import DetFlags
if not DetFlags.digitize.any_on(): if not DetFlags.digitize.any_on():
if not conddb.folderRequested(folder): if not conddb.folderRequested(folder):
...@@ -36,17 +40,18 @@ def BunchCrossingCondAlgDefault(): ...@@ -36,17 +40,18 @@ def BunchCrossingCondAlgDefault():
# /Digitization/Parameters metadata is not present in the # /Digitization/Parameters metadata is not present in the
# input file and will be created during the job # input file and will be created during the job
mlog.info("Folder %s will be created during the job.", folder) mlog.info("Folder %s will be created during the job.", folder)
else: elif beamFlags.bunchStructureSource() == 0:
folder = '/TDAQ/OLC/LHC/FILLPARAMS' folder = '/TDAQ/OLC/LHC/FILLPARAMS'
Mode = 0
# Mistakenly created as multi-version folder, must specify HEAD # Mistakenly created as multi-version folder, must specify HEAD
conddb.addFolderWithTag('TDAQ', folder, 'HEAD', conddb.addFolderWithTag('TDAQ', folder, 'HEAD',
className = 'AthenaAttributeList') className = 'AthenaAttributeList')
# other possibilities for BunchStructureSource: assume we are running in a context
# where dependencies are set up
alg = BunchCrossingCondAlg(name, alg = BunchCrossingCondAlg(name,
Run1=run1, Run1=run1,
FillParamsFolderKey =folder, FillParamsFolderKey =folder,
Mode=Mode ) Mode=beamFlags.bunchStructureSource() )
condSeq += alg condSeq += alg
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
from AthenaConfiguration.ComponentFactory import CompFactory from AthenaConfiguration.ComponentFactory import CompFactory
from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg from LumiBlockComps.BunchCrossingCondAlgConfig import BunchCrossingCondAlgCfg
from AthenaConfiguration.Enums import BunchStructureSource
from IOVDbSvc.IOVDbSvcConfig import IOVDbSvcCfg
from LumiBlockComps.dummyLHCFillDB import createSqlite,fillFolder from LumiBlockComps.dummyLHCFillDB import createSqlite,fillFolder
import os import os
...@@ -77,6 +79,7 @@ from AthenaConfiguration.AllConfigFlags import ConfigFlags ...@@ -77,6 +79,7 @@ from AthenaConfiguration.AllConfigFlags import ConfigFlags
from AthenaConfiguration.MainServicesConfig import MainServicesCfg from AthenaConfiguration.MainServicesConfig import MainServicesCfg
ConfigFlags.Input.Files=[] ConfigFlags.Input.Files=[]
ConfigFlags.Input.isMC=False ConfigFlags.Input.isMC=False
ConfigFlags.Beam.BunchStructureSource=BunchStructureSource.FILLPARAMS
ConfigFlags.IOVDb.DatabaseInstance="CONDBR2" ConfigFlags.IOVDb.DatabaseInstance="CONDBR2"
ConfigFlags.IOVDb.GlobalTag="CONDBR2-BLKPA-2017-05" ConfigFlags.IOVDb.GlobalTag="CONDBR2-BLKPA-2017-05"
ConfigFlags.GeoModel.AtlasVersion="ATLAS-R2-2016-01-00-01" ConfigFlags.GeoModel.AtlasVersion="ATLAS-R2-2016-01-00-01"
...@@ -105,6 +108,8 @@ result.addService(CompFactory.EvtPersistencySvc("EventPersistencySvc",CnvService ...@@ -105,6 +108,8 @@ result.addService(CompFactory.EvtPersistencySvc("EventPersistencySvc",CnvService
result.merge(BunchCrossingCondAlgCfg(ConfigFlags)) result.merge(BunchCrossingCondAlgCfg(ConfigFlags))
print(ConfigFlags.Beam.BunchStructureSource)
result.merge(IOVDbSvcCfg(ConfigFlags))
result.getService("IOVDbSvc").Folders=["<db>sqlite://;schema=test.db;dbname=CONDBR2</db><tag>HEAD</tag>/TDAQ/OLC/LHC/FILLPARAMS"] result.getService("IOVDbSvc").Folders=["<db>sqlite://;schema=test.db;dbname=CONDBR2</db><tag>HEAD</tag>/TDAQ/OLC/LHC/FILLPARAMS"]
result.getCondAlgo("BunchCrossingCondAlgDefault").OutputLevel=1 result.getCondAlgo("BunchCrossingCondAlgDefault").OutputLevel=1
......
...@@ -51,7 +51,7 @@ private: ...@@ -51,7 +51,7 @@ private:
SG::WriteCondHandleKey<BunchCrossingCondData> m_outputKey{this, "OutputKey", "BunchCrossingData", "Key of output CDO" }; SG::WriteCondHandleKey<BunchCrossingCondData> m_outputKey{this, "OutputKey", "BunchCrossingData", "Key of output CDO" };
// Service handle // Service handle
const ServiceHandle<TrigConf::ILVL1ConfigSvc> m_trigConfigSvc{this, "TrigConfigSvc", "", "Trig Config Svc"}; const ServiceHandle<TrigConf::ILVL1ConfigSvc> m_trigConfigSvc{this, "TrigConfigSvc", "TrigConf::xAODConfigSvc/xAODConfigSvc", "Trig Config Svc"};
///internal methods: ///internal methods:
std::vector<bunchTrain_t> findTrains(const std::bitset< BunchCrossingCondData::m_MAX_BCID>& pairsToConsume, const int maxSpacingInTrain, const unsigned minBunchesPerTrain) const; std::vector<bunchTrain_t> findTrains(const std::bitset< BunchCrossingCondData::m_MAX_BCID>& pairsToConsume, const int maxSpacingInTrain, const unsigned minBunchesPerTrain) const;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment