41def makeContainer(c1):
42
43 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)
44 runs =
set([a[
'run_number']
for a
in x0])
45
46 if len(runs)==0:
47 print ('no run in period'+c1.period+' is listed in GRL:', c1.grl)
48 return
49
50
51 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)
52
53
54 dic1={}
55 for a in x:
56 print (a['run_number'], a['ldn'])
57 try:
58 dic1[a[
'ldn'].
split(
'_')[-1]].append((a[
'run_number'],a[
'ldn']))
59 except KeyError:
60 dic1[a[
'ldn'].
split(
'_')[-1]] = [(a[
'run_number'],a[
'ldn'])]
61
62
63 allTags = sorted(dic1.keys(), key=lambda k: len(dic1[k]),reverse=True)
64 for tag in allTags:
65 print (tag,':', end='')
66 for xx in dic1[tag]:
67 print (xx[0], end='')
69
70
71 t_acceptTags = c1.acceptTags if c1.acceptTags else allTags
72
73
74 ds = []
75 for t in t_acceptTags:
76 for a in dic1.get(t,[]):
77 found = False
78 for d in ds:
79 if d[0] == a[0]:
80 found = True
81 break
82 if not found:
83 ds.append(a)
84
85
86 if len(ds)==0:
87 print ('No dataset in period',c1.period+', exiting...')
88 return
89
90
91 for d in ds:
92 print (d[0],d[1])
93 runs.remove(d[0])
94 print (runs)
95
96
97 if len(runs) !=0:
98 print ('!'*10)
99 print ('MISSING ', ' '.join(runs))
100
101
102 dlist=','.join([d[1] for d in ds])
103 superTag = 'period'+c1.period+','+c1.sTag+ds[0][1][-5:]
104 comments = superTag+','+c1.derivation
105
106 cmd='ami cmd COMAPopulateSuperProductionDataset -rucioRegistration="yes" -creationComment="'+comments+'" -selectionType="run_config" -superTag="'+superTag+'" -containedDatasets="'+dlist+'" -separator="," '
107 print ('command:',cmd)
108
109
110 if c1.outScript:
111 with open(c1.outScript,'a') as f1:
112 f1.write(cmd+'\n')
113 return
114
115
116 if not c1.autoCreate:
117 while True:
118 x = raw_input("create contianer: y[es]/N[o]/e[xit]")
119 if x == 'e' or x=='N': return
120 elif x=='y': break
121
122 call(cmd, shell=True)
123
124
void print(char *figname, TCanvas *c1)
std::vector< std::string > split(const std::string &s, const std::string &t=":")