126def DQPostProcess( outFileName, isIncremental=False ):
127
128 from ROOT import gSystem
129 gSystem.Load('libDataQualityUtils')
130 from ROOT import dqutils
131
133
134 def rpc_create(dummy, dummy2):
135 from DataQualityUtils.createRpcFolders import (createRPCDQMFDB,
136 createRPCConditionDB)
137 createRPCDQMFDB()
138 createRPCConditionDB()
139
140 def mdt_create(dummy, isIncremental):
141
142 if not isIncremental:
143 from DataQualityUtils.createMdtFolders import (createMDTConditionDBDead,
144 createMDTConditionDBNoisy)
145 createMDTConditionDBDead()
146 createMDTConditionDBNoisy()
147
148 def zlumi(fname, isIncremental):
149 if not isIncremental:
150 from DataQualityUtils.doZLumi import go
151 go(fname)
152
153 def newstyle(yamlfile: str) -> Callable[[str, bool], None]:
154 import os.path
155 def newstyle_core(fname, isIncremental):
156 if not isIncremental:
157 import subprocess
158 print(f
'New style postprocessing running for: {yamlfile}')
159 cmdline = ['histgrinder', '--prefix', f'/{rundir(fname)}/', fname, fname, '-c', yamlfile]
160 subprocess.run(cmdline, check=True)
161 newstyle_core.__name__ = os.path.splitext(os.path.basename(yamlfile))[0]
162 return newstyle_core
163
164 def make_newstyle_funcs() -> List[Tuple[Callable[[str, bool], None], List[str]]]:
165 rv = []
166
167 from ._resolve_data_path import resolve_data_path
168 dpath = resolve_data_path("DataQualityUtils")
169 if dpath is None:
170 print(
"Unable to resolve DataQualityUtils data path, not running new-style postprocessing")
171 return rv
172 import glob, os.path
173 inputs = glob.glob(os.path.join(dpath,'postprocessing/*.yaml'))
174 for input in inputs:
175 rv.append((newstyle(input), ['ponyisi@utexas.edu']))
176 return rv
177
178 funclist = [
179 (mf.fitMergedFile_IDPerfMonManager,
180 ['weina.ji@cern.ch', 'ana.ovcharova@cern.ch']),
181 (mf.fitMergedFile_DiMuMonManager,
182 ['ana.ovcharova@cern.ch']),
183 (mf.fitMergedFile_IDAlignMonManager,
184 ['John.Alison@cern.ch', 'anthony.morley@cern.ch']),
185 (mf.pv_PrimaryVertexMonitoring_calcResoAndEfficiency,
186 ['Andreas.Wildauer@cern.ch']),
187 (mf.VxMon_move,
188 ['federico.meloni@cern.ch']),
189 (rpc_create,
190 ['michele.bianco@le.infn.it', 'monica.verducci@cern.ch']),
191 (mf.RPCPostProcess,
192 ['michele.bianco@le.infn.it', 'monica.verducci@cern.ch']),
193 (mdt_create,
194 ['john.stakely.keller@cern.ch', 'monica.verducci@cern.ch']),
195 (mf.TGCPostProcess,
196 ['lyuan@ihep.ac.cn', 'kingmgl@stu.kobe-u.ac.jp']),
197 (mf.MDTvsTGCPostProcess,
198 ['lyuan@ihep.ac.cn', 'kingmgl@stu.kobe-u.ac.jp']),
199 (mf.HLTMuonPostProcess,
200 ['lyuan@ihep.ac.cn', 'kingmgl@stu.kobe-u.ac.jp', 'yamazaki@phys.sci.kobe-u.ac.jp']),
201 (mf.HLTEgammaPostProcess,
202 ['yan.jie.schnellbach@cern.ch', 'alessandro.tricoli@cern.ch']),
203 (mf.HLTTauPostProcess,
204 ['Cristobal.Cuenca@cern.ch', 'Geng-Yuan.Jeng@cern.ch', 'Giovanna.Cottin@cern.ch']),
205 (mf.HLTMETPostProcess,
206 ['venkat.kaushik@cern.ch']),
207 (mf.HLTCaloPostProcess,
208 ['gareth.brown@cern.ch']),
209 (mf.HLTJetPostProcess,
210 ['venkat.kaushik@cern.ch']),
211 (mf.BJetTaggingPostProcess,
212 ['m.neumann@cern.ch']),
213 (mf.L1CaloPostProcess,
214 ['ivana.hristova@cern.ch', 'pjwf@hep.ph.bham.ac.uk']),
215 (mf.PixelPostProcess,
216 ['daiki.yamaguchi@cern.ch']),
217 (mf.MuonTrackPostProcess,
218 ['baojia.tong@cern.ch', 'alexander.tuna@cern.ch']),
219 (zlumi,
220 ['ponyisi@utexas.edu']),
221 ]
222
223 funclist += make_newstyle_funcs()
224
225
226 isTesting = bool(os.environ.get('DQ_POSTPROCESS_ERROR_ON_FAILURE', False))
227
228
229 def go_all(fname, isIncremental):
230 for funcinfo in funclist:
231 funcinfo[0](fname, isIncremental)
232
233 success = _ProtectPostProcessing( (go_all, []), outFileName, isIncremental )
234
235 if not success:
236 if isTesting:
237 sys.exit(1)
238 else:
239 for funcinfo in funclist:
240 _ProtectPostProcessing( funcinfo, outFileName, isIncremental )