36def forceConditions(run, lb, timestamp=None, iovDbSvc=None):
37 """Force all conditions (except prescales) to match the given run and LB number, a timestamp can also be provided for MC"""
38
39 log.info(forceConditions.__doc__)
40
41 if iovDbSvc is None:
42 iovDbSvc = cfg.getService('IOVDbSvc')
43
44
45 ignore = ['/TRIGGER/HLT/PrescaleKey']
46
47
48 timebased = ['/TDAQ/OLC/CALIBRATIONS',
49 '/TDAQ/Resources/ATLAS/SCT/Robins',
50 '/SCT/DAQ/Config/ChipSlim',
51 '/SCT/DAQ/Config/Geog',
52 '/SCT/DAQ/Config/MUR',
53 '/SCT/DAQ/Config/Module',
54 '/SCT/DAQ/Config/ROD',
55 '/SCT/DAQ/Config/RODMUR',
56 '/SCT/HLT/DCS/HV',
57 '/SCT/HLT/DCS/MODTEMP',
58 '/MUONALIGN/Onl/MDT/BARREL',
59 '/MUONALIGN/Onl/MDT/ENDCAP/SIDEA',
60 '/MUONALIGN/Onl/MDT/ENDCAP/SIDEC',
61 '/MUONALIGN/Onl/TGC/SIDEA',
62 '/MUONALIGN/Onl/TGC/SIDEC',
63 '/TRIGGER/L1Calo/V1/Calibration/EfexNoiseCuts',
64 '/TRIGGER/L1Calo/V1/Calibration/EfexEnergyCalib',
65 '/TRIGGER/L1Calo/V1/Calibration/JfexModuleSettings',
66 '/TRIGGER/L1Calo/V1/Calibration/JfexNoiseCuts',
67 '/TRIGGER/L1Calo/V1/Calibration/JfexSystemSettings',
68 '/TRIGGER/L1Calo/V1/Calibration/GfexModuleSettings']
69
70 if timestamp is None:
71 from TrigCommon.AthHLT import get_sor_params
72 sor = get_sor_params(run)
73 timestamp = sor['SORTime'] // int(1e9)
74
75 for i,f in enumerate(iovDbSvc.Folders):
76 if any(name in f for name in ignore):
77 continue
78 if any(name in f for name in timebased):
79 iovDbSvc.Folders[i] += f'<forceTimestamp>{timestamp:d}</forceTimestamp>'
80 else:
81 iovDbSvc.Folders[i] += f'<forceRunNumber>{run:d}</forceRunNumber> <forceLumiblockNumber>{lb:d}</forceLumiblockNumber>'
82
83