96def get_input(keyword):
97 '''Common getter function to retrieve inputs by keyword'''
98
99 log = get_logger()
100
101
102 import os
103 paths = os.getenv("ArtInFile",None)
104
105 if paths:
106 source = "data" if "data" in paths else "mc"
107 format = None
108 for key,value in {'RAW':'BS', 'HITS':'HITS', 'RDO':'RDO', 'ESD':'ESD', 'AOD':'AOD'}.items():
109 if key in paths:
110 format = value
111 break
112 data_object = {"source":source, "format":format, "paths":[paths]}
113 else:
114 data = load_input_json()
115 if keyword not in data.keys():
116 log.error('Failed to find keyword "%s" in input JSON %s',keyword, input_json)
117 return None
118
119 data_object = data[keyword]
120
121
122
123
124 if data_object["format"] == "BS":
125 grid = False
126 Nfiles = 0
127 import sys
128 with open(sys.argv[0], 'r') as f:
129 for line in f:
130 if "# art-type:" in line:
131 grid = line.split()[2]=="grid"
132 if "# art-input-nfiles:" in line:
133 Nfiles = int(line.split()[2])
134 if grid:
135 data_object["paths"] = [path for path in data_object["paths"] if "/eos/" in path]
136 import subprocess
137 local_files = []
138 for i in range(Nfiles):
139 f = data_object[
"paths"][i].
split(
'/')[-1]
140 if not (os.path.exists(f)) and not os.environ.get('TRIGVALSTEERING_DRY_RUN'):
141 print(f
'copying {data_object["paths"][i]}')
142 result = subprocess.run(['xrdcp',f'root://eosatlas.cern.ch/{data_object["paths"][i]}','.'])
143 if result.returncode != 0:
144 raise Exception("xrdcp failed, please check you have a valid kerberos ticket")
145 local_files.append(f)
146 data_object["paths"] = local_files
147 else:
148 data_object["paths"] = [path for path in data_object["paths"] if "/cvmfs/" in path]
149
150 result = TrigValInput(
151 keyword,
152 data_object["source"],
153 data_object["format"],
154 data_object["paths"]
155 )
156
157 if result.is_valid():
158 return result
159 else:
160 log.error('Failed to create a valid input object')
161 return None
void print(char *figname, TCanvas *c1)
std::vector< std::string > split(const std::string &s, const std::string &t=":")