19 from __future__
import print_function
22 DQChannelDict = {
'PIXB':101,
'PIX0':102,
'PIXEA':104,
'PIXEC':105,
23 'SCTB':111,
'SCTEA':114,
'SCTEC':115,
24 'TRTB':121,
'TRTEA':124,
'TRTEC':125,
'TRTTR':126,
30 'EMBA':202,
'EMBC':203,
'EMECA':204,
'EMECC':205,
31 'HECA':214,
'HECC':215,
32 'FCALA':224,
'FCALC':225,
34 'TILBA':232,
'TILBC':233,
'TIEBA':234,
'TIEBC':235,
35 'MBTSA':244,
'MBTSC':245,
36 'CALBA':251,
'CALEA':254,
'CALEC':255,
37 'MDTBA':302,
'MDTBC':303,
'MDTEA':304,
'MDTEC':305,
38 'RPCBA':312,
'RPCBC':313,
39 'TGCEA':324,
'TGCEC':325,
40 'CSCEA':334,
'CSCEC':335,
41 'LCDA':353,
'LCDC':354,
43 'L1CAL':401,
'L1MUB':402,
'L1MUE':403,
'L1CTP':404,
45 'TRBJT':421,
'TRBPH':422,
'TRCOS':423,
'TRELE':424,
46 'TRGAM':425,
'TRJET':426,
'TRMET':427,
'TRMBI':428,
47 'TRMUO':429,
'TRTAU':430,
'TRIDT':431,
48 'LUMI':450,
'LUMIONL':451,
51 'ATLGL':480,
'ATLSOL':481,
'ATLTOR':482,
52 'EIDB':501,
'EIDCR':502,
'EIDE':503,
53 'PIDB':505,
'PIDCR':506,
'PIDE':507,
54 'EIDF':508,
'EIDSOFT':509,
55 'MSTACO':510,
'MMUIDCB':511,
'MMUIDVX':512,
56 'MMUGIRL':513,
'MMUBOY':514,
'MMUIDSA':515,
57 'MMUTAG':516,
'MMTIMO':517,
'MCMUTAG':518,
59 'JETB':521,
'JETEA':524,
'JETEC':525,
60 'JETFA':526,
'JETFC':527,
61 'METCALO':531,
'METMUON':532,
62 'BTGLIFE':541,
'BTGSOFTE':544,
'BTGSOFTM':545,
63 'TAUB':551,
'TAUCR':552,
'TAUE':553}
65 DQSuperGroupsDict = {1 : [
'Inner detector', [
'PIXB',
'PIX0',
'PIXEA',
'PIXEC',
'SCTB',
'SCTEA',
'SCTEC',
'TRTB',
'TRTEA',
'TRTEC',
'TRTTR',
66 'IDGL',
'IDAL',
'IDBS',
'IDVX']],
67 2 : [
'Calorimeter', [
'EMBA',
'EMBC',
'EMECA',
'EMECC',
'HECA',
'HECC',
'FCALA',
'FCALC',
68 'TIGB',
'TILBA',
'TILBC',
'TIEBA',
'TIEBC',
'CALBA',
'CALEA',
'CALEC']],
69 3 : [
'Muon systems', [
'MDTBA',
'MDTBC',
'MDTEA',
'MDTEC',
'RPCBA',
'RPCBC',
'TGCEA',
'TGCEC',
'CSCEA',
'CSCEC']],
70 4 : [
'Forward detectors and luminosity', [
'MBTSA',
'MBTSC',
'IDBCM',
'LCDA',
'LCDC',
'ALFA',
'ZDC',
'LUMI']],
71 5 : [
'Global, Magnets, DAQ and Trigger',[
'ATLGL',
'ATLSOL',
'ATLTOR',
'RUNCLT',
'RCOPS',
72 'L1CAL',
'L1MUB',
'L1MUE',
'L1CTP',
73 'TRCAL',
'TRBJT',
'TRBPH',
'TRCOS',
'TRELE',
'TRGAM',
'TRJET',
'TRMET',
'TRMBI',
'TRMUO',
'TRTAU',
'TRIDT']],
74 6 : [
'Combined performance', [
'EIDB',
'EIDCR',
'EIDE',
75 'PIDB',
'PIDCR',
'PIDE',
77 'MSTACO',
'MMUIDCB',
'MMUIDVX',
78 'MMUGIRL',
'MMUBOY',
'MMUIDSA',
79 'MMUTAG',
'MMTIMO',
'MCMUTAG',
81 'JETB',
'JETEA',
'JETEC',
'JETFA',
'JETFC',
83 'BTGLIFE',
'BTGSOFTE',
'BTGSOFTM',
84 'TAUB',
'TAUCR',
'TAUE']]}
86 DQGroupDict = { 100:
'PIX',
121 dqitems = DQChannelDict.items()
122 dqitems = [(v, k)
for (k, v)
in dqitems]
129 name = name[name.index(
':')+1:]
133 return DQChannelDict[name]
137 name = (name.split(
':')[-1].
split(
'#')[0]).
upper()
138 if name.startswith(
"CP_")
or name.startswith(
"PHYS_")
or name.startswith(
"TRIG_")
or name.startswith(
"LUM_")
or name.startswith(
"GLOBAL_"):
140 return name
in DQChannelDict
144 0:
'ATLAS_PREFERRED',
146 101:
'LUCID_ZEROS_OR',
147 102:
'LUCID_ZEROS_AND',
148 103:
'LUCID_HITS_OR',
149 104:
'LUCID_HITS_AND',
151 201:
'BCM_H_ZEROS_AND',
152 202:
'BCM_H_EVENTS_AND',
153 203:
'BCM_H_EVENTS_XORA',
154 204:
'BCM_H_EVENTS_XORC',
155 205:
'BCM_V_ZEROS_AND',
156 206:
'BCM_V_EVENTS_AND',
157 207:
'BCM_V_EVENTS_XORA',
158 208:
'BCM_V_EVENTS_XORC',
159 301:
'MBTS_ZEROS_AND',
160 302:
'MBTS_ZEROS_OR',
161 303:
'MBTS_HITS_AND',
166 901:
'OffLumi_LArTime_Events',
167 998:
'OflLumi_Fake0',
188 dName = [
'unknown']*54
189 dName[0] =
"Pix Barrel"
190 dName[1] =
"Pix Disks"
191 dName[2] =
"Pix B-Layer"
201 dName[12] =
"LAr EMBA"
202 dName[13] =
"LAr EMBC"
203 dName[14] =
"LAr EMECA"
204 dName[15] =
"LAr EMECC"
205 dName[16] =
"LAr HECA"
206 dName[17] =
"LAr HECC"
207 dName[18] =
"LAr FCALA"
208 dName[19] =
"LAr FCALC"
209 dName[20] =
"Tile BA"
210 dName[21] =
"Tile BC"
211 dName[22] =
"Tile EA"
212 dName[23] =
"Tile EC"
223 dName[34] =
"L1Calo preprocessor"
224 dName[35] =
"L1Calo cluster DAQ"
225 dName[36] =
"L1Calo cluster RoI"
226 dName[37] =
"L1Calo Jet/E DAQ"
227 dName[38] =
"L1Calo Jet/E RoI"
239 dName[50] =
"TRT_ANCILLARY_CRATE"
240 dName[51] =
"TILECAL_LASER_CRATE"
241 dName[52] =
"MUON_ANCILLARY_CRATE"
242 dName[53] =
"TDAQ_BEAM_CRATE"
245 notInAll = [
'CSC',
'L2SV',
'SFI',
'SFO',
'LVL2',
'EF',
'Lucid',
'ZDC',
'Alfa',
246 'TRT_ANCILLARY_CRATE',
'TILECAL_LASER_CRATE',
'MUON_ANCILLARY_CRATE',
'TDAQ_BEAM_CRATE' ]
248 notPartOfAllRequirement = [
'']*54
249 for i
in range(0,len(dName)):
252 notPartOfAllRequirement[i] =
' NotInAll'
254 vetoedbits = [3, 50, 51, 52, 53]
256 return (dName, notPartOfAllRequirement, vetoedbits)
268 dName = [
'unknown']*64
269 dName[0] =
"Pix Barrel"
270 dName[1] =
"Pix Disks"
271 dName[2] =
"Pix B-Layer"
281 dName[12] =
"LAr EMBA"
282 dName[13] =
"LAr EMBC"
283 dName[14] =
"LAr EMECA"
284 dName[15] =
"LAr EMECC"
285 dName[16] =
"LAr HECA"
286 dName[17] =
"LAr HECC"
287 dName[18] =
"LAr FCALA"
288 dName[19] =
"LAr FCALC"
289 dName[20] =
"Tile BA"
290 dName[21] =
"Tile BC"
291 dName[22] =
"Tile EA"
292 dName[23] =
"Tile EC"
303 dName[34] =
"L1Calo preprocessor"
304 dName[35] =
"L1Calo cluster DAQ"
305 dName[36] =
"L1Calo cluster RoI"
306 dName[37] =
"L1Calo Jet/E DAQ"
307 dName[38] =
"L1Calo Jet/E RoI"
319 dName[50] =
"TRT_ANCILLARY_CRATE"
320 dName[51] =
"TILECAL_LASER_CRATE"
321 dName[52] =
"MUON_ANCILLARY_CRATE"
322 dName[53] =
"TDAQ_BEAM_CRATE"
324 dName[55] =
"Offline"
326 dName[57] =
"L1Calo DIG"
327 dName[58] =
"L1Calo DAQ"
328 dName[59] =
"L1Calo ROI"
329 dName[60] =
"MMEGA EA"
330 dName[61] =
"MMEGA EC"
331 dName[62] =
"Pix IBL"
332 dName[63] =
"Pix DBM"
335 notInAll = [
'L2SV',
'SFI',
'SFO',
'LVL2',
'Lucid',
'ZDC',
'Alfa',
336 'TRT_ANCILLARY_CRATE',
'TILECAL_LASER_CRATE',
'MUON_ANCILLARY_CRATE',
'TDAQ_BEAM_CRATE' ]
338 notPartOfAllRequirement = map(
lambda x:
' NotInAll' if x
in notInAll
else '', dName)
341 vetoedbits = [3, 41, 42, 44, 50, 51, 52, 53, 55, 57, 58, 59]
343 return (dName, notPartOfAllRequirement, vetoedbits)
361 notInAll = [
'L2SV',
'SFI',
'SFO',
'LVL2',
'Lucid',
'ZDC',
'Alfa',
362 'TRT_ANCILLARY_CRATE',
'TILECAL_LASER_CRATE',
'MUON_ANCILLARY_CRATE',
'TDAQ_BEAM_CRATE' ]
363 notInAll += [
"CSC EA",
"CSC EC",
"FTK",
"Pix DBM" ]
365 notPartOfAllRequirement = map(
lambda x:
' NotInAll' if x
in notInAll
else '', dName)
368 vetoedbits = [3, 32, 33, 41, 42, 44, 50, 51, 52, 53, 54, 55, 57, 58, 59, 63]
370 return (dName, notPartOfAllRequirement, vetoedbits)
377 returns ( (string) listOfDetectors, (bool) inclusion )
378 if smart is set to True, then the listOfDetectors might be inversed and excluded ones are shown
386 for i
in range( len(dName) ):
387 if i
not in vetoedbits
and (detmask & (1 << i)):
388 res += dName[i] +
", "
395 if smart
and ic > 30:
399 for i
in range( len(dName) ):
400 if i
not in vetoedbits
and not (detmask & (1 << i)):
401 res += dName[i] +
", "
407 return (res, inclusion)
410 def splitAt(line, splitstring=',', splitsize=80):
412 while len( res[-1] ):
413 linebreak = res[-1].
find( splitstring, splitsize)
416 res[-1:] = [ res[-1][:linebreak], res[-1][linebreak+len(splitstring):] ]
422 takes an decimal or hex string (hex string must start with 0x) and returns an HTML element
425 raise RuntimeError(
"DetectorMask must be a string")
427 if mask.startswith(
'0x'):
428 mask =
int(mask[2:],16)
434 col =
'#106734' if smart
else '#000000'
436 res =
'<b>Detector mask = %s (%s), corresponding to the systems:</b><br><font color="%s">' % (mask,hex(mask).rstrip(
'L'),col)
438 res =
'<b>Detector mask = %i (%s).<br> <font color="#aa0000">The following systems are NOT included:</b><br>' % (mask,hex(mask).rstrip(
'L'))
447 if 'runtype' in type.lower():
448 return {0:
'RawData', 1:
'RawDataResult', 2:
'Result'}
449 elif 'format' in type.lower():
450 return {0:
'Transparent', 1:
'Format 1', 2:
'Format 2'}
452 print (
'ERROR in LArconfig: unknown type %s' % type)
457 if __name__==
"__main__":
460 mask =
"0x1fffffffffff7"
464 mask =
"0x1e5103697c0ffffff7"
468 mask =
"0x1e5103697c0ffffff7"