16 import pyAMI.atlas.api
as AtlasAPI
17 from subprocess
import call
19 client = pyAMI.client.Client(
28 for i
in grl.split(
','):
29 import xml.etree.ElementTree
30 listGRL += [atype.text.split(
',')
for atype
in xml.etree.ElementTree.parse(grl).getroot().
find(
'NamedLumiRange').findall(
'Metadata')
if atype.get(
'Name') ==
'RunList']
34 def __init__(self, project, derivation, period, acceptTags, sTag, autoCreate=False, grl=None):
46 x0 = AtlasAPI.list_datasets(client, patterns = [c1.project+
'.%.physics_Main.merge.AOD%'], fields = [
'run_number',
'ldn',
'events',
'total_size'], order=
None, limit=
None, show_archived=
False, grl=c1.grl, data_period=c1.period)
47 runs =
set([a[
'run_number']
for a
in x0])
50 print (
'no run in period'+c1.period+
' is listed in GRL:', c1.grl)
54 x = AtlasAPI.list_datasets(client, patterns = [c1.project+
'.%.physics_Main.merg%'+c1.derivation+
'%'], fields = [
'run_number',
'ldn',
'events',
'total_size'], order=
None, limit=
None, show_archived=
False, grl=c1.grl, data_period=c1.period)
59 print (a[
'run_number'], a[
'ldn'])
61 dic1[a[
'ldn'].
split(
'_')[-1]].
append((a[
'run_number'],a[
'ldn']))
63 dic1[a[
'ldn'].
split(
'_')[-1]] = [(a[
'run_number'],a[
'ldn'])]
66 allTags =
sorted(dic1.keys(), key=
lambda k: len(dic1[k]),reverse=
True)
68 print (tag,
':', end=
'')
74 t_acceptTags = c1.acceptTags
if c1.acceptTags
else allTags
78 for t
in t_acceptTags:
79 for a
in dic1.get(t,[]):
90 print (
'No dataset in period',c1.period+
', exiting...')
102 print (
'MISSING ',
' '.
join(runs))
105 dlist=
','.
join([d[1]
for d
in ds])
106 superTag =
'period'+c1.period+
','+c1.sTag+ds[0][1][-5:]
107 comments = superTag+
','+c1.derivation
109 cmd=
'ami cmd COMAPopulateSuperProductionDataset -rucioRegistration="yes" -creationComment="'+comments+
'" -selectionType="run_config" -superTag="'+superTag+
'" -containedDatasets="'+dlist+
'" -separator="," '
110 print (
'command:',cmd)
114 with open(c1.outScript,
'a')
as f1:
119 if not c1.autoCreate:
121 x = raw_input(
"create contianer: y[es]/N[o]/e[xit]")
122 if x ==
'e' or x==
'N':
return
125 call(cmd, shell=
True)
129 grl15 =
'/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/data15_13TeV/20160720/physics_25ns_20.7.xml'
130 grl16 =
'/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/data16_13TeV/20160916/physics_25ns_20.7_ignoreToroidStatus.xml'
131 c1 =
config1(
'data16_13TeV',
'MUON0',
'A', sTag=
'grp16_v01_', acceptTags=[
'p2769',
'p2689',
'p2667'], autoCreate=
False, grl=grl16)
132 c1.outScript =
'createIt_15.sh'
136 periods = AtlasAPI.list_dataperiods(client, 2, 15)
137 c1.project =
'data15_13TeV'
139 c1.acceptTags=[
'p2667']
142 pds =[p[
'period']
for p
in periods
if p[
'status']==
'frozen']
147 for d
in [
'MUON0',
'MUON1',
'MUON2',
'MUON3']:
154 grl15 =
'/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/data15_13TeV/20160720/physics_25ns_20.7.xml'
155 c1 =
config1(
'data15_13TeV',
'MUON0',
'A', sTag=
'grp15_v01_', acceptTags=
None, autoCreate=
False, grl=
None)
156 c1.outScript =
'createIt_15v2.sh'
158 periods = AtlasAPI.list_dataperiods(client, 2, 15)
159 c1.project =
'data15_13TeV'
161 c1.acceptTags=[
'p2889']
164 pds =[p[
'period']
for p
in periods
if p[
'status']==
'frozen']
169 for d
in [
'MUON0',
'MUON1',
'MUON2',
'MUON3']:
176 grl16 =
'/cvmfs/atlas.cern.ch/repo/sw/database/GroupData/GoodRunsLists/data16_13TeV/20161101/physics_25ns_20.7_ignoreToroidStatus.xml'
177 c1 =
config1(
'data16_13TeV',
'MUON0',
'A', sTag=
'grp16_v01_', acceptTags=[
'p2769',
'p2689',
'p2667'], autoCreate=
False, grl=grl16)
178 c1.outScript =
'createIt_16Later2.sh'
180 periods = AtlasAPI.list_dataperiods(client, 2, 16)
182 c1.project =
'data16_13TeV'
190 pds = [
'J',
'K',
'L']
193 for d
in [
'MUON0',
'MUON1',
'MUON2',
'MUON3']:
198 if __name__ ==
'__main__':