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 4095 additions and 55 deletions
File added
......@@ -4,100 +4,126 @@
\title{ The annual international conference of high performance computing: SC18 from INFN point of view}
%\address{Production Editor, \jpcs, \iopp, Dirac House, Temple Back, Bristol BS1~6BE, UK}
\author{A. Costantini$^1$, D. Salomoni$^1$, S. Zani$^1$, S. Longo$^1$, L.Chiarelli$^2$ and G. Grandi$^3$
\author{A. Costantini$^1$, D. Salomoni$^1$, S. Zani$^1$, S. Longo$^1$, L.Chiarelli$^2$, G. Grandi$^3$
% etc.
}
\address{$^1$ INFN-CNAF, Bologna, Italy}
\address{$^2$ GARR, Bologna, Italy}
\address{$^3$ INFN-Bologna, Bologna, Italy}
\address{$^1$ INFN-CNAF, Bologna, IT}
\address{$^2$ GARR, Bologna, IT}
\address{$^3$ INFN Sezione di Bologna, Bologna, IT}
\ead{alessandro.costantini@cnaf.infn.it}
\begin{abstract}
Since 2012 INFN, together with INAF, GARR, ENEA and CINECA is participating as exibitor in the annual international conference of high performance computing, networking, storage and analysis. In 2018 SC took place in Dallas (US) between 12 and 16 November 2018. SC18 was particularl enriched by many events where the major software and hardware vendors presented their innovative products, strategies and next investments plans and actions.
Since 2012 INFN, together with INAF, GARR, ENEA and CINECA is participating as exhibitor in the annual international conference of high performance
computing, networking, storage and analysis. In 2018 SC took place in Dallas (US) between 12 and 16 November 2018. SC18 was particular enriched
by many events where the major software and hardware vendors presented their innovative products, strategies and next investments plans and actions.
\end{abstract}
\section{Introduction}
SC18 \cite{sc18} marks the 30th anniversary of the annual international conference of high performance computing, networking, storage and analysis. It celebrates the contributions of researchers and scientists – from those just starting their careers to those whose contributions have made lasting impacts.
INFN \cite{infn} is partecipating to this international conference since 2012 with the support and the collaboration of
SC18 \cite{sc18} marks the 30th anniversary of the annual international conference of high performance computing, networking, storage and analysis.
It celebrates the contributions of researchers and scientists – from those just starting their careers to those whose contributions have made lasting impacts.
INFN \cite{infn} is participating to this international conference since 2012 with the support and the collaboration of
\begin{itemize}
\item CINECA \cite{cineca}, a not-for-profit Consortium, made up of 67 Italian universities, 9 Italian Research Institutions, 1 Polyclinic and the Italian Ministry of Education. Today it is the largest Italian computing centre, one of the most important worldwide.
\item INAF \cite{inaf}, is the most important Italian institution conducting scientific research in astronomy and astrophysics. Research ranges from the study of the planets and minor bodies of the Solar system up to the large-scale structure of the Universe and groups and clusters of galaxies on cosmological scales.
\item GARR\cite{garr}, the ultra-broadband network dedicated to the Italian research and education community. Its main objective is to provide high-performance connectivity and to develop innovative services for the daily activities of researchers, professors and students as well as for international collaboration.
\item ENEA \cite{enea}, the National Agency for New Technologies, Energy and Sustainable Economic Development, a public body aimed at research, technological innovation and the provision of advanced services to enterprises, public administration and citizens in the sectors of energy, the environment and sustainable economic development.
\item CINECA \cite{cineca}, a not-for-profit Consortium, made up of 67 Italian universities, 9 Italian Research Institutions, 1 Polyclinic and the Italian Ministry of Education.
Today it is the largest Italian computing center, one of the most important worldwide.
\item INAF \cite{inaf}, is the most important Italian institution conducting scientific research in astronomy and astrophysics. Research ranges from the study of the
planets and minor bodies of the Solar system up to the large-scale structure of the Universe and groups and clusters of galaxies on cosmological scales.
\item GARR\cite{garr}, the ultra-broadband network dedicated to the Italian research and education community. Its main objective is to provide high-performance
connectivity and to develop innovative services for the daily activities of researchers, professors and students as well as for international collaboration.
\item ENEA \cite{enea}, the National Agency for New Technologies, Energy and Sustainable Economic Development, a public body aimed at research, technological
innovation and the provision of advanced services to enterprises, public administration and citizens in the sectors of energy, the environment and sustainable economic development.
\end{itemize}
\section{SC18 in brief}
The conference drew a record-breaking 13,071 (as of 11/15/18) attendees and featured a technical program spanning six days – making it the largest SC conference of all time. In all, the conference and exhibition infused the local economy with more than \$40 million in revenue according to the local Dallas Convention Bureau.
The conference drew a record-breaking 13,071 (as of 11/15/18) attendees and featured a technical program spanning six days – making it the largest SC conference of all time.
In all, the conference and exhibition infused the local economy with more than \$40 million in revenue according to the local Dallas Convention Bureau.
\subsection{Conference Themes}
Inspiring the Next Generation \& Diversity. A conference highlight related to this theme was the Student Cluster Competition, which features 15 international student teams competing in a non-stop “Iron-Chef’' style challenge to complete a real-world scientific workload, while impressing conference attendees and judges with their HPC knowledge.
A shrinking labor force is one of the major shortfalls in the STEM industry. The SC Conference brought together all nationalities, ethnicities, genders, and technical capabilities with the goal of sparking new ideas on how to attract more women, minorities, and young people to HPC.
Inspiring the World. HPC has the power and promise to solve world’s most difficult challenges. From hurricane and earthquake predictions to solving global hunger challenges, a main focus of the conference was to demonstrate how the HPC industry is using supercomputing to help make the world a better place.
Inspiring the Future of Technology. HPC is powering the advancement of artificial intelligence. In technical sessions and on the exhibit floor, the conference explored how HPC is helping AI bring improvements in societies, economies, and organizations.
Inspiring the Next Generation \& Diversity. A conference highlight related to this theme was the Student Cluster Competition, which features 15 international student
teams competing in a non-stop “Iron-Chef’' style challenge to complete a real-world scientific workload, while impressing conference attendees and judges with their HPC knowledge.
A shrinking labor force is one of the major shortfalls in the STEM industry. The SC Conference brought together all nationalities, ethnicities, genders, and technical capabilities
with the goal of sparking new ideas on how to attract more women, minorities, and young people to HPC.
Inspiring the World. HPC has the power and promise to solve world’s most difficult challenges. From hurricane and earthquake predictions to solving global hunger
challenges, a main focus of the conference was to demonstrate how the HPC industry is using supercomputing to help make the world a better place.
Inspiring the Future of Technology. HPC is powering the advancement of artificial intelligence. In technical sessions and on the exhibit floor, the conference explored
how HPC is helping AI bring improvements in societies, economies, and organizations.
\subsection{World’s Fastest Network}
SCinet gave SC18 attendees the chance to experience the world’s fastest temporary network, delivering 4.02 terabits per second of network capacity to the Kay Bailey Hutchison Convention Center Dallas this week.
In preparation volunteers installed more than 67 miles of fiber optic cable, including two miles of new underground fiber that now connects the convention center to a downtown Dallas data center. After this year’s conference concludes, that underground fiber will remain in place for the benefit of the city of Dallas.
SCinet gave SC18 attendees the chance to experience the world’s fastest temporary network, delivering 4.02 terabits per second of network capacity to the Kay Bailey
Hutchison Convention Center in Dallas (US).
In preparation, volunteers installed more than 67 miles of fiber optic cable, including two miles of new underground fiber that now connects the convention center to a
downtown Dallas data center. After this year’s conference concludes, that underground fiber will remain in place for the benefit of the city of Dallas.
To deliver WiFi for all attendees across one million square feet of exhibit space, volunteers also installed 300 wireless access points in just one week.
SCinet is made possible by the contributions of 40 industry-leading vendors, who in total donated \$52 million in hardware, software, and services.
\subsection{Exhibit Records}
According to Christy Adkinson, SC18 Exhibits Chair from Cray Inc, the SC18 Exhibition broke several records including largest research booth space at 65,000 sq. ft. and more industry exhibitors than ever. Plus, it exceeded the most total number of exhibitors at 364 and was the largest Exhibits ever with over 150,000 sq. ft. occupied. It also featured the first ever “Start-Up” Pavilion allowing small companies just entering the field an economic way to have a presence at the conference. Finally, SC18 featured more 1st time exhibitors than ever.
According to Christy Adkinson, SC18 Exhibits Chair from Cray Inc, the SC18 Exhibition broke several records including largest research booth space at 65,000 sq. ft. and
more industry exhibitors than ever. Plus, it exceeded the most total number of exhibitors at 364 and was the largest Exhibits ever with over 150,000 sq. ft. occupied. It also
featured the first ever “Start-Up” Pavilion allowing small companies just entering the field an economic way to have a presence at the conference. Finally, SC18 featured more 1st time exhibitors than ever.
\section{Innovations and new products at SC18}
The consolidated role of SC as the reference point high performance computing, networking, storage and analysis push the major vendors and companies to present their new products and activities.
Some of them have been griefly reported and descibed in the following subsections.
Some of them have been briefly reported and described in the following subsections.
\subsection{INTEL}
Intel \cite{intel} presented the improved family of processors:
\begin{itemize}
\item Cascade Lake: Intel Deep Learning Boost with the support to “Speed Select Technology" VNNI (vector neural network instruction) for inference acceleration
\item Cooper Lake: the successor of Cascade Lake (expected to be released on 1st half of 2020). Supports Bfloat16 for Deep Learning training,which provides the same level of precision as doubleprecision (32­bit) floating points, but in a smaller (16­bit) data size.
\item Cooper Lake: the successor of Cascade Lake (expected to be released on 1st half of 2020). Supports Bfloat16 for Deep Learning training,which provides the same level of precision as double-precision (32­bit) floating points, but in a smaller (16­bit) data size.
\item Ice Lake: the 10nm Ultrabook-class processors planned to ne released in late 2020. Will introduce PCIe Gen 4, with up to 64 lanes per CPU.
\item Intel Nervana Neural Netwrok Processor for Training pltted for early.
\item PCI express card for inference available of the first quarter 2019.
\end{itemize}
\subsection{Dell EMC}
Dell EMC \cite{dellemc} presented at their Community Meeting event the Frontera supercomputer. The Dell EMC PowerEdge system plans to combine several technical innovations such as CoolIT Systems high-density Direct Contact Liquid Cooling, high performance Mellanox HDR 200Gb/s InfiniBand interconnect and next generation Intel® Xeon® Scalable processors. Frontera’s early projects are expecting to include analysis of particle collisions from CERN’s Large Hadron Collider, global climate modeling, hurricane forecasting and multi-messenger astronomy.
Dell EMC \cite{dellemc} presented at their Community Meeting event the Frontera supercomputer. The Dell EMC PowerEdge system plans to combine several technical
innovations such as CoolIT Systems high-density Direct Contact Liquid Cooling, high performance Mellanox HDR 200Gb/s InfiniBand interconnect and next generation
Intel® Xeon® Scalable processors. Frontera’s early projects are expecting to include analysis of particle collisions from CERN’s Large Hadron Collider, global climate
modeling, hurricane forecasting and multi-messenger astronomy.
\subsection{NVIDIA}
NVIDIA \cite{nvidia}presented the new NVIDIA® T4 GPU accelerates diverse cloud workloads, including high-performance computing, deep learning training and inference, machine learning, data analytics, and graphics. Based on the new NVIDIA Turing architecture and packaged in an energy-efficient 70-watt, small PCIe form factor, T4 is optimized for mainstream computing environments and features multi-precision Turing Tensor Cores and new RT Cores. Combined with accelerated containerized software stacks from NGC, T4 delivers revolutionary performance at scale.
NVIDIA \cite{nvidia}presented the new NVIDIA® T4 GPU accelerates diverse cloud workloads, including high-performance computing, deep learning training and inference,
machine learning, data analytics, and graphics. Based on the new NVIDIA Turing architecture and packaged in an energy-efficient 70-watt, small PCIe form factor, T4 is
optimized for mainstream computing environments and features multi-precision Turing Tensor Cores and new RT Cores. Combined with accelerated containerized software
stacks from NGC, T4 delivers revolutionary performance at scale.
\subsection{ARISTA}
ARISTA \cite{ARISTA} presented two high density 400 Gigabit Ethernet datacenter switches based on the Broadcom 12.8 Tbps Tomahawk 3 silicon consisting on 32 400 GbEthernet ports in 1 Rack Unit.
The two models are supporting different type of transceivers: The 7060PX4-32 supports 32 OSFP Interfaces and the 7060DX4-32 has 32 ports of QSFP-DD. The adapter from OSFP to DD standard were also available. The devices were available to touch and test.
ARISTA \cite{ARISTA} presented two high density 400 Gigabit Ethernet datacenter switches based on the Broadcom 12.8 Tbps Tomahawk 3 silicon
consisting on 32 400 GbEthernet ports in 1 Rack Unit.
The two models are supporting different type of transceivers: The 7060PX4-32 supports 32 OSFP Interfaces and the 7060DX4-32 has 32 ports of QSFP-DD.
The adapter from OSFP to DD standard were also available. The devices were available to touch and test.
\section{INFN at SC18}
As mentioned above, INFN actively participated to SC18 by handling a booth where the advances in research of INFN and its partners (CINECA, INAF. ENEA and GARR) have been shown through the support of posters, video, leaflets and brochures (See Figures \ref{fig-1}, \ref{fig-2}, \ref{fig-3} and \ref{fig-4} for detais).
As mentioned above, INFN actively participated to SC18 by handling a booth where the advances in research of INFN and its partners (CINECA, INAF. ENEA and GARR)
have been shown through the support of posters, video, leaflets and brochures (See Figures \ref{fig-1}, \ref{fig-2}, \ref{fig-3} and \ref{fig-4} for detais).
In particular, the following list of posters, and related contributors, have been shown:
\begin{itemize}
\item Federated Cloud For Research (GARR)
\item COmputing on SoC Architecture: the INFN COSA Project
\item INAF - HPC New challenges and perspectives CINECA and EU-H2020 Programs
\item CRESCO6: tech specs \& benchmarks (ENEA)
\item ENEA partnership in the European Energy oriented Centre of Excellence (ENEA)
\item ENEA partnership in the European Energy oriented Center of Excellence (ENEA)
\item INFN Collaboration and Opportunities
\item DataCloud HYBRID SERVICES From Integrated Solutions to Exascale and beyond
\item INFN Service Portfolio
\item The INDIGO Identity and Access Management Service
\item HTC, HPC, CLOUD, no matter what your flavours are. New users are welcome at ReCaS-Bari DataCenter
\item HTC, HPC, CLOUD, no matter what your flavors are. New users are welcome at ReCaS-Bari DataCenter
\item HPC for Theoretical Physics at INFN
\item INFN CNAF “The Italian LHC TIER-1"
\item INFN CNAF “The Italian LHC TIER 1"
\end{itemize}
\subsection{Statistics at the INFN booth}
Thanks to the support of INFN National Services, a web survey \cite{limesurvey} has been deployed an used to collect information from the SC18 visitors interested in the scuentific activities presented at the booth.
Among all the SC18 participants who visited the INFN booth, 54 decided to fill-in the survey by replying to the following multiple-choise questions related to
Thanks to the support of INFN National Services, a web survey \cite{limesurvey} has been deployed an used to collect information from the SC18 visitors interested in the
scientific activities presented at the booth.
Among all the SC18 participants who visited the INFN booth, 54 of them decided to fill-in the survey by replying to the following multiple-choise questions related to
\begin{itemize}
\item Education
\item Current occupation
\item Interest for INFN projects or services
\subitem -Softare services for Research and Data Centers
\subitem -Software services for Research and Data Centers
\subitem -Industrial Collaboration (Consultancy, Design and Planning)
\subitem -Training courses, Programming and DevOps metodologies
\subitem -Training courses, Programming and DevOps methodologies
\subitem -Distributed computing paradigm (Grid Middleware)
\subitem -INDIGO-DataCloud
\subitem -eXtreme-DataCloud (XDC)
......@@ -113,13 +139,17 @@ Among all the SC18 participants who visited the INFN booth, 54 decided to fill-i
\subitem -Visiting Scientist
\end{itemize}
From the statistical analysis it appears clear the high education level of the participants (see Figure \ref{survey1}) and the distributed background due to the different occupational levels (see Figure \ref{survey2}) of the visitors.
Most of the INFN services, in particular Software services for Research and Data Centers (see Figure \ref{survey3}), actracted the attention of the visitors and, as a direct consequence, their interest on the INFN activities expressed both in the form of collaborations (see Figure \ref{survey4}) or job opportunities (see Figure \ref{survey5}).
From the statistical analysis it appears clear the high education level of the participants (see Figure \ref{survey1}) and the distributed background due
to the different occupational levels (see Figure \ref{survey2}) of the visitors.
Most of the INFN services, in particular Software services for Research and Data Centers (see Figure \ref{survey3}), actracted the attention of the
visitors and, as a direct consequence, their interest on the INFN activities expressed both in the form of collaborations (see Figure \ref{survey4}) or job opportunities (see Figure \ref{survey5}).
\section{Conclusions}
Supercomputing 2018 (SC18) is the annual international conference of high performance computing, networking, storage and analysis. The major vendors and companies presented in such event their new products and activities of which some of them have been discussed in the
session “Innovations and new products at SC18". INFN, in collaboration with INAF, GARR, ENEA and CINECA participated as exibitor at SC18 by presenting their activities and related collaborations. Furthermore, a survey among the booth visitors have been proposed by INFN and the related information have been analysed.
Supercomputing 2018 (SC18) is the annual international conference of high performance computing, networking, storage and analysis.
The major vendors and companies presented in such event their new products and activities of which some of them have been discussed in the
session “Innovations and new products at SC18". INFN, in collaboration with INAF, GARR, ENEA and CINECA participated as exhibitor at SC18 by
presenting their activities and related collaborations. Furthermore, a survey among the booth visitors have been proposed by INFN and the related information have been collected and analysed.
\section{References}
\begin{thebibliography}{}
......@@ -150,66 +180,66 @@ Web site: https://surveys.infn.it
\begin{figure}[h]
\centering
\includegraphics[width=6cm,clip]{20181112_173827-min.png}
\caption{First view of the INFN booth at SC18, Dallas (US)}
\caption{\small First view of the INFN booth at SC18, Dallas (US)}
\label{fig-1}
\end{figure}
\vspace*{-.5cm}
\begin{figure}[h]
\centering
\includegraphics[width=6cm,clip]{20181112_173843-min.png}
\caption{Seconf view of the INFN booth at SC18, Dallas (US)}
\caption{\small Second view of the INFN booth at SC18, Dallas (US)}
\label{fig-2}
\end{figure}
\vspace*{-.5cm}
\begin{figure}[h]
\centering
\includegraphics[width=6cm,clip]{20181112_181720-min.png}
\caption{INFN employee is presenting the INDIGO-DataCloud products and the new running Cloud-oriented projects: DEEP-HybridDatacloud, eXtreme-DataCloud and EOSC-hub.}
\caption{\small INFN employee is presenting the INDIGO-DataCloud products and the new running Cloud-oriented projects: DEEP-HybridDatacloud, eXtreme-DataCloud and EOSC-hub.}
\label{fig-3}
\end{figure}
\begin{figure}[h]
\vspace*{-.5cm}
\begin{figure}[!h]
\centering
\includegraphics[width=10cm,clip]{20181112_190135-min.png}
\caption{Panoramic view (partial) of the SC18 exibitor area.}
\caption{\small Panoramic view (partial) of the SC18 exibitor area.}
\label{fig-4}
\end{figure}
\begin{figure}[h]
\begin{figure}[tbp]
\centering
\includegraphics[width=6cm,clip]{2.png}
\caption{Distribution of the participants in terms of education.}
\caption{\small Distribution of the participants in terms of education.}
\label{survey1}
\end{figure}
\begin{figure}[h]
\begin{figure}[tbp]
\centering
\includegraphics[width=6cm,clip]{3.png}
\caption{Distribution of the participants in terms of occupation.}
\caption{\small Distribution of the participants in terms of occupation.}
\label{survey2}
\end{figure}
\begin{figure}[h]
\begin{figure}[tbp]
\centering
\includegraphics[width=6cm,clip]{4.png}
\caption{Distribution in terms of interest for INFN services.}
\caption{\small Distribution in terms of interest for INFN services.}
\label{survey3}
\end{figure}
\begin{figure}[h]
\begin{figure}[tbp]
\centering
\includegraphics[width=6cm,clip]{5.png}
\caption{Distribution of interest in therms of collaboration opportunities.}
\caption{\small Distribution of interest in therms of collaboration opportunities.}
\label{survey4}
\end{figure}
\begin{figure}[h]
\begin{figure}[tbp]
\centering
\includegraphics[width=6cm,clip]{6.png}
\caption{Distribution of interest in therms of job opportunities.}
\caption{\small Distribution of interest in therms of job opportunities.}
\label{survey5}
\end{figure}
......
@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}
}
@online{oidc,
author = {{OpenID Foundation}},
title = {{The OpenID Connect identity layer}},
year = 2018,
url = {https://openid.net/connect/},
urldate = {2018-12-03}
}
@online{oidc-discovery,
author = {{Nat Sakimura and John Bradley and Michael B. Jones and Edmund Jay}},
title = {{The OpenID Connect discovery specification}},
year = 2014,
url = {https://openid.net/specs/openid-connect-discovery-1_0.html},
urldate = {2018-12-03}
}
@online{igtf,
title = {{The Interoperable Global Trust Federation}},
url = {https://www.igtf.net/},
urldate = {2018-12-03}
}
@online{x509,
title = {{X.509}},
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}
}
@online{edugain,
title = {{eduGAIN interfederation website}},
url = {http://www.geant.org/Services/Trust_identity_and_security/eduGAIN},
urldate = {2018-12-03}
}
@online{google,
title = {{The Google Identity Platform}},
url = {https://developers.google.com/identity/},
urldate = {2018-12-03}
}
@online{scim,
title = {{The System for Cross Domain Identity Management website}},
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},
}
@online{scitokens,
title = {{The SciTokens project}},
url = {https://scitokens.org},
urldate = {2018-12-03}
}
@online{kubernetes,
title = {{The Kubernetes container orchestrator}},
url = {https://kubernetes.io},
urldate = {2018-12-03}
}
@online{openstack,
title = {{The Openstack IAAS framework}},
url = {https://www.openstack.org},
urldate = {2018-12-03}
}
@online{fts,
title = {{The CERN File Transfer Service}},
url = {https://fts.web.cern.ch},
urldate = {2018-12-03}
}
@online{storm,
title = {{The StoRM storage element}},
url = {https://italiangrid.github.io/storm},
urldate = {2018-12-03}
}
@online{dcache,
title = {{The dCache storage solution}},
url = {https://dcache.org},
urldate = {2018-12-03}
}
@online{oidc-rande,
title = {{The OpenID Research \& Education working group}},
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}
}
@online{aarc-blueprint,
title = {{The AARC Blueprint Architecture}},
url = {https://aarc-project.eu/architecture},
urldate = {2018-12-03}
}
@online{rcauth-ssh,
title = {{RCAuth.eu: getting proxies using SSH key AuthN}},
author = {Mischa Sall\'e},
url = {https://indico.cern.ch/event/669715/contributions/2739035/attachments/1532101/2398499/RCauth_SSH_wlcg_authz_wg.pdf},
urldate = {2018-12-03}
}
@online{oauth4myproxy,
title = {{OAuth for MyProxy}},
url = {http://grid.ncsa.illinois.edu/myproxy/oauth/},
urldate = {2019-03-18}
}
@online{rcauth,
title = {{The RCAuth online CA}},
url = {https://rcauth.eu},
urldate = {2018-12-03}
}
@online{dodas,
title = {{Dynamic On Demand Analysis Service: DODAS}},
url = {https://dodas-ts.github.io/dodas-doc},
urldate = {2018-12-03}
}
@online{eosc-hub,
title = {{The EOSC-Hub project}},
url = {https://www.eosc-hub.eu},
urldate = {2018-12-03}
}
@online{aarc,
title = {{The AARC project}},
url = {https://aarc-project.eu},
urldate = {2018-12-03}
}
@online{fim4r,
title = {{Federated Identity Management for Research}},
url = {https://fim4r.org},
urldate = {2018-12-03}
}
@online{wlcg-authz-wg,
title = {{The WLCG Authorization Working Group}},
url = {https://twiki.cern.ch/twiki/bin/view/LCG/WLCGAuthorizationWG},
urldate = {2018-12-03}
}
@online{nikhef,
title = {{The Dutch National Insititute for Sub-atomic Physics}},
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},
}
@online{kubernetes-labels,
title = {{Kubernetes labels and selectors}},
url = {https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/},
urldate = {2018-12-03}
}
@online{spid,
title = {{Sistema Pubblico di Identità Digitale}},
url = {https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/},
urldate = {2018-12-03}
}
@online{hr-db-api-service,
title = {{CERN HR DB API service }},
url = {https://baltig.infn.it/aceccant/cern-hr-db-service},
urldate = {2018-12-03}
}
@online{cern-openshift,
title = {{CERN Openshift PAAS infrastructure}},
url = {http://information-technology.web.cern.ch/services/PaaS-Web-App},
urldate = {2018-12-03}
}
@online{keycloak,
title = {{The Keycloak Identity and Access Management system}},
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}
}
%%
%% 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{Evolving the INDIGO IAM service}
\author{
A.~Ceccanti$^1$,
E.~Vianello$^1$
}
\address{$^1$ INFN-CNAF, Bologna, IT}
\ead{
andrea.ceccanti@cnaf.infn.it,
enrico.vianello@cnaf.infn.it
}
\begin{abstract}
The INDIGO Identity and Access Management (IAM) service has been designed and
developed at CNAF in the context of the INDIGO Datacloud project. In this
contribution, we describe the work done in 2018 to evolve and operate the IAM
service in support of several scientific communities and use cases.
\end{abstract}
\section*{Introduction}
\label{sec:introduction}
The INDIGO IAM service provides an integrated solution for securing access to
an organization resources and services. It supports authentication via Identity
federations (e.g., EduGAIN \cite{edugain}) and social logins (i.e., Google
\cite{google}), a registration service providing moderated access to the
organization, delegation and provisioning APIs and flexible account linking.
During 2018, the main focus of the work on IAM was to enhance its functionalities
in order to fully support the requirements emerging from the
WLCG Authorization Working Group, in support of the design of the future WLCG Authorization
service~\cite{wlcg-authz-wg}.
The following paragraphs summarize the main development and maintenance
activities.
\section*{Support for multiple external OpenID Connect providers}
\begin{figure}
\begin{minipage}[b]{.45\textwidth}
\centering
\includegraphics[width=\textwidth]{mutliple-oidc.png}
\caption{\label{fig:oidc-providers}The DODAS IAM login page showcasing support for Google, EduGAIN and EGI CheckIn external authentication.}
\end{minipage}
\hspace{.1\textwidth}
\begin{minipage}[b]{.45\textwidth}
\centering
\includegraphics[width=\textwidth]{request-cert.png}
\caption{\label{fig:request-cert}Requesting the on-demand generation of an X.509 certificate from the IAM dashboard.}
\end{minipage}
\end{figure}
Up to IAM version 1.4.0, IAM supported a single OpenID Connect provider, Google.
The support for authentication and account linking with an external OpenID Connect provider has been extended to
allow multiple providers.
Each provider can be listed in the IAM login page, and login buttons text and appearance can be customized with
appropriate configuration (see Figure ~\ref{fig:oidc-providers}).
\section*{RCAuth.eu integration}
The RCauth.eu~\cite{rcauth} Pilot Certificate Authority (CA) is an online CA operated by NIKHEF~\cite{nikhef} which
issues certificates to end-entities based on a successful authentication to a Federated Identity Management System
(FIMS) operated by an eligible Registration Authority.
The certificates issued by the RCauth Pilot CA are valid for a period of at most 13 months, but may be as short as 11 days.
RCAuth.eu has been integrated with INDIGO IAM in order to provide on-demand X.509 certificates to users without a certificate.
The certificate is obtained using a simple OAuth-based protocol~\cite{oauth4myproxy}.
When the RCAuth.eu integration is enabled, IAM provides users with the ability to request a certificate on-demand from the IAM dashboard, as shown in Figure~\ref{fig:request-cert}.
What happens under the hood is that the user is redirected to the RCAuth.eu
instance to be authenticated and give consent to the generation of an X.509 certificate and that such certificate is accesible by IAM.
Once the user has given its consent, IAM fetches the generated certificate from RCAuth.eu and
creates a proxy certificate out of it that is then stored in the IAM database and linked to the user membership.
A certificate provisioning API has also been implemented that allows users/agents with the appropriate privileges to
obtain the proxy certificate stored in the IAM database.
\section*{CERN HR DB API service and integration}
Identity vetting for the LHC VOs deployed at CERN rely on the VOMS Admin~\cite{voms-admin} CERN Human Resource database
integration~\cite{voms-convergence}, in order to verify that a VOMS applicant has a
valid LHC experiment membership while registered in VOMS.
In order to expose HR database identity vetting also the IAM, the logic
of the HR database querying has been extracted from the VOMS Admin codebase and adapted to schema changes planned for GDPR compliance.
A Spring boot microservice has been developed to provide a convenient REST API to query information about LHC experiment membership~\cite{hr-db-api-service}. This microservice has been deployed at CERN and integrated in IAM to demonstrate identity-vetting based on HR information, supporting a registration flow similar to the one implemented in production by VOMS Admin and that would satisfy the requirements expressed by the WLCG authorization working group.
\section*{VOMS provisioning}
A VOMS~\cite{VOMS} Attribute Authority (AA) microservice has been developed to expose IAM VO membership attributes in the form of VOMS attribute certificates. The VOMS microservice talks to the IAM DB and leverages IAM support for x.509 authentication.
The service is compatible with existing voms clients.
Since IAM does not provide a role abstraction, and that VOMS roles are
equivalent to group membership asserted on request, a mechanism based on labels has been developed to flag some IAM groups as VOMS roles.
These groups are not automatically included in generated VOMS ACs, but are instead returned using the VOMS role syntax only on explicit request from client, preserving the original VOMS role semantics.
With this work, IAM can support a gradual and seamless migration from WLCG legacy AAI based on X.509 and VOMS to a token-based AAI.
\section*{Labels and Attribute API}
A generic Labels API, inspired by the Kubernetes~\cite{kubernetes-labels} labels API, has been introduced in IAM that allows privileged users/agents to attach labels to groups and users.
These labels can be used internally by IAM (e.g., to provide additional metadata about users/groups status, to implement VOMS role semantics on top of IAM groups) or by external applications. A URI-based namespace mechanism
is supported to avoid name clashes on attributes managed by different applications.
A generic Attribute API has been introduced to allow to link key-value pairs to users and groups. This information is meant to provide additional authentication/authorization information related to users and groups that can be included, if requested by the configuration, in tokens issued by IAM,
providing a mechanism very similar to VOMS generic attributes.
\section*{Flexible notification dispatching}
A more flexible notification dispatching mechanism has been added to IAM.
which provides the ability to target VO users, admnistrators or group
administrators individually for email notifications. Previously, and up to IAM version 1.4.0, all administrator-targeted notifications were dispatched to an email address (typically, a mailing list) provided in configuration.
\section*{Group managers and group request support}
IAM now supports group managers, which are privileged users that can approve
group membership requests or add users to a the managed group.
Users can now request to join a group from the IAM dashboard home page.
\section*{Improved SAML support}
Significant work has been put in improving SAML support and integration
with identity federations such as EduGAIN or SAML identity providers (e.g., the CERN Single Sign-On~\cite{cern-sso} and the italian Sistema Pubblico per l'Identit\`a digitale (SPID)~\cite{spid}).
\section*{Operations and support}
Several IAM instances have been deployed and operated on our Kubernetes~\cite{kubernetes} infrastructure in support of scientific communities and projects (DODAS, CHNet, Dariah, Deep Hybrid Datacloud, ICCU, Virgo).
An IAM instance dedicated to WLCG authorization WG demonstration and integration activities has been deployed on the CERN Openshift~\cite{cern-openshift} and Openstack ~\cite{openstack} infrastructures.
\section*{Conclusions and future work}
We have described the main development and maintenance activities performed on the IAM service during 2018. In the future we will focus on further
enhancements to the service and on the migration of the core authentication module to Keycloak~\cite{keycloak}, in order to reduce maintenance costs and improve IAM integration flexibility.
\bibliographystyle{iopart-num}
\section*{References}
\bibliography{biblio}
\end{document}
contributions/sd_iam/mutliple-oidc.png

187 KiB

contributions/sd_iam/request-cert.png

186 KiB

@misc{rfc5280,
series = {Request for Comments},
number = 5280,
howpublished = {RFC 5280},
publisher = {RFC Editor},
doi = {10.17487/RFC5280},
url = {https://rfc-editor.org/rfc/rfc5280.txt},
author = {Sharon Boeyen and Stefan Santesson and Tim Polk and Russ Housley and Stephen Farrell and Dave Cooper},
title = {{Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile}},
pagetotal = 151,
year = 2008,
month = may,
abstract = {This memo profiles the X.509 v3 certificate and X.509 v2 certificate revocation list (CRL) for use in the Internet. An overview of this approach and model is provided as an introduction. The X.509 v3 certificate format is described in detail, with additional information regarding the format and semantics of Internet name forms. Standard certificate extensions are described and two Internet-specific extensions are defined. A set of required certificate extensions is specified. The X.509 v2 CRL format is described in detail along with standard and Internet-specific extensions. An algorithm for X.509 certification path validation is described. An ASN.1 module and examples are provided in the appendices. {[}STANDARDS-TRACK{]}},
}
@misc{rfc3820,
series = {Request for Comments},
number = 3820,
howpublished = {RFC 3820},
publisher = {RFC Editor},
doi = {10.17487/RFC3820},
url = {https://rfc-editor.org/rfc/rfc3820.txt},
author = {Von Welch and Mary Thompson and Douglas E. Engert and Steven Tuecke and Laura Pearlman},
title = {{Internet X.509 Public Key Infrastructure (PKI) Proxy Certificate Profile}},
pagetotal = 37,
year = 2004,
month = jun,
abstract = {This document forms a certificate profile for Proxy Certificates, based on X.509 Public Key Infrastructure (PKI) certificates as defined in RFC 3280, for use in the Internet. The term Proxy Certificate is used to describe a certificate that is derived from, and signed by, a normal X.509 Public Key End Entity Certificate or by another Proxy Certificate for the purpose of providing restricted proxying and delegation within a PKI based authentication system. {[}STANDARDS-TRACK{]}},
}
@misc{rfc5755,
series = {Request for Comments},
number = 5755,
howpublished = {RFC 5755},
publisher = {RFC Editor},
doi = {10.17487/RFC5755},
url = {https://rfc-editor.org/rfc/rfc5755.txt},
author = {Sean Turner and Stephen Farrell and Russ Housley},
title = {{An Internet Attribute Certificate Profile for Authorization}},
pagetotal = 50,
year = 2010,
month = jan,
abstract = {This specification defines a profile for the use of X.509 Attribute Certificates in Internet Protocols. Attribute certificates may be used in a wide range of applications and environments covering a broad spectrum of interoperability goals and a broader spectrum of operational and assurance requirements. The goal of this document is to establish a common baseline for generic applications requiring broad interoperability as well as limited special purpose requirements. The profile places emphasis on attribute certificate support for Internet electronic mail, IPsec, and WWW security applications. This document obsoletes RFC 3281. {[}STANDARDS-TRACK{]}},
}
@misc{nginxvoms-cnafar-2016,
author = {Paulon, S and Giacomini, F and Ceccanti, A},
title = {{A VOMS module for the NGINX web server}},
howpublished = {{INFN-CNAF Annual Report}},
year = 2016,
url = {https://www.cnaf.infn.it/annual-report},
}
@InProceedings{voms,
author="Alfieri, R.
and Cecchini, R.
and Ciaschini, V.
and dell'Agnello, L.
and Frohner, {\'A}.
and Gianoli, A.
and L{\~o}rentey, K.
and Spataro, F.",
editor="Fern{\'a}ndez Rivera, Francisco
and Bubak, Marian
and G{\'o}mez Tato, Andr{\'e}s
and Doallo, Ram{\'o}n",
title="VOMS, an Authorization System for Virtual Organizations",
booktitle="Grid Computing",
year=2004,
publisher="Springer Berlin Heidelberg",
address="Berlin, Heidelberg",
pages="33--40",
abstract="We briefly describe the authorization requirements, focusing on the framework of the DataGrid and DataTAG Projects and illustrate the architecture of a new service we have developed, the Virtual Organization Membership Service (VOMS), to manage authorization information in Virtual Organization scope.",
isbn="978-3-540-24689-3"
}
@Misc{module-baltig,
title = {\verb"ngx_http_voms_module"},
note = {\url{https://baltig.infn.it/storm2/ngx\_http\_voms\_module}}}
@Misc{nginx,
title = {Nginx},
note = {\url{https://nginx.org/}}
}
@Misc{openresty,
title = {{OpenResty}},
note = {\url{https://openresty.org/}}}
@Misc{test::nginx,
title = {{Test::Nginx}},
note = {\url{https://metacpan.org/pod/Test::Nginx}}}
@Misc{voms-github,
title = {{VOMS}},
note = {\url{https://github.com/italiangrid/voms}}}
@Misc{openssl,
title = {{OpenSSL}},
note = {\url{https://www.openssl.org/}}}
contributions/sd_nginx_voms/deployment.png

96.7 KiB

\documentclass[a4paper]{jpconf}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\bibliographystyle{iopart-num}
\begin{document}
\title{A VOMS module for the Nginx web server}
\author{A. Ceccanti$^1$, F. Giacomini$^1$, E. Ronchieri$^1$, N. Terranova$^1$}
\address{$^1$ INFN-CNAF, Bologna, IT}
\ead{francesco.giacomini@cnaf.infn.it}
\begin{abstract} We present the motivation, the design and some
implementation hints of a software module for the Nginx web server
aimed at extracting the attributes of a VOMS-issued Attribute
Certificate during a client authentication based on an X.509 Proxy
Certificate. The module enables the use of Nginx as a reverse proxy
to a Grid service, relieving it from most of the work necessary to
authenticate a client.
\end{abstract}
\section{Introduction}
Every Grid service needs to authenticate and possibly authorize every
request that it receives. The authentication is historically based on
X.509 Proxy Certificates~\cite{rfc5280}, extended with Attribute
Certificates~\cite{rfc5755} obtained from a VOMS
service~\cite{voms}. An Attribute Certificate is conceptually an
assertion signed by the VOMS service that declares the groups the user
submitting the request belongs to within a Virtual Organization
(e.g. a scientific collaboration) and the possible roles they have
within those groups.
As a consequence, a Grid service must carry out a number of
security-related steps before even starting its own business logic:
\begin{itemize}
\item offer an HTTPS endpoint;
\item perform X.509 certificate-based client authentication;
\item extract the VOMS attributes, on which it could later base an
authorization decision.
\end{itemize}
The purpose of this work is to factor those three actions out of a
Grid service into a common service-independent module to be run by a
reverse proxy deployed in front of the service. The ideal deployment
model is shown in Figure~\ref{fig:deployment}. If the reverse proxy
and the actual service run in a trusted zone, the communication
between the two can even happen over plain HTTP.
\begin{figure}
\begin{center}
\includegraphics[width=.9\textwidth]{deployment}
\caption{\label{fig:deployment}Deployment model enabled by the
VOMS module run in a front-end service acting as a reverse proxy
towards the actual service running as the back-end.}
\end{center}
\end{figure}
After a first prototype~\cite{nginxvoms-cnafar-2016} was prepared as
part of a master thesis, a properly engineered version has been
developed for production use.
\section{Nginx}
The reverse proxy of choice is Nginx~\cite{nginx}. Nginx is an efficient HTTP and
reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy
server, which serves or proxies a large fraction of the busiest
sites on the Internet.
Nginx has a modular architecture: the core software components provide
a solid and efficient foundation to dispatch events (e.g. from
networking) to one or more worker processes to be asynchronously
managed. Additional functionality is further provided by
\textit{modules} that are linked to the Nginx executable. Modules can
also be loaded dynamically at run time, yet they need to be known at
compile time. As a consequence, the typical way to obtain an Nginx
executable is to compile the corresponding source code, specifying the
exact selection of modules needed for the specific deployment.
To simplify our build and testing setup, we have opted to base our
work on top of the OpenResty~\cite{openresty} distribution of Nginx,
which includes already a selection of useful modules.
However we cannot use the Nginx code as-is, for it is unaware of the
delegation mechanism designed by Globus for the Grid Security
Infrastructure on which all Grid services are based. The delegation
mechanism introduces a control character in the HTTP protocol, between
the SSL/TLS handshake and the transmission of the method. Although we
do not intend to support the delegation mechanism in this work, we
wrote a minimal patch to the Nginx request-parsing code, so that it
can accept that extra character and ignore it if it means ``no
delegation''.
An additional patch has been proposed for Nginx upstream, to enable
the support for proxy certificates via a flag in the configuration
file, after recent versions of OpenSSL~\cite{openssl} have removed the
possibility to enable it via an environment variable. Since proxy
certificates are not widely used outside of the Grid world, the patch
has not been accepted; despite being a more convenient and clearer
solution, the patch is not even applied locally, since there is a
workaround applicable directly in our module's code, as described
below.
An instance of Nginx can be configured (and re-configured) through a
file read by the master process. The configuration file can specify,
among many other things, that Nginx runs in reverse-proxy mode and how
the request should be passed to the upstream server (i.e. the
back-end). The syntax of the configuration file allows for the use of
\textit{variables} (in our case, for example, there would be one
called \texttt{\$voms\_fqans}), whose value is provided by a specific
handler that gets executed when the corresponding variable is used.
\section{Building and testing}
Though the development can happen on any platform, the reference
platform for the deployment at the moment is CentOS 7. Moreover, as
mentioned above, we have elected the OpenResty distribution as the
basis for our own Nginx module. A Docker image combining CentOs 7 and
OpenResty is available both for local builds and for the continuous
integration builds bound to the \textit{git} repository that hosts the
source code.
The Docker image is augmented with the necessary dependencies (such as
the VOMS libraries) and with the elected development tools, mostly
installed through the software collections \textit{Developer Toolset
7} (to have a compiler that supports C++ 2017 and various
sanitizers) and \textit{LLVM Toolset 7} (to have the code formatter
and the static analyzer).
The testing is based on \texttt{Test::Nginx}~\cite{test::nginx}, a
Perl-based testing framework that comes with OpenResty, that allows
the specification of tests with a declarative syntax. We struggled to
find a way to enable TLS client authentication, but the result is very
satisfactory.
The build and the tests are automatically run every time some code is
pushed to the reference git repository~\cite{module-baltig}.
\section{The VOMS module}
The purpose of the VOMS module is to extract the information available
in the Attribute Certificate embedded in the X.509 Proxy Certificate
used for the authentication of the client and make it available as
Nginx variables. The variables can then be used in the configuration
file to form the request that is passed upstream by the reverse proxy.
The variables correspond very closely to the fields of the
\texttt{voms} data structure found in the API of the VOMS C++
library~\cite{voms-github}. For example:
\begin{description}
\item[\texttt{voms\_user}] The Subject of the End-Entity certificate, used to sign the proxy.
\item[\texttt{voms\_fqans}] A comma-separated list of Fully Qualified Attribute
Names.
\item[\texttt{voms\_vo}] The name of the Virtual Organization (VO) to which the End Entity belongs.
\item[\texttt{voms\_not\_before}] The date before which the Attribute
Certificate is not yet valid.
\item[\texttt{voms\_not\_after}] The date after which the Attribute Certificate
is not valid anymore.
\end{description}
The module consists mainly of the handlers that are called when a
variable is referenced in the configuration file. The information
needed to give a value to the variables comes from invocations of the
VOMS library API; that information is obtained as a by-product of the
validation of the X.509 certificate chain presented by the client,
including the VOMS Attribute Certificate. Since such a validation is
expensive, performing it every time a handler is called is best
avoided and a caching strategy is preferable. The caching can be
applied at multiple levels: for each request, for each connection
(multiple requests can be sent over the same connection), for multiple
connections authenticated with the same client proxy certificate. At
the moment the caching is applied at connection level, but moving it
to the next level is already planned.
As mentioned above, the module also enables the support for proxy
certificates in OpenSSL, which in recent versions of the library is
not available any more through setting an environment variable. This
is done calling the appropriate OpenSSL API functions in a handler
that gets executed at the end of the Nginx configuration phase, at a
time when the SSL certificate store, the data structure containing the
flag that enables the acceptance of proxies, is initialized and
available for manipulation.
\section{Deployment}
Once the module described in this work is linked to the Nginx
executable, in order to deploy a Grid service according to the model
sketched in the Introduction, the typical configuration for an Nginx
instance used as a reverse proxy in front of the actual Grid service
would include directives similar to the following.
{\small
\begin{verbatim}
server {
listen 443 ssl;
ssl_certificate /certs/cert.pem;
ssl_certificate_key /certs/key.pem;
ssl_client_certificate /etc/pki/tls/certs/ca-bundle.crt;
ssl_verify_client on;
ssl_verify_depth 100;
location / {
proxy_set_header Voms-User $voms_user;
proxy_set_header Voms-Fqans $voms_fqans;
proxy_set_header Voms-Vo $voms_vo;
proxy_set_header Voms-Not-Before $voms_not_before;
proxy_set_header Voms-Not-After $voms_not_after;
proxy_pass http://back-end;
}
}
\end{verbatim}
}
The service running on the back-end would then receive requests over
plain HTTP and will find among its headers all the VOMS information
needed to apply its own authorization policies.
\section{Conclusions and future work}
In this paper we have shown how an Nginx reverse proxy equipped with
the described module could relieve a Grid service from most of the
work necessary to authenticate a client presenting credentials based
on X.509 Proxy Certificates extended with a VOMS-issued Attribute
Certificate.
The module is ready for production use and is currently part of the
development effort aimed at revising the implementation of the StoRM
service.
The main planned development concerns the improvement of the caching
of the information obtained during the validation of VOMS Attribute
Certificates.
\section*{References}
\bibliography{biblio}
\end{document}
@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}
}
@online{oidc,
author = {{OpenID Foundation}},
title = {{The OpenID Connect identity layer}},
year = 2018,
url = {https://openid.net/connect/},
urldate = {2018-12-03}
}
@online{oidc-discovery,
author = {{Nat Sakimura and John Bradley and Michael B. Jones and Edmund Jay}},
title = {{The OpenID Connect discovery specification}},
year = 2014,
url = {https://openid.net/specs/openid-connect-discovery-1_0.html},
urldate = {2018-12-03}
}
@online{igtf,
title = {{The Interoperable Global Trust Federation}},
url = {https://www.igtf.net/},
urldate = {2018-12-03}
}
@online{x509,
title = {{X.509}},
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}
}
@online{edugain,
title = {{eduGAIN interfederation website}},
url = {http://www.geant.org/Services/Trust_identity_and_security/eduGAIN},
urldate = {2018-12-03}
}
@online{google,
title = {{The Google Identity Platform}},
url = {https://developers.google.com/identity/},
urldate = {2018-12-03}
}
@online{scim,
title = {{The System for Cross Domain Identity Management website}},
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},
}
@online{scitokens,
title = {{The SciTokens project}},
url = {https://scitokens.org},
urldate = {2018-12-03}
}
@online{kubernetes,
title = {{The Kubernetes container orchestrator}},
url = {https://kubernetes.io},
urldate = {2018-12-03}
}
@online{openstack,
title = {{The Openstack IAAS framework}},
url = {https://www.openstack.org},
urldate = {2018-12-03}
}
@online{fts,
title = {{The CERN File Transfer Service}},
url = {https://fts.web.cern.ch},
urldate = {2018-12-03}
}
@online{storm,
title = {{The StoRM storage element}},
url = {https://italiangrid.github.io/storm},
urldate = {2019-05-15}
}
@online{dcache,
title = {{The XRootD software framework}},
url = {https://dcache.org},
urldate = {2019-05-15}
}
@online{xrootd,
title = {{The dCache storage solution}},
url = {http://xrootd.org/},
urldate = {2019-05-15}
}
@online{dpm,
title = {{DPM - Disk Pool Manager}},
url = {http://lcgdm.web.cern.ch/dpm},
urldate = {2019-05-15}
}
@online{eos,
title = {{EOS Open Storage}},
url = {http://eos.web.cern.ch/},
urldate = {2019-05-15}
}
@online{oidc-rande,
title = {{The OpenID Research \& Education working group}},
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}
}
@online{aarc-blueprint,
title = {{The AARC Blueprint Architecture}},
url = {https://aarc-project.eu/architecture},
urldate = {2018-12-03}
}
@online{rcauth-ssh,
title = {{RCAuth.eu: getting proxies using SSH key AuthN}},
author = {Mischa Sall\'e},
url = {https://indico.cern.ch/event/669715/contributions/2739035/attachments/1532101/2398499/RCauth_SSH_wlcg_authz_wg.pdf},
urldate = {2018-12-03}
}
@online{oauth4myproxy,
title = {{OAuth for MyProxy}},
url = {http://grid.ncsa.illinois.edu/myproxy/oauth/},
urldate = {2019-03-18}
}
@online{rcauth,
title = {{The RCAuth online CA}},
url = {https://rcauth.eu},
urldate = {2018-12-03}
}
@online{dodas,
title = {{Dynamic On Demand Analysis Service: DODAS}},
url = {https://dodas-ts.github.io/dodas-doc},
urldate = {2018-12-03}
}
@online{eosc-hub,
title = {{The EOSC-Hub project}},
url = {https://www.eosc-hub.eu},
urldate = {2018-12-03}
}
@online{aarc,
title = {{The AARC project}},
url = {https://aarc-project.eu},
urldate = {2018-12-03}
}
@online{fim4r,
title = {{Federated Identity Management for Research}},
url = {https://fim4r.org},
urldate = {2018-12-03}
}
@online{wlcg-authz-wg,
title = {{The WLCG Authorization Working Group}},
url = {https://twiki.cern.ch/twiki/bin/view/LCG/WLCGAuthorizationWG},
urldate = {2018-12-03}
}
@online{nikhef,
title = {{The Dutch National Insititute for Sub-atomic Physics}},
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},
}
@online{kubernetes-labels,
title = {{Kubernetes labels and selectors}},
url = {https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/},
urldate = {2018-12-03}
}
@online{spid,
title = {{Sistema Pubblico di Identità Digitale}},
url = {https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/},
urldate = {2018-12-03}
}
@online{hr-db-api-service,
title = {{CERN HR DB API service }},
url = {https://baltig.infn.it/aceccant/cern-hr-db-service},
urldate = {2018-12-03}
}
@online{cern-openshift,
title = {{CERN Openshift PAAS infrastructure}},
url = {http://information-technology.web.cern.ch/services/PaaS-Web-App},
urldate = {2018-12-03}
}
@online{srm-2.2,
title = {{The Storage Resource Manager v. 2.2 specification}},
url = {https://sdm.lbl.gov/srm-wg/doc/SRM.v2.2.070402.html},
urldate = {2018-12-03}
}
@online{keycloak,
title = {{The Keycloak Identity and Access Management system}},
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}
}
@inproceedings{gpfs,
author = {Schmuck, Frank and Haskin, Roger},
title = {GPFS: A Shared-disk File System for Large Computing Clusters},
booktitle = {Proceedings of the 1st USENIX Conference on File and Storage Technologies},
series = {FAST'02},
year = {2002},
location = {Monterey, CA},
pages = {16--16},
numpages = {1},
url = {http://dl.acm.org/citation.cfm?id=1973333.1973349},
acmid = {1973349},
publisher = {USENIX Association},
address = {Berkeley, CA, USA},
}
@inproceedings{gemss,
doi = {10.1088/1742-6596/608/1/012013},
url = {https://doi.org/10.1088%2F1742-6596%2F608%2F1%2F012013},
year = 2015,
month = {may},
publisher = {{IOP} Publishing},
volume = {608},
pages = {012013},
author = {Pier Paolo Ricci and Alessandro Cavalli and Luca Dell'Agnello and Matteo Favaro and Daniele Gregori and Andrea Prosperini and Michele Pezzi and Vladimir Sapunenko and Giovanni Zizzi and Vincenzo Vagnoni},
title = {The {INFN}-{CNAF} Tier-1 {GEMSS} Mass Storage System and database facility activity},
booktitle = {Journal of Physics: Conference Series}
}
@online{storm-1.11.13,
title = {{StoRM 1.11.13 release notes}},
url = {http://italiangrid.github.io/storm/release-notes/StoRM-v1.11.13.html},
urldate = {2018-12-03}
}
@online{storm-1.11.14,
title = {{StoRM 1.11.14 release notes}},
url = {http://italiangrid.github.io/storm/release-notes/StoRM-v1.11.14.html},
urldate = {2018-12-03}
}
@online{storage-resource-reporting-proposal,
title = {{Storage Resource Reporting proposal for storage providers}},
url = {https://docs.google.com/document/d/1yzCvKpxsbcQC5K9MyvXc-vBF1HGPBk4vhjw3MEXoXf8},
urldate = {2018-11-23}
}
@online{globus-end-of-support,
title = {{Globus toolkit end-of-support announcement}},
url = {https://www.globus.org/blog/support-open-source-globus-toolkit-ends-january-2018},
urldate = {2018-12-03}
}
@online{doma-tpc,
title = {{The WLCG DOMA Third Party Copy (TPC) working group}},
url = {https://twiki.cern.ch/twiki/bin/view/LCG/ThirdPartyCopy},
urldate = {2018-12-03}
}
@online{spring-boot,
title = {{The Spring Boot project}},
url = {https://spring.io/projects/spring-boot},
urldate = {2018-12-03}
}
@online{yaim,
title = {{Yet Antother Installation Manager}},
url = {https://twiki.cern.ch/twiki/bin/view/EGEE/YAIM},
urldate = {2018-12-03}
}
@online{puppet,
title = {{The puppet configuration management tool}},
url = {https://puppet.com/},
urldate = {2018-12-03}
}
\ No newline at end of file
contributions/sd_storm/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 maintenance and evolution}
\author{
A. Ceccanti$^1$,
E. Vianello$^1$,
F. Giacomini$^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. In this contribution, we highlight the main maintenance and evolution activities on StoRM during 2018.
\end{abstract}
\section*{Introduction}
\label{sec:introduction}
StoRM~\cite{storm} is a lightweight storage resource manager (SRM) solution developed at INFN-CNAF which powers the CNAF Tier 1 data center as well as more than 30 other sites.
StoRM implements the SRM version 2.2~\cite{srm-2.2} data management specification and is typically deployed on top of a cluster file system like IBM GPFS~\cite{gpfs}.
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 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 transfer is 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{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, but which does not yet support tape operations.
An high level representation of the StoRM architecture is given in Figure~\ref{fig:storm-arch}.
During 2018, two StoRM releases where produced:
\begin{itemize}
\item StoRM 1.11.13~\cite{storm-1.11.13}, released on February, 19th, providing updates for the StoRM backend, YAIM module and the info provider;
\item StoRM 1.11.14~\cite{storm-1.11.14}, released on July, 25th, providing updates for the frontend and backend services, StoRM native and xmlrpc libraries, the GridFTP DSI module and the YAIM module.
\end{itemize}
The following paragraphs describe the main StoRM maintenance and evolution activities that resulted in the above releases and in pre-release packages made available to the CNAF Tier 1 and other interested sites during 2018.
\begin{figure}
\centering
\includegraphics[width=.6\textwidth]{storm-arch.png}
\caption{\label{fig:storm-arch}The StoRM high level architecture.}
\end{figure}
\section*{StoRM frontend stability improvements}
After observing repeated failures that resulted in the death of the StoRM frontend process in production at Tier 1, an investigation was started
to understand the cause of the failures and provide a fix to improve
the service stability.
The failures occurred mainly when an high number of requests was observed on the frontend. Enabling core dumping did not provide much information, besides the fact that the segfault occurred mostly in the XMLRPC serializiation/deserialization logic, and was likely caused by stack corruption. What precisely caused the stack corruption however was not
understood.
In order to contain the problem, the following improvements were
implemented:
\begin{itemize}
\item a configurable limit on the size of the request queue
on the frontend was implemented;
\item information about the request queue size and the number of
active requests was added to the frontend log, in order to monitor the queue processing status in real time;
\item the logic of the XMLRPC interaction between frontend and backend
has been refactored in order to use the xmlrpc synchronous API (the former use of the asynchronous API only complicated the code base without providing increased concurrency or throughput);
\item a configurable limit on the size of the threadpool serving XMLRPC requests has been introduced on the backend;
\item a configurable limit on the size of the queue of the XMLRPC requests has been introduced on the backend;
\item our load test suite was tuned to generate a load comparable with
the one observed in production for the ATLAS experiment.
\end{itemize}
These improvements, and appropriate configuration, restored the frontend
service stability: no more crashes were observed in production, even during peak load periods.
\section*{JSON storage usage record reporting}
In consultation with all the LHC experiments, the WLCG storage providers (dCache~\cite{dcache}, DPM~\cite{dpm}, EOS~\cite{eos}, StoRM, XRootD~\cite{xrootd}) drafted a proposal for storage resource reporting in WLCG~\cite{storage-resource-reporting-proposal}.
This document proposes five requirements:
\begin{itemize}
\item \texttt{R0}: storage systems should provide the total used space and the list of files stored (no other meta-data required);
\item \texttt{R1}: storage systems should provide the total used and total free space for all distinct space quotas available to the experiment through a non-SRM protocol (GridFTP, HTTP or XRootD) and with ten minutes as data freshness order and tens of GB as volume accuracy;
\item \texttt{R2}: storage systems should provide a public summary file indicating the “topology” of the system and usage information;
\item \texttt{R3}: storage systems should provide the total used and total free space on sub-directories, in particular any entity on which a restrictive quota has been applied;
\item \texttt{R4}: storage systems should provide a full storage dump with file information such as size, creation time and check-sum value.
\end{itemize}
Requirement \texttt{R3} has been withdrawn as no experiment supported its inclusion.
Requirement \texttt{R4} was already supported through WebDAV with a detailed and recursive \texttt{PROPFIND} operation.
In order to comply with the requirements \texttt{R0}, \texttt{R1} and \texttt{R2}, the following improvements were introduced in February 2018:
\begin{itemize}
\item the backend REST endpoint used to generate the list of configured storage areas and their usage status now produces a JSON response instead of plain text;
\item a new command, \texttt{get-report-json}, has been added to the info provider to generate a JSON site report file, with a configurable target location.
\end{itemize}
To fulfill requirement \texttt{R2}, the Tier 1 StoRM ATLAS production instance has been configured to expose,
via the StoRM WebDAV service, the JSON usage report in a storage area accessible by any client presenting a trusted X.509 certificate.
\section*{Backend improved starting logic}
Aiming to improve StoRM Backend service starting logic, an important re-factoring work has been done on the start-up source code and on the \texttt{init.d} scripts.
Before the re-factoring, each start-up of StoRM Backend service was divided into several running processes making even the kill of the service too much complex than necessary.
After the re-factoring only one process can be seen from command line and all the useless arguments has been removed. That has meant also a relevant improve of service start-up speed.
Comparing the start-up before the re-factoring:
\begin{verbatim}
$ time sh start-storm.sh
Bootstrapping storm-backend-server [ OK ]
Starting storm-backend-server [ OK ]
real 0m20.495s
user 0m0.122s
sys 0m0.140s
\end{verbatim}
and after:
\begin{verbatim}
$ time sh start-storm.sh
Starting storm-backend-server: [ OK ]
real 0m5.217s
user 0m0.083s
sys 0m0.078s
\end{verbatim}
we can see that the new boot speed is about 4 times faster.
\section*{WebDAV third-party transfers support}
At the end of May 2017 the Globus Alliance announced that the Open source
Globus toolkit would be no longer supported by the Globus team at the University of Chicago~\cite{globus-end-of-support}. This announcement had obvious impact on WLCG, since the Globus Security Infrastructure (GSI) and GridFTP lie at the core of the WLCG data management infrastructure, and discussions started in the appropriate forums on the search for alternatives. The DOMA Third party copy Working Group~\cite{doma-tpc} was established to investigate alternatives to the GridFTP protocol for bulk transfers across WLCG sites. This led to a requirement for all storage element implementations to support either WebDAV-based or XrootD-based third-party transfers.
In order to comply with the requirement, the following improvements were introduced in the StoRM WebDAV service in November 2018:
\begin{itemize}
\item The WebDAV service was migrated to the latest stable Spring boot libraries~\cite{spring-boot};
\item Token-based delegation and authorization was introduced, by adding support for external OpenID Connect~\cite{oidc} providers and by introducing an internal OAuth~\cite{oauth} authorization server that can be used to issue tokens to client authenticated with VOMS credentials;
\item the semantic of the WebDAV \texttt{COPY} method was extended to implement third-party transfers;
\item a significant refactoring of the robot test suite was implemented, by moving the test suite code in the server repository and simplifying credential management. The refactoring resulted in improved usability, performance and error reporting.
\end{itemize}
A pre-release package of the updated StoRM WebDAV package was
deployed at CNAF Tier 1 for the ATLAS WebDAV production instance and added successfully to the DOMA TPC testbed where it showed to work reliably.
The initial deployment also highlighted minor issues which were solved, and lead to the final release of the StoRM WebDAV 1.1.0 release in Februrary 2019.
\begin{figure}
\centering
\includegraphics[width=.6\textwidth]{tpc.png}
\caption{\label{fig:tpc}A WebDAV push-mode third-party transfer managed by CERN File Transfer Service (FTS) against two storage elements.}
\end{figure}
\section*{Conclusions and future work}
In this contribution, we presented the main development and evolution activities performed on StoRM during 2018. Besides ordinary maintenance, in 2019 we will focus on porting StoRM 1
to CENTOS 7 and in replacing the current YAIM-based configuration code~\cite{yaim} with a Puppet module~\cite{puppet}.
\section*{References}
\bibliographystyle{iopart-num}
\bibliography{biblio}
\end{document}
contributions/sd_storm/storm-arch.png

87.3 KiB

contributions/sd_storm/tpc.png

70.2 KiB