Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • faproietti/ar2018
  • chierici/ar2018
  • SDDS/ar2018
  • cnaf/annual-report/ar2018
4 results
Show changes
Showing
with 3958 additions and 0 deletions
main.aux
main.bbl
main.blg
main.log
main.pdf
@misc{ref:spring,
title = {{The Spring framework}},
note = {\url{https://spring.io/}}
}
@misc{ref:keep-a-changelog,
title = {{Keep a Changelog}},
note = {\url{https://keepachangelog.com/en/1.0.0/}}
}
@inproceedings{ref:gemss,
title={{The Grid Enabled Mass Storage System (GEMSS): the Storage and Data management system used at the INFN Tier1 at CNAF}},
author={Ricci, Pier Paolo and Bonacorsi, Daniele and Cavalli, Alessandro and dell'Agnello, Luca and Gregori, Daniele and Prosperini, Andrea and Rinaldi, Lorenzo and Sapunenko, Vladimir and Vagnoni, Vincenzo},
booktitle={Journal of Physics: Conference Series},
volume={396},
pages={042051},
year={2012},
organization={IOP Publishing}
}
@misc{ref:srm,
title = {{The Storage Resource Manager Interface Specification,Version 2.2}},
year = 2009,
note = {\url{https://sdm.lbl.gov/srm-wg/doc/SRM.v2.2.html}}
}
@misc{ref:webdav,
title = {{HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV)}},
year = 2007,
note = {\url{https://tools.ietf.org/html/rfc4918}}
}
@misc{ref:gitflow,
title = {{Gitflow Workflow}},
note = {\url{https://it.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow}},
urldate = {2019-07-08}
}
@misc{ref:grpc,
title = {{gRPC}},
note = {\url{https://grpc.io}},
urldate= {2019-07-05}
}
@misc{ref:protocol-buffers,
title = {{Protocol Buffers}},
note = {\url{https://developers.google.com/protocol-buffers/}},
urldate= {2019-07-05}
}
@misc{ref:rf,
title = {{Robot Framework}},
note = {\url{https://robotframework.org}},
urldate = {2019-07-05}
}
@misc{ref:docker,
title = {{Enterprise Container Platform for High-Velocity Innovation}},
note = {\url{https://www.docker.com}},
urldate = {2019-07-08}
}
@misc{ref:dc,
title = {{Docker Compose}},
note = {\url{https://docs.docker.com/compose}},
urldate = {2019-07-08}
}
@misc{ref:glcip,
title = {{Creating and using CI/CD pipelines}},
note = {\url{https://docs.gitlab.com/ee/ci/pipelines.html}},
urldate = {2019-07-08}
}
@misc{p1003.1e,
title = {{POSIX Access Control Lists, IEEE Draft P1003.1e}},
year = 1997
}
@InCollection{ref:nginx-voms,
author = {Ceccanti, Andrea and Giacomini, Francesco and Ronchieri, Elisabetta and Terranova, Nicholas},
title = {{A VOMS module for the Nginx web server}},
booktitle = {2018 CNAF Annual Report},
publisher = {INFN-CNAF},
year = 2019,
note = {\url{https://www.cnaf.infn.it/annual-report}}}
@Misc{ref:boost.fs,
title = {{Boost Filesystem}},
note = {\url{https://www.boost.org/doc/libs/release/libs/filesystem}}}
@Misc{ref:boost.log,
author = {Semashev, Andrey},
title = {{Boost Log}},
note = {\url{https://www.boost.org/doc/libs/release/libs/log}}}
@Misc{ref:yaml-cpp,
author = {Beder, Jesse},
title = {yaml-cpp},
note = {\url{https://github.com/jbeder/yaml-cpp}}}
@techreport{jwt,
author = {Michael B. Jones and John Bradley and Nat Sakimura},
title = {{The JSON Web Token RFC}},
type = {RFC},
number = 7519,
year = {2015},
month = {May},
issn = {2070-1721},
publisher = {IETF Tools},
institution = {IETF Tools},
url = {https://tools.ietf.org/rfc/rfc7519.txt}
}
@techreport{oauth,
author = {Dick Hardt},
title = {{The OAuth 2.0 Authorization Framework}},
type = {RFC},
number = 6749,
year = {2012},
month = {October},
issn = {2070-1721},
publisher = {IETF Tools},
institution = {IETF Tools},
url = {https://tools.ietf.org/rfc/rfc6749.txt}
}
@techreport{oauth-token-exchange,
author = {Michael B. Jones and Anthony Nadalin and Brian Campbell
and John Bradley and Chuck Mortimore},
title = {{OAuth 2.0 Token Exchange}},
type = {Internet-Draft},
number = "draft-ietf-oauth-token-exchange-16.txt",
year = {2019},
month = {April},
day = {22},
institution = {IETF Tools},
url = {https://tools.ietf.org/id/draft-ietf-oauth-token-exchange-16.txt}
}
@techreport{oauth-metadata,
author = {Michael B. Jones and Nat Sakimura and John Bradley},
title = {{OAuth 2.0 Authorization Server Metadata}},
type = {RFC},
number = 8414,
year = {2018},
month = {June},
issn = {2070-1721},
publisher = {IETF Tools},
institution = {IETF Tools},
url = {https://tools.ietf.org/rfc/rfc8414.txt}
}
@misc{oidc,
author = {{OpenID Foundation}},
title = {{The OpenID Connect identity layer}},
year = 2018,
note = {\url{https://openid.net/connect/}},
urldate = {2018-12-03}
}
@misc{oidc-discovery,
author = {{Nat Sakimura and John Bradley and Michael B. Jones and Edmund Jay}},
title = {{The OpenID Connect discovery specification}},
year = 2014,
note = {\url{https://openid.net/specs/openid-connect-discovery-1_0.html}},
urldate = {2018-12-03}
}
@misc{igtf,
title = {{The Interoperable Global Trust Federation}},
note = {\url{https://www.igtf.net/}},
urldate = {2018-12-03}
}
@misc{x509,
title = {{X.509}},
note = {\url{https://en.wikipedia.org/wiki/X.509}},
urldate = {2018-12-03}
}
@article{GSI,
author = {Von Welch and
Frank Siebenlist and
Ian T. Foster and
John Bresnahan and
Karl Czajkowski and
Jarek Gawor and
Carl Kesselman and
Sam Meder and
Laura Pearlman and
Steven Tuecke},
title = {Security for Grid Services},
journal = {CoRR},
volume = {cs.CR/0306129},
year = {2003},
url = {http://arxiv.org/abs/cs.CR/0306129},
timestamp = {Mon, 13 Aug 2018 16:49:07 +0200},
biburl = {https://dblp.org/rec/bib/journals/corr/cs-CR-0306129},
bibsource = {dblp computer science bibliography, https://dblp.org}
}
@software{VOMS,
author = {Vincenzo Ciaschini and Valerio Venturi and Andrea Ceccanti},
title = {{The Virtual Organisation Membership Service}},
doi = {10.5281/zenodo.1875371},
url = {https://doi.org/10.5281/zenodo.1875371}
}
@misc{edugain,
title = {{eduGAIN interfederation website}},
note = {\url{http://www.geant.org/Services/Trust_identity_and_security/eduGAIN}},
urldate = {2018-12-03}
}
@misc{google,
title = {{The Google Identity Platform}},
note = {\url{https://developers.google.com/identity/}},
urldate = {2018-12-03}
}
@misc{scim,
title = {{The System for Cross Domain Identity Management website}},
note = {\url{http://www.simplecloud.info/}},
urldate = {2018-12-03}
}
@article{indigo-aai-chep2016,
author={Andrea Ceccanti and Marcus Hardt and Bas Wegh and A. Paul Millar
and Marco Caberletti and Enrico Vianello and Slavek Licehammer},
title={{The INDIGO-Datacloud Authentication and Authorization Infrastructure}},
journal={Journal of Physics: Conference Series},
volume={898},
number={10},
pages={102016},
url={http://iopscience.iop.org/article/10.1088/1742-6596/898/10/102016},
year={2017}
}
@software{iam,
author = {Andrea Ceccanti and Enrico Vianello and Marco Caberletti},
title = {{INDIGO Identity and Access Management (IAM)}},
doi = {10.5281/zenodo.1874790},
url = {https://doi.org/10.5281/zenodo.1874790}
}
@software{voms-admin,
author = {Andrea Ceccanti},
title = {{The VOMS administration service}},
doi = {10.5281/zenodo.1875616},
url = {https://doi.org/10.5281/zenodo.1875616}
}
@misc{cwp,
Author = {{HEP Software Foundation} and Johannes Albrecht and Antonio
Augusto {Alves} Jr and Guilherme Amadio and Giuseppe Andronico and Nguyen
Anh-Ky and Laurent Aphecetche and John Apostolakis and Makoto Asai and Luca
Atzori and Marian Babik and Giuseppe Bagliesi and Marilena Bandieramonte
and Sunanda Banerjee and Martin Barisits and Lothar A. T. Bauerdick and
Stefano Belforte and Douglas Benjamin and Catrin Bernius and Wahid Bhimji
and Riccardo Maria Bianchi and Ian Bird and Catherine Biscarat and Jakob
Blomer and Kenneth Bloom and Tommaso Boccali and Brian Bockelman and Tomasz
Bold and Daniele Bonacorsi and Antonio Boveia and Concezio Bozzi and Marko
Bracko and David Britton and Andy Buckley and Predrag Buncic and Paolo
Calafiura and Simone Campana and Philippe Canal and Luca Canali and
Gianpaolo Carlino and Nuno Castro and Marco Cattaneo and Gianluca Cerminara
and Javier Cervantes Villanueva and Philip Chang and John Chapman and Gang
Chen and Taylor Childers and Peter Clarke and Marco Clemencic and Eric
Cogneras and Jeremy Coles and Ian Collier and David Colling and Gloria
Corti and Gabriele Cosmo and Davide Costanzo and Ben Couturier and Kyle
Cranmer and Jack Cranshaw and Leonardo Cristella and David Crooks and
Sabine Crépé-Renaudin and Robert Currie and Sünje Dallmeier-Tiessen and
Kaushik De and Michel De Cian and Albert De Roeck and Antonio Delgado Peris
and Frédéric Derue and Alessandro Di Girolamo and Salvatore Di Guida and
Gancho Dimitrov and Caterina Doglioni and Andrea Dotti and Dirk Duellmann
and Laurent Duflot and Dave Dykstra and Katarzyna Dziedziniewicz-Wojcik and
Agnieszka Dziurda and Ulrik Egede and Peter Elmer and Johannes Elmsheuser
and V. Daniel Elvira and Giulio Eulisse and Steven Farrell and Torben
Ferber and Andrej Filipcic and Ian Fisk and Conor Fitzpatrick and José Flix
and Andrea Formica and Alessandra Forti and Giovanni Franzoni and James
Frost and Stu Fuess and Frank Gaede and Gerardo Ganis and Robert Gardner
and Vincent Garonne and Andreas Gellrich and Krzysztof Genser and Simon
George and Frank Geurts and Andrei Gheata and Mihaela Gheata and Francesco
Giacomini and Stefano Giagu and Manuel Giffels and Douglas Gingrich and
Maria Girone and Vladimir V. Gligorov and Ivan Glushkov and Wesley Gohn and
Jose Benito Gonzalez Lopez and Isidro González Caballero and Juan R.
González Fernández and Giacomo Govi and Claudio Grandi and Hadrien Grasland
and Heather Gray and Lucia Grillo and Wen Guan and Oliver Gutsche and
Vardan Gyurjyan and Andrew Hanushevsky and Farah Hariri and Thomas Hartmann
and John Harvey and Thomas Hauth and Benedikt Hegner and Beate Heinemann
and Lukas Heinrich and Andreas Heiss and José M. Hernández and Michael
Hildreth and Mark Hodgkinson and Stefan Hoeche and Burt Holzman and Peter
Hristov and Xingtao Huang and Vladimir N. Ivanchenko and Todor Ivanov and
Jan Iven and Brij Jashal and Bodhitha Jayatilaka and Roger Jones and Michel
Jouvin and Soon Yung Jun and Michael Kagan and Charles William Kalderon and
Meghan Kane and Edward Karavakis and Daniel S. Katz and Dorian Kcira and
Oliver Keeble and Borut Paul Kersevan and Michael Kirby and Alexei
Klimentov and Markus Klute and Ilya Komarov and Dmitri Konstantinov and
Patrick Koppenburg and Jim Kowalkowski and Luke Kreczko and Thomas Kuhr and
Robert Kutschke and Valentin Kuznetsov and Walter Lampl and Eric Lancon and
David Lange and Mario Lassnig and Paul Laycock and Charles Leggett and
James Letts and Birgit Lewendel and Teng Li and Guilherme Lima and Jacob
Linacre and Tomas Linden and Miron Livny and Giuseppe Lo Presti and
Sebastian Lopienski and Peter Love and Adam Lyon and Nicolò Magini and
Zachary L. Marshall and Edoardo Martelli and Stewart Martin-Haugh and Pere
Mato and Kajari Mazumdar and Thomas McCauley and Josh McFayden and Shawn
McKee and Andrew McNab and Rashid Mehdiyev and Helge Meinhard and Dario
Menasce and Patricia Mendez Lorenzo and Alaettin Serhan Mete and Michele
Michelotto and Jovan Mitrevski and Lorenzo Moneta and Ben Morgan and
Richard Mount and Edward Moyse and Sean Murray and Armin Nairz and Mark S.
Neubauer and Andrew Norman and Sérgio Novaes and Mihaly Novak and Arantza
Oyanguren and Nurcan Ozturk and Andres Pacheco Pages and Michela Paganini
and Jerome Pansanel and Vincent R. Pascuzzi and Glenn Patrick and Alex
Pearce and Ben Pearson and Kevin Pedro and Gabriel Perdue and Antonio
Perez-Calero Yzquierdo and Luca Perrozzi and Troels Petersen and Marko
Petric and Andreas Petzold and Jónatan Piedra and Leo Piilonen and Danilo
Piparo and Jim Pivarski and Witold Pokorski and Francesco Polci and Karolos
Potamianos and Fernanda Psihas and Albert Puig Navarro and Günter Quast and
Gerhard Raven and Jürgen Reuter and Alberto Ribon and Lorenzo Rinaldi and
Martin Ritter and James Robinson and Eduardo Rodrigues and Stefan Roiser
and David Rousseau and Gareth Roy and Grigori Rybkine and Andre Sailer and
Tai Sakuma and Renato Santana and Andrea Sartirana and Heidi Schellman and
Jaroslava Schovancová and Steven Schramm and Markus Schulz and Andrea
Sciabà and Sally Seidel and Sezen Sekmen and Cedric Serfon and Horst
Severini and Elizabeth Sexton-Kennedy and Michael Seymour and Davide
Sgalaberna and Illya Shapoval and Jamie Shiers and Jing-Ge Shiu and Hannah
Short and Gian Piero Siroli and Sam Skipsey and Tim Smith and Scott Snyder
and Michael D. Sokoloff and Panagiotis Spentzouris and Hartmut Stadie and
Giordon Stark and Gordon Stewart and Graeme A. Stewart and Arturo Sánchez
and Alberto Sánchez-Hernández and Anyes Taffard and Umberto Tamponi and
Jeff Templon and Giacomo Tenaglia and Vakhtang Tsulaia and Christopher
Tunnell and Eric Vaandering and Andrea Valassi and Sofia Vallecorsa and
Liviu Valsan and Peter Van Gemmeren and Renaud Vernet and Brett Viren and
Jean-Roch Vlimant and Christian Voss and Margaret Votava and Carl Vuosalo
and Carlos Vázquez Sierra and Romain Wartel and Gordon T. Watts and Torre
Wenaus and Sandro Wenzel and Mike Williams and Frank Winklmeier and
Christoph Wissing and Frank Wuerthwein and Benjamin Wynne and Zhang Xiaomei
and Wei Yang and Efe Yazgan}, Title = {{A Roadmap for HEP Software and
Computing R\&D for the 2020s}}, Year = {2017}, Eprint = {arXiv:1712.06982},
}
@misc{scitokens,
title = {{The SciTokens project}},
note = {\url{https://scitokens.org}},
urldate = {2018-12-03}
}
@misc{kubernetes,
title = {{The Kubernetes container orchestrator}},
note = {\url{https://kubernetes.io}},
urldate = {2018-12-03}
}
@misc{openstack,
title = {{The Openstack IAAS framework}},
note = {\url{https://www.openstack.org}},
urldate = {2018-12-03}
}
@misc{fts,
title = {{The CERN File Transfer Service}},
note = {\url{https://fts.web.cern.ch}},
urldate = {2018-12-03}
}
@misc{storm,
title = {{The StoRM storage element}},
note = {\url{https://italiangrid.github.io/storm}},
urldate = {2018-12-03}
}
@misc{dcache,
title = {{The dCache storage solution}},
note = {\url{https://dcache.org}},
urldate = {2018-12-03}
}
@misc{oidc-rande,
title = {{The OpenID Research \& Education working group}},
note = {\url{https://openid.net/wg/rande}},
urldate = {2018-12-03}
}
@techreport{voms-ac-format,
author = {Vincenzo Ciaschini and Valerio Venturi and Andrea Ceccanti},
title = {{The VOMS Attribute Certificate format }},
year = {2011},
month = {August},
publisher = {Open Grid Forum},
institution = {Open Grid Forum},
url = {https://www.ogf.org/documents/GFD.182.pdf}
}
@misc{aarc-blueprint,
title = {{The AARC Blueprint Architecture}},
note = {\url{https://aarc-project.eu/architecture}},
urldate = {2018-12-03}
}
@misc{rcauth-ssh,
title = {{RCAuth.eu: getting proxies using SSH key AuthN}},
author = {Mischa Sall\'e},
note = {\url{https://indico.cern.ch/event/669715/contributions/2739035/attachments/1532101/2398499/RCauth_SSH_wlcg_authz_wg.pdf}},
urldate = {2018-12-03}
}
@misc{oauth4myproxy,
title = {{OAuth for MyProxy}},
note = {\url{http://grid.ncsa.illinois.edu/myproxy/oauth/}},
urldate = {2019-03-18}
}
@misc{rcauth,
title = {{The RCAuth online CA}},
note = {\url{https://rcauth.eu}},
urldate = {2018-12-03}
}
@misc{dodas,
title = {{Dynamic On Demand Analysis Service: DODAS}},
note = {\url{https://dodas-ts.github.io/dodas-doc}},
urldate = {2018-12-03}
}
@misc{eosc-hub,
title = {{The EOSC-Hub project}},
note = {\url{https://www.eosc-hub.eu}},
urldate = {2018-12-03}
}
@misc{aarc,
title = {{The AARC project}},
note = {\url{https://aarc-project.eu}},
urldate = {2018-12-03}
}
@misc{fim4r,
title = {{Federated Identity Management for Research}},
note = {\url{https://fim4r.org}},
urldate = {2018-12-03}
}
@misc{wlcg-authz-wg,
title = {{The WLCG Authorization Working Group}},
note = {\url{https://twiki.cern.ch/twiki/bin/view/LCG/WLCGAuthorizationWG}},
urldate = {2018-12-03}
}
@misc{nikhef,
title = {{The Dutch National Insititute for Sub-atomic Physics}},
note = {\url{https://www.nikhef.nl}},
urldate = {2019-5-10}
}
@misc{indigo-datacloud,
Author = {INDIGO-DataCloud Collaboration and : and Davide Salomoni and Isabel
Campos and Luciano Gaido and Jesus Marco de Lucas and Peter Solagna and Jorge
Gomes and Ludek Matyska and Patrick Fuhrman and Marcus Hardt and Giacinto
Donvito and Lukasz Dutka and Marcin Plociennik and Roberto Barbera and
Ignacio Blanquer and Andrea Ceccanti and Mario David and Cristina Duma and
Alvaro López-García and Germán Moltó and Pablo Orviz and Zdenek Sustr and
Matthew Viljoen and Fernando Aguilar and Luis Alves and Marica Antonacci
and Lucio Angelo Antonelli and Stefano Bagnasco and Alexandre M. J. J.
Bonvin and Riccardo Bruno and Eva Cetinic and Yin Chen and Alessandro Costa
and Davor Davidovic and Benjamin Ertl and Marco Fargetta and Sandro Fiore
and Stefano Gallozzi and Zeynep Kurkcuoglu and Lara Lloret and Joao Martins
and Alessandra Nuzzo and Paola Nassisi and Cosimo Palazzo and Joao Pina and
Eva Sciacca and Daniele Spiga and Marco Antonio Tangaro and Michal Urbaniak
and Sara Vallero and Bas Wegh and Valentina Zaccolo and Federico Zambelli
and Tomasz Zok},
Title = {{INDIGO-DataCloud:A data and computing platform to facilitate seamless
access to e-infrastructures}},
Year = {2017},
Eprint = {arXiv:1711.01981},
}
@misc{kubernetes-labels,
title = {{Kubernetes labels and selectors}},
note = {\url{https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/}},
urldate = {2018-12-03}
}
@misc{spid,
title = {{Sistema Pubblico di Identità Digitale}},
note = {\url{https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/}},
urldate = {2018-12-03}
}
@misc{hr-db-api-service,
title = {{CERN HR DB API service }},
note = {\url{https://baltig.infn.it/aceccant/cern-hr-db-service}},
urldate = {2018-12-03}
}
@misc{cern-openshift,
title = {{CERN Openshift PAAS infrastructure}},
note = {\url{http://information-technology.web.cern.ch/services/PaaS-Web-App}},
urldate = {2018-12-03}
}
@misc{keycloak,
title = {{The Keycloak Identity and Access Management system}},
note = {\url{https://www.keycloak.org/}},
urldate = {2018-12-03}
}
@inproceedings{cern-sso,
doi = {10.1088/1742-6596/119/8/082008},
url = {https://doi.org/10.1088%2F1742-6596%2F119%2F8%2F082008},
year = 2008,
volume = {119},
number = {8},
pages = {082008},
author = {E Ormancey},
title = {{CERN} single sign on solution},
booktitle = {Journal of Physics: Conference Series}
}
@inproceedings{voms-convergence,
author={Andrea Ceccanti and Vincenzo Ciaschini and Maria Dimou and Gabriele Garzoglio and Tanya Levshina and Steve Traylen and Valerio Venturi},
title={{VOMS/VOMRS utilization patterns and convergence plan}},
booktitle={Journal of Physics: Conference Series},
volume={219},
number={6},
pages={062006},
url={http://stacks.iop.org/1742-6596/219/i=6/a=062006},
year={2010}
}
contributions/sd_storm2/high-level-arch.png

65.5 KiB

%%
%% This is file `iopams.sty'
%% File to include AMS fonts and extra definitions for bold greek
%% characters for use with iopart.cls
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{iopams}[1997/02/13 v1.0]
\RequirePackage{amsgen}[1995/01/01]
\RequirePackage{amsfonts}[1995/01/01]
\RequirePackage{amssymb}[1995/01/01]
\RequirePackage{amsbsy}[1995/01/01]
%
\iopamstrue % \newif\ifiopams in iopart.cls & iopbk2e.cls
% % allows optional text to be in author guidelines
%
% Bold lower case Greek letters
%
\newcommand{\balpha}{\boldsymbol{\alpha}}
\newcommand{\bbeta}{\boldsymbol{\beta}}
\newcommand{\bgamma}{\boldsymbol{\gamma}}
\newcommand{\bdelta}{\boldsymbol{\delta}}
\newcommand{\bepsilon}{\boldsymbol{\epsilon}}
\newcommand{\bzeta}{\boldsymbol{\zeta}}
\newcommand{\bfeta}{\boldsymbol{\eta}}
\newcommand{\btheta}{\boldsymbol{\theta}}
\newcommand{\biota}{\boldsymbol{\iota}}
\newcommand{\bkappa}{\boldsymbol{\kappa}}
\newcommand{\blambda}{\boldsymbol{\lambda}}
\newcommand{\bmu}{\boldsymbol{\mu}}
\newcommand{\bnu}{\boldsymbol{\nu}}
\newcommand{\bxi}{\boldsymbol{\xi}}
\newcommand{\bpi}{\boldsymbol{\pi}}
\newcommand{\brho}{\boldsymbol{\rho}}
\newcommand{\bsigma}{\boldsymbol{\sigma}}
\newcommand{\btau}{\boldsymbol{\tau}}
\newcommand{\bupsilon}{\boldsymbol{\upsilon}}
\newcommand{\bphi}{\boldsymbol{\phi}}
\newcommand{\bchi}{\boldsymbol{\chi}}
\newcommand{\bpsi}{\boldsymbol{\psi}}
\newcommand{\bomega}{\boldsymbol{\omega}}
\newcommand{\bvarepsilon}{\boldsymbol{\varepsilon}}
\newcommand{\bvartheta}{\boldsymbol{\vartheta}}
\newcommand{\bvaromega}{\boldsymbol{\varomega}}
\newcommand{\bvarrho}{\boldsymbol{\varrho}}
\newcommand{\bvarzeta}{\boldsymbol{\varsigma}} %NB really sigma
\newcommand{\bvarsigma}{\boldsymbol{\varsigma}}
\newcommand{\bvarphi}{\boldsymbol{\varphi}}
%
% Bold upright capital Greek letters
%
\newcommand{\bGamma}{\boldsymbol{\Gamma}}
\newcommand{\bDelta}{\boldsymbol{\Delta}}
\newcommand{\bTheta}{\boldsymbol{\Theta}}
\newcommand{\bLambda}{\boldsymbol{\Lambda}}
\newcommand{\bXi}{\boldsymbol{\Xi}}
\newcommand{\bPi}{\boldsymbol{\Pi}}
\newcommand{\bSigma}{\boldsymbol{\Sigma}}
\newcommand{\bUpsilon}{\boldsymbol{\Upsilon}}
\newcommand{\bPhi}{\boldsymbol{\Phi}}
\newcommand{\bPsi}{\boldsymbol{\Psi}}
\newcommand{\bOmega}{\boldsymbol{\Omega}}
%
% Bold versions of miscellaneous symbols
%
\newcommand{\bpartial}{\boldsymbol{\partial}}
\newcommand{\bell}{\boldsymbol{\ell}}
\newcommand{\bimath}{\boldsymbol{\imath}}
\newcommand{\bjmath}{\boldsymbol{\jmath}}
\newcommand{\binfty}{\boldsymbol{\infty}}
\newcommand{\bnabla}{\boldsymbol{\nabla}}
\newcommand{\bdot}{\boldsymbol{\cdot}}
%
% Symbols for caption
%
\renewcommand{\opensquare}{\mbox{$\square$}}
\renewcommand{\opentriangle}{\mbox{$\vartriangle$}}
\renewcommand{\opentriangledown}{\mbox{$\triangledown$}}
\renewcommand{\opendiamond}{\mbox{$\lozenge$}}
\renewcommand{\fullsquare}{\mbox{$\blacksquare$}}
\newcommand{\fulldiamond}{\mbox{$\blacklozenge$}}
\newcommand{\fullstar}{\mbox{$\bigstar$}}
\newcommand{\fulltriangle}{\mbox{$\blacktriangle$}}
\newcommand{\fulltriangledown}{\mbox{$\blacktriangledown$}}
\endinput
%%
%% End of file `iopams.sty'.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{jpconf}
[2007/03/07 v1.1
LaTeX class for Journal of Physics: Conference Series]
%\RequirePackage{graphicx}
\newcommand\@ptsize{1}
\newif\if@restonecol
\newif\if@letterpaper
\newif\if@titlepage
\newif\ifiopams
\@titlepagefalse
\@letterpaperfalse
\DeclareOption{a4paper}
{\setlength\paperheight {297mm}%
\setlength\paperwidth {210mm}%
\@letterpaperfalse}
\DeclareOption{letterpaper}
{\setlength\paperheight {279.4mm}%
\setlength\paperwidth {215.9mm}%
\@letterpapertrue}
\DeclareOption{landscape}
{\setlength\@tempdima {\paperheight}%
\setlength\paperheight {\paperwidth}%
\setlength\paperwidth {\@tempdima}}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
\renewcommand\@ptsize{1}
%\ExecuteOptions{A4paper, twoside}
\ExecuteOptions{A4paper}
\ProcessOptions
\DeclareMathAlphabet{\bi}{OML}{cmm}{b}{it}
\DeclareMathAlphabet{\bcal}{OMS}{cmsy}{b}{n}
\input{jpconf1\@ptsize.clo}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\renewcommand\baselinestretch{}
\setlength\parskip{0\p@ \@plus \p@}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
\setlength\parindent{5mm}
\setcounter{topnumber}{8}
\renewcommand\topfraction{1}
\setcounter{bottomnumber}{3}
\renewcommand\bottomfraction{.99}
\setcounter{totalnumber}{8}
\renewcommand\textfraction{0.01}
\renewcommand\floatpagefraction{.8}
\setcounter{dbltopnumber}{6}
\renewcommand\dbltopfraction{1}
\renewcommand\dblfloatpagefraction{.8}
\renewcommand{\title}{\@ifnextchar[{\@stitle}{\@ftitle}}
\pretolerance=5000
\tolerance=8000
% Headings for all pages apart from first
%
\def\ps@headings{%
\let\@oddfoot\@empty
\let\@evenfoot\@empty
\let\@oddhead\@empty
\let\@evenhead\@empty
%\def\@evenhead{\thepage\hfil\itshape\rightmark}%
%\def\@oddhead{{\itshape\leftmark}\hfil\thepage}%
%\def\@evenhead{{\itshape Journal of Physics: Conference Series}\hfill}%
%\def\@oddhead{\hfill {\itshape Journal of Physics: Conference Series}}%%
\let\@mkboth\markboth
\let\sectionmark\@gobble
\let\subsectionmark\@gobble}
%
% Headings for first page
%
\def\ps@myheadings{\let\@oddfoot\@empty\let\@evenfoot\@empty
\let\@oddhead\@empty\let\@evenhead\@empty
\let\@mkboth\@gobbletwo
\let\sectionmark\@gobble
\let\subsectionmark\@gobble}
%
\def\@stitle[#1]#2{\markboth{#1}{#1}%
%\pagestyle{empty}%
\thispagestyle{myheadings}
\vspace*{25mm}{\exhyphenpenalty=10000\hyphenpenalty=10000
%\Large
\fontsize{18bp}{24bp}\selectfont\bf\raggedright\noindent#2\par}}
\def\@ftitle#1{\markboth{#1}{#1}%
\thispagestyle{myheadings}
%\pagestyle{empty}%
\vspace*{25mm}{\exhyphenpenalty=10000\hyphenpenalty=10000
%\Large\raggedright\noindent\bf#1\par}
\fontsize{18bp}{24bp}\selectfont\bf\noindent\raggedright#1\par}}
%AUTHOR
\renewcommand{\author}{\@ifnextchar[{\@sauthor}{\@fauthor}}
\def\@sauthor[#1]#2{\markright{#1} % for production only
\vspace*{1.5pc}%
\begin{indented}%
\item[]\normalsize\bf\raggedright#2
\end{indented}%
\smallskip}
\def\@fauthor#1{%\markright{#1} for production only
\vspace*{1.5pc}%
\begin{indented}%
\item[]\normalsize\bf\raggedright#1
\end{indented}%
\smallskip}
%E-MAIL
\def\eads#1{\vspace*{5pt}\address{E-mail: #1}}
\def\ead#1{\vspace*{5pt}\address{E-mail: \mailto{#1}}}
\def\mailto#1{{\tt #1}}
%ADDRESS
\newcommand{\address}[1]{\begin{indented}
\item[]\rm\raggedright #1
\end{indented}}
\newlength{\indentedwidth}
\newdimen\mathindent
\mathindent = 6pc
\indentedwidth=\mathindent
% FOOTNOTES
%\renewcommand\footnoterule{%
% \kern-3\p@
% \hrule\@width.4\columnwidth
% \kern2.6\p@}
%\newcommand\@makefntext[1]{%
% \parindent 1em%
% \noindent
% \hb@xt@1.8em{\hss\@makefnmark}#1}
% Footnotes: symbols selected in same order as address indicators
% unless optional argument of [<num>] use to specify required symbol,
% 1=\dag, 2=\ddag, etc
% Usage: \footnote{Text of footnote}
% \footnote[3]{Text of footnote}
%
\def\footnoterule{}%
\setcounter{footnote}{0}
\long\def\@makefntext#1{\parindent 1em\noindent
\makebox[1em][l]{\footnotesize\rm$\m@th{\fnsymbol{footnote}}$}%
\footnotesize\rm #1}
\def\@makefnmark{\normalfnmark}
\def\normalfnmark{\hbox{${\fnsymbol{footnote}}\m@th$}}
\def\altfnmark{\hbox{$^{\rm Note}\ {\fnsymbol{footnote}}\m@th$}}
\def\footNote#1{\let\@makefnmark\altfnmark\footnote{#1}\let\@makefnmark\normalfnmark}
\def\@thefnmark{\fnsymbol{footnote}}
\def\footnote{\protect\pfootnote}
\def\pfootnote{\@ifnextchar[{\@xfootnote}{\stepcounter{\@mpfn}%
\begingroup\let\protect\noexpand
\xdef\@thefnmark{\thempfn}\endgroup
\@footnotemark\@footnotetext}}
\def\@xfootnote[#1]{\setcounter{footnote}{#1}%
\addtocounter{footnote}{-1}\footnote}
\newcommand\ftnote{\protect\pftnote}
\newcommand\pftnote[1]{\setcounter{footnote}{#1}%
\addtocounter{footnote}{-1}\footnote}
\newcommand{\fnm}[1]{\setcounter{footnote}{#1}\footnotetext}
\def\@fnsymbol#1{\ifnum\thefootnote=99\hbox{*}\else^{\thefootnote}\fi\relax}
%
% Address marker
%
\newcommand{\ad}[1]{\noindent\hbox{$^{#1}$}\relax}
\newcommand{\adnote}[2]{\noindent\hbox{$^{#1,}$}\setcounter{footnote}{#2}%
\addtocounter{footnote}{-1}\footnote}
\def\@tnote{}
\newcounter{oldftnote}
\newcommand{\tnote}[1]{*\gdef\@tnote{%
\setcounter{oldftnote}{\c@footnote}%
\setcounter{footnote}{99}%
\footnotetext{#1}%
\setcounter{footnote}{\c@oldftnote}\addtocounter{footnote}{-1}}}
%==================
% Acknowledgments (no heading if letter)
% Usage \ack for Acknowledgments, \ackn for Acknowledgement
\def\ack{\section*{Acknowledgments}}
\def\ackn{\section*{Acknowledgment}}
%SECTION DEFINITIONS
\setcounter{secnumdepth}{3}
\newcounter {section}
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
\renewcommand \thesection {\arabic{section}}
\renewcommand\thesubsection {\thesection.\arabic{subsection}}
\renewcommand\thesubsubsection{\thesubsection .\arabic{subsubsection}}
\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}}
\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}}
%\nosections
\def\nosections{\vspace{30\p@ plus12\p@ minus12\p@}
\noindent\ignorespaces}
%\renewcommand{\@startsection}[6]
%{%
%\if@noskipsec \leavevmode \fi
%\par
% \@tempskipa #4\relax
%%\@tempskipa 0pt\relax
% \@afterindenttrue
% \ifdim \@tempskipa <\z@
% \@tempskipa -\@tempskipa \@afterindentfalse
% \fi
% \if@nobreak
% \everypar{}%
% \else
% \addpenalty\@secpenalty\addvspace\@tempskipa
% \fi
% \@ifstar
% {\@ssect{#3}{#4}{#5}{#6}}%
% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
%\renewcommand{\@sect}[8]{%
% \ifnum #2>\c@secnumdepth
% \let\@svsec\@empty
% \else
% \refstepcounter{#1}%
% \protected@edef\@svsec{\@seccntformat{#1}\relax}%
% \fi
% \@tempskipa #5\relax
% \ifdim \@tempskipa>\z@
% \begingroup
% #6{%
% \@hangfrom{\hskip #3\relax\@svsec}%
% \interlinepenalty \@M #8\@@par}%
% \endgroup
% \csname #1mark\endcsname{#7}%
% \addcontentsline{toc}{#1}{%
% \ifnum #2>\c@secnumdepth \else
% \protect\numberline{\csname the#1\endcsname}%
% \fi
% #7}%
% \else
% \def\@svsechd{%
% #6{\hskip #3\relax
% \@svsec #8}%
% \csname #1mark\endcsname{#7}%
% \addcontentsline{toc}{#1}{%
% \ifnum #2>\c@secnumdepth \else
% \protect\numberline{\csname the#1\endcsname}%
% \fi
% #7}}%
% \fi
% \@xsect{#5}}
%\renewcommand{\@xsect}[1]{%
% \@tempskipa #1\relax
% \ifdim \@tempskipa>\z@
% \par \nobreak
% \vskip \@tempskipa
% \@afterheading
% \else
% \@nobreakfalse
% \global\@noskipsectrue
% \everypar{%
% \if@noskipsec
% \global\@noskipsecfalse
% {\setbox\z@\lastbox}%
% \clubpenalty\@M
% \begingroup \@svsechd \endgroup
% \unskip
% \@tempskipa #1\relax
% \hskip -\@tempskipa
% \else
% \clubpenalty \@clubpenalty
% \everypar{}%
% \fi}%
% \fi
% \ignorespaces}
%========================================================================
\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1sp}%
{\reset@font\normalsize\bfseries\raggedright}}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1sp}%
{\reset@font\normalsize\itshape\raggedright}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{-1em \@plus .2em}%
{\reset@font\normalsize\itshape}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\reset@font\normalsize\itshape}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\reset@font\normalsize\itshape}}
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
\let\@svsec\@empty\else
\refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname. }\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup #6\relax
\noindent{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}%
\endgroup
\csname #1mark\endcsname{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}\else
\def\@svsechd{#6\hskip #3\relax %% \relax added 2 May 90
\@svsec #8\csname #1mark\endcsname
{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}}\fi
\@xsect{#5}}
%
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
\begingroup #4\noindent{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup
\else \def\@svsechd{#4\hskip #1\relax #5}\fi
\@xsect{#3}}
% LIST DEFINITIONS
\setlength\leftmargini {2em}
\leftmargin \leftmargini
\setlength\leftmarginii {2em}
\setlength\leftmarginiii {1.8em}
\setlength\leftmarginiv {1.6em}
\setlength\leftmarginv {1em}
\setlength\leftmarginvi {1em}
\setlength\leftmargin{\leftmargini}
\setlength \labelsep {.5em}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
\renewcommand\theenumi{\roman{enumi}}
\renewcommand\theenumii{\alph{enumii}}
\renewcommand\theenumiii{\arabic{enumiii}}
\renewcommand\theenumiv{\Alph{enumiv}}
\newcommand\labelenumi{(\theenumi)}
\newcommand\labelenumii{(\theenumii)}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{(\theenumiv)}
\renewcommand\p@enumii{(\theenumi)}
\renewcommand\p@enumiii{(\theenumi.\theenumii)}
\renewcommand\p@enumiv{(\theenumi.\theenumii.\theenumiii)}
\newcommand\labelitemi{$\m@th\bullet$}
\newcommand\labelitemii{\normalfont\bfseries --}
\newcommand\labelitemiii{$\m@th\ast$}
\newcommand\labelitemiv{$\m@th\cdot$}
\renewcommand \theequation {\@arabic\c@equation}
%%%%%%%%%%%%% Figures
\newcounter{figure}
\renewcommand\thefigure{\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
\newenvironment{figure}{\footnotesize\rm\@float{figure}}%
{\end@float\normalsize\rm}
\newenvironment{figure*}{\footnotesize\rm\@dblfloat{figure}}{\end@dblfloat}
\newcounter{table}
\renewcommand\thetable{\@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
\newenvironment{table}{\footnotesize\rm\@float{table}}%
{\end@float\normalsize\rm}
\newenvironment{table*}{\footnotesize\rm\@dblfloat{table}}%
{\end@dblfloat\normalsize\rm}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{0\p@}
%Table Environments
%\newenvironment{tableref}[3][\textwidth]{%
%\begin{center}%
%\begin{table}%
%\captionsetup[table]{width=#1}
%\centering\caption{\label{#2}#3}}{\end{table}\end{center}}
%%%%%%%%%%%%%%%%%
%\newcounter{figure}
%\renewcommand \thefigure {\@arabic\c@figure}
%\def\fps@figure{tbp}
%\def\ftype@figure{1}
%\def\ext@figure{lof}
%\def\fnum@figure{\figurename~\thefigure}
%ENVIRONMENT: figure
%\newenvironment{figure}
% {\@float{figure}}
% {\end@float}
%ENVIRONMENT: figure*
%\newenvironment{figure*}
% {\@dblfloat{figure}}
% {\end@dblfloat}
%ENVIRONMENT: table
%\newcounter{table}
%\renewcommand\thetable{\@arabic\c@table}
%\def\fps@table{tbp}
%\def\ftype@table{2}
%\def\ext@table{lot}
%\def\fnum@table{\tablename~\thetable}
%\newenvironment{table}
% {\@float{table}}
% {\end@float}
%ENVIRONMENT: table*
%\newenvironment{table*}
% {\@dblfloat{table}}
% {\end@dblfloat}
%\newlength\abovecaptionskip
%\newlength\belowcaptionskip
%\setlength\abovecaptionskip{10\p@}
%\setlength\belowcaptionskip{0\p@}
% CAPTIONS
% Added redefinition of \@caption so captions are not written to
% aux file therefore less need to \protect fragile commands
%
\long\def\@caption#1[#2]#3{\par\begingroup
\@parboxrestore
\normalsize
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{{\bf #1.} #2}%
\ifdim \wd\@tempboxa >\hsize
{\bf #1.} #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
%\newcommand\@pnumwidth{1.55em}
%\newcommand\@tocrmarg{2.55em}
%\newcommand\@dotsep{4.5}
%\setcounter{tocdepth}{3}
%\newcommand\tableofcontents{%
% \section*{\contentsname
% \@mkboth{%
% \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
% \@starttoc{toc}%
% }
%\newcommand*\l@part[2]{%
% \ifnum \c@tocdepth >-2\relax
% \addpenalty\@secpenalty
% \addvspace{2.25em \@plus\p@}%
% \begingroup
% \parindent \z@ \rightskip \@pnumwidth
% \parfillskip -\@pnumwidth
% {\leavevmode
% \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
% \nobreak
% \if@compatibility
% \global\@nobreaktrue
% \everypar{\global\@nobreakfalse\everypar{}}%
% \fi
% \endgroup
% \fi}
%\newcommand*\l@section[2]{%
% \ifnum \c@tocdepth >\z@
% \addpenalty\@secpenalty
% \addvspace{1.0em \@plus\p@}%
% \setlength\@tempdima{1.5em}%
% \begingroup
% \parindent \z@ \rightskip \@pnumwidth
% \parfillskip -\@pnumwidth
% \leavevmode \bfseries
% \advance\leftskip\@tempdima
% \hskip -\leftskip
% #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
% \endgroup
% \fi}
%\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
%\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
%\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
%\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
%\newcommand\listoffigures{%
% \section*{\listfigurename
% \@mkboth{\MakeUppercase\listfigurename}%
% {\MakeUppercase\listfigurename}}%
% \@starttoc{lof}%
% }
%\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
%\newcommand\listoftables{%
% \section*{\listtablename
% \@mkboth{%
% \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
% \@starttoc{lot}%
% }
%\let\l@table\l@figure
%======================================
%ENVIRONMENTS
%======================================
%ENVIRONMENT: indented
\newenvironment{indented}{\begin{indented}}{\end{indented}}
\newenvironment{varindent}[1]{\begin{varindent}{#1}}{\end{varindent}}
%
\def\indented{\list{}{\itemsep=0\p@\labelsep=0\p@\itemindent=0\p@
\labelwidth=0\p@\leftmargin=\mathindent\topsep=0\p@\partopsep=0\p@
\parsep=0\p@\listparindent=15\p@}\footnotesize\rm}
\let\endindented=\endlist
\def\varindent#1{\setlength{\varind}{#1}%
\list{}{\itemsep=0\p@\labelsep=0\p@\itemindent=0\p@
\labelwidth=0\p@\leftmargin=\varind\topsep=0\p@\partopsep=0\p@
\parsep=0\p@\listparindent=15\p@}\footnotesize\rm}
\let\endvarindent=\endlist
%ENVIRONMENT: abstract
\newenvironment{abstract}{%
\vspace{16pt plus3pt minus3pt}
\begin{indented}
\item[]{\bfseries \abstractname.}\quad\rm\ignorespaces}
{\end{indented}\vspace{10mm}}
%ENVIRONMENT: description
\newenvironment{description}
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
{\endlist}
\newcommand\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries #1}
%ENVIRONMENT: quotation
\newenvironment{quotation}
{\list{}{\listparindent 1.5em%
\itemindent \listparindent
\rightmargin \leftmargin
\parsep \z@ \@plus\p@}%
\item[]}
{\endlist}
%ENVIRONMENT: quote
\newenvironment{quote}
{\list{}{\rightmargin\leftmargin}%
\item[]}
{\endlist}
%ENVIRONMENT: verse
\newenvironment{verse}
{\let\\=\@centercr
\list{}{\itemsep \z@
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item[]}
{\endlist}
%ENVIRONMENT: bibliography
\newdimen\bibindent
\setlength\bibindent{1.5em}
\def\thebibliography#1{\list
{\hfil[\arabic{enumi}]}{\topsep=0\p@\parsep=0\p@
\partopsep=0\p@\itemsep=0\p@
\labelsep=5\p@\itemindent=-10\p@
\settowidth\labelwidth{\footnotesize[#1]}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\advance\leftmargin -\itemindent
\usecounter{enumi}}\footnotesize
\def\newblock{\ }
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}
\let\endthebibliography=\endlist
\def\numrefs#1{\begin{thebibliography}{#1}}
\def\endnumrefs{\end{thebibliography}}
\let\endbib=\endnumrefs
%%%%%%%%%%%%%%%%%%
%\newenvironment{thebibliography}[1]
% {\section*{References}
% \list{\@biblabel{\@arabic\c@enumiv}}%
% {\settowidth\labelwidth{\@biblabel{#1}}%
% \leftmargin\labelwidth
% \advance\leftmargin\labelsep
% \@openbib@code
% \usecounter{enumiv}%
% \let\p@enumiv\@empty
% \renewcommand\theenumiv{\@arabic\c@enumiv}}%
% \sloppy
% \clubpenalty4000
% \@clubpenalty \clubpenalty
% \widowpenalty4000%
% \sfcode`\.\@m}
% {\def\@noitemerr
% {\@latex@warning{Empty `thebibliography' environment}}%
% \endlist}
%\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
%\let\@openbib@code\@empty
%ENVIRONMENT: theindex
\newenvironment{theindex}
{\if@twocolumn
\@restonecolfalse
\else
\@restonecoltrue
\fi
\columnseprule \z@
\columnsep 35\p@
\twocolumn[\section*{\indexname}]%
\@mkboth{\MakeUppercase\indexname}%
{\MakeUppercase\indexname}%
\thispagestyle{plain}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem}
{\if@restonecol\onecolumn\else\clearpage\fi}
\newcommand\@idxitem{\par\hangindent 40\p@}
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
%=====================
\def\appendix{\@ifnextchar*{\@appendixstar}{\@appendix}}
\def\@appendix{\eqnobysec\@appendixstar}
\def\@appendixstar{\@@par
\ifnumbysec % Added 30/4/94 to get Table A1,
\@addtoreset{table}{section} % Table B1 etc if numbering by
\@addtoreset{figure}{section}\fi % section
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{equation}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\def\thesection{Appendix \Alph{section}}
\def\theequation{\ifnumbysec
\Alph{section}.\arabic{equation}\else
\Alph{section}\arabic{equation}\fi} % Comment A\arabic{equation} maybe
\def\thetable{\ifnumbysec % better? 15/4/95
\Alph{section}\arabic{table}\else
A\arabic{table}\fi}
\def\thefigure{\ifnumbysec
\Alph{section}\arabic{figure}\else
A\arabic{figure}\fi}}
\def\noappendix{\setcounter{figure}{0}
\setcounter{table}{0}
\def\thetable{\arabic{table}}
\def\thefigure{\arabic{figure}}}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
\skip\@mpfootins = \skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
\renewcommand\theequation{\arabic{equation}}
% NAME OF STRUCTURES
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}
\newcommand\refname{References}
\newcommand\indexname{Index}
\newcommand\figurename{Figure}
\newcommand\tablename{Table}
\newcommand\partname{Part}
\newcommand\appendixname{Appendix}
\newcommand\abstractname{Abstract}
%Miscellaneous commands
\newcommand{\BibTeX}{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
\newcommand{\jpcsit}{{\bfseries\itshape\selectfont Journal of Physics: Conference Series}}
\newcommand{\jpcs}{{\itshape\selectfont Journal of Physics: Conference Series}}
\newcommand{\iopp}{IOP Publishing}
\newcommand{\cls}{{\upshape\selectfont\texttt{jpconf.cls}}}
\newcommand{\corg}{conference organizer}
\newcommand\today{\number\day\space\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\year}
\setlength\columnsep{10\p@}
\setlength\columnseprule{0\p@}
\newcommand{\Tables}{\clearpage\section*{Tables and table captions}
\def\fps@table{hp}\noappendix}
\newcommand{\Figures}{\clearpage\section*{Figure captions}
\def\fps@figure{hp}\noappendix}
%
\newcommand{\Figure}[1]{\begin{figure}
\caption{#1}
\end{figure}}
%
\newcommand{\Table}[1]{\begin{table}
\caption{#1}
\begin{indented}
\lineup
\item[]\begin{tabular}{@{}l*{15}{l}}}
\def\endTable{\end{tabular}\end{indented}\end{table}}
\let\endtab=\endTable
%
\newcommand{\fulltable}[1]{\begin{table}
\caption{#1}
\lineup
\begin{tabular*}{\textwidth}{@{}l*{15}{@{\extracolsep{0pt plus 12pt}}l}}}
\def\endfulltable{\end{tabular*}\end{table}}
%BIBLIOGRAPHY and References
%\newcommand{\Bibliography}[1]{\section*{References}\par\numrefs{#1}}
%\newcommand{\References}{\section*{References}\par\refs}
%\def\thebibliography#1{\list
% {\hfil[\arabic{enumi}]}{\topsep=0\p@\parsep=0\p@
% \partopsep=0\p@\itemsep=0\p@
% \labelsep=5\p@\itemindent=-10\p@
% \settowidth\labelwidth{\footnotesize[#1]}%
% \leftmargin\labelwidth
% \advance\leftmargin\labelsep
% \advance\leftmargin -\itemindent
% \usecounter{enumi}}\footnotesize
% \def\newblock{\ }
% \sloppy\clubpenalty4000\widowpenalty4000
% \sfcode`\.=1000\relax}
%\let\endthebibliography=\endlist
%\def\numrefs#1{\begin{thebibliography}{#1}}
%\def\endnumrefs{\end{thebibliography}}
%\let\endbib=\endnumrefs
\def\thereferences{\list{}{\topsep=0\p@\parsep=0\p@
\partopsep=0\p@\itemsep=0\p@\labelsep=0\p@\itemindent=-18\p@
\labelwidth=0\p@\leftmargin=18\p@
}\footnotesize\rm
\def\newblock{\ }
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}%
\let\endthereferences=\endlist
% MISC EQUATRION STUFF
%\def\[{\relax\ifmmode\@badmath\else
% \begin{trivlist}
% \@beginparpenalty\predisplaypenalty
% \@endparpenalty\postdisplaypenalty
% \item[]\leavevmode
% \hbox to\linewidth\bgroup$ \displaystyle
% \hskip\mathindent\bgroup\fi}
%\def\]{\relax\ifmmode \egroup $\hfil \egroup \end{trivlist}\else \@badmath \fi}
%\def\equation{\@beginparpenalty\predisplaypenalty
% \@endparpenalty\postdisplaypenalty
%\refstepcounter{equation}\trivlist \item[]\leavevmode
% \hbox to\linewidth\bgroup $ \displaystyle
%\hskip\mathindent}
%\def\endequation{$\hfil \displaywidth\linewidth\@eqnnum\egroup \endtrivlist}
%\@namedef{equation*}{\[}
%\@namedef{endequation*}{\]}
%\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
%\global\@eqnswtrue
%\global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr
%\abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi
%\belowdisplayskip\abovedisplayskip
%\belowdisplayshortskip\abovedisplayskip
%\abovedisplayshortskip\abovedisplayskip
%$$\halign to
%\linewidth\bgroup\@eqnsel$\displaystyle\tabskip\z@
% {##{}}$&\global\@eqcnt\@ne $\displaystyle{{}##{}}$\hfil
% &\global\@eqcnt\tw@ $\displaystyle{{}##}$\hfil
% \tabskip\@centering&\llap{##}\tabskip\z@\cr}
%\def\endeqnarray{\@@eqncr\egroup
% \global\advance\c@equation\m@ne$$\global\@ignoretrue }
%\mathindent = 6pc
%%
%\def\eqalign#1{\null\vcenter{\def\\{\cr}\openup\jot\m@th
% \ialign{\strut$\displaystyle{##}$\hfil&$\displaystyle{{}##}$\hfil
% \crcr#1\crcr}}\,}
%%
%\def\eqalignno#1{\displ@y \tabskip\z@skip
% \halign to\displaywidth{\hspace{5pc}$\@lign\displaystyle{##}$%
% \tabskip\z@skip
% &$\@lign\displaystyle{{}##}$\hfill\tabskip\@centering
% &\llap{$\@lign\hbox{\rm##}$}\tabskip\z@skip\crcr
% #1\crcr}}
%%
\newif\ifnumbysec
\def\theequation{\ifnumbysec
\arabic{section}.\arabic{equation}\else
\arabic{equation}\fi}
\def\eqnobysec{\numbysectrue\@addtoreset{equation}{section}}
\newcounter{eqnval}
\def\numparts{\addtocounter{equation}{1}%
\setcounter{eqnval}{\value{equation}}%
\setcounter{equation}{0}%
\def\theequation{\ifnumbysec
\arabic{section}.\arabic{eqnval}{\it\alph{equation}}%
\else\arabic{eqnval}{\it\alph{equation}}\fi}}
\def\endnumparts{\def\theequation{\ifnumbysec
\arabic{section}.\arabic{equation}\else
\arabic{equation}\fi}%
\setcounter{equation}{\value{eqnval}}}
%
\def\cases#1{%
\left\{\,\vcenter{\def\\{\cr}\normalbaselines\openup1\jot\m@th%
\ialign{\strut$\displaystyle{##}\hfil$&\tqs
\rm##\hfil\crcr#1\crcr}}\right.}%
\def\eqalign#1{\null\vcenter{\def\\{\cr}\openup\jot\m@th
\ialign{\strut$\displaystyle{##}$\hfil&$\displaystyle{{}##}$\hfil
\crcr#1\crcr}}\,}
% OTHER USEFUL BITS
\newcommand{\e}{\mathrm{e}}
\newcommand{\rme}{\mathrm{e}}
\newcommand{\rmi}{\mathrm{i}}
\newcommand{\rmd}{\mathrm{d}}
\renewcommand{\qquad}{\hspace*{25pt}}
\newcommand{\tdot}[1]{\stackrel{\dots}{#1}} % Added 1/9/94
\newcommand{\tqs}{\hspace*{25pt}}
\newcommand{\fl}{\hspace*{-\mathindent}}
\newcommand{\Tr}{\mathop{\mathrm{Tr}}\nolimits}
\newcommand{\tr}{\mathop{\mathrm{tr}}\nolimits}
\newcommand{\Or}{\mathord{\mathrm{O}}} %changed from \mathop 20/1/95
\newcommand{\lshad}{[\![}
\newcommand{\rshad}{]\!]}
\newcommand{\case}[2]{{\textstyle\frac{#1}{#2}}}
\def\pt(#1){({\it #1\/})}
\newcommand{\dsty}{\displaystyle}
\newcommand{\tsty}{\textstyle}
\newcommand{\ssty}{\scriptstyle}
\newcommand{\sssty}{\scriptscriptstyle}
\def\lo#1{\llap{${}#1{}$}}
\def\eql{\llap{${}={}$}}
\def\lsim{\llap{${}\sim{}$}}
\def\lsimeq{\llap{${}\simeq{}$}}
\def\lequiv{\llap{${}\equiv{}$}}
%
\newcommand{\eref}[1]{(\ref{#1})}
%\newcommand{\eqref}[1]{Equation (\ref{#1})}
%\newcommand{\Eqref}[1]{Equation (\ref{#1})}
\newcommand{\sref}[1]{section~\ref{#1}}
\newcommand{\fref}[1]{figure~\ref{#1}}
\newcommand{\tref}[1]{table~\ref{#1}}
\newcommand{\Sref}[1]{Section~\ref{#1}}
\newcommand{\Fref}[1]{Figure~\ref{#1}}
\newcommand{\Tref}[1]{Table~\ref{#1}}
\newcommand{\opencircle}{\mbox{\Large$\circ\,$}} % moved Large outside maths
\newcommand{\opensquare}{\mbox{$\rlap{$\sqcap$}\sqcup$}}
\newcommand{\opentriangle}{\mbox{$\triangle$}}
\newcommand{\opentriangledown}{\mbox{$\bigtriangledown$}}
\newcommand{\opendiamond}{\mbox{$\diamondsuit$}}
\newcommand{\fullcircle}{\mbox{{\Large$\bullet\,$}}} % moved Large outside maths
\newcommand{\fullsquare}{\,\vrule height5pt depth0pt width5pt}
\newcommand{\dotted}{\protect\mbox{${\mathinner{\cdotp\cdotp\cdotp\cdotp\cdotp\cdotp}}$}}
\newcommand{\dashed}{\protect\mbox{-\; -\; -\; -}}
\newcommand{\broken}{\protect\mbox{-- -- --}}
\newcommand{\longbroken}{\protect\mbox{--- --- ---}}
\newcommand{\chain}{\protect\mbox{--- $\cdot$ ---}}
\newcommand{\dashddot}{\protect\mbox{--- $\cdot$ $\cdot$ ---}}
\newcommand{\full}{\protect\mbox{------}}
\def\;{\protect\psemicolon}
\def\psemicolon{\relax\ifmmode\mskip\thickmuskip\else\kern .3333em\fi}
\def\lineup{\def\0{\hbox{\phantom{0}}}%
\def\m{\hbox{$\phantom{-}$}}%
\def\-{\llap{$-$}}}
%
%%%%%%%%%%%%%%%%%%%%%
% Tables rules %
%%%%%%%%%%%%%%%%%%%%%
\newcommand{\boldarrayrulewidth}{1\p@}
% Width of bold rule in tabular environment.
\def\bhline{\noalign{\ifnum0=`}\fi\hrule \@height
\boldarrayrulewidth \futurelet \@tempa\@xhline}
\def\@xhline{\ifx\@tempa\hline\vskip \doublerulesep\fi
\ifnum0=`{\fi}}
%
% Rules for tables with extra space around
%
\newcommand{\br}{\ms\bhline\ms}
\newcommand{\mr}{\ms\hline\ms}
%
\newcommand{\centre}[2]{\multispan{#1}{\hfill #2\hfill}}
\newcommand{\crule}[1]{\multispan{#1}{\hspace*{\tabcolsep}\hrulefill
\hspace*{\tabcolsep}}}
\newcommand{\fcrule}[1]{\ifnum\thetabtype=1\multispan{#1}{\hrulefill
\hspace*{\tabcolsep}}\else\multispan{#1}{\hrulefill}\fi}
%
% Extra spaces for tables and displayed equations
%
\newcommand{\ms}{\noalign{\vspace{3\p@ plus2\p@ minus1\p@}}}
\newcommand{\bs}{\noalign{\vspace{6\p@ plus2\p@ minus2\p@}}}
\newcommand{\ns}{\noalign{\vspace{-3\p@ plus-1\p@ minus-1\p@}}}
\newcommand{\es}{\noalign{\vspace{6\p@ plus2\p@ minus2\p@}}\displaystyle}%
%
\newcommand{\etal}{{\it et al\/}\ }
\newcommand{\dash}{------}
\newcommand{\nonum}{\par\item[]} %\par added 1/9/93
\newcommand{\mat}[1]{\underline{\underline{#1}}}
%
% abbreviations for IOPP journals
%
\newcommand{\CQG}{{\it Class. Quantum Grav.} }
\newcommand{\CTM}{{\it Combust. Theory Modelling\/} }
\newcommand{\DSE}{{\it Distrib. Syst. Engng\/} }
\newcommand{\EJP}{{\it Eur. J. Phys.} }
\newcommand{\HPP}{{\it High Perform. Polym.} } % added 4/5/93
\newcommand{\IP}{{\it Inverse Problems\/} }
\newcommand{\JHM}{{\it J. Hard Mater.} } % added 4/5/93
\newcommand{\JO}{{\it J. Opt.} }
\newcommand{\JOA}{{\it J. Opt. A: Pure Appl. Opt.} }
\newcommand{\JOB}{{\it J. Opt. B: Quantum Semiclass. Opt.} }
\newcommand{\JPA}{{\it J. Phys. A: Math. Gen.} }
\newcommand{\JPB}{{\it J. Phys. B: At. Mol. Phys.} } %1968-87
\newcommand{\jpb}{{\it J. Phys. B: At. Mol. Opt. Phys.} } %1988 and onwards
\newcommand{\JPC}{{\it J. Phys. C: Solid State Phys.} } %1968--1988
\newcommand{\JPCM}{{\it J. Phys.: Condens. Matter\/} } %1989 and onwards
\newcommand{\JPD}{{\it J. Phys. D: Appl. Phys.} }
\newcommand{\JPE}{{\it J. Phys. E: Sci. Instrum.} }
\newcommand{\JPF}{{\it J. Phys. F: Met. Phys.} }
\newcommand{\JPG}{{\it J. Phys. G: Nucl. Phys.} } %1975--1988
\newcommand{\jpg}{{\it J. Phys. G: Nucl. Part. Phys.} } %1989 and onwards
\newcommand{\MSMSE}{{\it Modelling Simulation Mater. Sci. Eng.} }
\newcommand{\MST}{{\it Meas. Sci. Technol.} } %1990 and onwards
\newcommand{\NET}{{\it Network: Comput. Neural Syst.} }
\newcommand{\NJP}{{\it New J. Phys.} }
\newcommand{\NL}{{\it Nonlinearity\/} }
\newcommand{\NT}{{\it Nanotechnology} }
\newcommand{\PAO}{{\it Pure Appl. Optics\/} }
\newcommand{\PM}{{\it Physiol. Meas.} } % added 4/5/93
\newcommand{\PMB}{{\it Phys. Med. Biol.} }
\newcommand{\PPCF}{{\it Plasma Phys. Control. Fusion\/} } % added 4/5/93
\newcommand{\PSST}{{\it Plasma Sources Sci. Technol.} }
\newcommand{\PUS}{{\it Public Understand. Sci.} }
\newcommand{\QO}{{\it Quantum Opt.} }
\newcommand{\QSO}{{\em Quantum Semiclass. Opt.} }
\newcommand{\RPP}{{\it Rep. Prog. Phys.} }
\newcommand{\SLC}{{\it Sov. Lightwave Commun.} } % added 4/5/93
\newcommand{\SST}{{\it Semicond. Sci. Technol.} }
\newcommand{\SUST}{{\it Supercond. Sci. Technol.} }
\newcommand{\WRM}{{\it Waves Random Media\/} }
\newcommand{\JMM}{{\it J. Micromech. Microeng.\/} }
%
% Other commonly quoted journals
%
\newcommand{\AC}{{\it Acta Crystallogr.} }
\newcommand{\AM}{{\it Acta Metall.} }
\newcommand{\AP}{{\it Ann. Phys., Lpz.} }
\newcommand{\APNY}{{\it Ann. Phys., NY\/} }
\newcommand{\APP}{{\it Ann. Phys., Paris\/} }
\newcommand{\CJP}{{\it Can. J. Phys.} }
\newcommand{\JAP}{{\it J. Appl. Phys.} }
\newcommand{\JCP}{{\it J. Chem. Phys.} }
\newcommand{\JJAP}{{\it Japan. J. Appl. Phys.} }
\newcommand{\JP}{{\it J. Physique\/} }
\newcommand{\JPhCh}{{\it J. Phys. Chem.} }
\newcommand{\JMMM}{{\it J. Magn. Magn. Mater.} }
\newcommand{\JMP}{{\it J. Math. Phys.} }
\newcommand{\JOSA}{{\it J. Opt. Soc. Am.} }
\newcommand{\JPSJ}{{\it J. Phys. Soc. Japan\/} }
\newcommand{\JQSRT}{{\it J. Quant. Spectrosc. Radiat. Transfer\/} }
\newcommand{\NC}{{\it Nuovo Cimento\/} }
\newcommand{\NIM}{{\it Nucl. Instrum. Methods\/} }
\newcommand{\NP}{{\it Nucl. Phys.} }
\newcommand{\PL}{{\it Phys. Lett.} }
\newcommand{\PR}{{\it Phys. Rev.} }
\newcommand{\PRL}{{\it Phys. Rev. Lett.} }
\newcommand{\PRS}{{\it Proc. R. Soc.} }
\newcommand{\PS}{{\it Phys. Scr.} }
\newcommand{\PSS}{{\it Phys. Status Solidi\/} }
\newcommand{\PTRS}{{\it Phil. Trans. R. Soc.} }
\newcommand{\RMP}{{\it Rev. Mod. Phys.} }
\newcommand{\RSI}{{\it Rev. Sci. Instrum.} }
\newcommand{\SSC}{{\it Solid State Commun.} }
\newcommand{\ZP}{{\it Z. Phys.} }
%===================
\pagestyle{headings}
\pagenumbering{arabic}
\raggedbottom
\onecolumn
\endinput
%%
%% End of file `jconf.cls'.
%%
%% This is file `jpconf11.clo'
%%
%% This file is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\ProvidesFile{jpconf11.clo}[2005/05/04 v1.0 LaTeX2e file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13}%
\abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI}
\normalsize
\newcommand\small{%
\@setfontsize\small\@xpt{12}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 9\p@ \@plus3\p@ \@minus5\p@
\parsep 4.5\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip}
\newcommand\footnotesize{%
% \@setfontsize\footnotesize\@xpt\@xiipt
\@setfontsize\footnotesize\@ixpt{11}%
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 6\p@ \@plus2\p@ \@minus2\p@
\parsep 3\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\newcommand\large{\@setfontsize\large\@xivpt{18}}
\newcommand\Large{\@setfontsize\Large\@xviipt{22}}
\newcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
\newcommand\huge{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
\if@twocolumn
\setlength\parindent{14\p@}
\else
\setlength\parindent{18\p@}
\fi
\if@letterpaper%
%\input{letmarg.tex}%
\setlength{\hoffset}{0mm}
\setlength{\marginparsep}{0mm}
\setlength{\marginparwidth}{0mm}
\setlength{\textwidth}{160mm}
\setlength{\oddsidemargin}{-0.4mm}
\setlength{\evensidemargin}{-0.4mm}
\setlength{\voffset}{0mm}
\setlength{\headheight}{8mm}
\setlength{\headsep}{5mm}
\setlength{\footskip}{0mm}
\setlength{\textheight}{230mm}
\setlength{\topmargin}{1.6mm}
\else
%\input{a4marg.tex}%
\setlength{\hoffset}{0mm}
\setlength{\marginparsep}{0mm}
\setlength{\marginparwidth}{0mm}
\setlength{\textwidth}{160mm}
\setlength{\oddsidemargin}{-0.4mm}
\setlength{\evensidemargin}{-0.4mm}
\setlength{\voffset}{0mm}
\setlength{\headheight}{8mm}
\setlength{\headsep}{5mm}
\setlength{\footskip}{0mm}
\setlength{\textheight}{230mm}
\setlength{\topmargin}{1.6mm}
\fi
\setlength\maxdepth{.5\topskip}
\setlength\@maxdepth\maxdepth
\setlength\footnotesep{8.4\p@}
\setlength{\skip\footins} {10.8\p@ \@plus 4\p@ \@minus 2\p@}
\setlength\floatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\textfloatsep {24\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {16\p@ \@plus 4\p@ \@minus 4\p@}
\setlength\dblfloatsep {16\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\dbltextfloatsep{24\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\@fptop{0\p@}
\setlength\@fpsep{10\p@ \@plus 1fil}
\setlength\@fpbot{0\p@}
\setlength\@dblfptop{0\p@}
\setlength\@dblfpsep{10\p@ \@plus 1fil}
\setlength\@dblfpbot{0\p@}
\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
\def\@listI{\leftmargin\leftmargini
\parsep=\z@
\topsep=6\p@ \@plus3\p@ \@minus3\p@
\itemsep=3\p@ \@plus2\p@ \@minus1\p@}
\let\@listi\@listI
\@listi
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep=3\p@ \@plus2\p@ \@minus\p@
\parsep=\z@
\itemsep=\parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep=\z@
\parsep=\z@
\partopsep=\z@
\itemsep=\z@}
\def\@listiv {\leftmargin\leftmarginiv
\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep}
\def\@listv{\leftmargin\leftmarginv
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep}
\endinput
%%
%% End of file `iopart12.clo'.
\documentclass[a4paper]{jpconf}
\usepackage{url}
\usepackage{graphicx}
\usepackage{float}
\newcommand{\quotes}[1]{``#1''}
\begin{document}
\title{StoRM 2: initial design and development activities}
\author{
A.~Ceccanti$^1$,
F.~Giacomini$^1$,
E.~Vianello$^1$,
E.~Ronchieri$^1$
}
\address{$^1$ INFN-CNAF, Bologna, IT}
\ead{
andrea.ceccanti@cnaf.infn.it
}
\begin{abstract}
StoRM is the storage element solution that powers the CNAF Tier 1
data center as well as more than 30 other sites. Experience in
developing, maintaining and operating it at scale suggests that a
significant refactoring of the codebase is necessary to improve
StoRM maintainability, reliability, scalability and ease of
operation in order to meet the data management requirements coming
from HL-LHC and other communities served by the CNAF Tier 1 data
center. In this contribution we highlight the initial StoRM 2
design and development activities.
\end{abstract}
\section{Introduction}
\label{sec:introduction}
StoRM was first developed by a joint collaboration between INFN-CNAF, CERN and
ICTP to provide a lightweight storage element solution implementing the
SRM~\cite{ref:srm} interface on top of a POSIX filesystem. StoRM has a layered
architecture (Figure~\ref{fig:storm-arch}), split between two main components:
the StoRM frontend and backend services. The StoRM frontend service implements
the SRM interface exposed to client applications and frameworks. The StoRM
backend service implements the actual storage management logic by interacting
directly with the underlying file system.
Communication between the frontend and the backend services happens in two ways:
\begin{itemize}
\item via an XML-RPC API, for synchronous requests;
\item via a database, for asynchronous requests.
\end{itemize}
Data transfers are provided by GridFTP, HTTP and XRootD services accessing
directly the file system underlying the StoRM deployment.
StoRM is interfaced with the IBM Tivoli Storage Manager (TSM) via
GEMSS~\cite{ref:gemss}, a component also developed at INFN, to provide optimized
data archiving and tape recall functionality.
The StoRM WebDAV service provides an alternative data management interface
complementary to the SRM functionality, albeit without supporting tape
operations yet.
In the past years StoRM has powered the CNAF Tier 1 data center as well as
dozens of other sites and proved to be a reliable SRM implementation. However,
ten years of experience in developing and operating the service at scale has
also shown limitations:
\begin{itemize}
\item The StoRM code base is not unit-tested; this means that there is no
quick feedback loop that functionality is not broken when a change is
introduced or a refactoring is implemented; there are integration and load
test suites that can be used to assess that functionality is not broken,
but these test suites are more complex to instantiate, require a full
service deployment and do no provide coverage information.
\item Data management responsibilities are scattered among several
components without clear reasons, increasing maintenance and developments
costs.
\item The StoRM backend cannot be horizontally replicated; this causes
operational problems in production and limits scalability and the ability
to adapt dynamically to load changes.
\item Logging is not harmonized among the StoRM services and limited
tracing is provided, so that it is not trivial to trace the history of an
incoming request across the services.
\item Core StoRM communication and authentication functionality relies on
dated technologies and libraries (e.g., XML-RPC, CGSI-gSOAP);
\item The codebase is significantly more complex than needed due to the
inorganic growth and lack of periodic quality assessment performed on the
code base.
\end{itemize}
To address these shortcomings, a redesign of the StoRM service has been planned
and started this year, in parallel with the main StoRM maintenance and
development activities.
\begin{figure}
\centering
\includegraphics[width=.6\textwidth]{storm-arch.png}
\caption{\label{fig:storm-arch}The StoRM 1 architecture.}
\end{figure}
\section{StoRM 2 high-level architecture}
The StoRM 2 architecture is depicted in Figure~\ref{fig:storm2-arch}.
\begin{figure}
\centering
\includegraphics[width=.6\textwidth]{high-level-arch.png}
\caption{\label{fig:storm2-arch}The StoRM 2 high-level architecture.}
\end{figure}
The layered architecture approach is maintained, so that service logic is again
split between frontend and backend service components.
The frontend responsibility is to implement the interfaces towards the outside
world. In practice, the frontend is implemented by multiple microservices,
each responsible of a specific interface (SRM, WebDAV, etc.).
TLS termination and client authentication is implemented at the edge of the
service perimeter by one (or more) Nginx reverse proxy instances. There are
several advantages in this approach:
\begin{itemize}
\item The TLS handling load is decoupled from request management load.
\item VOMS-related configuration and handling is centralized to a single
component, leading to simplified service operation and troubleshooting.
\item The TLS terminator becomes a natural place to implement load balancing
for the frontend services.
\end{itemize}
VOMS authorization support is provided by an Nginx VOMS module
~\cite{ref:nginx-voms} developed for this purpose and described in more detail
in another contribution in this report.
Besides implementing the management protocol endpoints, the frontends expose other
management and monitoring interfaces that can be consumed by internal services and
may use a relational or in-memory database to persist state information in support
of request management and accounting.
Frontends do not directly interact with the storage, but delegate the
interaction to a backend service.
The backend is a stateless service that implements basic management operations on the
storage. The storage management operations implemented are the minimum set of
operations needed to support the data management interfaces exposed by the
frontends. These operations are typically either data object lifecycle
operations (e.g., create or remove a file or a directory, list directory contents) or
metadata operations (e.g., get the size of a file, manage ACLs).
The communication between the frontend and the backend services is implemented
on top of gRPC~\cite{ref:grpc}, a remote procedure call system initially
developed at Google. The actual messages exchanged between them are
synthesized from a description expressed in an interface description language
called \textit{Protocol Buffers}~\cite{ref:protocol-buffers}; from the same
message description, language-specific client and server stubs are generated. As
an example, the following listing shows the description of the messages and of
the service involved in the simple case of the \textit{version} command.
{\small
\begin{verbatim}
message VersionRequest {
// The version of the client calling the service.
string version = 1;
}
message VersionResponse {
// The version of the service answering the call
string version = 1;
}
service VersionService {
rpc getVersion(VersionRequest) returns (VersionResponse);
}
\end{verbatim}
}
\section{Principles guiding the development work}
The following principles have driven the StoRM 2 development work.
\begin{itemize}
\item The source code will be kept in a Git repository hosted on the INFN
Gitlab service; the development will follow a branching model inspired
at Git-workflow~\cite{ref:gitflow} and already successfully used for other
components developed by the team (e.g., VOMS, INDIGO IAM, StoRM).
\item Rhe code for all main components (frontend and backend services,
CLIs, etc.) will be hosted on a single repository and a single version number
will be shared for all the components.
\item A test-driven development approach will be followed, using tools that
allow to measure the test coverage of the codebase. The objective is to
ensure high coverage ($>90\%$) on all code.
\item Whenever possible, the code should be self-documenting; the source code folder
structure will be documented with README.md files providing a
description of each folder contents; a CHANGELOG file will provide
information of new features and bug fixes following established
industry best practices~\cite{ref:keep-a-changelog}.
\item The development and testing environment will be containerized, in
order to ensure a consistent environment definition and avoid "works on my
machine" issues.
\item Services should provide monitoring and metrics endpoints to enable the
collection of status information and performance metrics.
\item Service should support graceful shutdown and draining.
\item A CI pipeline will be in place, to build and test continuously the code.
\item A consistent configuration and logging format will be adopted across
all the components, to make service operations easier and simplify log
files interpretation, aggregation and management.
\item Support for request traceability will be part of the system since its
inception.
\end{itemize}
The development of StoRM 2 will be organized in SCRUM-like sprints, where each
sprint will be roughly 4-5 weeks long.
The output of each sprint should be a deployable instance of the services
implementing a subset of the whole foreseen StoRM 2 functionality.
\section{The build and test environment}
The build environment heavily relies on container technology~\cite{ref:docker},
both to guarantee full build and test reproducibility and to offer a common
reference platform for development.
Since the code for all components is kept in a single git repository, we have
also opted for a single Docker image to build everything, containing all the
needed build tools (compilers, unit testing frameworks, static and dynamic
analyzers, external dependencies, etc.). The resulting image is large but still
manageable and having one image simplifies the operations.
There are also a couple of other Docker images: one is a specialization of the
build image mentioned above and is dedicated to the build of the Nginx VOMS
module; the other is an image with client tools used during integration testing.
All the image Dockerfiles are kept in a single repository, under continuous
integration, so that every time there is a change the images are rebuilt.
\section{The StoRM 2 frontend component}
The StoRM 2 frontend is composed of a set of stateless Spring Boot 2
applications written in Java that implement the management protocol endpoints,
such as SRM~\cite{ref:srm} and WebDAV~\cite{ref:webdav}. The frontend services
maintain state in an external database.
The main frontend responsibilities are to:
\begin{itemize}
\item implement consistent authorization, taking as input the
authentication information exposed by the Nginx TLS terminator and
matching this information with a common authorization policy;
\item implement request validation and management, i.e.,
protocol-specific management of request queuing as well as conflict
handling;
\item translate protocol-specific requests to a set of basic storage
management operations executed by the backend and exposed via a set of
gRPC services;
\item provide service management and observability endpoints, to allow
administrators to get information about the requests currently being
serviced by the system, drain the service or manually force request status
transitions.
\end{itemize}
The first frontend service developed in StoRM 2 focuses on the SRM interface,
and at the time of this writing implements support for the SRM \textit{ping} and
\textit{ls} methods.
In the initial development sprints, significant work has been devoted to ensure
the testability of the frontend component in isolation, by leveraging the
powerful testing support provided by Spring~\cite{ref:spring} and the gRPC
frameworks.
\section{The StoRM 2 backend component}
The StoRM 2 backend is a gRPC server that provides multiple
services. One service responds to \textit{version} requests. Another
service responds to storage-related requests, which represent the main
scope of StoRM. In general there is no direct, one-to-one mapping
between SRM requests arriving at the frontend and requests addressed
to the backend; rather, these represent building blocks that the
frontend can compose in order to prepare the responses to SRM clients.
Among the storage requests addressed to the backend, at the moment
only a couple are implemented: \textit{ls}, in its multiple variations
(for a file or a directory, recursive, up to a given depth, etc.),
returns information about files and directories; \textit{pin},
\textit{unpin} and \textit{pin status} manage the
\verb|user.storm.pinned| attribute of filesystem entities, which is
essential for the implementation of the more complex
\textit{srmPrepareToGet} SRM request.
All the backend requests are currently blocking: a response is sent
back to the frontend only when the request has been fully processed.
The backend also incorporates sub-components of more general utility
to operate on Filesystem Extended Attributes and POSIX Access Control
Lists~\cite{p1003.1e}, adding a layer of safety and expressivity on
top of the native C APIs. They allow to define attributes and ACLs
respectively and to apply them to or read them from filesystem
entities.
For example the following sets the attribute \verb|user.storm.pinned|
of file \verb|myFile.txt| to the pin duration:
{\small
\begin{verbatim}
set_xattr(
storage_dir / "myFile.txt",
StormXAttrName{"pinned"},
XAttrValue{duration}
);
\end{verbatim}
}
The following instead extends the ACL currently assigned to
\verb|myFile.txt| with some additional entries:
{\small
\begin{verbatim}
add_to_access_acl(
storage_dir / "myFile.txt",
{
{User{"storm"}, Perms::Read | Perms::Write},
{Group{"storm"}, Perms::Read},
{other, Perms::None}
}
);
\end{verbatim}
}
The backend is implemented in C++, in the latest standard version
supported by the toolset installed in the reference platform
(currently C++17). The build system is based on CMake.
The backend relies on some other third-party dependencies, the most
important being for interaction with the filesystem (Boost
Filesystem~\cite{ref:boost.fs}), for logging (Boost
Log~\cite{ref:boost.log}) and for handling configuration
(yaml-cpp~\cite{ref:yaml-cpp}).
\section{Test suite and continuous integration}
The test suite is based on the Robot Framework~\cite{ref:rf} and is typically
run in a Docker container. A deployment test pipeline~\cite{ref:glcip} runs on
our Gitlab-based continuous integration (CI) system every night (and after any
commit on the master branch) to instantiate the main StoRM 2 services and
execute the SRM testsuite. The reports of the test suite execution are archived
and published on the Gitlab CI dashboard. Services and the test suite are
orchestrated using Docker Compose~\cite{ref:dc}. This approach provides an
intuitive, self-contained testing environment deployable on the CI system and on
the developers workstations.
The test deployment mirrors the architecture shown in
Figure~\ref{fig:storm-arch}, with clients and services placed in different
docker networks to mimic a real-life deployment scenario.
\section{Conclusions and future work}
In this contribution we have described the initial design and development
activities performed during 2018 on StoRM 2, the next incarnation of the StoRM
storage management system.
The main objectives of the StoRM refactoring is to improve the service
scalability and manageability in order to meet the data management requirements
of HL-LHC. The initial work of this year focused on choosing tools,
methodologies and approach with a strong emphasis on software quality.
In the future we will build on this groundwork to provide a full replacement
for the existing StoRM implementation. The lack of dedicated manpower for this
activity makes it hard to estimate when StoRM 2 will be ready to be deployed in
production.
\section*{References}
\bibliographystyle{iopart-num}
\bibliography{biblio}
\end{document}
contributions/sd_storm2/storm-arch.png

87.3 KiB

contributions/sdds-deep/DEEP-WP.png

103 KiB

contributions/sdds-deep/DEEP-aas.png

155 KiB

contributions/sdds-deep/DEEP-arch.png

270 KiB

\documentclass[a4paper]{jpconf}
\usepackage{graphicx}
\begin{document}
\title{DEEP-Hybrid DataCloud project: Hybrid services for distributed e-infrastructures}
%\address{Production Editor, \jpcs, \iopp, Dirac House, Temple Back, Bristol BS1~6BE, UK}
\author{A. Costantini$^1$, D.C. Duma$^1$, D. Michelotto$^1$, A. Falabella$^1$, E. Ronchieri$^1$, A. Ceccanti$^1$, M. Caberletti$^1$, D.Salomoni$^1$
% etc.
}
\address{$^1$ INFN-CNAF, Bologna, Italy}
\ead{alessandro.costantini@cnaf.infn.it}
\begin{abstract}
DEEP Hybrid DataCloud is an Horizon 2020 project that addresses the need to support intensive computing
techniques that require specialized HPC hardware, like GPUs or low-latency interconnects, to explore very large data sets.
Launched in November 2017 the H2020 DEEP Hybrid-DataCloud - DEEP-HDC is lasting for 30 months and is
combining the expertise of 10 large European research organisations.
The project proposes to deploy under the common label of “DEEP as a Service” a set of building blocks that
enable the easy development of applications requiring these techniques: deep learning using neural networks,
parallel post-processing of very large data, and analysis of massive online data streams.
This contribution will introduce the project, presents the foreseen overall architecture and the contribution to the
activities that are being carried on by INFN-CNAF personnel to achieve the project goals and objectives.
\end{abstract}
\section{Introduction}
Machine learning 'as-a-service' can clearly be seen as one of the main user requirements being asked for when
thinking about using large-scale computing infrastructure. With ever more data being available, the wish to
exploit this data is omnipresent. While machine learning pipelines for small-scale data sets are available in the
form of several software libraries, large-scale learning tasks provide another level of challenge. With the need
for a proper design of the learning task at hand, additional tasks result in the need to organize large-scale data,
the provision of necessary computing power and storage capacity and, since large-scale data is commonly
distributed, the orchestration of various infrastructure components at different places. It is obvious that such
learning tasks cannot be managed by a user with domain knowledge in the field of application, only. Therefore,
support by the infrastructure layer must break down the complexity of the task and allow the user to focus on
what she/he is skilled on, i.e., modeling of the problem, evaluating and interpreting the results of the machine
learning algorithms.
As a consequence, infrastructure providers have to understand the needs of their user communities and help
them to combine their services in a way that encapsulates technical details the end user does not have to deal with.
Indeed, this is the goal of the DEEP-HDC project \cite{deep} aimed at deploying under the common label of “DEEP as a Service” a
set of building blocks that enable the easy development of applications requiring these techniques: deep learning
using neural networks, parallel post-processing of very large data, and analysis of massive online data streams.
The targeted platforms for the released products are the already existing and the next generation e-Infrastructures
deployed in Europe, such as the European Open Science Cloud (EOSC) \cite{EOSC}, the European Grid Infrastructure
(EGI) \cite{EGI} and the computing infrastructures that will be funded by the upcoming H2020 EINFRA-12 call.
DEEP-HDC is funded by the H2020 EINFRA-21-2017 Research and Innovation action under the topic Platform-driven
e-Infrastructure innovation \cite{einfracall21}. It is carried on by a Consortium that brings together technology
providers with a proven long-standing experience in software development and large research communities
belonging to diverse disciplines: Biological and Medical Science, Computing Security, Physical Sciences, Citizen
Science and Earth Observation.
DEEP-HDC started on 1st November 2017 and will run for 30 months until April 2020. The EU contribution for
the project is 2.98 million euros.
\section{Project Objectives}
The DEEP-Hybrid-DataCloud project started with the global objective of promoting the usage of intensive
computing services by different research communities and areas, and their support by the corresponding
e-Infrastructure providers and open source projects. Other objectives followed by the project are:
\begin{itemize}
\item Focus on intensive computing techniques for the analysis of very large data sets considering highly demanding use cases.
\item Evolve up to production level, intensive computing services exploiting specialized hardware.
\item Integrate intensive computing services under a hybrid cloud approach.
\item Define a “DEEP as a Service” solution to offer an adequate integration path to developers of final applications.
\item Analyse the complementarity with other ongoing projects targeting added value services for the cloud.
\end{itemize}
The DEEP-Hybrid-DataCloud project aims to provide a bridge towards a more flexible exploitation of intensive
computing resources by the research community, enabling access to the latest technologies that require also
last generation hardware and the scalability to be able to explore large data sets. It is structured into six
different work packages, covering Networking Activities (NA) devoted to the coordination, communication
and community liaison; Service Activities (SA) focused on the provisioning of services and resources for the
execution of the data analysis challenges; and Joint Research Activities (JRAs), dealing with the development
of new components and technologies to support data analysis.
In order to achieve these objectives, we propose to evolve existing cloud services, taking into account the
following design principles:
\begin{itemize}
\item Evolve the required services from TRL6 to TRL8 under an open framework and considering existing
standards for interoperability.
\item Re-use if possible existing cloud services in production, and in particular those being adopted for
proposed e-infrastructure of the European Open Science Cloud.
\item Consider the integration of existing specialized resources into cloud services having in mind the point
of view of the current daily management of those resources, like for example current HPC data centres.
\item Ensure that the resulting framework will have a low learning curve for the developers of the solutions,
by delivering a DEEP catalogue that can be directly exploited by users to build their applications.
\item Assure the scalability and performance of the solution developed, which is key to guarantee the interest
both of resource providers and users.
\end{itemize}
\section{Project structure}
The DEEP Hybrid DataCloud project is structured into six different work packages, covering Networking
Activities (NA) devoted to the coordination, communication and community liaison; Service Activities (SA)
focused on the provisioning of services and resources for the execution of the data analysis challenges; and
Joint Research Activities (JRAs), dealing with the development of new components and technologies to
support data analysis. Figure \ref{fig-wp} describes the interaction between the different work packages.
\begin{figure}[h]
\centering
\includegraphics[width=10cm,clip]{DEEP-WP.png}
\caption{Diagram showing WPs interrelation.}
\label{fig-wp}
\end{figure}
It is important to remark the key role of WP2/NA2 and WP3/SA1 to define and channel towards the JRA
work packages, WP4, WP5, WP6, the requirements for the solutions to be developed, and then provide feedback.
The direct interaction between WP2 and WP6 will promote an agile interaction on the design and
DEEP Hybrid DataCloud implementation of the services for final users.
{\bf Work Package 1, WP1 (NA1) - Project Management and Exploitation.}
This work package will perform the global oversight of the activities carried out within the project, ensuring
that they are aligned with the DEEP Hybrid DataCloud work programme. WP1 will also coordinate the
consortium management through the governance structure, including the promotion
of an adequate interaction between the WP through the steering committee.
{\bf Work Package 2, WP2 (NA2) - Intensive Computing Pilot Applications.}
This work package is responsible for the definition and correct understanding of the pilot usage scenarios
regarding the project’s technical architecture and will propose an architecture that is
applicable for the identified applications. Moreover, NA2 will interact with SA1 and JRA3 to ensure that the
delivered outcomes are aligned with the expectations of the user communities, are compliant with the
proposed scenarios and validated against the user applications.
{\bf Work Package 3, WP3 (SA1) - Testbed and integration with EOSC services.}
The service activities of the project will be supported by WP3, that will guarantee that the project pilot
testbeds are correctly integrated with other state of the art and e-Infrastructures and services from the
European Open Science Cloud (EOSC), so that the project can exploit their services in an easy way.
Moreover, this work package will supervise the software development within the project, providing a
continuous software improvement process that will involve quality assurance activities, software release
management, maintenance and support.
In particular, INFN-CNAF is coordinating Task 3.2 - Software quality assurance, release, maintenance and support.
Expressed in terms of Software Quality Assurance and Software Release and Maintenance, CNAF is coordinating
the management of those software products that became officially part of the first DEEP releases, codenamed
Genesis \cite{deep-genesis}, foreseen for late 2018 and effectively released in January 2019.
INFN CNAF is also coordinating the implementation of the continuous software improvement process,
following a DevOps approach, through the definition and realization of an innovative Continuous
Integration (CI) and Delivery (CD) system.
INFN-CNAF is contributing also to Task 3.1 - Pilot testbeds and integration with EOSC platform and their services - by
providing and maintaining the testbeds dedicated to developers, software integration and software preview.
In particular, the activities were focused in implementing the services needed to support the software development and release
management and included among others the source code repository, and continuous integration system.
{\bf Work Package 4, WP4 (JRA1) - Accelerated and High Performance Computing in the Cloud.}
This key research activity will be carried out close to the hardware and infrastructure, addressing the gaps
that currently exist in the support of accelerators (like GPU), specialized hardware (such as low-latency
interconnects) and HPC systems in general.
In particular, INFN-CNAF contributes to Task 4.3 - Interaction with HPC resources with PaaS approach - by making
available its experience on virtualization technologies and cloud middleware frameworks to develop advanced
solutions that enable the delivery of bare-metal like performance and the resource sharing in multi-tenancy environments.
{\bf Work Package 5, WP5 (JRA2) - High Level Hybrid Cloud solutions.}
Lead by INFN, WP5 will take care of the provisioning of the platform exploiting the outcomes from JRA1 in a hybrid
approach, delivering an execution platform for JRA2, ensuring that applications can be spawned in across
several cloud infrastructures.
In particular, INFN-CNAF contributes to Task 5.1 - PaaS-level Orchestration Supporting Multi-IaaS Hybrid Infrastructures -
by contributing both to the development of solutions aimed at provision and orchestrate resources among multiple IaaS and to the test
of the new TOSCA Templates that are able to deploy clusters of services.
{\bf Work Package 6, WP6 (JRA3) - DEEP as a Service.}
This activity focuses on bridging the outcomes of NA2, JRA1 and JRA2 so as to deliver the final solution to
the users in the form of a DEEP as a Service solution. This service will ensure that scientists have an easy
way to deploy and execute their intensive compute applications based on containers (from NA2) that will be
executed in an hybrid cloud platform (JRA2), exploiting the specialized hardware that their application requires (JRA1).
INFN-CNAF contributes to the JRA3 activities and task by supporting integration and testing activities aimed at
composing a set of defined building blocks that will model the user application and deploying these applications as services that
can be offered to final users, as a way to deliver scientific results to a wider scope of stakeholders.
In particular, INFN-CNAF is testing the DEEP-Alien4Cloud \cite{A4C} plugin, elected as the tool able to provide an
easy to use and intuitive application composition to deliver the DEEaaS solutions.
\section{DEEP Overall architecture}
The DEEP PaaS layer is based on the components developed and integrated in the INDIGO-DataCloud project \cite{indigo}.
The architecture is depicted in Figure~\ref{fig-arch} and the main components are briefly described hereafter:
\begin{figure}[h]
\centering
\includegraphics[width=10cm,clip]{DEEP-arch.png}
\caption{The architecture of the DEEP PaaS layer is based on the building blocks provided by the INDIGO-DataCloud project.}
\label{fig-arch}
\end{figure}
The PaaS Orchestrator is the core component of the PaaS layer. It receives high-level deployment requests and coordinates
the deployment process over the IaaS platforms.
The Identity and Access Management (IAM) Service provides a layer where identities, enrollment, group membership, attributes
and policies to access distributed resources and services can be managed in an homogeneous and interoperable way.
The Monitoring Service is in charge of collecting monitoring data from the targeted clouds, analysing and transforming them into
information to be consumed by the Orchestrator.
The Cloud Provider Ranker (CPR) is a rule-based engine that allows to rank cloud providers in order to help the Orchestrator
to select the best one for the requested deployment. The ranking algorithm can take into account preferences specified by
the user and other information like SLAs and monitoring data.
The SLA Management (SLAM) service allows the handshake between users and a site on a given SLA.
The Managed Service/Application (MSA) Deployment Service is in charge of scheduling, spawning, executing and monitoring
applications and services on a distributed infrastructure; the core of this component consists of an elastic Mesos cluster with
slave nodes dynamically provisioned and distributed on the IaaS sites.
The Infrastructure Manager (IM) deploys complex and customized virtual infrastructures on a IaaS site providing an abstraction
layer to define and provision resources in different clouds and virtualization platforms.
The Data Management Services is a collection of services that provide an abstraction layer for accessing the data storage
in a unified and federated way.
The Information Provider and Accounting System collects detailed information from an IaaS provider about the current
status of the resources from the amount of resources of CPU, RAM or storage to the availability of a service.
\section{DEEP as a Service solution}
The high level decomposition of the DEEP as a Service design is depicted in Figure~\ref{fig-DEEPaas}
and consists on the following key components:
\begin{itemize}
\item The DEEP open Catalog where the users, communities, etc. can browse, store and download relevant modules
for building up their applications (like ready to use machine learning frameworks, complex application topologies, etc.).
\item An application modeler or composition tool, that will be used to build up complex application topologies in an easy way.
\item A runtime engine, that will take the defined topology as input, provision the required computing resources and
deploy the application.
\item The DEEP PaaS layer, that will coordinate the overall workflow execution to choose the appropriate Cloud sites
and manage the deployment of the applications to be executed.
\item The DEEP as a Service solution, that will offer the application functionality to the user.
\item The EINFRA/EOSC data services, to be integrated with the DEEP solutions in order to provide access to any of
the data facilities existing in the European Open Science Cloud
\end{itemize}
The system is designed with extensibility in mind, taking great care in designing a framework which can be updated
easily and where a component can be replaced with a new one in case it is needed. Many of the anticipated changes
to our system in future phases will only require adding additional functionality on top of existing components,
remaining backwards compatible with previous versions.
\begin{figure}[h]
\centering
\includegraphics[width=12cm,clip]{DEEP-aas.png}
\caption{DEEPaaS high level architecture.}
\label{fig-DEEPaas}
\end{figure}
\section{Conclusions}
In the present contribution the DEEP-XDC project and its objectives have been presented and discussed.
These objective, together with the related needs proper of the research communities involved in the project, are
the real driver to develop innovative and reliable open source solutions able to fill up the technology gaps that currently
prevent effective exploitation of distributed computing and storage resources by many scientific communities.
For the second part of project, the activities carried on at INFN-CNAF will continue to ensure the fulfillment of the
project objectives.
In particular, the already available software solutions will be enriched by advanced functionalities (provided by JRAs)
aimed at addressing the use case requirements provided by NA2.
The implementation and related testing of those new solutions will be performed in the testbeds maintained by SA1.
SA1 will also continue its activities aimed at further validate the software, its robustness and scalability and will follow
the preparation of the second project release, DEEP-2 , foreseen for the second half of 2019.
Moreover, DEEP-HDC project can complement and integrate with other running projects and communities and with
existing multi-national, multi-community infrastructures. As an example,DEEP-HDC is collaborating with the
eXtreme-DataCloud (XDC) \cite{xdc} project aimed at developing scalable technologies for federating storage
resources and managing data in highly distributed computing environments.
\section*{Acknowledgments}
DEEP-HybridDataCloud has been funded by the European Commission H2020 research and innovation
program under grant agreement RIA 777435.
\section{References}
\begin{thebibliography}{}
\bibitem{deep}
Web site: www.deep-hybrid-datacloud.eu
\bibitem{EOSC}
Web site: https://ec.europa.eu/research/openscience/index.cfm?pg=open-science-cloud
\bibitem{EGI}
Web site: https://www.egi.eu/
\bibitem{einfracall21}
Web site: http://ec.europa.eu/research/participants/portal/desktop/en/opportunities/h2020/topics/einfra-21-2017.html
\bibitem{deep-genesis}
Web site: https://deep-hybrid-datacloud.eu/2019/01/18/deep-genesis-first-software-release-is-out/
\bibitem{A4C}
Web site: https://github.com/indigo-dc/alien4cloud-deep/
\bibitem{indigo}
Web site: https://www.indigo-datacloud.eu
\bibitem{xdc}
Web site: www.extreme-datacloud.eu
\end{thebibliography}
\end{document}
File added
%%
%% This is file `iopams.sty'
%% File to include AMS fonts and extra definitions for bold greek
%% characters for use with iopart.cls
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{iopams}[1997/02/13 v1.0]
\RequirePackage{amsgen}[1995/01/01]
\RequirePackage{amsfonts}[1995/01/01]
\RequirePackage{amssymb}[1995/01/01]
\RequirePackage{amsbsy}[1995/01/01]
%
\iopamstrue % \newif\ifiopams in iopart.cls & iopbk2e.cls
% % allows optional text to be in author guidelines
%
% Bold lower case Greek letters
%
\newcommand{\balpha}{\boldsymbol{\alpha}}
\newcommand{\bbeta}{\boldsymbol{\beta}}
\newcommand{\bgamma}{\boldsymbol{\gamma}}
\newcommand{\bdelta}{\boldsymbol{\delta}}
\newcommand{\bepsilon}{\boldsymbol{\epsilon}}
\newcommand{\bzeta}{\boldsymbol{\zeta}}
\newcommand{\bfeta}{\boldsymbol{\eta}}
\newcommand{\btheta}{\boldsymbol{\theta}}
\newcommand{\biota}{\boldsymbol{\iota}}
\newcommand{\bkappa}{\boldsymbol{\kappa}}
\newcommand{\blambda}{\boldsymbol{\lambda}}
\newcommand{\bmu}{\boldsymbol{\mu}}
\newcommand{\bnu}{\boldsymbol{\nu}}
\newcommand{\bxi}{\boldsymbol{\xi}}
\newcommand{\bpi}{\boldsymbol{\pi}}
\newcommand{\brho}{\boldsymbol{\rho}}
\newcommand{\bsigma}{\boldsymbol{\sigma}}
\newcommand{\btau}{\boldsymbol{\tau}}
\newcommand{\bupsilon}{\boldsymbol{\upsilon}}
\newcommand{\bphi}{\boldsymbol{\phi}}
\newcommand{\bchi}{\boldsymbol{\chi}}
\newcommand{\bpsi}{\boldsymbol{\psi}}
\newcommand{\bomega}{\boldsymbol{\omega}}
\newcommand{\bvarepsilon}{\boldsymbol{\varepsilon}}
\newcommand{\bvartheta}{\boldsymbol{\vartheta}}
\newcommand{\bvaromega}{\boldsymbol{\varomega}}
\newcommand{\bvarrho}{\boldsymbol{\varrho}}
\newcommand{\bvarzeta}{\boldsymbol{\varsigma}} %NB really sigma
\newcommand{\bvarsigma}{\boldsymbol{\varsigma}}
\newcommand{\bvarphi}{\boldsymbol{\varphi}}
%
% Bold upright capital Greek letters
%
\newcommand{\bGamma}{\boldsymbol{\Gamma}}
\newcommand{\bDelta}{\boldsymbol{\Delta}}
\newcommand{\bTheta}{\boldsymbol{\Theta}}
\newcommand{\bLambda}{\boldsymbol{\Lambda}}
\newcommand{\bXi}{\boldsymbol{\Xi}}
\newcommand{\bPi}{\boldsymbol{\Pi}}
\newcommand{\bSigma}{\boldsymbol{\Sigma}}
\newcommand{\bUpsilon}{\boldsymbol{\Upsilon}}
\newcommand{\bPhi}{\boldsymbol{\Phi}}
\newcommand{\bPsi}{\boldsymbol{\Psi}}
\newcommand{\bOmega}{\boldsymbol{\Omega}}
%
% Bold versions of miscellaneous symbols
%
\newcommand{\bpartial}{\boldsymbol{\partial}}
\newcommand{\bell}{\boldsymbol{\ell}}
\newcommand{\bimath}{\boldsymbol{\imath}}
\newcommand{\bjmath}{\boldsymbol{\jmath}}
\newcommand{\binfty}{\boldsymbol{\infty}}
\newcommand{\bnabla}{\boldsymbol{\nabla}}
\newcommand{\bdot}{\boldsymbol{\cdot}}
%
% Symbols for caption
%
\renewcommand{\opensquare}{\mbox{$\square$}}
\renewcommand{\opentriangle}{\mbox{$\vartriangle$}}
\renewcommand{\opentriangledown}{\mbox{$\triangledown$}}
\renewcommand{\opendiamond}{\mbox{$\lozenge$}}
\renewcommand{\fullsquare}{\mbox{$\blacksquare$}}
\newcommand{\fulldiamond}{\mbox{$\blacklozenge$}}
\newcommand{\fullstar}{\mbox{$\bigstar$}}
\newcommand{\fulltriangle}{\mbox{$\blacktriangle$}}
\newcommand{\fulltriangledown}{\mbox{$\blacktriangledown$}}
\endinput
%%
%% End of file `iopams.sty'.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{jpconf}
[2007/03/07 v1.1
LaTeX class for Journal of Physics: Conference Series]
%\RequirePackage{graphicx}
\newcommand\@ptsize{1}
\newif\if@restonecol
\newif\if@letterpaper
\newif\if@titlepage
\newif\ifiopams
\@titlepagefalse
\@letterpaperfalse
\DeclareOption{a4paper}
{\setlength\paperheight {297mm}%
\setlength\paperwidth {210mm}%
\@letterpaperfalse}
\DeclareOption{letterpaper}
{\setlength\paperheight {279.4mm}%
\setlength\paperwidth {215.9mm}%
\@letterpapertrue}
\DeclareOption{landscape}
{\setlength\@tempdima {\paperheight}%
\setlength\paperheight {\paperwidth}%
\setlength\paperwidth {\@tempdima}}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
\renewcommand\@ptsize{1}
%\ExecuteOptions{A4paper, twoside}
\ExecuteOptions{A4paper}
\ProcessOptions
\DeclareMathAlphabet{\bi}{OML}{cmm}{b}{it}
\DeclareMathAlphabet{\bcal}{OMS}{cmsy}{b}{n}
\input{jpconf1\@ptsize.clo}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\renewcommand\baselinestretch{}
\setlength\parskip{0\p@ \@plus \p@}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
\setlength\parindent{5mm}
\setcounter{topnumber}{8}
\renewcommand\topfraction{1}
\setcounter{bottomnumber}{3}
\renewcommand\bottomfraction{.99}
\setcounter{totalnumber}{8}
\renewcommand\textfraction{0.01}
\renewcommand\floatpagefraction{.8}
\setcounter{dbltopnumber}{6}
\renewcommand\dbltopfraction{1}
\renewcommand\dblfloatpagefraction{.8}
\renewcommand{\title}{\@ifnextchar[{\@stitle}{\@ftitle}}
\pretolerance=5000
\tolerance=8000
% Headings for all pages apart from first
%
\def\ps@headings{%
\let\@oddfoot\@empty
\let\@evenfoot\@empty
\let\@oddhead\@empty
\let\@evenhead\@empty
%\def\@evenhead{\thepage\hfil\itshape\rightmark}%
%\def\@oddhead{{\itshape\leftmark}\hfil\thepage}%
%\def\@evenhead{{\itshape Journal of Physics: Conference Series}\hfill}%
%\def\@oddhead{\hfill {\itshape Journal of Physics: Conference Series}}%%
\let\@mkboth\markboth
\let\sectionmark\@gobble
\let\subsectionmark\@gobble}
%
% Headings for first page
%
\def\ps@myheadings{\let\@oddfoot\@empty\let\@evenfoot\@empty
\let\@oddhead\@empty\let\@evenhead\@empty
\let\@mkboth\@gobbletwo
\let\sectionmark\@gobble
\let\subsectionmark\@gobble}
%
\def\@stitle[#1]#2{\markboth{#1}{#1}%
%\pagestyle{empty}%
\thispagestyle{myheadings}
\vspace*{25mm}{\exhyphenpenalty=10000\hyphenpenalty=10000
%\Large
\fontsize{18bp}{24bp}\selectfont\bf\raggedright\noindent#2\par}}
\def\@ftitle#1{\markboth{#1}{#1}%
\thispagestyle{myheadings}
%\pagestyle{empty}%
\vspace*{25mm}{\exhyphenpenalty=10000\hyphenpenalty=10000
%\Large\raggedright\noindent\bf#1\par}
\fontsize{18bp}{24bp}\selectfont\bf\noindent\raggedright#1\par}}
%AUTHOR
\renewcommand{\author}{\@ifnextchar[{\@sauthor}{\@fauthor}}
\def\@sauthor[#1]#2{\markright{#1} % for production only
\vspace*{1.5pc}%
\begin{indented}%
\item[]\normalsize\bf\raggedright#2
\end{indented}%
\smallskip}
\def\@fauthor#1{%\markright{#1} for production only
\vspace*{1.5pc}%
\begin{indented}%
\item[]\normalsize\bf\raggedright#1
\end{indented}%
\smallskip}
%E-MAIL
\def\eads#1{\vspace*{5pt}\address{E-mail: #1}}
\def\ead#1{\vspace*{5pt}\address{E-mail: \mailto{#1}}}
\def\mailto#1{{\tt #1}}
%ADDRESS
\newcommand{\address}[1]{\begin{indented}
\item[]\rm\raggedright #1
\end{indented}}
\newlength{\indentedwidth}
\newdimen\mathindent
\mathindent = 6pc
\indentedwidth=\mathindent
% FOOTNOTES
%\renewcommand\footnoterule{%
% \kern-3\p@
% \hrule\@width.4\columnwidth
% \kern2.6\p@}
%\newcommand\@makefntext[1]{%
% \parindent 1em%
% \noindent
% \hb@xt@1.8em{\hss\@makefnmark}#1}
% Footnotes: symbols selected in same order as address indicators
% unless optional argument of [<num>] use to specify required symbol,
% 1=\dag, 2=\ddag, etc
% Usage: \footnote{Text of footnote}
% \footnote[3]{Text of footnote}
%
\def\footnoterule{}%
\setcounter{footnote}{0}
\long\def\@makefntext#1{\parindent 1em\noindent
\makebox[1em][l]{\footnotesize\rm$\m@th{\fnsymbol{footnote}}$}%
\footnotesize\rm #1}
\def\@makefnmark{\normalfnmark}
\def\normalfnmark{\hbox{${\fnsymbol{footnote}}\m@th$}}
\def\altfnmark{\hbox{$^{\rm Note}\ {\fnsymbol{footnote}}\m@th$}}
\def\footNote#1{\let\@makefnmark\altfnmark\footnote{#1}\let\@makefnmark\normalfnmark}
\def\@thefnmark{\fnsymbol{footnote}}
\def\footnote{\protect\pfootnote}
\def\pfootnote{\@ifnextchar[{\@xfootnote}{\stepcounter{\@mpfn}%
\begingroup\let\protect\noexpand
\xdef\@thefnmark{\thempfn}\endgroup
\@footnotemark\@footnotetext}}
\def\@xfootnote[#1]{\setcounter{footnote}{#1}%
\addtocounter{footnote}{-1}\footnote}
\newcommand\ftnote{\protect\pftnote}
\newcommand\pftnote[1]{\setcounter{footnote}{#1}%
\addtocounter{footnote}{-1}\footnote}
\newcommand{\fnm}[1]{\setcounter{footnote}{#1}\footnotetext}
\def\@fnsymbol#1{\ifnum\thefootnote=99\hbox{*}\else^{\thefootnote}\fi\relax}
%
% Address marker
%
\newcommand{\ad}[1]{\noindent\hbox{$^{#1}$}\relax}
\newcommand{\adnote}[2]{\noindent\hbox{$^{#1,}$}\setcounter{footnote}{#2}%
\addtocounter{footnote}{-1}\footnote}
\def\@tnote{}
\newcounter{oldftnote}
\newcommand{\tnote}[1]{*\gdef\@tnote{%
\setcounter{oldftnote}{\c@footnote}%
\setcounter{footnote}{99}%
\footnotetext{#1}%
\setcounter{footnote}{\c@oldftnote}\addtocounter{footnote}{-1}}}
%==================
% Acknowledgments (no heading if letter)
% Usage \ack for Acknowledgments, \ackn for Acknowledgement
\def\ack{\section*{Acknowledgments}}
\def\ackn{\section*{Acknowledgment}}
%SECTION DEFINITIONS
\setcounter{secnumdepth}{3}
\newcounter {section}
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
\renewcommand \thesection {\arabic{section}}
\renewcommand\thesubsection {\thesection.\arabic{subsection}}
\renewcommand\thesubsubsection{\thesubsection .\arabic{subsubsection}}
\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}}
\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}}
%\nosections
\def\nosections{\vspace{30\p@ plus12\p@ minus12\p@}
\noindent\ignorespaces}
%\renewcommand{\@startsection}[6]
%{%
%\if@noskipsec \leavevmode \fi
%\par
% \@tempskipa #4\relax
%%\@tempskipa 0pt\relax
% \@afterindenttrue
% \ifdim \@tempskipa <\z@
% \@tempskipa -\@tempskipa \@afterindentfalse
% \fi
% \if@nobreak
% \everypar{}%
% \else
% \addpenalty\@secpenalty\addvspace\@tempskipa
% \fi
% \@ifstar
% {\@ssect{#3}{#4}{#5}{#6}}%
% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
%\renewcommand{\@sect}[8]{%
% \ifnum #2>\c@secnumdepth
% \let\@svsec\@empty
% \else
% \refstepcounter{#1}%
% \protected@edef\@svsec{\@seccntformat{#1}\relax}%
% \fi
% \@tempskipa #5\relax
% \ifdim \@tempskipa>\z@
% \begingroup
% #6{%
% \@hangfrom{\hskip #3\relax\@svsec}%
% \interlinepenalty \@M #8\@@par}%
% \endgroup
% \csname #1mark\endcsname{#7}%
% \addcontentsline{toc}{#1}{%
% \ifnum #2>\c@secnumdepth \else
% \protect\numberline{\csname the#1\endcsname}%
% \fi
% #7}%
% \else
% \def\@svsechd{%
% #6{\hskip #3\relax
% \@svsec #8}%
% \csname #1mark\endcsname{#7}%
% \addcontentsline{toc}{#1}{%
% \ifnum #2>\c@secnumdepth \else
% \protect\numberline{\csname the#1\endcsname}%
% \fi
% #7}}%
% \fi
% \@xsect{#5}}
%\renewcommand{\@xsect}[1]{%
% \@tempskipa #1\relax
% \ifdim \@tempskipa>\z@
% \par \nobreak
% \vskip \@tempskipa
% \@afterheading
% \else
% \@nobreakfalse
% \global\@noskipsectrue
% \everypar{%
% \if@noskipsec
% \global\@noskipsecfalse
% {\setbox\z@\lastbox}%
% \clubpenalty\@M
% \begingroup \@svsechd \endgroup
% \unskip
% \@tempskipa #1\relax
% \hskip -\@tempskipa
% \else
% \clubpenalty \@clubpenalty
% \everypar{}%
% \fi}%
% \fi
% \ignorespaces}
%========================================================================
\newcommand\section{\@startsection {section}{1}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1sp}%
{\reset@font\normalsize\bfseries\raggedright}}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1sp}%
{\reset@font\normalsize\itshape\raggedright}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{-1em \@plus .2em}%
{\reset@font\normalsize\itshape}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\reset@font\normalsize\itshape}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\reset@font\normalsize\itshape}}
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
\let\@svsec\@empty\else
\refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname. }\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup #6\relax
\noindent{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}%
\endgroup
\csname #1mark\endcsname{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}\else
\def\@svsechd{#6\hskip #3\relax %% \relax added 2 May 90
\@svsec #8\csname #1mark\endcsname
{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}}\fi
\@xsect{#5}}
%
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
\begingroup #4\noindent{\hskip #1}{\interlinepenalty \@M #5\par}\endgroup
\else \def\@svsechd{#4\hskip #1\relax #5}\fi
\@xsect{#3}}
% LIST DEFINITIONS
\setlength\leftmargini {2em}
\leftmargin \leftmargini
\setlength\leftmarginii {2em}
\setlength\leftmarginiii {1.8em}
\setlength\leftmarginiv {1.6em}
\setlength\leftmarginv {1em}
\setlength\leftmarginvi {1em}
\setlength\leftmargin{\leftmargini}
\setlength \labelsep {.5em}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
\renewcommand\theenumi{\roman{enumi}}
\renewcommand\theenumii{\alph{enumii}}
\renewcommand\theenumiii{\arabic{enumiii}}
\renewcommand\theenumiv{\Alph{enumiv}}
\newcommand\labelenumi{(\theenumi)}
\newcommand\labelenumii{(\theenumii)}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{(\theenumiv)}
\renewcommand\p@enumii{(\theenumi)}
\renewcommand\p@enumiii{(\theenumi.\theenumii)}
\renewcommand\p@enumiv{(\theenumi.\theenumii.\theenumiii)}
\newcommand\labelitemi{$\m@th\bullet$}
\newcommand\labelitemii{\normalfont\bfseries --}
\newcommand\labelitemiii{$\m@th\ast$}
\newcommand\labelitemiv{$\m@th\cdot$}
\renewcommand \theequation {\@arabic\c@equation}
%%%%%%%%%%%%% Figures
\newcounter{figure}
\renewcommand\thefigure{\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
\newenvironment{figure}{\footnotesize\rm\@float{figure}}%
{\end@float\normalsize\rm}
\newenvironment{figure*}{\footnotesize\rm\@dblfloat{figure}}{\end@dblfloat}
\newcounter{table}
\renewcommand\thetable{\@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
\newenvironment{table}{\footnotesize\rm\@float{table}}%
{\end@float\normalsize\rm}
\newenvironment{table*}{\footnotesize\rm\@dblfloat{table}}%
{\end@dblfloat\normalsize\rm}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{0\p@}
%Table Environments
%\newenvironment{tableref}[3][\textwidth]{%
%\begin{center}%
%\begin{table}%
%\captionsetup[table]{width=#1}
%\centering\caption{\label{#2}#3}}{\end{table}\end{center}}
%%%%%%%%%%%%%%%%%
%\newcounter{figure}
%\renewcommand \thefigure {\@arabic\c@figure}
%\def\fps@figure{tbp}
%\def\ftype@figure{1}
%\def\ext@figure{lof}
%\def\fnum@figure{\figurename~\thefigure}
%ENVIRONMENT: figure
%\newenvironment{figure}
% {\@float{figure}}
% {\end@float}
%ENVIRONMENT: figure*
%\newenvironment{figure*}
% {\@dblfloat{figure}}
% {\end@dblfloat}
%ENVIRONMENT: table
%\newcounter{table}
%\renewcommand\thetable{\@arabic\c@table}
%\def\fps@table{tbp}
%\def\ftype@table{2}
%\def\ext@table{lot}
%\def\fnum@table{\tablename~\thetable}
%\newenvironment{table}
% {\@float{table}}
% {\end@float}
%ENVIRONMENT: table*
%\newenvironment{table*}
% {\@dblfloat{table}}
% {\end@dblfloat}
%\newlength\abovecaptionskip
%\newlength\belowcaptionskip
%\setlength\abovecaptionskip{10\p@}
%\setlength\belowcaptionskip{0\p@}
% CAPTIONS
% Added redefinition of \@caption so captions are not written to
% aux file therefore less need to \protect fragile commands
%
\long\def\@caption#1[#2]#3{\par\begingroup
\@parboxrestore
\normalsize
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
\long\def\@makecaption#1#2{%
\vskip\abovecaptionskip
\sbox\@tempboxa{{\bf #1.} #2}%
\ifdim \wd\@tempboxa >\hsize
{\bf #1.} #2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
%\newcommand\@pnumwidth{1.55em}
%\newcommand\@tocrmarg{2.55em}
%\newcommand\@dotsep{4.5}
%\setcounter{tocdepth}{3}
%\newcommand\tableofcontents{%
% \section*{\contentsname
% \@mkboth{%
% \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
% \@starttoc{toc}%
% }
%\newcommand*\l@part[2]{%
% \ifnum \c@tocdepth >-2\relax
% \addpenalty\@secpenalty
% \addvspace{2.25em \@plus\p@}%
% \begingroup
% \parindent \z@ \rightskip \@pnumwidth
% \parfillskip -\@pnumwidth
% {\leavevmode
% \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
% \nobreak
% \if@compatibility
% \global\@nobreaktrue
% \everypar{\global\@nobreakfalse\everypar{}}%
% \fi
% \endgroup
% \fi}
%\newcommand*\l@section[2]{%
% \ifnum \c@tocdepth >\z@
% \addpenalty\@secpenalty
% \addvspace{1.0em \@plus\p@}%
% \setlength\@tempdima{1.5em}%
% \begingroup
% \parindent \z@ \rightskip \@pnumwidth
% \parfillskip -\@pnumwidth
% \leavevmode \bfseries
% \advance\leftskip\@tempdima
% \hskip -\leftskip
% #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
% \endgroup
% \fi}
%\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
%\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
%\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
%\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
%\newcommand\listoffigures{%
% \section*{\listfigurename
% \@mkboth{\MakeUppercase\listfigurename}%
% {\MakeUppercase\listfigurename}}%
% \@starttoc{lof}%
% }
%\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
%\newcommand\listoftables{%
% \section*{\listtablename
% \@mkboth{%
% \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
% \@starttoc{lot}%
% }
%\let\l@table\l@figure
%======================================
%ENVIRONMENTS
%======================================
%ENVIRONMENT: indented
\newenvironment{indented}{\begin{indented}}{\end{indented}}
\newenvironment{varindent}[1]{\begin{varindent}{#1}}{\end{varindent}}
%
\def\indented{\list{}{\itemsep=0\p@\labelsep=0\p@\itemindent=0\p@
\labelwidth=0\p@\leftmargin=\mathindent\topsep=0\p@\partopsep=0\p@
\parsep=0\p@\listparindent=15\p@}\footnotesize\rm}
\let\endindented=\endlist
\def\varindent#1{\setlength{\varind}{#1}%
\list{}{\itemsep=0\p@\labelsep=0\p@\itemindent=0\p@
\labelwidth=0\p@\leftmargin=\varind\topsep=0\p@\partopsep=0\p@
\parsep=0\p@\listparindent=15\p@}\footnotesize\rm}
\let\endvarindent=\endlist
%ENVIRONMENT: abstract
\newenvironment{abstract}{%
\vspace{16pt plus3pt minus3pt}
\begin{indented}
\item[]{\bfseries \abstractname.}\quad\rm\ignorespaces}
{\end{indented}\vspace{10mm}}
%ENVIRONMENT: description
\newenvironment{description}
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
{\endlist}
\newcommand\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries #1}
%ENVIRONMENT: quotation
\newenvironment{quotation}
{\list{}{\listparindent 1.5em%
\itemindent \listparindent
\rightmargin \leftmargin
\parsep \z@ \@plus\p@}%
\item[]}
{\endlist}
%ENVIRONMENT: quote
\newenvironment{quote}
{\list{}{\rightmargin\leftmargin}%
\item[]}
{\endlist}
%ENVIRONMENT: verse
\newenvironment{verse}
{\let\\=\@centercr
\list{}{\itemsep \z@
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item[]}
{\endlist}
%ENVIRONMENT: bibliography
\newdimen\bibindent
\setlength\bibindent{1.5em}
\def\thebibliography#1{\list
{\hfil[\arabic{enumi}]}{\topsep=0\p@\parsep=0\p@
\partopsep=0\p@\itemsep=0\p@
\labelsep=5\p@\itemindent=-10\p@
\settowidth\labelwidth{\footnotesize[#1]}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\advance\leftmargin -\itemindent
\usecounter{enumi}}\footnotesize
\def\newblock{\ }
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}
\let\endthebibliography=\endlist
\def\numrefs#1{\begin{thebibliography}{#1}}
\def\endnumrefs{\end{thebibliography}}
\let\endbib=\endnumrefs
%%%%%%%%%%%%%%%%%%
%\newenvironment{thebibliography}[1]
% {\section*{References}
% \list{\@biblabel{\@arabic\c@enumiv}}%
% {\settowidth\labelwidth{\@biblabel{#1}}%
% \leftmargin\labelwidth
% \advance\leftmargin\labelsep
% \@openbib@code
% \usecounter{enumiv}%
% \let\p@enumiv\@empty
% \renewcommand\theenumiv{\@arabic\c@enumiv}}%
% \sloppy
% \clubpenalty4000
% \@clubpenalty \clubpenalty
% \widowpenalty4000%
% \sfcode`\.\@m}
% {\def\@noitemerr
% {\@latex@warning{Empty `thebibliography' environment}}%
% \endlist}
%\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
%\let\@openbib@code\@empty
%ENVIRONMENT: theindex
\newenvironment{theindex}
{\if@twocolumn
\@restonecolfalse
\else
\@restonecoltrue
\fi
\columnseprule \z@
\columnsep 35\p@
\twocolumn[\section*{\indexname}]%
\@mkboth{\MakeUppercase\indexname}%
{\MakeUppercase\indexname}%
\thispagestyle{plain}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem}
{\if@restonecol\onecolumn\else\clearpage\fi}
\newcommand\@idxitem{\par\hangindent 40\p@}
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
%=====================
\def\appendix{\@ifnextchar*{\@appendixstar}{\@appendix}}
\def\@appendix{\eqnobysec\@appendixstar}
\def\@appendixstar{\@@par
\ifnumbysec % Added 30/4/94 to get Table A1,
\@addtoreset{table}{section} % Table B1 etc if numbering by
\@addtoreset{figure}{section}\fi % section
\setcounter{section}{0}
\setcounter{subsection}{0}
\setcounter{subsubsection}{0}
\setcounter{equation}{0}
\setcounter{figure}{0}
\setcounter{table}{0}
\def\thesection{Appendix \Alph{section}}
\def\theequation{\ifnumbysec
\Alph{section}.\arabic{equation}\else
\Alph{section}\arabic{equation}\fi} % Comment A\arabic{equation} maybe
\def\thetable{\ifnumbysec % better? 15/4/95
\Alph{section}\arabic{table}\else
A\arabic{table}\fi}
\def\thefigure{\ifnumbysec
\Alph{section}\arabic{figure}\else
A\arabic{figure}\fi}}
\def\noappendix{\setcounter{figure}{0}
\setcounter{table}{0}
\def\thetable{\arabic{table}}
\def\thefigure{\arabic{figure}}}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
\skip\@mpfootins = \skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
\renewcommand\theequation{\arabic{equation}}
% NAME OF STRUCTURES
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}
\newcommand\refname{References}
\newcommand\indexname{Index}
\newcommand\figurename{Figure}
\newcommand\tablename{Table}
\newcommand\partname{Part}
\newcommand\appendixname{Appendix}
\newcommand\abstractname{Abstract}
%Miscellaneous commands
\newcommand{\BibTeX}{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
\newcommand{\jpcsit}{{\bfseries\itshape\selectfont Journal of Physics: Conference Series}}
\newcommand{\jpcs}{{\itshape\selectfont Journal of Physics: Conference Series}}
\newcommand{\iopp}{IOP Publishing}
\newcommand{\cls}{{\upshape\selectfont\texttt{jpconf.cls}}}
\newcommand{\corg}{conference organizer}
\newcommand\today{\number\day\space\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\year}
\setlength\columnsep{10\p@}
\setlength\columnseprule{0\p@}
\newcommand{\Tables}{\clearpage\section*{Tables and table captions}
\def\fps@table{hp}\noappendix}
\newcommand{\Figures}{\clearpage\section*{Figure captions}
\def\fps@figure{hp}\noappendix}
%
\newcommand{\Figure}[1]{\begin{figure}
\caption{#1}
\end{figure}}
%
\newcommand{\Table}[1]{\begin{table}
\caption{#1}
\begin{indented}
\lineup
\item[]\begin{tabular}{@{}l*{15}{l}}}
\def\endTable{\end{tabular}\end{indented}\end{table}}
\let\endtab=\endTable
%
\newcommand{\fulltable}[1]{\begin{table}
\caption{#1}
\lineup
\begin{tabular*}{\textwidth}{@{}l*{15}{@{\extracolsep{0pt plus 12pt}}l}}}
\def\endfulltable{\end{tabular*}\end{table}}
%BIBLIOGRAPHY and References
%\newcommand{\Bibliography}[1]{\section*{References}\par\numrefs{#1}}
%\newcommand{\References}{\section*{References}\par\refs}
%\def\thebibliography#1{\list
% {\hfil[\arabic{enumi}]}{\topsep=0\p@\parsep=0\p@
% \partopsep=0\p@\itemsep=0\p@
% \labelsep=5\p@\itemindent=-10\p@
% \settowidth\labelwidth{\footnotesize[#1]}%
% \leftmargin\labelwidth
% \advance\leftmargin\labelsep
% \advance\leftmargin -\itemindent
% \usecounter{enumi}}\footnotesize
% \def\newblock{\ }
% \sloppy\clubpenalty4000\widowpenalty4000
% \sfcode`\.=1000\relax}
%\let\endthebibliography=\endlist
%\def\numrefs#1{\begin{thebibliography}{#1}}
%\def\endnumrefs{\end{thebibliography}}
%\let\endbib=\endnumrefs
\def\thereferences{\list{}{\topsep=0\p@\parsep=0\p@
\partopsep=0\p@\itemsep=0\p@\labelsep=0\p@\itemindent=-18\p@
\labelwidth=0\p@\leftmargin=18\p@
}\footnotesize\rm
\def\newblock{\ }
\sloppy\clubpenalty4000\widowpenalty4000
\sfcode`\.=1000\relax}%
\let\endthereferences=\endlist
% MISC EQUATRION STUFF
%\def\[{\relax\ifmmode\@badmath\else
% \begin{trivlist}
% \@beginparpenalty\predisplaypenalty
% \@endparpenalty\postdisplaypenalty
% \item[]\leavevmode
% \hbox to\linewidth\bgroup$ \displaystyle
% \hskip\mathindent\bgroup\fi}
%\def\]{\relax\ifmmode \egroup $\hfil \egroup \end{trivlist}\else \@badmath \fi}
%\def\equation{\@beginparpenalty\predisplaypenalty
% \@endparpenalty\postdisplaypenalty
%\refstepcounter{equation}\trivlist \item[]\leavevmode
% \hbox to\linewidth\bgroup $ \displaystyle
%\hskip\mathindent}
%\def\endequation{$\hfil \displaywidth\linewidth\@eqnnum\egroup \endtrivlist}
%\@namedef{equation*}{\[}
%\@namedef{endequation*}{\]}
%\def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation
%\global\@eqnswtrue
%\global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr
%\abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi
%\belowdisplayskip\abovedisplayskip
%\belowdisplayshortskip\abovedisplayskip
%\abovedisplayshortskip\abovedisplayskip
%$$\halign to
%\linewidth\bgroup\@eqnsel$\displaystyle\tabskip\z@
% {##{}}$&\global\@eqcnt\@ne $\displaystyle{{}##{}}$\hfil
% &\global\@eqcnt\tw@ $\displaystyle{{}##}$\hfil
% \tabskip\@centering&\llap{##}\tabskip\z@\cr}
%\def\endeqnarray{\@@eqncr\egroup
% \global\advance\c@equation\m@ne$$\global\@ignoretrue }
%\mathindent = 6pc
%%
%\def\eqalign#1{\null\vcenter{\def\\{\cr}\openup\jot\m@th
% \ialign{\strut$\displaystyle{##}$\hfil&$\displaystyle{{}##}$\hfil
% \crcr#1\crcr}}\,}
%%
%\def\eqalignno#1{\displ@y \tabskip\z@skip
% \halign to\displaywidth{\hspace{5pc}$\@lign\displaystyle{##}$%
% \tabskip\z@skip
% &$\@lign\displaystyle{{}##}$\hfill\tabskip\@centering
% &\llap{$\@lign\hbox{\rm##}$}\tabskip\z@skip\crcr
% #1\crcr}}
%%
\newif\ifnumbysec
\def\theequation{\ifnumbysec
\arabic{section}.\arabic{equation}\else
\arabic{equation}\fi}
\def\eqnobysec{\numbysectrue\@addtoreset{equation}{section}}
\newcounter{eqnval}
\def\numparts{\addtocounter{equation}{1}%
\setcounter{eqnval}{\value{equation}}%
\setcounter{equation}{0}%
\def\theequation{\ifnumbysec
\arabic{section}.\arabic{eqnval}{\it\alph{equation}}%
\else\arabic{eqnval}{\it\alph{equation}}\fi}}
\def\endnumparts{\def\theequation{\ifnumbysec
\arabic{section}.\arabic{equation}\else
\arabic{equation}\fi}%
\setcounter{equation}{\value{eqnval}}}
%
\def\cases#1{%
\left\{\,\vcenter{\def\\{\cr}\normalbaselines\openup1\jot\m@th%
\ialign{\strut$\displaystyle{##}\hfil$&\tqs
\rm##\hfil\crcr#1\crcr}}\right.}%
\def\eqalign#1{\null\vcenter{\def\\{\cr}\openup\jot\m@th
\ialign{\strut$\displaystyle{##}$\hfil&$\displaystyle{{}##}$\hfil
\crcr#1\crcr}}\,}
% OTHER USEFUL BITS
\newcommand{\e}{\mathrm{e}}
\newcommand{\rme}{\mathrm{e}}
\newcommand{\rmi}{\mathrm{i}}
\newcommand{\rmd}{\mathrm{d}}
\renewcommand{\qquad}{\hspace*{25pt}}
\newcommand{\tdot}[1]{\stackrel{\dots}{#1}} % Added 1/9/94
\newcommand{\tqs}{\hspace*{25pt}}
\newcommand{\fl}{\hspace*{-\mathindent}}
\newcommand{\Tr}{\mathop{\mathrm{Tr}}\nolimits}
\newcommand{\tr}{\mathop{\mathrm{tr}}\nolimits}
\newcommand{\Or}{\mathord{\mathrm{O}}} %changed from \mathop 20/1/95
\newcommand{\lshad}{[\![}
\newcommand{\rshad}{]\!]}
\newcommand{\case}[2]{{\textstyle\frac{#1}{#2}}}
\def\pt(#1){({\it #1\/})}
\newcommand{\dsty}{\displaystyle}
\newcommand{\tsty}{\textstyle}
\newcommand{\ssty}{\scriptstyle}
\newcommand{\sssty}{\scriptscriptstyle}
\def\lo#1{\llap{${}#1{}$}}
\def\eql{\llap{${}={}$}}
\def\lsim{\llap{${}\sim{}$}}
\def\lsimeq{\llap{${}\simeq{}$}}
\def\lequiv{\llap{${}\equiv{}$}}
%
\newcommand{\eref}[1]{(\ref{#1})}
%\newcommand{\eqref}[1]{Equation (\ref{#1})}
%\newcommand{\Eqref}[1]{Equation (\ref{#1})}
\newcommand{\sref}[1]{section~\ref{#1}}
\newcommand{\fref}[1]{figure~\ref{#1}}
\newcommand{\tref}[1]{table~\ref{#1}}
\newcommand{\Sref}[1]{Section~\ref{#1}}
\newcommand{\Fref}[1]{Figure~\ref{#1}}
\newcommand{\Tref}[1]{Table~\ref{#1}}
\newcommand{\opencircle}{\mbox{\Large$\circ\,$}} % moved Large outside maths
\newcommand{\opensquare}{\mbox{$\rlap{$\sqcap$}\sqcup$}}
\newcommand{\opentriangle}{\mbox{$\triangle$}}
\newcommand{\opentriangledown}{\mbox{$\bigtriangledown$}}
\newcommand{\opendiamond}{\mbox{$\diamondsuit$}}
\newcommand{\fullcircle}{\mbox{{\Large$\bullet\,$}}} % moved Large outside maths
\newcommand{\fullsquare}{\,\vrule height5pt depth0pt width5pt}
\newcommand{\dotted}{\protect\mbox{${\mathinner{\cdotp\cdotp\cdotp\cdotp\cdotp\cdotp}}$}}
\newcommand{\dashed}{\protect\mbox{-\; -\; -\; -}}
\newcommand{\broken}{\protect\mbox{-- -- --}}
\newcommand{\longbroken}{\protect\mbox{--- --- ---}}
\newcommand{\chain}{\protect\mbox{--- $\cdot$ ---}}
\newcommand{\dashddot}{\protect\mbox{--- $\cdot$ $\cdot$ ---}}
\newcommand{\full}{\protect\mbox{------}}
\def\;{\protect\psemicolon}
\def\psemicolon{\relax\ifmmode\mskip\thickmuskip\else\kern .3333em\fi}
\def\lineup{\def\0{\hbox{\phantom{0}}}%
\def\m{\hbox{$\phantom{-}$}}%
\def\-{\llap{$-$}}}
%
%%%%%%%%%%%%%%%%%%%%%
% Tables rules %
%%%%%%%%%%%%%%%%%%%%%
\newcommand{\boldarrayrulewidth}{1\p@}
% Width of bold rule in tabular environment.
\def\bhline{\noalign{\ifnum0=`}\fi\hrule \@height
\boldarrayrulewidth \futurelet \@tempa\@xhline}
\def\@xhline{\ifx\@tempa\hline\vskip \doublerulesep\fi
\ifnum0=`{\fi}}
%
% Rules for tables with extra space around
%
\newcommand{\br}{\ms\bhline\ms}
\newcommand{\mr}{\ms\hline\ms}
%
\newcommand{\centre}[2]{\multispan{#1}{\hfill #2\hfill}}
\newcommand{\crule}[1]{\multispan{#1}{\hspace*{\tabcolsep}\hrulefill
\hspace*{\tabcolsep}}}
\newcommand{\fcrule}[1]{\ifnum\thetabtype=1\multispan{#1}{\hrulefill
\hspace*{\tabcolsep}}\else\multispan{#1}{\hrulefill}\fi}
%
% Extra spaces for tables and displayed equations
%
\newcommand{\ms}{\noalign{\vspace{3\p@ plus2\p@ minus1\p@}}}
\newcommand{\bs}{\noalign{\vspace{6\p@ plus2\p@ minus2\p@}}}
\newcommand{\ns}{\noalign{\vspace{-3\p@ plus-1\p@ minus-1\p@}}}
\newcommand{\es}{\noalign{\vspace{6\p@ plus2\p@ minus2\p@}}\displaystyle}%
%
\newcommand{\etal}{{\it et al\/}\ }
\newcommand{\dash}{------}
\newcommand{\nonum}{\par\item[]} %\par added 1/9/93
\newcommand{\mat}[1]{\underline{\underline{#1}}}
%
% abbreviations for IOPP journals
%
\newcommand{\CQG}{{\it Class. Quantum Grav.} }
\newcommand{\CTM}{{\it Combust. Theory Modelling\/} }
\newcommand{\DSE}{{\it Distrib. Syst. Engng\/} }
\newcommand{\EJP}{{\it Eur. J. Phys.} }
\newcommand{\HPP}{{\it High Perform. Polym.} } % added 4/5/93
\newcommand{\IP}{{\it Inverse Problems\/} }
\newcommand{\JHM}{{\it J. Hard Mater.} } % added 4/5/93
\newcommand{\JO}{{\it J. Opt.} }
\newcommand{\JOA}{{\it J. Opt. A: Pure Appl. Opt.} }
\newcommand{\JOB}{{\it J. Opt. B: Quantum Semiclass. Opt.} }
\newcommand{\JPA}{{\it J. Phys. A: Math. Gen.} }
\newcommand{\JPB}{{\it J. Phys. B: At. Mol. Phys.} } %1968-87
\newcommand{\jpb}{{\it J. Phys. B: At. Mol. Opt. Phys.} } %1988 and onwards
\newcommand{\JPC}{{\it J. Phys. C: Solid State Phys.} } %1968--1988
\newcommand{\JPCM}{{\it J. Phys.: Condens. Matter\/} } %1989 and onwards
\newcommand{\JPD}{{\it J. Phys. D: Appl. Phys.} }
\newcommand{\JPE}{{\it J. Phys. E: Sci. Instrum.} }
\newcommand{\JPF}{{\it J. Phys. F: Met. Phys.} }
\newcommand{\JPG}{{\it J. Phys. G: Nucl. Phys.} } %1975--1988
\newcommand{\jpg}{{\it J. Phys. G: Nucl. Part. Phys.} } %1989 and onwards
\newcommand{\MSMSE}{{\it Modelling Simulation Mater. Sci. Eng.} }
\newcommand{\MST}{{\it Meas. Sci. Technol.} } %1990 and onwards
\newcommand{\NET}{{\it Network: Comput. Neural Syst.} }
\newcommand{\NJP}{{\it New J. Phys.} }
\newcommand{\NL}{{\it Nonlinearity\/} }
\newcommand{\NT}{{\it Nanotechnology} }
\newcommand{\PAO}{{\it Pure Appl. Optics\/} }
\newcommand{\PM}{{\it Physiol. Meas.} } % added 4/5/93
\newcommand{\PMB}{{\it Phys. Med. Biol.} }
\newcommand{\PPCF}{{\it Plasma Phys. Control. Fusion\/} } % added 4/5/93
\newcommand{\PSST}{{\it Plasma Sources Sci. Technol.} }
\newcommand{\PUS}{{\it Public Understand. Sci.} }
\newcommand{\QO}{{\it Quantum Opt.} }
\newcommand{\QSO}{{\em Quantum Semiclass. Opt.} }
\newcommand{\RPP}{{\it Rep. Prog. Phys.} }
\newcommand{\SLC}{{\it Sov. Lightwave Commun.} } % added 4/5/93
\newcommand{\SST}{{\it Semicond. Sci. Technol.} }
\newcommand{\SUST}{{\it Supercond. Sci. Technol.} }
\newcommand{\WRM}{{\it Waves Random Media\/} }
\newcommand{\JMM}{{\it J. Micromech. Microeng.\/} }
%
% Other commonly quoted journals
%
\newcommand{\AC}{{\it Acta Crystallogr.} }
\newcommand{\AM}{{\it Acta Metall.} }
\newcommand{\AP}{{\it Ann. Phys., Lpz.} }
\newcommand{\APNY}{{\it Ann. Phys., NY\/} }
\newcommand{\APP}{{\it Ann. Phys., Paris\/} }
\newcommand{\CJP}{{\it Can. J. Phys.} }
\newcommand{\JAP}{{\it J. Appl. Phys.} }
\newcommand{\JCP}{{\it J. Chem. Phys.} }
\newcommand{\JJAP}{{\it Japan. J. Appl. Phys.} }
\newcommand{\JP}{{\it J. Physique\/} }
\newcommand{\JPhCh}{{\it J. Phys. Chem.} }
\newcommand{\JMMM}{{\it J. Magn. Magn. Mater.} }
\newcommand{\JMP}{{\it J. Math. Phys.} }
\newcommand{\JOSA}{{\it J. Opt. Soc. Am.} }
\newcommand{\JPSJ}{{\it J. Phys. Soc. Japan\/} }
\newcommand{\JQSRT}{{\it J. Quant. Spectrosc. Radiat. Transfer\/} }
\newcommand{\NC}{{\it Nuovo Cimento\/} }
\newcommand{\NIM}{{\it Nucl. Instrum. Methods\/} }
\newcommand{\NP}{{\it Nucl. Phys.} }
\newcommand{\PL}{{\it Phys. Lett.} }
\newcommand{\PR}{{\it Phys. Rev.} }
\newcommand{\PRL}{{\it Phys. Rev. Lett.} }
\newcommand{\PRS}{{\it Proc. R. Soc.} }
\newcommand{\PS}{{\it Phys. Scr.} }
\newcommand{\PSS}{{\it Phys. Status Solidi\/} }
\newcommand{\PTRS}{{\it Phil. Trans. R. Soc.} }
\newcommand{\RMP}{{\it Rev. Mod. Phys.} }
\newcommand{\RSI}{{\it Rev. Sci. Instrum.} }
\newcommand{\SSC}{{\it Solid State Commun.} }
\newcommand{\ZP}{{\it Z. Phys.} }
%===================
\pagestyle{headings}
\pagenumbering{arabic}
\raggedbottom
\onecolumn
\endinput
%%
%% End of file `jconf.cls'.
%%
%% This is file `jpconf11.clo'
%%
%% This file is distributed in the hope that it will be useful,
%% but WITHOUT ANY WARRANTY; without even the implied warranty of
%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\ProvidesFile{jpconf11.clo}[2005/05/04 v1.0 LaTeX2e file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13}%
\abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI}
\normalsize
\newcommand\small{%
\@setfontsize\small\@xpt{12}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 9\p@ \@plus3\p@ \@minus5\p@
\parsep 4.5\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip}
\newcommand\footnotesize{%
% \@setfontsize\footnotesize\@xpt\@xiipt
\@setfontsize\footnotesize\@ixpt{11}%
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 6\p@ \@plus2\p@ \@minus2\p@
\parsep 3\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\newcommand\large{\@setfontsize\large\@xivpt{18}}
\newcommand\Large{\@setfontsize\Large\@xviipt{22}}
\newcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
\newcommand\huge{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
\if@twocolumn
\setlength\parindent{14\p@}
\else
\setlength\parindent{18\p@}
\fi
\if@letterpaper%
%\input{letmarg.tex}%
\setlength{\hoffset}{0mm}
\setlength{\marginparsep}{0mm}
\setlength{\marginparwidth}{0mm}
\setlength{\textwidth}{160mm}
\setlength{\oddsidemargin}{-0.4mm}
\setlength{\evensidemargin}{-0.4mm}
\setlength{\voffset}{0mm}
\setlength{\headheight}{8mm}
\setlength{\headsep}{5mm}
\setlength{\footskip}{0mm}
\setlength{\textheight}{230mm}
\setlength{\topmargin}{1.6mm}
\else
%\input{a4marg.tex}%
\setlength{\hoffset}{0mm}
\setlength{\marginparsep}{0mm}
\setlength{\marginparwidth}{0mm}
\setlength{\textwidth}{160mm}
\setlength{\oddsidemargin}{-0.4mm}
\setlength{\evensidemargin}{-0.4mm}
\setlength{\voffset}{0mm}
\setlength{\headheight}{8mm}
\setlength{\headsep}{5mm}
\setlength{\footskip}{0mm}
\setlength{\textheight}{230mm}
\setlength{\topmargin}{1.6mm}
\fi
\setlength\maxdepth{.5\topskip}
\setlength\@maxdepth\maxdepth
\setlength\footnotesep{8.4\p@}
\setlength{\skip\footins} {10.8\p@ \@plus 4\p@ \@minus 2\p@}
\setlength\floatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\textfloatsep {24\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {16\p@ \@plus 4\p@ \@minus 4\p@}
\setlength\dblfloatsep {16\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\dbltextfloatsep{24\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\@fptop{0\p@}
\setlength\@fpsep{10\p@ \@plus 1fil}
\setlength\@fpbot{0\p@}
\setlength\@dblfptop{0\p@}
\setlength\@dblfpsep{10\p@ \@plus 1fil}
\setlength\@dblfpbot{0\p@}
\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
\def\@listI{\leftmargin\leftmargini
\parsep=\z@
\topsep=6\p@ \@plus3\p@ \@minus3\p@
\itemsep=3\p@ \@plus2\p@ \@minus1\p@}
\let\@listi\@listI
\@listi
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep=3\p@ \@plus2\p@ \@minus\p@
\parsep=\z@
\itemsep=\parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep=\z@
\parsep=\z@
\partopsep=\z@
\itemsep=\z@}
\def\@listiv {\leftmargin\leftmarginiv
\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep}
\def\@listv{\leftmargin\leftmarginv
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep}
\endinput
%%
%% End of file `iopart12.clo'.
\documentclass[a4paper]{jpconf}
\usepackage{graphicx}
\begin{document}
\title{eXtreme-DataCloud project: Advanced data management services for distributed e-infrastructures}
%\address{Production Editor, \jpcs, \iopp, Dirac House, Temple Back, Bristol BS1~6BE, UK}
\author{A. Costantini$^1$, D. Cesini$^1$, D.C. Duma$^1$, D. Michelotto$^1$, A. Falabella$^1$, L. Dell'Agnello$^1$, D.Salomoni$^1$, L. Morgantii$^1$, G. Grandi$^2$
% etc.
}
\address{$^1$ INFN-CNAF, Bologna, Italy}
\address{$^2$ INFN Bologna, Bologna, Italy}
\ead{alessandro.costantini@cnaf.infn.it}
\begin{abstract}
The development of new data management services able to cope with very large data resources is becoming a key challenge.
Such capability, in fact, will allow the future e-infrastructures to address the needs of the next generation extreme scale scientific experiments.
To face this challenge, in November 2017 the H2020 eXtreme DataCloud - XDC project has been launched. Lasting for 27 months and combining
the expertise of 8 large European research organisations, the project aims at developing scalable technologies for federating storage resources
and managing data in highly distributed computing environments.
The project is use-case driven with a multidisciplinary approach, addressing requirements from research communities belonging to a wide range
of scientific domains: High Energy Physics, Astronomy, Photon and Life Science, Medical research.
XDC will implementing data management scalable services, combining already established data management and orchestration tools, to address
the following high level topics policy driven data management based on Quality-of-Service, Data Life-cycle management, smart placement of
data with caching mechanisms to reduce access latency, meta-data with no predefined schema handling, execution of pre-processing applications
during ingestion, data management and protection of sensitive data in distributed e-infrastructures, intelligent data placement based on access patterns.
This contribution will introduce the project, presents the foreseen overall architecture and the contribution to the activities that are being carried
on by INFN-CNAF personnel to achieve the project goals and objectives.
\end{abstract}
\section{Introduction}
Lead by INFN-CNAF, the eXtreme DataCloud (XDC) project \cite{xdc} develops scalable technologies for federating storage resources and
managing data in highly distributed computing environments. The provided services will be capable of operating at the unprecedented scale
required by the most demanding, data intensive, research experiments in Europe and Worldwide. The targeted platforms for the released
products are the already existing and the next generation e-Infrastructures deployed in Europe, such as the European Open Science Cloud
(EOSC) \cite{EOSC}, the European Grid Infrastructure (EGI) \cite{EGI}, the Worldwide LHC Computing Grid (WLCG) \cite{wlcg} and the
computing infrastructures that will be funded by the upcoming H2020 EINFRA-12 call. XDC is funded by the H2020 EINFRA-21-2017
Research and Innovation action under the topic Platform-driven e-Infrastructure innovation \cite{einfracall21}. It is carried on by a
Consortium that brings together technology providers with a proven long-standing experience in software development and large
research communities belonging to diverse disciplines: Life Science, Biodiversity, Clinical Research, Astrophysics, High Energy Physics
and Photon Science. XDC started on 1st November 2017 and will run for 27 months until January 2020. The EU contribution for the
project is 3.07 million euros.
XDC is a use case driven development project and the Consortium has been built as a combination of technology providers, Research
Communities and Infrastructure providers. New developments will be tested against real-life applications and use cases. Among the
high level requirements collected from the Research Communities, the Consortium identified those considered more general (and hence
exploitable by other communities), with the greatest impact on the user base and that can be implemented in a timespan compatible
with the project duration and funding.
\section{Project Objectives}
The XDC project develops open, production quality, interoperable and manageable software that can be easily plugged into the target
European e-Infrastructures and adopts state of the art standards in order to ensure interoperability. The building blocks of the high-level
architecture foreseen by the project are organised in a manner to avoid duplication of development effort. All the interfaces and links
to implement the XDC architecture are developed exploiting the most advanced techniques for authorisation and authentication.
Services are scalable to cope with most demanding, extreme scale scientific experiments like those run at the Large Hadron Collider
at CERN and the Cherenkov Telescope Array (CTA), both of them represented in the project consortium.
The project will enrich already existing data management services by adding missing functionalities as requested by the user
communities. The project will continue the effort invested by the now ended INDIGO-DataCloud project \cite{indigo} in the direction
of providing friendly, web-based user interfaces and mobile access to the infrastructure data management services. The project will
build on the INDIGO-DataCloud achievements in the field of Quality of Services and data lifecycle management developing smart
orchestration tools to realise easily an effective policy driven data management.
One of the main objectives of the project is to provide data management solutions for the following use cases:
\begin{itemize}
\item Dynamic extension of a computing centre to a remote site providing transparent bidirectional access to the data stored
in both locations.
\item Dynamic inclusion of sites with limited storage capacity in a distributed infrastructure, proving transparent access to the
data stored remotely.
\item Federation of distributed storage endpoints, i.e. a so-called WLCG Data Lake, enabling fast and transparent access to
their data without a-priory copy.
\end{itemize}
These use cases will be addressed implementing intelligent, automatic and hierarchical caching mechanisms.
\section{Overall project structure}
The project is structured in five Work Packages (WPs). In details, there are two WPs devoted to networking activities (NA),
one for service activities (SA) and two for development activities (JRA).
The relationships among the WPs are represented in Figure \ref{fig-WP}: NA1 is supervising the activities of all the Work
Packages and deals with the management aspects in order to ensure a smoothly progress of the Project activities. NA2,
representing communities, will provide requirements that will guide the
development activities carried out by JRA1 and JRA2. JRA1 and JRA2 are responsible to provide new and integrated
solutions to address the user requirements provided by NA2. SA1 provides Quality Assurance policies and procedures and
the Maintenance and Support coordination, including Release Management. NA2 closes the cycle validating the released
components on the pilot testbeds made available for exploitation by SA1.
\begin{figure}[h]
\centering
\includegraphics[width=10cm,clip]{XDC-WP.png}
\caption{Relationships between the WPs in the XDC project.}
\label{fig-WP}
\end{figure}
{\bf Work Package 1 (NA1)} bring the project towards the successful achievement of its objectives, efficiently
coordinating the Consortium and ensuring that the activities progress smoothly.
Coordinated by INFN-CNAF, WP1 is responsible for the financial administration of the project; it controls the effort reporting and the
progress of the work ensuring that they adhere to the work plan and to the Grant Agreement.
WP1 defines the Quality Assurance plan and reports periodically to the EC about the overall project progress.
It is responsible for the resolution of internal conflicts and for the creation of a fruitful spirit of collaboration,
ensuring that all the partners are engaged to fulfil the project objectives. WP1 communicates the project
vision and mission to the relevant international events and interested institutions.
In particular, INFN-CNAF has been in charge of the organisation of the joint eXtreme-DataCloud (XDC)
and the DEEP-HybridDataCloud kickoff meeting \cite{xdc-ko}, hosted in Bologna (Italy) on 23-25 January, 2018.
{\bf Work Package 2 (NA2)} identify new functionalities for the management of huge data
volumes from the different Research Communities Use Cases providing requirements to the existing tools
developers to enhance the user experience. WP2 is also responsible for testing the new developments and for
providing adequate feedback about the user experience of the different services. WP2 analyses the scalability
requirements for the infrastructure taking into account the challenges expected in next years and the new
frameworks of scientific data.
INFN-CNAF mainly participates to WP2 activities by supporting the WLCG community and related LHC experiments through the figure
of {\bf Champion} who is a member of Research Communities/Infrastructures that understands very well the needs of the use case
and has a general understanding of the available solutions and their features.
In particular, WLCG Champion at INFN-CNAF has the role to harmonise the XDC development activities with those carried on within
the WLCG community having the objective to improve the software solutions in terms of scalability, usability, maintainability, interoperability
and cost effectiveness, looking forward the HL-LHC high demanding data taking conditions.
{\bf Work Package 3 (SA1)} provides software lifecycle management services together with pilot e-Infrastructures
\begin{itemize}
\item For the project developers in order to ensure the maintenance of the high quality of the
released software components and services while adding new features
\item Through Continuous Integration and Delivery, followed by deployment and
operation/monitoring in production environment
\item For the User communities, in order to ensure the delivered software consistently pass the
customer acceptance criteria and continually improve its quality
\item For the e-Infrastructure providers, in order to ensure an easy and smooth delivery of
improved software services and components while guaranteeing the stability of their
production infrastructures.
\end{itemize}
INFN-CNAF is coordinating WP3 and its main activities are related to:
\begin{itemize}
\item Software Lifecycle Management: expressed in terms of Software Quality Assurance and
Software Release and Maintenance, CNAF is coordinating the management of those software products that
became officially part of the first XDC releases, codenamed Pulsar \cite{xdc-pulsar}, foreseen for late 2018 and effectively released in January 2019.
CNAF is also coordinating the implementation of the continuous
software improvement process, following a DevOps approach, through the definition and
realisation of an innovative Continuous Integration (CI) and Delivery (CD) system.
\item Pilot Infrastructure Services: CNAF, with the support of the project partners, is providing and maintaining the testbeds
dedicated to developers, software integration and software preview.
In particular, the activities were focused in implementing the services needed to support the software development and release
management and included among others the source code repository, and continuous integration system.
\item Exploitation activities: focused in bridging with infrastructure providers which are the
targets for the XDC software together with the user communities (WP2). Among the
exploitation activities, INFN-CNAF actively participated on a task devoted to creating a Service Providers Board and
establish communication channels with providers.
\end{itemize}
Moreover, INFN-CNAF is hosting and maintaining the XDC collaborative tools put in place for an effective project
communication among partners (web site, INDICO agenda, mailing lists, document repository, video conference,
issue tracking system, project management and content collaboration ).
{\bf Work Package 4 (JRA1)} provides the semi or fully automated placement of scientific data in
the Exabyte region on the site (IaaS) as well as on the federated storage level. In the context of this Work
Package, placement may either refer to the media the data is stored on, to guarantee a requested Quality of
Service, or the geographical location, in order to move data as close to the compute facility as possible to overcome
latency issues in geographically distributed infrastructures. In the latter case, data might either be
permanently moved, or temporarily cached.
In WP4, INFN-CNAF contributes in the development of an HTTP caching system based on NGINX \cite{nginx} web server.
Serving as a content cache, the XDC-HTTP caching service, can be deployed in several WLCG data management
workflows, given that many of the software solutions support the HTTP protocol for data operations.
In particular, this activity carried on in WP4 aims to add support for VOMS proxy certificates exploiting the
modularity of NGINX to develop an additional module that inspects the VOMS proxy certificate attributes.
INFN-CNAF contributed also to the geographically scalability tests of the XCache system, developed within
WP4 activities, in particular in the deployment and related support of the software in a national testbed.
{\bf Work Package 5 (JRA2)} provides enriched high-level data management services unifying
access to heterogeneous storage resources and services, enable extreme scale data processing on both private
as well as public Cloud computing resources using established interfaces and allowing usage of legacy
applications without the need for rewriting them from scratch. These functionalities will be provided mainly
by Onedata \cite{onedata} distributed virtual file-system platform.
In particular, INFN-CNAF is in charge to deploy and test the new features released by WP5 by adopting the
services and solution provided by WP3.
\section{General architecture}
The XDC project aims at providing advanced data management capabilities that require the execution of several tasks and
the interaction among several components and services. Those capabilities should include but are not limited to QoS
management, preprocessing at ingestion and automated data transfers. Therefore a global orchestration layer is needed
to take care of the execution of those complex workflows.
Figure~\ref{fig-comp} highlights the main components and their role among the three different levels: Storage,
Federation, and Orchestration.
\begin{figure}[h]
\centering
\includegraphics[width=8cm,clip]{XDC-comp.png}
\caption{XDC main components and related roles.}
\label{fig-comp}
\end{figure}
Figure~\ref{fig-HLA} highlights the high level architecture of the XDC project by describing the components and the
related connections.
\begin{figure}[h]
\centering
\includegraphics[width=12cm,clip]{XDC-HLA.png}
\caption{High level architecture of the XDC project.}
\label{fig-HLA}
\end{figure}
\subsection{XDC PaaS Orchestration system}
In the XDC project a global orchestration layer is needed to take care of the execution of those complex workflows.
The orchestration covers two essential aspects:
\begin{itemize}
\item The overall control, steering and bookkeeping including the connection to compute resources
\item The orchestration of the data management activities like data transfers, and data federation.
\end{itemize}
Consequently it was decided to split the responsibilities between two different components: the INDIGO
Orchestrator \cite{paasorch} and Rucio \cite{rucio}.
The INDIGO PaaS Orchestrator, the system wide orchestration engine, is a component of the PaaS layer that allows
to instantiate resources on Cloud Management Frameworks (like OpenStack and OpenNebula) and Mesos clusters.
It takes the deployment requests, expressed through templates written in TOSCA YAML Profile 1.0 \cite{tosca},
and deploys them on the best cloud site available.
The Rucio project, the data management orchestration subsystem, is the new version of ATLAS Distributed Data
Management (DDM) system services for allowing to manage the large volumes of data, both
provided by the detector as well as generated or derived, in the ATLAS distributed computing system. Rucio is used to
manage accounts, files, datasets and distributed storage systems.
Those two components, the PaaS Orchestrator and Rucio, provide different capabilities and can complement each
other to offer a full set of features to meet the XDC requirements.
Rucio implements the data management functionalities missing in the INDIGO Orchestrator: the Orchestrator will
make use of those capabilities to orchestrate the data movement based on policies.
\subsection{XDC Quality-of-Service implementation}
The idea to provide scientific communities or individuals with the ability to specify a particular quality of service
when storing data, e.g. the maximum access latency or minimum retention policy, was introduced within the
INDIGO-DataCloud project. In XDC, the QoS concept is envisioned to consistently complement all data related
activities. In other words, whenever storage space is requested, either manually by a user or programmatically
by a framework, the quality of that space can be negotiated between the requesting entity and the storage provider.
\subsection{Caching within XDC}
In this section we consider how the XDC architecture treats the storage and access of data, building a hierarchy of
components whose goal is to maximise the accessibility of data to clients while minimising global infrastructure costs.
The architecture considers a set of multi-site storage systems, potentially accessed through caches, both of which
are aggregated globally through a federation.
To such purpose, various technologies are available to the project to serve as the basis of an implementation:
\begin{itemize}
\item The system runs native dCache \cite{dcache} or EOS, but operates in a ``caching mode'' staging data in
when a cache miss occurs.
\item A service such as Dynafed \cite{dynafed} will be augmented to initiate data movement. While it would
hold only metadata, it would use a local storage system for this.
\item A standalone HTTP cache could be built from existing web technology, such as NGINX,
modified for horizontal scalability and relevant AAI support.
\end{itemize}
\subsection{XDC data management and new developments}
Data management functionality for end users will be also available via the Onedata
platform \cite{onedata}. Onezone will provide single-sign on authentication and authorisation for users, which will
be able to create access tokens to perform data access activities via the Web browser, REST API or using Onedata
POSIX virtual filesystem. Onezone will enable federating multiple storage sites through the deployment of Oneprovider services
on top of the actual storage resources provisioned by the sites.
For the purpose of job scheduling and orchestration, Onedata will communicate with Indigo Orchestrator component
by means of a message bus, allowing the Orchestrator to subscribe for events related to data transfers and data
access. This will allow Orchestrator to react to changes in the overall system state (e.g. a new file in a specific
directory or space, data distribution changes initiated by manual transfers, cache invalidation or on-the-fly block transfers).
Onedata will be also responsible for definition of federation level authentication and authorisation aspects of data
access, based on OpenID Connect \cite{oidc}.
On the data access layer, Onedata will provide a WebDAV \cite{webdav} storage interface, to enable integration of
other HTTP transfer based components such as FTS \cite{fts} or EOS \cite{eos} to make the data managed by these
components accessible in a unified manner via the POSIX virtual filesystem provided by Onedata.
Furthermore, Onezone, the entry point to the data management aspects of the platform, will allow for semi-automated
creation of data discovery portals, based on metadata stored in the federated Oneprovider instances and on a
centralised ElasticSearch engine indexing the metadata. This solution will allow the communities to create custom
indexes on the data and metadata, provide customisable styles and icons for their users and defining custom
authorisation rights based on user classes (public access, access on login, group access, etc.).
\section{Conclusions}
In the present contribution the XDC objectives, starting from the technology gaps that currently prevent effective
exploitation of distributed computing and storage resources by many scientific communities, have been discussed and presented
together with the activities (and related contributions) carried on by INFN-CNAF for each WP of the project.
Those objectives are the real driver of the project and derive directly from use cases, and the related needs,
presented by the scientific communities involved in the project itself, covering areas such as Physics, Astrophysics, Bioinformatics, and others.
Starting from the above assumptions, the overall structure of the project has been presented emphasising
its components, typically based upon or extend established open source solutions, and the relations among them.
For the second part of project, the activities carried on at INFN-CNAF will continue to ensure the fulfilment of the project objectives.
In particular, the already available software solutions will be enriched by advanced functionalities (provided by JRAs) aimed at addressing the
use case requirements provided by NA2. The implementation and related testing of those new solutions will be performed in the testbeds maintained by SA1.
SA1 will also continue its activities aimed at further validate the software, its robustness and scalability and will follow the preparation of the second
project release, codenamed Quasar, foreseen for the second half of 2019.
Moreover, XDC project can complement and integrate with other running projects and communities and with
existing multi-national, multi-community infrastructures. As an example, XDC is collaborating with the Designing
and Enabling E-Infrastructures for intensive Processing in Hybrid Data Clouds (DEEP-Hybrid-DataCloud) \cite{deep}
project aimed at promoting the integration of specialised, and expensive, hardware under a Hybrid Cloud platform,
and targeting the evolution of the corresponding Cloud services supporting these intensive computing techniques to production level.
\section*{Acknowledgments}
eXtreme DataCloud has been funded by the European Commission H2020 research and innovation
program under grant agreement RIA 777367.
\section{References}
\begin{thebibliography}{}
\bibitem{xdc}
Web site: www.extreme-datacloud.eu
\bibitem{EOSC}
Web site: https://ec.europa.eu/research/openscience/index.cfm?pg=open-science-cloud
\bibitem{EGI}
Web site: https://www.egi.eu/
\bibitem{wlcg}
Web site: wlcg.web.cern.ch/
\bibitem{einfracall21}
Web site: http://ec.europa.eu/research/participants/portal/desktop/en/opportunities/h2020/topics/einfra-21-2017.html
\bibitem{indigo}
Web site: https://www.indigo-datacloud.eu
\bibitem{xdc-ko}
Web site: http://www.extreme-datacloud.eu/kickoff/
\bibitem{xdc-pulsar}
Web site: http://www.extreme-datacloud.eu/pulsar-out/
%\bibitem{lifewatch}
%Web site: https://www.lifewatch.eu
%\bibitem{cta}
%Web site: https://www.cta-observatory.org
%\bibitem{ecrin}
%Web site: https://www.ecrin.org
%\bibitem{xfel}
%Web site: https://www.xfel.eu
\bibitem{nginx}
Web site: https://www.nginx.com/
\bibitem{paasorch}
Web site: www.indigo-datacloud.eu/paas-orchestrator
\bibitem{rucio}
Web site: https://rucio.cern.ch/
\bibitem{tosca}
TOSCA Simple Profile in YAML Version 1.0. Edited by Derek Palma, Matt Rutkowski, and Thomas Spatzier. 27 August 2015. OASIS Committee Specification Draft 04 / Public Review Draft 01
\bibitem{dcache}
Web site: www.dcache.org
\bibitem{dynafed}
Web site: lcgdm.web.cern.ch/dynafed-dynamic-federation-project
\bibitem{onedata}
Web site: onedata.org
\bibitem{oidc}
Web site: https://openid.net/connect/
\bibitem{webdav}
Web site: www.webdav.org/
\bibitem{fts}
Web site: information-technology.web.cern.ch/services/file-transfer
\bibitem{eos}
Web site: eos.web.cern.ch
\bibitem{deep}
Web site: https://deep-hybrid-datacloud.eu/
\end{thebibliography}
\end{document}
contributions/sdds-xdc/XDC-HLA.png

285 KiB

contributions/sdds-xdc/XDC-WP.png

53.2 KiB

contributions/sdds-xdc/XDC-comp.png

167 KiB