Forked from
atlas / athena
139205 commits behind, 11061 commits ahead of the upstream repository.
-
Peter Onyisi authored
2015-04-24 Peter Onyisi <ponyisi AT cern.ch> * Fix hancool for Run 2 * Tag DataQualityUtils-02-20-00 2015-04-15 Yuriy Ilchenko <yuriy.ilchenko AT cern.ch> * Tag DataQualityUtils-02-19-02 with David's 'have_root_headers' fix 2015-04-15 David Quarrie <David.Quarrie@cern.ch> * cmt/requirements Remove the cmake-specific dictionary creation commands now that 'have_root_headers' is being used 2015-03-22 Peter Onyisi <ponyisi AT cern.ch> * Add panic function to send MQ message * Tag DataQualityUtils-02-19-01 2015-03-20 Peter Onyisi <ponyisi AT cern.ch> * Implement use of h-tag info in Tier-0 TRF * Implement message server notifications * Tag DataQualityUtils-02-19-00 ... (Long ChangeLog diff - truncated)
Peter Onyisi authored2015-04-24 Peter Onyisi <ponyisi AT cern.ch> * Fix hancool for Run 2 * Tag DataQualityUtils-02-20-00 2015-04-15 Yuriy Ilchenko <yuriy.ilchenko AT cern.ch> * Tag DataQualityUtils-02-19-02 with David's 'have_root_headers' fix 2015-04-15 David Quarrie <David.Quarrie@cern.ch> * cmt/requirements Remove the cmake-specific dictionary creation commands now that 'have_root_headers' is being used 2015-03-22 Peter Onyisi <ponyisi AT cern.ch> * Add panic function to send MQ message * Tag DataQualityUtils-02-19-01 2015-03-20 Peter Onyisi <ponyisi AT cern.ch> * Implement use of h-tag info in Tier-0 TRF * Implement message server notifications * Tag DataQualityUtils-02-19-00 ... (Long ChangeLog diff - truncated)
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
detmaskmod.py 5.74 KiB
# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
import eformat
import operator
detmaskmap = {
'FORWARD_ALPHA': 'ALFA',
'FORWARD_BCM': 'IDBCM',
'FORWARD_LUCID': 'LCD',
'FORWARD_ZDC': 'ZDC',
'LAR_EM_BARREL_A_SIDE': 'EMBA',
'LAR_EM_BARREL_C_SIDE': 'EMBC',
'LAR_EM_ENDCAP_A_SIDE': 'EMECA',
'LAR_EM_ENDCAP_C_SIDE': 'EMECC',
'LAR_FCAL_A_SIDE': 'FCALA',
'LAR_FCAL_C_SIDE': 'FCALC',
'LAR_HAD_ENDCAP_A_SIDE': 'HECA',
'LAR_HAD_ENDCAP_C_SIDE': 'HECC',
'MUON_CSC_ENDCAP_A_SIDE': 'CSCEA',
'MUON_CSC_ENDCAP_C_SIDE': 'CSCEC',
'MUON_MDT_BARREL_A_SIDE': 'MDTBA',
'MUON_MDT_BARREL_C_SIDE': 'MDTBC',
'MUON_MDT_ENDCAP_A_SIDE': 'MDTEA',
'MUON_MDT_ENDCAP_C_SIDE': 'MDTEC',
'MUON_RPC_BARREL_A_SIDE': 'RPCBA',
'MUON_RPC_BARREL_C_SIDE': 'RPCBC',
'MUON_TGC_ENDCAP_A_SIDE': 'TGCEA',
'MUON_TGC_ENDCAP_C_SIDE': 'TGCEC',
'PIXEL_BARREL': 'PIXB',
'PIXEL_B_LAYER': 'PIX0',
'PIXEL_DISK_SIDE': ('PIXEA', 'PIXEC'),
('SCT_BARREL_A_SIDE', 'SCT_BARREL_C_SIDE'): 'SCTB',
'SCT_ENDCAP_A_SIDE': 'SCTEA',
'SCT_ENDCAP_C_SIDE': 'SCTEC',
'TDAQ_CTP': 'L1CTP',
'TILECAL_BARREL_A_SIDE': 'TILBA',
'TILECAL_BARREL_C_SIDE': 'TILBC',
'TILECAL_EXT_A_SIDE': 'TIEBA',
'TILECAL_EXT_C_SIDE': 'TIEBC',
('TRT_BARREL_A_SIDE', 'TRT_BARREL_C_SIDE'): 'TRTB',
'TRT_ENDCAP_A_SIDE': 'TRTEA',
'TRT_ENDCAP_C_SIDE': 'TRTEC',
('TRT_BARREL_A_SIDE', 'TRT_BARREL_C_SIDE', 'TRT_ENDCAP_A_SIDE', 'TRT_ENDCAP_C_SIDE'): 'TRTTR',
}
detmaskmap_defects = {
'FORWARD_ALPHA': 'ALFA_DISABLED',
'FORWARD_LUCID': 'LCD_DISABLED',
'FORWARD_ZDC': 'ZDC_DISABLED',
'LAR_EM_BARREL_A_SIDE': 'LAR_EMBA_DISABLED',
'LAR_EM_BARREL_C_SIDE': 'LAR_EMBC_DISABLED',
'LAR_EM_ENDCAP_A_SIDE': 'LAR_EMECA_DISABLED',
'LAR_EM_ENDCAP_C_SIDE': 'LAR_EMECC_DISABLED',
'LAR_FCAL_A_SIDE': 'LAR_FCALA_DISABLED',
'LAR_FCAL_C_SIDE': 'LAR_FCALC_DISABLED',
'LAR_HAD_ENDCAP_A_SIDE': 'LAR_HECA_DISABLED',
'LAR_HAD_ENDCAP_C_SIDE': 'LAR_HECC_DISABLED',
'MUON_CSC_ENDCAP_A_SIDE': 'MS_CSC_EA_DISABLED',
'MUON_CSC_ENDCAP_C_SIDE': 'MS_CSC_EC_DISABLED',
'MUON_MDT_BARREL_A_SIDE': 'MS_MDT_BA_DISABLED',
'MUON_MDT_BARREL_C_SIDE': 'MS_MDT_BC_DISABLED',
'MUON_MDT_ENDCAP_A_SIDE': 'MS_MDT_EA_DISABLED',
'MUON_MDT_ENDCAP_C_SIDE': 'MS_MDT_EC_DISABLED',
'MUON_RPC_BARREL_A_SIDE': 'MS_RPC_BA_DISABLED',
'MUON_RPC_BARREL_C_SIDE': 'MS_RPC_BC_DISABLED',
'MUON_TGC_ENDCAP_A_SIDE': 'MS_TGC_EA_DISABLED',
'MUON_TGC_ENDCAP_C_SIDE': 'MS_TGC_EC_DISABLED',
'PIXEL_BARREL': 'PIXEL_BARREL_DISABLED',
'PIXEL_B_LAYER': 'PIXEL_LAYER0_DISABLED',
'PIXEL_DISK_SIDE': 'PIXEL_ENDCAPS_DISABLED',
('SCT_BARREL_A_SIDE', 'SCT_BARREL_C_SIDE',
'SCT_ENDCAP_A_SIDE', 'SCT_ENDCAP_C_SIDE'): 'SCT_GLOBAL_DISABLED',
'TILECAL_BARREL_A_SIDE': 'TILE_LBA_DISABLED',
'TILECAL_BARREL_C_SIDE': 'TILE_LBC_DISABLED',
'TILECAL_EXT_A_SIDE': 'TILE_EBA_DISABLED',
'TILECAL_EXT_C_SIDE': 'TILE_EBC_DISABLED',
('TRT_BARREL_A_SIDE', 'TRT_BARREL_C_SIDE',
'TRT_ENDCAP_A_SIDE', 'TRT_ENDCAP_C_SIDE'): 'TRT_DISABLED',
}
def getSubDetectorObj(sdstr):
return getattr(eformat.helper.SubDetector, sdstr)
def decode(mask):
dm = eformat.helper.DetectorMask(mask)
rv = []
for keys, value in detmaskmap.items():
if type(keys) == str:
keys = [keys]
if reduce(operator.or_,
[dm.is_set(getSubDetectorObj(key)) for key in keys]):
flags = value
if type(flags) == str:
flags = [flags]
rv += list(flags)
return sorted(rv)
def decodeBlack(mask, defects=False):
dm = eformat.helper.DetectorMask(mask)
rv = []
dmap = detmaskmap if not defects else detmaskmap_defects
for keys, value in sorted(dmap.items()):
if type(keys) == str:
keys = [keys]
if reduce(operator.and_,
[not dm.is_set(getSubDetectorObj(key)) for key in keys]):
flags = value
if type(flags) == str:
flags = [flags]
rv += list(flags)
return sorted(rv)
def getRunMask(run):
from PyCool import cool, coral
dbSvc = cool.DatabaseSvcFactory.databaseService()
# Necessary to work around COOL database lookup stupidity
db = dbSvc.openDatabase('oracle://ATLAS_COOLPROD;dbname=CONDBR2;schema=ATLAS_COOLONL_TDAQ', True)
iov = run << 32
folder = db.getFolder('/TDAQ/RunCtrl/SOR')
obj = folder.findObject(iov, 0)
mask = obj.payload()['DetectorMask']
db.closeDatabase()
return mask
def getNumLumiBlocks(run):
from DQUtils.db import fetch_iovs
lbs = fetch_iovs('LBLB', (run, 1), (run, 0xFFFFFFFF), database='oracle://ATLAS_COOLPROD;dbname=CONDBR2;schema=ATLAS_COOLONL_TRIGGER')
return len(lbs)