From 1e70ee38a25d0203664b3f2acf9a977dfdeef8dc Mon Sep 17 00:00:00 2001 From: iarspider Date: Thu, 1 Apr 2021 17:06:03 +0200 Subject: New version of OpenLoops (#22240) New version of OpenLoops; new list of processes; update lcg process collection Add script to scrape openloops website for process list --- .../builtin/packages/openloops/get-process-list.py | 47 ++++++ .../repos/builtin/packages/openloops/package.py | 89 +++++------ .../repos/builtin/packages/openloops/sft3.coll | 171 +++++++++++++++++++++ 3 files changed, 264 insertions(+), 43 deletions(-) create mode 100644 var/spack/repos/builtin/packages/openloops/get-process-list.py create mode 100644 var/spack/repos/builtin/packages/openloops/sft3.coll (limited to 'var') diff --git a/var/spack/repos/builtin/packages/openloops/get-process-list.py b/var/spack/repos/builtin/packages/openloops/get-process-list.py new file mode 100644 index 0000000000..9876e5888f --- /dev/null +++ b/var/spack/repos/builtin/packages/openloops/get-process-list.py @@ -0,0 +1,47 @@ +from html.parser import HTMLParser +import re +import urllib.request + + +class my_html_parser(HTMLParser): + def error(self, message): + pass + + def __init__(self): + super().__init__() + self.state = 0 + self.processes = [] + + def handle_starttag(self, tag, attrs): + if tag == 'tr' and self.state == 2: + for att in attrs: + if att[0] == 'id': + return + self.state = 3 + if tag == 'td' and self.state == 3: + self.state = 4 + pass + + def handle_endtag(self, tag): + if tag == 'table' and self.state == 1: + self.state = 2 + pass + + def handle_data(self, data): + # print("Encountered some data :", data) + if data == 'Categories' and self.state == 0: + self.state = 1 + + if self.state == 4: + if re.findall('[^a-z0-9_]', data): + return + self.processes.append(data) + self.state = 2 + + +if __name__ == '__main__': + url = "https://openloops.hepforge.org/process_library.php?repo=public" + data = urllib.request.urlopen(url).read() + parser = my_html_parser() + parser.feed(data.decode('UTF8')) + print(parser.processes) diff --git a/var/spack/repos/builtin/packages/openloops/package.py b/var/spack/repos/builtin/packages/openloops/package.py index d1523a3272..1ff72c6088 100644 --- a/var/spack/repos/builtin/packages/openloops/package.py +++ b/var/spack/repos/builtin/packages/openloops/package.py @@ -15,51 +15,52 @@ class Openloops(Package): at NLO QCD and NLO EW. """ homepage = "https://openloops.hepforge.org/" - url = "https://openloops.hepforge.org/downloads?f=OpenLoops-2.1.1.tar.gz" + url = "https://openloops.hepforge.org/downloads?f=OpenLoops-2.1.1.tar.gz" tags = ['hep'] + version('2.1.2', sha256='f52575cae3d70b6b51a5d423e9cd0e076ed5961afcc015eec00987e64529a6ae') version('2.1.1', sha256='f1c47ece812227eab584e2c695fef74423d2f212873f762b8658f728685bcb91') - all_processes = ( - "tbln", "tbln_ew", "tbqq", "tbw", "pptttt", "pptttt_ew", "pptt", - "pptt_ew", "ppttbb", "ppttj", "ppttj_ew", "ppttjj", - "pptaj", "pptajj", "pptllj", "pptlljj", "pptln", "pptw", "pptwj", - "pptzj", "pptzjj", "ppthj", "ppthjj", "pptj", - "pptjj", "ppjj", "ppjj_ew", "ppjjj", "ppjjj_ew", "ppjjj_nf5", "ppjjjj", - "pplllvvv_ew", "ppatt", "ppatt_ew", - "ppattj", "pplltt", "pplltt_ew", "ppllttj", "ppllttj_ew", "pplntt", - "pplnttj", "ppwtt", "ppwtt_ew", "ppwttj", - "ppwttj_ew", "ppztt", "ppztt_ew", "ppzttj", "ppaatt", "ppwwtt", - "ppzatt", "ppzztt", "ppvvvv", "ppaaaj2", "ppllaa", - "ppllaaj", "pplllla", "ppvvv", "ppvvv2", "ppvvv_ew", "ppvvvj", - "ppaajj", "ppaajj2", "ppaajjj", "pplla", "pplla2", - "pplla_ew", "ppllaj", "ppllaj2", "ppllaj_ew", "ppllaj_nf5", "ppllajj", - "ppllll", "ppllll2", "ppllll2_nf5", - "ppllll2_onlyh", "ppllll_ew", "ppllllj", "ppllllj2", "ppllllj2_nf5", - "ppllllj2_nf5_notridr", "ppllllj2_nf5_sr", - "ppllllj2_onlyh", "ppllnnjj_ew", "ppllnnjj_vbs", "pplnajj", "ppvv", - "ppvv2", "ppvv_ew", "ppvvj", "ppvvj2", - "ppvvj_ew", "ppwajj", "ppwwjj", "ppzajj", "ppzwj_ew", "ppzwjj", - "ppzzjj", "ppajj", "ppajj2", "ppajj_ew", "ppajjj", - "ppllj", "ppllj2", "ppllj_ew", "ppllj_nf5", "pplljj", "pplljj_ew", - "pplljjj", "pplnj_ckm", "pplnjj", "pplnjj_ckm", - "pplnjj_ew", "pplnjjj", "ppnnjj_ew", "ppnnjjj", "ppvj", "ppvj2", - "ppvj_ew", "ppwj_ckm", "ppwjj", "ppwjj_ckm", - "ppwjj_ew", "ppwjjj", "ppzjj", "ppzjj_ew", "ppzjjj", "pphtt", - "pphtt_ew", "pphttj", "pphlltt", "pphll", "pphll2", - "pphll_ew", "pphllj", "pphllj2", "pphllj_ew", "pphlljj", "pphlljj_top", - "pphlnj_ckm", "pphlnjj", "pphv", "pphv_ew", - "pphwjj", "pphz2", "pphzj2", "pphzjj", "pphhtt", "pphhv", "pphhh2", - "heftpphh", "heftpphhj", "heftpphhjj", "pphh2", - "pphhj2", "pphhjj2", "pphhjj_vbf", "bbhj", "heftpphj", "heftpphjj", - "heftpphjjj", "pphbb", "pphbbj", "pphj2", - "pphjj2", "pphjj_vbf", "pphjj_vbf_ew", "pphjjj2", "eetttt", "eettttj", - "eellllbb", "eett", "eett_ew", "eettj", - "eettjj", "eevtt", "eevttj", "eevttjj", "eevvtt", "eevvttj", - "eellll_ew", "eevv_ew", "eevvjj", "eell_ew", "eevjj", - "eehtt", "eehttj", "eehll_ew", "eehvtt", "eehhtt", "heftppllj", - "heftpplljj", "heftpplljjj") + all_processes = ['tbln', 'tbln_ew', 'tbqq', 'tbw', 'pptttt', 'pptttt_ew', + 'pptt', 'pptt_ew', 'ppttbb', 'ppttj', 'ppttj_ew', 'ppttjj', + 'pptaj', 'pptajj', 'pptllj', 'pptlljj', 'pptln', 'pptw', + 'pptwj', 'pptzj', 'pptzjj', 'ppthj', 'ppthjj', 'pptj', + 'pptjj', 'ppjj', 'ppjj_ew', 'ppjjj', 'ppjjj_ew', 'ppjjj_nf5', + 'ppjjjj', 'pplllvvv_ew', 'ppatt', 'ppatt_ew', 'ppattj', + 'pplltt', 'pplltt_ew', 'ppllttj', 'ppllttj_ew', 'pplntt', + 'pplnttj', 'ppwtt', 'ppwtt_ew', 'ppwttj', 'ppwttj_ew', + 'ppztt', 'ppztt_ew', 'ppzttj', 'ppaatt', 'ppwwtt', 'ppzatt', + 'ppzztt', 'ppvvvv', 'ppaaaj2', 'ppllaa', 'ppllaaj', + 'pplllla', 'ppvvv', 'ppvvv2', 'ppvvv_ew', 'ppvvvj', + 'ppaajj', 'ppaajj2', 'ppaajjj', 'pplla', 'pplla2', + 'pplla_ew', 'ppllaj', 'ppllaj2', 'ppllaj_ew', 'ppllaj_nf5', + 'ppllajj', 'ppllll', 'ppllll2', 'ppllll2_nf5', + 'ppllll2_onlyh', 'ppllll_ew', 'ppllllbb', 'ppllllj', + 'ppllllj2', 'ppllllj2_nf5', 'ppllllj2_nf5_notridr', + 'ppllllj2_nf5_sr', 'ppllllj2_onlyh', 'ppllnnjj_ew', + 'ppllnnjj_vbs', 'pplnaj_ckm', 'pplnajj', 'pplnajj_ckm', + 'ppvv', 'ppvv2', 'ppvv_ew', 'ppvvj', 'ppvvj2', 'ppvvj_ew', + 'ppwajj', 'ppwwjj', 'ppzajj', 'ppzwj_ew', 'ppzwjj', 'ppzzjj', + 'ppajj', 'ppajj2', 'ppajj_ew', 'ppajjj', 'ppllj', 'ppllj2', + 'ppllj_ew', 'ppllj_nf5', 'pplljj', 'pplljj_ew', 'pplljjj', + 'pplnj_ckm', 'pplnjj', 'pplnjj_ckm', 'pplnjj_ew', 'pplnjjj', + 'ppnnjj_ew', 'ppnnjjj', 'ppvj', 'ppvj2', 'ppvj_ew', + 'ppwj_ckm', 'ppwjj', 'ppwjj_ckm', 'ppwjj_ew', 'ppwjjj', + 'ppzjj', 'ppzjj_ew', 'ppzjjj', 'pphtt', 'pphtt_ew', 'pphttj', + 'pphlltt', 'pphll', 'pphll2', 'pphll_ew', 'pphllj', + 'pphllj2', 'pphllj_ew', 'pphlljj', 'pphlljj_top', + 'pphlnj_ckm', 'pphlnjj', 'pphv', 'pphv_ew', 'pphwjj', + 'pphz2', 'pphzj2', 'pphzjj', 'pphhtt', 'pphhv', 'pphhh2', + 'heftpphh', 'heftpphhj', 'heftpphhjj', 'pphh2', 'pphhj2', + 'pphhjj2', 'pphhjj_vbf', 'bbhj', 'heftpphj', 'heftpphjj', + 'heftpphjjj', 'pphbb', 'pphbbj', 'pphj2', 'pphjj2', + 'pphjj_vbf', 'pphjj_vbf_ew', 'pphjjj2', 'eetttt', 'eettttj', + 'eellllbb', 'eett', 'eett_ew', 'eettj', 'eettjj', 'eevtt', + 'eevttj', 'eevttjj', 'eevvtt', 'eevvttj', 'eellll_ew', + 'eevv_ew', 'eevvjj', 'eell_ew', 'eevjj', 'eehtt', 'eehttj', + 'eehll_ew', 'eehvtt', 'eehhtt', 'heftppllj', 'heftpplljj', + 'heftpplljjj'] variant('compile_extra', default=False, description='Compile real radiation tree amplitudes') @@ -69,7 +70,7 @@ class Openloops(Package): values=disjoint_sets(('all.coll',), ('lhc.coll',), ('lcg.coll',), all_processes).with_default('lhc.coll')) - variant('num_jobs', description='Number of parallel jobs to run. ' + + variant('num_jobs', description='Number of parallel jobs to run. ' + 'Set to 1 if compiling a large number' + 'of processes (e.g. lcg.coll)', default=0) depends_on('python', type=("build", "run")) @@ -97,7 +98,7 @@ class Openloops(Package): f.write('fortran_compiler = {0}\n'.format(env['SPACK_FC'])) if self.spec.satisfies('@1.3.1') and not is_intel: f.write('gfortran_f_flags = -ffree-line-length-none\n') - if self.spec.satisfies('@2.1.1') and not is_intel: + if self.spec.satisfies('@2.1.1:') and not is_intel: f.write('gfortran_f_flags = -ffree-line-length-none ' + '-fdollar-ok ') if self.spec.target.family == 'aarch64': @@ -107,8 +108,10 @@ class Openloops(Package): if self.spec.satisfies('@:1.999.999 processes=lcg.coll'): copy(join_path(os.path.dirname(__file__), 'sft1.coll'), 'lcg.coll') - elif self.spec.satisfies('@2:2.999.999 processes=lcg.coll'): + elif self.spec.satisfies('@2:2.1.2 processes=lcg.coll'): copy(join_path(os.path.dirname(__file__), 'sft2.coll'), 'lcg.coll') + elif self.spec.satisfies('@2.1.2:2.99.99 processes=lcg.coll'): + copy(join_path(os.path.dirname(__file__), 'sft3.coll'), 'lcg.coll') def build(self, spec, prefix): scons = Executable('./scons') diff --git a/var/spack/repos/builtin/packages/openloops/sft3.coll b/var/spack/repos/builtin/packages/openloops/sft3.coll new file mode 100644 index 0000000000..a4d7715534 --- /dev/null +++ b/var/spack/repos/builtin/packages/openloops/sft3.coll @@ -0,0 +1,171 @@ +tbln +tbln_ew +tbqq +tbw +pptttt +pptttt_ew +pptt +pptt_ew +ppttbb +ppttj +ppttj_ew +ppttjj +pptaj +pptajj +pptllj +pptlljj +pptln +pptw +pptwj +pptzj +pptzjj +ppthj +ppthjj +pptj +pptjj +ppjj +ppjj_ew +ppjjj +ppjjj_ew +ppjjj_nf5 +ppjjjj +pplllvvv_ew +ppatt +ppatt_ew +ppattj +pplltt +pplltt_ew +ppllttj +ppllttj_ew +pplntt +pplnttj +ppwtt +ppwtt_ew +ppwttj +ppwttj_ew +ppztt +ppztt_ew +ppzttj +ppaatt +ppwwtt +ppzatt +ppzztt +ppvvvv +ppaaaj2 +ppllaa +ppllaaj +pplllla +ppvvv +ppvvv2 +ppvvv_ew +ppvvvj +ppaajj +ppaajj2 +ppaajjj +pplla +pplla2 +pplla_ew +ppllaj +ppllaj2 +ppllaj_ew +ppllaj_nf5 +ppllajj +ppllll +ppllll2 +ppllll2_nf5 +ppllll2_onlyh +ppllll_ew +ppllllbb +ppllllj +ppllllj2 +ppllllj2_nf5 +ppllllj2_nf5_notridr +ppllllj2_nf5_sr +ppllllj2_onlyh +ppllnnjj_ew +ppllnnjj_vbs +pplnaj_ckm +pplnajj +pplnajj_ckm +ppvv +ppvv2 +ppvv_ew +ppvvj +ppvvj2 +ppvvj_ew +ppwajj +ppwwjj +ppzajj +ppzwj_ew +ppzwjj +ppzzjj +ppajj +ppajj2 +ppajj_ew +ppajjj +ppllj +ppllj2 +ppllj_ew +ppllj_nf5 +pplljj +pplljj_ew +pplljjj +pplnj_ckm +pplnjj +pplnjj_ckm +pplnjj_ew +pplnjjj +ppnnjj_ew +ppnnjjj +ppvj +ppvj2 +ppvj_ew +ppwj_ckm +ppwjj +ppwjj_ckm +ppwjj_ew +ppwjjj +ppzjj +ppzjj_ew +ppzjjj +pphtt +pphtt_ew +pphttj +pphlltt +pphll +pphll2 +pphll_ew +pphllj +pphllj2 +pphllj_ew +pphlljj +pphlljj_top +pphlnj_ckm +pphlnjj +pphv +pphv_ew +pphwjj +pphz2 +pphzj2 +pphzjj +pphhtt +pphhv +pphhh2 +heftpphh +heftpphhj +heftpphhjj +pphh2 +pphhj2 +pphhjj2 +pphhjj_vbf +bbhj +heftpphj +heftpphjj +heftpphjjj +pphbb +pphbbj +pphj2 +pphjj2 +pphjj_vbf +pphjj_vbf_ew +pphjjj2 \ No newline at end of file -- cgit v1.2.3-60-g2f50