From 744e8d2565b6023f7a6a93c650bc6083a8661afa Mon Sep 17 00:00:00 2001 From: Ekaterina Kuznetsova Date: Mon, 13 Mar 2023 14:14:59 +0300 Subject: [PATCH] ART_XC quickstart guide v.2.1.beta --- artxc_quickstart_guide.tex | 1068 ++++++++++++++++++++++++++++++++++++ image/data_levels.png | Bin 0 -> 69509 bytes pscyr.sty | 166 ++++++ 3 files changed, 1234 insertions(+) create mode 100644 artxc_quickstart_guide.tex create mode 100644 image/data_levels.png create mode 100644 pscyr.sty diff --git a/artxc_quickstart_guide.tex b/artxc_quickstart_guide.tex new file mode 100644 index 0000000..db8aef9 --- /dev/null +++ b/artxc_quickstart_guide.tex @@ -0,0 +1,1068 @@ +\documentclass{article} +\usepackage[usenames,dvipsnames]{xcolor} +\usepackage{fullpage} +\usepackage[utf8]{inputenc} +\usepackage[russian]{babel} +\usepackage{array} +\usepackage{booktabs} +\usepackage[section]{placeins} +\usepackage[flushleft]{threeparttable} +\usepackage{tcolorbox} +\usepackage{multirow} +\usepackage{hyperref} +\hypersetup{ + colorlinks=true, + linkcolor=blue, + filecolor=magenta, + urlcolor=cyan, + pdftitle={Overleaf Example}, + pdfpagemode=FullScreen, + linktocpage=true, + } +\urlstyle{same} + +\usepackage{tocloft} +% \renewcommand{\cftpartleader}{\cftdotfill{\cftdotsep}} +% \renewcommand{\cftchapleader}{\cftdotfill{\cftdotsep}} % for chapters +\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}} + +\usepackage{fancyvrb} +\usepackage{fvextra} +\usepackage{stackengine} +\usepackage{scalerel} +\newcommand\dangersign[1][2ex]{% + \renewcommand\stacktype{L}% + \scaleto{\stackon[1.3pt]{\color{black}$\triangle$}{\tiny !}}{#1}% +} + +\newcommand{\art}{\textit{СРГ/АРТ-XC}} +\newcommand{\artf}{\textit{АРТ-XC им. М.~Н.~Павлинского}} +\newcommand{\srgart}{\textit{СРГ/АРТ-XC}} +\newcommand{\pipe}{\textsc{artpipeline}} +\newcommand{\prods}{\textsc{artproducts}} +\newcommand{\artim}{\textsc{artimage}} +\newcommand{\artev}{\textsc{artevlist}} +\newcommand{\artarf}{\textsc{artmkarf}} +\newcommand{\artax}{\textsc{artskyaxis}} +\newcommand{\artcoord}{\textsc{artskycoord}} +\newcommand{\artsp}{\textsc{artxspec}} +\newcommand{\artlc}{\textsc{artlcurve}} + +% \hypertarget{thesentence}{this sentence} +% \hyperlink{thesentence}{any sentence} + +\renewcommand\arraystretch{1.2} + +\title{Краткое руководство по обработке данных телескопа \srgart\ им. М.~Н.~Павлинского} +\author{ + Кузнецова Екатерина (ИКИ РАН, eakuznetsova@cosmos.ru) \\ + Штыковский Андрей (ИКИ РАН, sht.job@gmail.com) \\ +} +\date{Версия 2.1 beta от \today} + +\begin{document} + +\maketitle +\tableofcontents +\newpage +\section{Требования к рабочему окружению} +\label{sec:env} + +Для работы конвейера обработки требуются установленные: + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] + \begin{itemize} + \item \textbf{HEASOFT версии 6.28} и старше (см. \href{https://heasarc.gsfc.nasa.gov/docs/software/heasoft/}{здесь}) + \item \textbf{Python версии 3.8} и старше (см. \href{https://www.python.org/downloads/}{здесь}) + \end{itemize} +\end{tcolorbox} + +\section{Подготовка рабочего окружения на серверах СРГ} +\label{sec:prep} + +\noindent +Файлы конвейера обработки и калибровочные файлы лежат на серверах СРГ в директории: \\ +\verb*|/srg/work/srg/artxc|. + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\noindent +Для того чтобы проинициализировать рабочее окружение необходимо подгрузить переменные окружения при помощи файла artinit.csh, который который лежит в этой же директории. Пример вызова команды: + +\begin{verbatim} +source /srg/work/srg/artxc/artinit.csh +\end{verbatim} + +\noindent +Чтобы каждый раз не писать длинную команду можно создать \verb*|alias|, прописав в файле $\sim$/.tcshrc: + +\begin{verbatim} +alias artinit "source /srg/work/srg/artxc/artinit.csh" +\end{verbatim} +и выполнив \verb*|source|~\verb*|~/.tcshrc|. После этого в терминале можно инициализировать окружение командой \verb*|artinit|. +\end{tcolorbox} + +% На серверах СРГ установлено несколько разных версий программного обеспечения \textsc{heasoft}, которые нужно по-разному инициализировать для каждого сервера. В будущем планируется обновить программное обеспечение на серверах и привести к единой системе инициализации необходимого окружения. На 18-м сервере программное обеспечение \textsc{HEASOFT v.6.29} и все необходимые библиотеки можно инициализировать, прописав в файле \verb*|~\.tcshrc| следующее: +% \begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +% \begin{Verbatim}[breaklines=true, breakanywhere=true] +% setenv LD_LIBRARY_PATH "" +% setenv LD_LIBRARY_PATH /opt/soft/heasoft-6.24/x86_64-pc-linux-gnu-libc2.17/lib/:/opt/soft/psoft/libpng/lib/:$LD_LIBRARY_PATH +% setenv PATH /opt/soft/bin/:$PATH + +% setenv CALDB /srg/work/srg/artxc/caldb +% alias cdbinit "source $CALDB/software/tools/caldbinit.csh" + +% setenv HEADAS /opt/soft/psoft/heasoft-6.29/x86_64-pc-linux-gnu-libc2.17 +% alias heainit "source $HEADAS/headas-init.csh" + +% alias artinit "source /srg/work/srg/artxc/artinit.csh" +% \end{Verbatim} +% \end{tcolorbox} + +На серверах СРГ установлено несколько разных версий программного обеспечения \textsc{heasoft}, которые нужно по-разному инициализировать для каждого сервера. В будущем планируется обновить программное обеспечение на серверах и привести к единой системе инициализации необходимого окружения. На 10-14 серверах программное обеспечение \textsc{HEASOFT v.6.29} и все необходимые библиотеки можно инициализировать, прописав в файле \verb*|~\.tcshrc| следующее: +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] + \begin{Verbatim}[breaklines=true, breakanywhere=true] +alias artinit "source /srg/work/srg/artxc/artinit.csh" +setenv LD_LIBRARY_PATH "" +setenv LD_LIBRARY_PATH /opt/soft/psoft/gcc-9.3.0/lib64/:/opt/soft/psoft/lib/:$LD_LIBRARY_PATH + +setenv PATH /opt/soft/psoft/bin:$PATH +setenv PYTHONPATH /opt/soft/psoft/bin +source /opt/soft/psoft/python_venv/bin/activate.csh + +setenv HEADAS /opt/soft/psoft/heasoft-6.29/x86_64-pc-linux-gnu-libc2.17 +alias heainit "source $HEADAS/headas-init.csh" + +setenv CALDB /srg/work/srg/artxc/caldb +alias cdbinit "source $CALDB/software/tools/caldbinit.csh" + \end{Verbatim} +\end{tcolorbox} + + +\section{Уровни данных} +\label{sec:data} + +В процессе обработки данных космического телескопа \art\ используются и производятся следующие уровни данных: + \begin{itemize} + \item L0 - исходные (сырые) данные + \item L1 - калиброванные данные + \item L2 - калиброванные и очищенные данные + \item L3 - продукты высокого уровня + \end{itemize} + +Данные на всех уровнях представлены в формате FITS. + +Исходные данные уровня L0 представляют собой списки некалиброванных и неочищенных событий и кватернионы ориентации телескопа \art, измеренные Гироскопическим Измерителем Вектора Угловых Скоростей (ГИВУС) (см. таблицу~\ref{tab:l0}). + +На данный момент архив данных находится в разработке, поэтому необходимо заранее уточнить реальную директорию, в которой лежат данные необходимого наблюдения. Некоторые наблюдения лежат в директории \verb*|/srg/a1/work/oper/data/archive/observations//L0/| или, если нет доступка к \verb*|/srg/a1|, \verb*|/srg/work/oper/data/archive/observations//L0/|, где \verb*|| --- индивидуальный номер наблюдения. + +\begin{table}[!h] + \centering + \caption{Файлы директории L0, которая содержит исходные данные.} + + \begin{tabular}{| m{5cm} | m{10.7cm} |} + \hline + \textbf{Название / Пример} & \textbf{Описание} \\ + \hline + \verb*|T[1-7]_uf.fits|/ \verb*|art119100400010T1_uf.fits| & Списки некалиброванных и неочищенных событий. + + \verb*|=art[0-1]| --- префикс используемых файлов. + + Индекс \verb*|0| соответствует данным, набранным во время наблюдения, \verb*|1| --- данным, полученным во время перенаведения на объект (pre-slew, т.е. от момента окончания предыдущего наблюдения до момента начала текущего наблюдения). + + Индекс \verb*|T[1-7]| соответствует номеру модуля телескопа АРТ-XC от 1 до 7. \\ + \hline + \verb*|_gyro.fits|/ \verb*|art119100400010_gyro.fits| & Файл с кватернионами ориентации телескопа. \\ + \hline + \end{tabular} +\label{tab:l0} +\end{table} + + + +% \section{Архив данных наблюдений на серверах СРГ} +% \label{sec:arch} + +% Архив данных наблюдений подготовлен согласно программе наблюдений СРГ. Каждое наблюдение лежит в отдельной директории и содержит файлы наведений и интервалов хорошего времени, а также данные сырые сырые списки событий уровня L0. Подготовленные к последующей обработке файлы наблюдений находятся в директории \textbf{(необходимо уточнить директорию)}: + +% \begin{verbatim} +% /srg/a1/work/oper/data/archive/observations/$obsid/L0 +% \end{verbatim} + +% \noindent +% Подневный архив наблюдений, обновляемый на ежедневной основе, содержит непрерывные данные наблюдений, разделенные по дням наблюдений (ARTDAYS). Архив содержит файлы наведений и списки событий уровней L0, L1 и L2. Подневный архив наблюдений лежит в директории: +% \begin{verbatim} +% /srg/a1/work/oper/data/artdays +% \end{verbatim} + +\section{Этапы обработки данных} +\label{sec:steps} + +Обработка исходных данных уровня L0 проводится в несколько этапов: +\begin{enumerate} +\item калибровка сырых данных уровня L0, в результате чего генерируются данные уровня L1 +\item очистка калиброванных данных уровня L1, что производит данные уровня L2 +\item генерация научных продуктов высокого уровня L3 +\end{enumerate} +Первый и второй этапы проводятся с помощью процедуры \pipe\ (см. секцию~\ref{sec:pipe}), за третий этап отвечает процедура \prods\ (см. секцию~\ref{sec:prods}). + + +Рисунок \ref{fig:proc} содержит схему уровней данных с указанием процедур, с помощью которого производится каждый следующий уровень. Стоить отметить, что данные уровня L1 в схеме не отображены, т.к. являются промежуточной стадией процедуры \pipe. + +\begin{figure*}[h!] + \centerline{\includegraphics[width=0.8\textwidth]{data_levels.png}} + \caption{Этапы обработки и уровни данных космического телескопа \artf.} +\label{fig:proc} +\end{figure*} + + +\section{\pipe\ --- получение калиброванных и очищенных данных уровня L2} +\label{sec:pipe} + +Первый этап обработки данных --- калибровка и очистка (уровень данных L2). +% \textbf{На этапе очистки к калиброванному списку событий применяются фильтры .... } +Для выполнения первого этапа обработки данных используется процедура \pipe, параметры вызова которой приведены в Таблице~\ref{tab:pipepar}. При возникновении ошибок выполнения данной процедуры смотрите секцию~\ref{sec:err}. Промежуточные файлы калиброванных, но не очищенных, списков событий (уровень L1) не сохраняются после успешного завершения процедуры. + +Процедура \pipe\ поддерживает использование пользовательских временных интервалов, которые можно задать с помощью ключа \verb*|--usergti|. + +После успешного выполнения этой команды в директории \verb*|./processed/119100400010| будет создана поддиректория L2, которая будет содержать калиброванные очищенные данные. Содержимое директории L2, созданной после успешного завершения процедуры \pipe, описано в таблице~\ref{tab:l2}. + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример вызова \pipe} (на примере наблюдения OBSID=11910040001): + +\begin{verbatim} +artpipeline \ + stem=art119100400010 \ + srcdir=/data/artxc/obsid/119100400010/L0 \ + dstdir=./processed/119100400010 + tmpdir=/temp +\end{verbatim} + +\dangersign[4ex] Указанную в \verb*|srcdir| директорию \verb*|/data/artxc/obsid| необходимо заменить на реальную директорию, в которой лежат данные которые необходимо обработать. +\end{tcolorbox} + + +\begin{table}[!h] + \centering + \caption{ Параметры процедуры \pipe. Переменная --- обозначает путь к соответствующим файлам.} + + \begin{tabular}{| m{5em} | m{5cm}| m{8.2cm} |} + \hline\hline + + \textbf{Параметр} & \textbf{Значение} & \textbf{Описание} \\ + \hline + \verb*|stem| & \verb*|art[0-1]| & Префикс для имен входных и выходных файлов. \\ + \hline + \verb*|srcdir| & \verb*|//L0| & Входная директория, указывающая путь к файлам данных уровня L0. \\ + \hline + \verb*|dstdir| & \verb*|/| & Выходная директория, в которой будут созданы поддиректории L1 и L2. Создаётся новая или используется уже существующая. \\ + \hline + \verb*|tmpdir| & \verb*|/temp| & Директория для временных файлов. Создаётся новая или используется уже существующая. В директории, указанной в параметре \verb*|tmpdir| создаётся новая директория для размещения временных файлов, генерируемых в процессе работы процедуры. При успешном завершении процедуры эта директория автоматически удаляется. Если Вы работаете на серверах сети СРГ, то эта директория очищается при перезагрузке сервера. \\ + \hline + \verb*|--usergti| & \verb*|/.fits| & Пользовательский файл с необходимыми временными интервалами (опциональный параметр).\\ + \hline +% \verb*|--seed| & & Параметр для генератора случайных чисел. Выбирается автоматически, но может быть задан вручную, например, для полного повторения результатов запуска \pipe. \\ +% \hline + \end{tabular} +\label{tab:pipepar} +\end{table} + + +%В данной процедуре заложен генератор случайных чисел, при помощи которого разыгрываются значения в колонках списка событий, содержащих информацию об энергии пришедшего фотона (\verb*|[ENERGY]|, \verb*|[ENERGY_BOT]|, \verb*|[ENERGY_TOP]|) и о его небесных координатах (\verb*|[RA]|, \verb*|[DEC]|). Генератор случайных чисел определяется числом \verb*|[SEED]|, которое при каждом запуске \pipe\ обновляется и записывается в \verb*|HEADER| полученных списков событий уровня L2. Автоматически при запуске \pipe\ для энергии пришедшего фотона и его небесных координат генерируются разные числа. Однако существует возможность вручную задавать число \verb*|[SEED]| с помощью параметра \verb*|--seed| процедуры \pipe. В таком случае генератор случайных чисел использует одинаковое число \verb*|[SEED]| для розыгрыша энергий и небесных координат. При необходимости полностью повторить результаты того или иного запуска \pipe, необходимо при каждом запуске \pipe\ указывать одинаковый параметр \verb*|--seed|. + +\begin{table}[!h] + + \centering + \caption{Файлы директории L2, генерируемые процедурой \pipe.} + + \begin{tabular}{| m{5cm} | m{10.7cm} |} + \hline + \textbf{Название / Пример} & \textbf{Описание} \\ + \hline + \verb*|_att.fits|/ \verb*|art119100400010_att.fits| & Файл наведения телескопа. \\ + \hline + \verb*|_ori.fits|/ \verb*|art119100400010_ori.fits| & Файл ориентации телескопа. \\ + \hline + \verb*|T[1-7]_cl.fits|/ \verb*|art119100400010T1_cl.evt| & Файлы с калиброванными и очищенными списками событий для каждого телескопа. Индекс T[1-7] соответствует номеру модуля телескопа \art\ от 1 до 7. \\ + \hline + \end{tabular} +\label{tab:l2} +\end{table} + + +\FloatBarrier + +\section{\prods\ --- получение продуктов высокого уровня L3} +\label{sec:prods} + +Для получения продуктов высокого уровня необходимо выполнить 4 шага: +\begin{enumerate} +\item задать область неба (секция~\ref{sec:wcs}); +\item произвести привязку данных к заданной области неба с помощью \prods, в результате чего производятся списки событий и изображения неба (секция~\ref{sec:artprod1}); +\item определить регионы для извлечения сигнала источника и оценки фонового излучения (секция~\ref{sec:reg}); +\item получить кривые блеска и спектры с помощью \prods\ (секция~\ref{sec:artprod2}). +\end{enumerate} +\noindent +Каждый этап подробно описан ниже. + +\subsection{Определение области неба} +\label{sec:wcs} + +Для определения разметки области неба, на которую будут проецироваться фотоны с помощью процедуры \prods, необходимо создать текстовый WCS-файл с заданными параметрами координатной сетки. Описание параметров, которые должны быть записаны в WCS-файле, приведены в таблице~\ref{tab:wcs}. Предлагается задавать наименование WCS-файла в следующем формате: \verb*|_skytile.wcs|. Процедура \prods\ поддерживает только систему координат FK5. + +\begin{table}[!h] + + \centering + \caption{Параметры WCS-файла (в разработке). На данный момент изменения фиксированных параметров невозможны.} + + \begin{tabular}{| m{5em} | m{4cm}| m{9.4cm} |} + \hline\hline + + \textbf{Параметр} & \textbf{Значение} & \textbf{Описание} \\ + \hline + \verb*|nx| & 1024 пикс. & Количество пикселей по оси X. \\ + \verb*|ny| & 1024 пикс. & Количество пикселей по оси Y. \\ + & & Процедура \prods\ умножает эти параметры на 2 и прибавляет 1.\\ + \hline + \verb*|crpix1| & 512 пикс. & Координата опорной точки по оси X. \\ + \verb*|crpix2| & 512 пикс. & Координата опорной точки по оси Y. \\ + & & Процедура \prods\ умножает эти параметры на 2.\\ + \hline + \verb*|crval1| & RA, $^{\circ}$ & Прямое восхождение (RA) опорной точки. \\ + \verb*|crval2| & Dec, $^{\circ}$ & Наклонение (Dec) опорной точки. \\ + \hline + \verb*|cdelt1| & $-0.0025318223732333^{\circ}$ & Шаг по прямому восхождению вдоль оси X. Фиксированный параметр.\\ + \verb*|cdelt2| & $0.0025318223732333^{\circ}$ & Шаг по наклонению вдоль оси Y. Фиксированный параметр. \\ + \hline + \verb*|crota2| & $0^{\circ}$ & Угол наклона координатной сетки. Фиксированный параметр. \\ + \hline +\end{tabular} +\label{tab:wcs} +\end{table} + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример содержания WCS файла} для источника GRO~J1008--571 с координатами RA = 152.4457, Dec = -58.293 (OBSID=11910040001): +\begin{verbatim} +{ + "nx" : 1024, + "ny" : 1024, + "crpix1": 512, + "crpix2": 512, + "crval1": 152.4457, + "crval2": -58.293, + "cdelt1": -0.0025318223732333, + "cdelt2": 0.0025318223732333, + "crota2": 0 +} +\end{verbatim} +\end{tcolorbox} + + + +\subsection{Привязка списков событий к координатам и получение изображения} +\label{sec:artprod1} + +На данном этапе проводится привязка калиброванных и очищенных списков событий к координатной разметке, заданной WCS-файлом (см. секцию ~\ref{sec:wcs}), что позволяет получить изображение неба. Для этого необходимо запустить процедуру \prods\ с ключами \verb*|--prepare-skytile| и \\ \verb*|--wcs=/_skytile.wcs|, где \verb*|| --- путь к директории, в которой находится нужный WCS-файл. Параметры процедуры \prods\ описаны в таблице~\ref{tab:prod1}. Список возможных ошибок выполнения данной процедуры и их решений указан в секцию~\ref{sec:err}. + +Стоить отметить, что процедура \prods\ не поддерживает использование пользовательских временных интервалов, заданных с помощью ключа \verb*|--usergti|. При необходимости использовать пользовательские временные интервалы рекомендуется запустить сначала \pipe\ (см. секцию~\ref{sec:pipe}) с соответствующим ключом \verb*|--usergti|, а затем на полученных списках событий запускать \prods. + +Процедура \prods\ может производить изображения в определённом энергетическом диапазоне от $E_{min}$ до $E_{max}$ с помощью ключей \verb*|--elow| и \verb*|--ehigh|, которые соответствуют нижней и верхней границам заданного диапазона соответственно (см. таблицу~\ref{tab:prod1}). + +При успешном выполнении команды \prods\ будут созданы списки событий с заданной системой координат (WCS) в поддиректории \verb*|//L3/events| и построены изображения указанной области неба по каждому модулю телескопа \art\ и совместное по всем модулям в поддиректории \verb*|//L3/img| (см. таблицу~\ref{tab:ev_img}). Поддиректории будут созданы в выходной директории \verb*|dstdir=//L3|, указанной при запуске \prods. + +% \noindent +% Для определения регионов для извлечения данных необходимо выполнить команду \textsc{artproducts} с ключами prepare-skytile и wcs (с указанием WCS для построения изображения). + +\begin{table}[!h] + \centering + \caption{Параметры и ключи процедуры \prods, необходимые для привязки списка событий к заданной области неба и построению изображения. Переменная --- обозначает путь к соответствующим файлам.} + + \begin{tabular}{| m{5em} | m{5cm}| m{8.2cm} |} + \hline\hline + + \textbf{Параметр} & \textbf{Значение} & \textbf{Описание} \\ + \hline + \verb*|stem| & \verb*|art[0-1]| & Префикс для имен входных и выходных файлов. \\ + \hline + \verb*|srcdir| & \verb*|//L2| & Входная директория, указывающая путь к файлам данных уровня L2. \\ + \hline + \verb*|dstdir| & \verb*|//L3| & Выходная директория, в которой будут созданы поддиректории \verb*|events| и \verb*|img|. Создаётся новая или используется уже существующая. \\ + \hline + \verb*|tmpdir| & \verb*|/temp| & Директория для временных файлов. Создаётся новая или используется уже существующая. В директории, указанной в параметре \verb*|tmpdir| создаётся новая директория для размещения временных файлов, генерируемых в процессе работы процедуры. При успешном завершении процедуры эта директория автоматически удаляется. Если Вы работаете на серверах сети СРГ, то эта директория очищается при перезагрузке сервера. \\ + \hline + \verb*|--prepare-| \verb*|skytile| & & Ключ, запускающий процедуру \prods\ в режиме, который проводит привязку данных уровня L2 к области неба, заданной WCS-файлом. \\ + \hline + \verb*|--wcs| & \verb*|/_skytile.wcs| & WCS-файл, содержащий информацию о системе координат и области неба, на которую будут проецироваться списки событий уровня L2.\\ + \hline + \multicolumn{3}{|c|}{\textbf{Опциональные параметры}}\\ + \hline + \verb*|--elow| & $E_{min}$, кэВ & Нижняя граница энергетического диапазона. По умолчанию $E_{min}=4$~кэВ. \\ + \hline + \verb*|--ehigh| & $E_{max}$, кэВ & Верхняя граница энергетического диапазона. По умолчанию $E_{max}=12$~кэВ. \\ +% \hline +% \verb*|--usergti| & \verb*|/.fits| & Пользовательский файл с необходимыми временными интервалами (опциональный параметр).\\ + \hline + \end{tabular} +\label{tab:prod1} +\end{table} + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример вызова \prods} (на примере наблюдения OBSID=11910040001) для подготовки определения регионов: + +\begin{verbatim} +artproducts \ + stem=art119100400010 \ + srcdir=./processed/119100400010/L2 \ + dstdir=./processed/119100400010/L3 \ + tmpdir=/temp \ + --prepare-skytile \ + --wcs=./art119100400010_skytile.wcs +\end{verbatim} +% --wcs=/data/artxc/obsid/119100400010/meta/art119100400010_skytile.wcs + +\dangersign[4ex] Повторный запуск процедуры \prods\ приводит к перезаписи файлов в директории \verb*|L3\img| и не изменяет файлы директории \verb*|L3\events|. Полная перезапись файлов на данный момент не реализована, поэтому перед повторным запуском процедуры рекомендуется удалить все ранее сгенерированные ей файлы или изменить выходную директорию. +\end{tcolorbox} + + + +\begin{table}[!h] + \centering +\caption{Файлы, генерируемые после вызова процедуры \prods, описанной в пункте~\ref{sec:artprod1}. Для каждого случая индекс T[1-7] соответствует номеру модуля телескопа \art\ от 1 до 7.} + + \begin{tabular}{| m{5cm} | m{10.7cm} |} + \hline + \textbf{Название / Пример} & \textbf{Описание} \\ + \hline + \multicolumn{2}{|c|}{\textbf{Директория events}} \\ + \hline + \verb*|T[1-7]_cl.evt|/ \verb*|art119100400010T1_cl.evt| & файлы с калиброванными и очищенными списками событий, полученные каждым модулем телескопа \art, с привязкой к координатной сетке, заданной WCS-файлом на предыдущем шаге. \\ + \hline + \multicolumn{2}{|c|}{\textbf{Директория img}} \\ + \hline + T[1-7].img/ \verb*|art119100400010T1.img| & индивидуальные для каждого модуля телескопа \art\ изображения области неба, заданной WCS-файлом. \\ + T[1-7]\_all.img/ \verb*|art119100400010T1_all.img| & изображение заданной области неба, просуммированное по всем модулям телескопа \art.\\ + \hline + \end{tabular} +\label{tab:ev_img} +\end{table} + +\subsection{Определение регионов для извлечения информации об источнике} +\label{sec:reg} + +Перед тем, как получить кривые блеска и спектры источника, необходимо определить регионы, из которых будет собираться сигнал источника и излучение фона. Для этого необходимо на суммарном изображении неба (например, \verb*|art119100400010T1_all.img|, см. таблицу~\ref{tab:ev_img}), полученном при запуске \prods, определить два региона и сохранить их в формате программы \textsc{ds9}. + +На данный момент поддерживаются только круговые регионы, при этом для извлечения сигнала источника рекомендуется задавать единственный регион с радиусом $R=136.5''$, что соответствует трём пикселям детектора, каждый из которых имеет размер $45.5''$. Для оценки фонового излучения разрешается задавать несколько регионов без регионов исключения. + +% Суммарное изображение, полученное при запуске \prods, необходимо открыть с DS9 и определить регионы для извлечения фотонов источника и фона \textbf{(на данный момент поддерживаются только круговые регионы)}. + +% На данный момент процедура \prod\ поддерживает только круговые регионы. Для точечных источников рекомендуемый размер региона составляет $R=135''$. + +\subsection{Получение спектров и кривых блеска} +\label{sec:artprod2} + +\noindent +Предыдущие шаги были подготовительными этапами для получения научных продуктов высокого уровня L3, а именно: кривых блеска и спектров. Списки событий были привязаны к координатной сетке WCS, регионы источника и фона были определены по полученным изображениям. Теперь нужно произвести вызов процедуры \prods\ с указанием регионов для извлечения фотонов источника и фона, положения источника, файла ориентации телескопа и параметров кривой блеска. В качестве входной директории указывается директория \verb*|//L3/events|, содержащая списки событий с привязкой к координатам, полученные на более раннем этапе (см. секцию~\ref{sec:artprod1}). Полный список параметров процедуры \prods\ указан в таблице~\ref{tab:prod2}. + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример вызова \prods} (на примере наблюдения OBSID=11910040001) с использованием подготовленного WCS-файла: + +\begin{verbatim} +artproducts \ + stem=art119100400010 \ + srcdir=./processed/119100400010/L3/events \ + dstdir=./processed/119100400010/L3 \ + tmpdir=/temp \ + --orient=./processed/L2/art119100400010_ori.fits \ + --srcreg=./processed/L3/reg/art119100400010_src.reg \ + --bkgreg=./processed/L3/reg/art119100400010_bkg.reg \ + --srcra=152.4457 \ + --srcdec=-58.293 \ + --elow=4 \ + --ehigh=12 \ + --binsize=1 +\end{verbatim} + +\dangersign[4ex] Обратите внимание, что в \verb*|srcdir| указывается директория событий, полученных после вызова процедуры \prods\ в пункте~\ref{sec:artprod1}. + +\dangersign[4ex] \dangersign[4ex] Повторный запуск процедуры \prods\ приводит к ошибке выполнения данной программы. Перезапись файлов при повторном запуске процедуры на данный момент не реализована, поэтому рекомендуется удалить ранее сгенерированные файлы или изменить выходную директорию. +\end{tcolorbox} + +\begin{table}[!h] + \centering + \caption{Параметры и ключи процедуры \prods, необходимые для получения кривых блеска и спектров. Переменная --- обозначает путь к соответствующим файлам. } + + \begin{tabular}{| m{5em} | m{5cm}| m{8.2cm} |} + \hline\hline + + \textbf{Параметр} & \textbf{Значение} & \textbf{Описание} \\ + \hline + \verb*|stem| & \verb*|art[0-1]| & Префикс для имен входных и выходных файлов. \\ + \hline + \verb*|srcdir| & \verb*|//L3/events| & Входная директория, указывающая путь к спискам событий уровня L3. \\ + \hline + \verb*|dstdir| & \verb*|//L3| & Выходная директория, в которой будут созданы поддиректории \verb*|pha| и \verb*|lc|. Создаётся новая или используется уже существующая. \\ + \hline + \verb*|tmpdir| & \verb*|/temp| & Директория для временных файлов. Создаётся новая или используется уже существующая. В директории, указанной в параметре \verb*|tmpdir| создаётся новая директория для размещения временных файлов, генерируемых в процессе работы процедуры. При успешном завершении процедуры эта директория автоматически удаляется. Если Вы работаете на серверах сети СРГ, то эта директория очищается при перезагрузке сервера. \\ + \hline + \verb*|--orient| & \verb*|//L2/| \verb*|_ori.fits| & Файл ориентации телескопа \art. \\ + \hline + \verb*|--srcreg| & \verb*|/.reg| & Регион, из которого извлекается излучение источника. \\ + \hline + \verb*|--bkgreg| & \verb*|/.reg| & Регион, внутри которого оценивается уровень фонового излучения. \\ + \hline + \verb*|--srcra| & \verb*|RA|, $^{\circ}$ & Прямое восхождение (RA) источника. \\ + \hline + \verb*|--srcdec| & \verb*|Dec|, $^{\circ}$ & Наклонение (Dec) источника.\\ + \hline + \multicolumn{3}{|c|}{\textbf{Параметры для получения кривых блеска}}\\ + \hline + \verb*|--elow| & $E_{min}$, кэВ & Нижняя граница энергетического диапазона. По умолчанию $E_{min}=4$~кэВ. \\ + \hline + \verb*|--ehigh| & $E_{max}$, кэВ & Верхняя граница энергетического диапазона. По умолчанию $E_{max}=12$~кэВ. \\ + \hline + \verb*|--binsize| & $T_{bin}$, с & Размер бина кривой блеска. По умолчанию $T_{bin}=1$~с. \\ + \hline + % \multicolumn{3}{|c|}{\textbf{Опциональные параметры}}\\ + % \hline + % \verb*|--usergti| & \verb*|/.fits| & Пользовательский файл с необходимыми временными интервалами.\\ + % \hline + \end{tabular} +\label{tab:prod2} +\end{table} + +\begin{table}[!ht] + \centering +\caption{Файлы, генерируемые после вызова процедуры \prods, описанной в пункте~\ref{sec:artprod2}. Для каждого случая индекс T[1-7] соответствует номеру модуля телескопа \art\ от 1 до 7.} + + \begin{tabular}{| m{7cm} | m{8.7cm} |} + \hline + \textbf{Название / Пример} & \textbf{Описание} \\ + \hline + \multicolumn{2}{|c|}{\textbf{Директория lc}} \\ + \hline + \verb*|T[1-7]_src.lc|/ \verb*|art119100400010T1_src.lc| & Кривая блеска источника в энергетическом диапазоне $E_{min}-E_{max}$ с временным шагом $T_{bin}$. \\ + \hline + \verb*|T[1-7]_bkg.lc|/ \verb*|art119100400010T1_bkg.lc| & Кривая блеска фонового излучения в энергетическом диапазоне $E_{min}-E_{max}$ с временным шагом $T_{bin}$. \\ + \hline + \multicolumn{2}{|c|}{\textbf{Директория pha}} \\ + \hline + \verb*|T[1-7]_src.pha|/ \verb*|art119100400010T1_src.pha| & Спектр источника. \\ + \hline + \verb*|T[1-7]_bkg.pha|/ \verb*|art119100400010T1_bkg.pha| & Спектр фона.\\ + \hline + \verb*|T[1-7].arf|/ \verb*|art119100400010T1.arf| & ARF (Ancillary Response File) --- файл, описывающий зависимость эффективной площади детектора от энергии фотона. \\ + \hline + \verb*|artxc_rmf_T[1-7]_20191030_v003.rmf|/ \verb*|artxc_rmf_T1_20191030_v003.rmf| & RMF (Responce Matrix File) --- файл, содержащий матрицу отклика детектора.\\ + \hline + \end{tabular} +\label{tab:lc_pha} +\end{table} + + +При успешном завершении процедуры \prods\ в выходной директории \verb*|//L3| будут созданы поддиректории \verb*|lc| и \verb*|pha|, содержащие файлы кривых блеска и спектров соответственно. Список генерируемых файлов приведён в таблице~\ref{tab:lc_pha}. При возникновении ошибок выполнения данной процедуры смотрите секцию~\ref{sec:err}. + +% \begin{table}[h!] + +% \centering +% \caption{ Параметры процедуры \textsc{artproducts}.} + +% \begin{tabular}{c|l|l} +% \hline\hline + +% Параметр & Значение & Комментарий \\ +% \hline +% stem & префикс для имен выходных файлов & \\ +% srcdir & входная директория & путь к файлам L2 \\ +% dstdir & выходная директория & будут созданы поддиректории: \\ +% & & events, img, lc, pha \\ +% tmpdir & директория для временных файлов & \\ +% --usergti & пользовательский gti (fits) & \\ +% --orient & файл наведений обсерватории & \\ +% --srcreg & ds9 регион источника & * \\ +% --bkgreg & ds9 регион фона & ** \\ +% --elow & нижняя граница энерг. диапазона & кэВ, по умолчанию -- 4 \\ +% --ehigh & верхняя граница энерг. диапазона & кэВ, по умолчанию -- 12 \\ +% --binsize & размер бина кривой блеска & сек, по умолчанию -- 1 \\ +% --wcs & WCS для построения изображения & \\ +% --prepare-skytile & ключ для подготовки данных & \\ +% --srcra & прямое восхождение источника & град \\ +% --srcdec & склонение источника & град \\ +% \hline +% \end{tabular} + +% \begin{tablenotes} +% \small +% \item *) Для области источника поддерживаются только круговые регионы. Количество регионов ограничено одним. +% \item **) Для области фона поддерживаются все основные формы регионов. Количество регионов не ограничивается. Не поддерживаются регионы исключения. + +% \end{tablenotes} +% \end{table} + +\section{Рекомендации по работе с научными продуктами уровня L3} +\label{sec:recom} + +\subsection{Спектры} +\label{sec:spec} + +Процедура \prods\ создаёт 7 спектров, измеренных по каждому модулю телескопа \art. Большое количество спектров неудобно загружать вручную, поэтому в данной главе приведено несколько примеров кода, позволяющих ускорить работу со спектрами. Также здесь описаны особенности работы со спектрами телескопа \art. + +\subsubsection{Группировка данных} +\label{sec:spec} + +Для использования статистики $\chi^2$ спектры необходимо перегруппировать так, чтобы отсчёты в каждом бине были нормально распределены. Каждый спектр рекомендуется перегруппировать с использованием команд \textsc{grrpha} или \textsc{ftgrouppha}, являющихся частью программного обеспечения \textsc{HEASOFT}. + +Спектры \textbf{ярких источников} могут быть перегруппированы единообразно, чтобы бины каждого спектра совпадали друг с другом. Рекомендуется группировать по 2 канала в бине для энергий до 20 кэВ, а от 20 кэВ --- по 5 или 10 каналов. Номер канала соответствует энергии, выраженной в кэВ и умноженной на 10. Для этого необходимо подготовить файл с информацией о том, как необходимо перегруппировать данные. Этот файл должен содержать 3 колонки: минимальный канал бина \verb*|MINCHAN|, максимальный канал бина \verb*|MAXCHAN|, число каналов в бине \verb*|NCHAN| (см. описание утилиты \href{https://heasarc.gsfc.nasa.gov/lheasoft/ftools/fhelp/grppha.txt}{grppha}). Если количество условий разбиения по каналам меньше 6, то эту информацию можно задавать напрямую в \textsc{grppha} с помощью команды: \verb*|group|~\verb*|50|~\verb*|200|~\verb*|2|~\verb*|201|~\verb*|250|~\verb*|5|~\verb*|251|~\verb*|300|~\verb*|10|. При необходимости можно увеличивать количество каналов в одном бине, однако рекомендуется указывать число \verb*|NCHAN|, не меньшее~2. + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример содержания файла energy\_bins.txt с указанием границ бинов для перегруппировки спектров.} +\begin{Verbatim}[breaklines=true, breakanywhere=true] +50 200 2 +201 250 5 +251 300 10 +\end{Verbatim} +\end{tcolorbox} + +Также необходимо следить за тем, чтобы на высоких энергиях было достаточно отсчётов над уровнем фона для использования статистики $\chi^2$. Для этого нужно, чтобы спектр источника значимо превышался над уровнем фона. Проверить это можно, например, построив на одном графике спектры фона с помощью \textsc{xspec} следующими командами: \verb*|setpl|~\verb*|back| и \verb*|pl|~\verb*|da|. Кроме того, можно сравнить количество отсчётов непосредственно в файлах со спектрами, однако, необходимо учитывать, что излучение источника и фона могли извлекаться из регионов разных площадей. + + + +Стоит отметить, что из-за технических особенностей телескопа \art\ рекомендуется маркировать все отсчёты с энергиями до 5~кэв и выше 30~кэВ флагом "BAD" (в нотации \textsc{grppha} "\verb*|bad| \verb*|0-49| \verb*|301-650|") и добавлять систематическую ошибку на уровне 3\% ("\verb*|SYSTEMATICS| \verb*|50-300| \verb*|0.03|"). +%Пример простого скрипта для запуска \textsc{grppha} для спектров всех модулей телескопа приведён ниже. + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример скрипта для перегруппировки спектров всех модулей телескопа \art\ с помощью процедуры \textsc{grppha} для яркого источника} (на примере наблюдения OBSID=11910040001). +\begin{Verbatim}[breaklines=true, breakanywhere=true] +#!/bin/bash + +for MOD in {1..7} +do + grppha infile="art119100400010T${MOD}_src.pha" outfile="art119100400010T${MOD}_src.grp.pha" comm="reset group & reset bad & bad 0-49 301-650 & group energy_bins.txt & SYSTEMATICS 50-300 0.03 & exit" +done +\end{Verbatim} +% Здесь \verb*|energy_bins.txt| --- файл, содержащий информацию о разбиении спектра по каналам. +\dangersign[4ex] После проведения перегруппировки спектров необходимо проверить, что каждый бин содержит не менее 30 (или 25) отсчётов над фоновыми бинами, чтобы можно было использовать статистику $\chi^2$. +\end{tcolorbox} + +В случае \textbf{слабого источника} при единообразной перегруппировке спектров \textbf{слабых источников} может быть недостаточно отсчётов, чтобы использовать статистику $\chi^2$. В таком случае можно использовать утилиту \textsc{grppha} без указания, по каким каналам перегруппировать спектр. Достаточным будет перегруппировать каждый спектр индивидуально, чтобы в спектральном бине было не менее 30 (или 25) отсчётов с помощью команды \verb*|group|~\verb*|min|~\verb*|30|. В таком случае каждый спектр будет перегруппирован с индивидуальным разбиением по спектральным каналам. Пример скрипта для индивидуальной перегруппировки спектров представлен ниже. + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример скрипта для индивидуальной перегруппировки спектров всех модулей телескопа \art\ с помощью процедуры \textsc{grppha} для слабого источника} (на примере наблюдения OBSID=11910040001). +\begin{Verbatim}[breaklines=true, breakanywhere=true] +#!/bin/bash + +for MOD in {1..7} +do + grppha infile="art119100400010T${MOD}_src.pha" outfile="art119100400010T${MOD}_src.grp.pha" comm="reset group & reset bad & bad 0-50 300-650 & group min 30 & SYSTEMATICS 50-300 0.03 & exit" +done +\end{Verbatim} + +\dangersign[4ex] После проведения перегруппировки спектров необходимо проверить, что каждый бин содержит не менее 30 (или 25) отсчётов, чтобы можно было использовать статистику $\chi^2$. +\end{tcolorbox} + +Если же источник настолько слабый, что индивидуальная перегруппировка спектров с минимальным количеством отсчетов в бине, равным 30 (или 25), не приносит хороший результат, то спектры можно не перегруппировывать и аппроксимировать с использованием статистики Пуассона. В \textsc{xspec} статистика Пуассона включается с помощью команды \verb*|statistics|~\verb*|cstat|. О других возможных статистиках в \textsc{xspec} смотрите \href{https://heasarc.gsfc.nasa.gov/xanadu/xspec/manual/XSappendixStatistics.html}{здесь}. + +\subsubsection{Работа в \textsc{xspec}} +\label{sec:spec} + +Для проведение научного анализа в \textsc{Xspec} спектры необходимо загружать параллельно с помощью команды \\ \verb*|da|~\verb*|:| \verb*|T_src.pha|, где \verb*|| --- номер модуля телескопа \art. Для загрузки большого количества спектров одновременно удобно использовать скрипты на языке Tcl, которые можно загрузить в \textsc{xspec} следующим образом: \verb*|@/.tcl|, где \verb*|| --- путь к файлу со скриптом, а \verb*|.tcl| --- название самого файла. Пример такого скрипта приведён ниже. + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример скрипта для загрузки спектров каждого модуля телескопа \art\ в \textsc{xspec}} (на примере наблюдения OBSID=11910040001). +\begin{Verbatim}[breaklines=true, breakanywhere=true] +#!/bin/bash + +for {set i 1} {$i < 8} {incr i} { + da $i:$i "art119100400010T${i}_src.grp.pha" #загрузка спектров + } +setpl en +cpd /xw +ign 1-7: **-6. 20.-** #ограничение энергетического диапазона +mo const*pow #простая спектральная модель +fit +pl eeuf del +setpl group 1-7 #только для единообразно перегруппированных спектров +\end{Verbatim} + +\dangersign[4ex] Обратите внимание, что для устранения неопределённостей, связанных с нормировкой разных модулей телескопа, необходимо к любой спектральной модели применять модель \verb*|const|. +\end{tcolorbox} + +Если спектры были сгруппированы по каналам единым образом, для графического представления результатов в \textsc{xspec} можно использовать команду \verb*|setpl|~\verb*|group|~\verb*|1-7|, которая представит все 7 спектров в виде одного, при этом спектры всё ещё будут аппроксимироваться индивидуально. + + +\section{Отдельные задачи процедуры \prods} +\label{sec:tasks} + +В некоторых случаях удобно по готовому списку событий уровня L3 (см. секцию~\ref{sec:artprod1}) построить отдельно кривую блеска или изображение и не запускать полную процедуру \prods. Данная глава содержит описание возможностей небольших задач, входящих в процедуру \prods, которые способны произвести отдельные научные продукты. + +\subsection{\artim} +\label{sec:im} + +Задача \artim\ строит изображение в заданном энергетическом диапазоне от $E_{min}$ до $E_{max}$ для готового списка событий выбранного модуля телескопа \art, полученного процедурой \prods\ (см. секцию~\ref{sec:artprod1}). Параметры задачи \artim\ перечислены в таблице~\ref{tab:img}, а пример вызова приведён ниже. При успешном запуске задачи \artim\ в директории, указанной в параметре \verb*|dstdir|, будет создан файл \verb*|T[1-7].img|. + +Построение суммарных изображений на данный момент реализовано только для полного запуска \prods\ (см. секцию~\ref{sec:artprod1}). Чтобы получить изображение для пользовательских временных интервалов, нужно выполнить пункт запуска \prods, описанный в секции~\ref{sec:artprod1}. +% При необходимости получить суммарное изображение в нестандартном энергетическом диапазоне, после генерации изображений для каждого модуля телескопа с помощью \artim\ нужно использовать утилиту \textsc{ftpixcal}, являющуюся частью пакета \textsc{ftools} программного обеспечения \textsc{heasoft}. + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример вызова \artim} (на примере наблюдения OBSID=11910040001 и первого модуля телескопа~\art): + +\begin{verbatim} +artimage \ + stem=art119100400010 \ + input=art119100400010T1_cl.evt \ + srcdir=./processed/119100400010/L3/events \ + dstdir=./processed/119100400010/L3/img \ + tmpdir=/temp --elow=6 --ehigh=12 +\end{verbatim} + +\dangersign[4ex] Повторный запуск процедуры \artim\ приводит к перезаписи файлов в директории \verb*|dstdir|. +\end{tcolorbox} + +%, с указанным файлом \verb*|--usergti=/.gti|, где \verb*|| и \verb*|| --- путь к файлу и имя файла, содержащего пользовательские временные интервалы, соответственно. . + +\begin{table}[!h] + \centering + \caption{Параметры и ключи процедуры \artim, необходимые для получения изображения для заданного списка событий. Переменная --- обозначает путь к соответствующим файлам. } + + \begin{tabular}{| m{5em} | m{5cm}| m{8.2cm} |} + \hline\hline + + \textbf{Параметр} & \textbf{Значение} & \textbf{Описание} \\ + \hline + \verb*|stem| & \verb*|art[0-1]| & Префикс для имён входных и выходных файлов. \\ + \hline + \verb*|input| & \verb*|T[1-7]_cl.evt| & Входной файл со списком событий, по которому будет построено изображение. \\ + \hline + \verb*|srcdir| & \verb*|//L3/events| & Входная директория, указывающая путь к спискам событий уровня L3. \\ + \hline + \verb*|dstdir| & \verb*|//L3| & Выходная директория. \\ + \hline + \verb*|tmpdir| & \verb*|/temp| & Директория для временных файлов. \\ + \hline + \verb*|--elow| & $E_{min}$, кэВ & Нижняя граница энергетического диапазона. По умолчанию $E_{min}=4$~кэВ. \\ + \hline + \verb*|--ehigh| & $E_{max}$, кэВ & Верхняя граница энергетического диапазона. По умолчанию $E_{max}=12$~кэВ. \\ + \hline + \end{tabular} +\label{tab:img} +\end{table} + +\subsection{\artlc} +\label{sec:lc} + +Задача \artlc\ строит кривую блеска в заданном энергетическом диапазоне от $E_{min}$ до $E_{max}$ с временным бином $T_{bin}$ для готового списка событий выбранного модуля телескопа \art, полученного процедурой \prods\ (см. секцию~\ref{sec:artprod1}). При этом кривая блеска источника извлекается из региона источника \verb*|srcreg|, а фон оценивается в фоновом регионе \verb*|bkgreg|. Параметры задачи \artlc\ перечислены в таблице~\ref{tab:lc}, а пример вызова приведён ниже. При успешном запуске задачи \artlc\ в директории, указанной в параметре \verb*|dstdir|, будут созданы файлы \verb*|T[1-7]_src.lc| и \verb*|T[1-7]_bkg.lc|, содержащие кривые блеска источника и фона соответственно. + +Чтобы получить кривую блеска для пользовательских временных интервалов, нужно выполнить пункт запуска \prods, описанный в секции~\ref{sec:artprod1}, т.к. в задаче \artlc\ это не реализовано. + +\begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +\textbf{Пример вызова \artlc} (на примере наблюдения OBSID=11910040001 и первого модуля телескопа~\art): + +\begin{verbatim} +artlcurve \ + stem=art119100400010 \ + input=art119100400010T1_cl.evt \ + srcdir=./processed/119100400010/L3/events \ + dstdir=./processed/119100400010/L3/lc \ + tmpdir=/temp \ + srcregion=./processed/L3/reg/art119100400010_src.reg \ + bkgregion=./processed/L3/reg/art119100400010_bkg.reg \ + --elow=6 --ehigh=12 \ + --binsize=1 +\end{verbatim} + +\dangersign[4ex] Обратите внимание, что файлы, содержащие информацию о регионах для источника (фона), задаются параметрами \verb*|srcregion| (\verb*|bkgregion|) вместо ранее используемых для процедуры \prods\ параметров \verb*|--srcreg| (\verb*|--bkgreg|). + +\dangersign[4ex] \dangersign[4ex] Повторный запуск процедуры \artlc\ приводит к ошибке выполнения данной программы. Перезапись файлов при повторном запуске процедуры на данный момент не реализована , поэтому рекомендуется удалить ранее сгенерированные файлы или изменить выходную директорию. +\end{tcolorbox} + +\begin{table}[!h] + \centering + \caption{Параметры и ключи процедуры \artlc, необходимые для получения кривой блеска по заданному списку событий. Переменная --- обозначает путь к соответствующим файлам. } + + \begin{tabular}{| m{5em} | m{5cm}| m{8.2cm} |} + \hline\hline + + \textbf{Параметр} & \textbf{Значение} & \textbf{Описание} \\ + \hline + \verb*|stem| & \verb*|art[0-1]| & Префикс для имён входных и выходных файлов. \\ + \hline + \verb*|input| & \verb*|T[1-7]_cl.evt| & Входной файл со списком событий, по которому будет построена кривая блеска. \\ + \hline + \verb*|srcdir| & \verb*|//L3/events| & Входная директория, указывающая путь к спискам событий уровня L3. \\ + \hline + \verb*|dstdir| & \verb*|//L3| & Выходная директория. \\ + \hline + \verb*|tmpdir| & \verb*|/temp| & Директория для временных файлов. \\ + \hline + \verb*|srcregion| & \verb*|/.reg| & Регион, из которого извлекается кривая блеска источника. \\ + \hline + \verb*|bkgregion| & \verb*|/.reg| & Регион, из которого извлекается кривая блеска фона. \\ + \hline + \verb*|--elow| & $E_{min}$, кэВ & Нижняя граница энергетического диапазона. По умолчанию $E_{min}=4$~кэВ. \\ + \hline + \verb*|--ehigh| & $E_{max}$, кэВ & Верхняя граница энергетического диапазона. По умолчанию $E_{max}=12$~кэВ. \\ + \hline + \verb*|--binsize| & $T_{bin}$, c & Размер временного бина кривой блеска. По умолчанию $T_{bin}=1$~с. \\ + \hline + \end{tabular} +\label{tab:lc} +\end{table} + +% \subsection{\artsp} +% \label{sec:sp} + +% Задача \artsp\ предназначена для получения спектра в заданном круговом региона для готового списка событий выбранного модуля телескопа \art, полученного процедурой \prods\ (см. секцию~\ref{sec:artprod1}). При этом сначала нужно извлечь спектр фона из заданного региона, а затем извлечь спектр источника из соответствующего региона с указанием ключа \verb*|--bkgfile='yes'|, чтобы в \verb*|HEADER| файла со спектром источника задача \artsp\ указала имя файла со спектром фона. Кроме того, чтобы спектр фона корректно вычитался из спектра источника при загрузке последнего в утилиту \textsc{xspec}, при получении спектра источника необходимо указать параметр \verb*|--backscale|, равный отношению площадей региона источника к фоновому региону $S_{src}/S_{bkg}$. Параметры задачи \artsp\ перечислены в таблице~\ref{tab:sp}, а пример вызова приведён ниже. При успешном запуске задачи \artsp\ в директории, указанной в параметре \verb*|dstdir|, будут созданы файлы \verb*|T[1-7]_bkg.pha| и \verb*|T[1-7]_src.pha|, содержащие кривые блеска фона и источника соответственно. + +% Чтобы получить спектр для пользовательских временных интервалов, нужно выполнить пункт запуска \prods, описанный в секции~\ref{sec:artprod2}, т.к. в задаче \artsp\ это не реализовано. + +% \begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +% \textbf{Примеры вызова \artsp\ для получения спектра фонового излучения}: + +% \begin{verbatim} +% artxspec \ +% stem=art119100400010 \ +% input=art119100400010T1_cl.evt \ +% srcdir=./processed/119100400010/L3/events \ +% dstdir=./processed/119100400010/L3/pha \ +% tmpdir=/temp \ +% --region=./processed/L3/reg/art119100400010_bkg.reg \ +% --prodname='bkg' +% \end{verbatim} + +% \textbf{и спектра источника:} +% %(на примере наблюдения OBSID=11910040001 и первого модуля телескопа~\art): +% \begin{verbatim} +% artxspec \ +% stem=art119100400010 \ +% input=art119100400010T1_cl.evt \ +% srcdir=./processed/119100400010/L3/events \ +% dstdir=./processed/119100400010/L3/pha \ +% tmpdir=/temp \ +% --region=./processed/L3/reg/art119100400010_src.reg \ +% --prodname='src' \ +% --bkgfile='yes' --backscale=1 +% \end{verbatim} + +% \dangersign[4ex] Повторный запуск процедуры \artsp\ приводит к ошибке выполнения данной программы. Перезапись файлов при повторном запуске процедуры на данный момент не реализована, поэтому рекомендуется удалить ранее сгенерированные файлы или изменить выходную директорию. +% \end{tcolorbox} + +% \begin{table}[!h] +% \centering +% \caption{Параметры и ключи процедуры \artsp, необходимые для получения спектра по заданному списку событий в заданном регионе. Переменная --- обозначает путь к соответствующим файлам. } + +% \begin{tabular}{| m{6em} | m{4.8cm}| m{8.2cm} |} +% \hline\hline + +% \textbf{Параметр} & \textbf{Значение} & \textbf{Описание} \\ +% \hline +% \verb*|stem| & \verb*|art[0-1]| & Префикс для имён выходных файлов. \\ +% \hline +% \verb*|input| & \verb*|T[1-7]_cl.evt| & Входной файл со списком событий, по которому будет построен спектр. \\ +% \hline +% \verb*|srcdir| & \verb*|//L3/events| & Входная директория, указывающая путь к спискам событий уровня L3. \\ +% \hline +% \verb*|dstdir| & \verb*|//L3/pha| & Выходная директория. \\ +% \hline +% \verb*|tmpdir| & \verb*|/temp| & Директория для временных файлов. \\ +% \hline +% \verb*|--region| & \verb*|/.reg| & Регион, из которого извлекается спектр. \\ +% \hline +% \verb*|--prodname| & \verb*|'src'| или \verb*|'bkg'| & Постфикс для имен выходных файлов вида \verb*|T[1-7]_.pha|. \\ +% \hline +% \verb*|--bkgfile| & \verb*|'yes'| & Ключ, добавляющий в HEADER имя файла с фоновым спектром в следующем виде: \verb*|T[1-7]_bkg.pha|. Необходимо использовать при генерации спектра источника. По умолчанию эта опция выключена. \\ +% \hline +% \verb*|--backscale| & $S_{src}/S_{bkg}$ & Отношение площади региона источника ($S_{src}$) к площади фонового региона ($S_{bkg}$). По умолчанию $S_{src}/S_{bkg}=1$. Этот параметр необходим для генерации спектра источника. \\ +% \hline +% \end{tabular} +% \label{tab:sp} +% \end{table} + +% Для дальнейшей работы со спектрами необходимы следующие файлы: с матрицей отклика детектора (RMF) и описывающий зависимость эффективной площади детектора от энергии фотона (ARF). Файл ARF производится с помощью задачи \artarf\ (см. секцию~\ref{sec:arf}), а уже готовые файлы RMF для каждого модуля телескопа необходимо скопировать в директорию, в которой находятся спектры. На серверах сети СРГ файлы RMF можно найти здесь: \verb*|work/srg/artxc/pipeline/bin/aux/rmf/| \verb*|artxc_rmf_T[1-7]_20191030_v003.rmf|, где \verb*|T[1-7]| соответствует номеру модуля телескопа \art. Чтобы \textsc{xspec} автоматически подгрузил файлы RMF и ARF, перед спектральным анализом необходимо указать в \verb*|HEADER| итогового файла со спектром источника пути к RMF и ARF-файлам в переменных \verb*|[ANCRFILE]| и \verb*|[RESPFILE]| соответственно. Это можно сделать с помощью следующих команд утилиты \textsc{fthedit}: + +% \begin{verbatim} +% fthedit T[1-7]_src.pha ANCRFILE add T[1-7].arf +% fthedit T[1-7]_src.pha RESPFILE add artxc_rmf_T[1-7]_20191030_v003.rmf +% \end{verbatim} + + +% \subsection{\artarf} +% \label{sec:arf} + +% Задача \artarf\ необходима для генерации ARF-файла заданного модуля телескопа на удалении от оптической оси, которые определяется положением источника в детекторных координатах (параметры \verb*|X| и \verb*|Y|). На вход задачи \artarf\ подаются параметры, перечисленные в таблице~\ref{tab:arf}. В результате успешного выполнения задачи \artarf\ в выходной директории будет создан файл \verb*|T[1-7].arf|. + +% \begin{tcolorbox}[colback=MidnightBlue!5!white,colframe=MidnightBlue!75!black] +% \textbf{Примеры вызова \artarf\ для получения спектра фонового излучения}: + +% \begin{verbatim} +% artmkarf \ +% stem=art119100400010 \ +% teln=1 \ +% dstdir=./processed/119100400010/L3/pha \ +% tmpdir=/temp \ +% X=24 Y=24 +% \end{verbatim} + +% %\dangersign[4ex] Повторный запуск процедуры \artarf\ приводит к ошибке выполнения данной программы. Перезапись файлов при повторном запуске процедуры на данный момент не реализована, поэтому рекомендуется удалить ранее сгенерированные файлы или изменить выходную директорию. +% \end{tcolorbox} + +% \begin{table}[!h] +% \centering +% \caption{Параметры и ключи процедуры \artarf, необходимые для получения ARF-файла для конкретного модуля телескопа. Переменная --- обозначает путь к соответствующим файлам. } + +% \begin{tabular}{| m{6em} | m{4.8cm}| m{8.2cm} |} +% \hline\hline + +% \textbf{Параметр} & \textbf{Значение} & \textbf{Описание} \\ +% \hline +% \verb*|stem| & \verb*|art[0-1]| & Префикс для имён выходных файлов. \\ +% \hline +% \verb*|teln| & \verb*|[1-7]| & Номер модуля телескопа, для которого нужно произвести ARF-файл. \\ +% \hline +% \verb*|dstdir| & \verb*|//L3/pha| & Выходная директория. \\ +% \hline +% \verb*|tmpdir| & \verb*|/temp| & Директория для временных файлов. \\ +% \hline +% \verb*|X| & \verb*|X| & Детекторная X координата центра региона источника, из которого извлекался спектр. \\ +% \hline +% \verb*|Y| & \verb*|Y| & Детекторная Y координата центра региона источника, из которого извлекался спектр. \\ +% \hline +% \end{tabular} +% \label{tab:arf} +% \end{table} + +\section{Возможные ошибки и их решения} +\label{sec:err} + +\noindent +При неправильно настроенном окружении могут возникать разные ошибки, не относящиеся к работе запускаемых процедур. Ниже приведён список возможных ошибок, связанных с настройкой окружения. + +\textbf{1. Возникает проблема с отсутствием утилит \textsc{heasoft}.} + +Для процедуры \pipe\ выдаётся следующая ошибка: +\begin{tcolorbox}[colback=Maroon!5!white,colframe=Maroon!75!black] + \begin{Verbatim}[breaklines=true, breakanywhere=true] + FileNotFoundError: [Errno 2] No such file or directory: 'ftcopy' + [2023-01-17 15:26:12.367635] error: artpipeline v1.0 exited with status 1 + =========================================================================== + [artpipeline v.1.0]: exit with status: failed (at stage: L1) + =========================================================================== + [2023-01-17 15:26:12.367883] info: artpipeline finished + \end{Verbatim} +\end{tcolorbox} + +При вызове процедуры \prods\ с ключом \verb*|--prepare-skytile| (см. секцию~\ref{sec:artprod1}): +\begin{tcolorbox}[colback=Maroon!5!white,colframe=Maroon!75!black] + \begin{Verbatim}[breaklines=true, breakanywhere=true] +FileNotFoundError: [Errno 2] No such file or directory: 'ftappend' +[2023-01-17 15:30:02.304878] error: artproducts v1.0 exited with status 1 +=========================================================================== + [artproducts v.1.0]: exit with status: failed (at stage: run) +=========================================================================== +[2023-01-17 15:30:02.305163] info: artproducts finished + \end{Verbatim} +\end{tcolorbox} + +При вызове процедуры \prods\ для получения спектров и кривых блеска (см. секцию~\ref{sec:artprod2}): +\begin{tcolorbox}[colback=Maroon!5!white,colframe=Maroon!75!black] + \begin{Verbatim}[breaklines=true, breakanywhere=true] +FileNotFoundError: [Errno 2] No such file or directory: 'ftcopy' +[2023-01-17 15:31:15.253313] error: artproducts v1.0 exited with status 1 +============================================================================ + [artproducts v.1.0]: exit with status: failed (at stage: run) +============================================================================ +[2023-01-17 15:31:15.253593] info: artproducts finished + \end{Verbatim} +\end{tcolorbox} + +\textit{Проблема:} не установлен или не инициализирован \textsc{heasoft}. + +\textit{Решение:} установить и инициализировать версию \textsc{heasoft} не позднее 6.28. Пример файла \verb*|~\.tcshrs| со всеми необходимыми настройками приведён для 18-го сервера в секции~\ref{sec:prep}. + +\textbf{2. Возникает проблема с отсутствием необходимых библиотек \textsc{heasoft}.} При этом последний модуль процедуры \pipe\ выдает успешное завершение, хотя несколькими строками выше выведена ошибка следующего вида: + +\begin{tcolorbox}[colback=Maroon!5!white,colframe=Maroon!75!black] + \begin{Verbatim}[breaklines=true, breakanywhere=true] + ftcopy: error while loading shared libraries: libreadline.so.6: cannot open shared object file: No such file or directory + \end{Verbatim} +\end{tcolorbox} + +\textit{Проблема:} неправильно настроено окружение для работы \textsc{heasoft}. + +\textit{Решение:} установить недостающие библиотеки и указать путь к ним в переменной \verb*|LD_LIBRARY_PATH| в файле \verb*|~\.tcshrs|. Пример файла \verb*|~\.tcshrs| со всеми необходимыми переменными приведён для 18-го сервера в секции~\ref{sec:prep}. + +\textbf{3. Вызов \prods, описанный в секции~\ref{sec:artprod2} не срабатывает.} Выдается следующая ошибка: +\begin{tcolorbox}[colback=Maroon!5!white,colframe=Maroon!75!black] +\begin{Verbatim}[breaklines=true, breakanywhere=true] + raise ValueError("Number of world inputs ({}) does not match " +ValueError: Number of world inputs (1) does not match expected (2) +\end{Verbatim} +\end{tcolorbox} + +\textit{Проблема:} указана неправильная входная директория \verb*|//L2| для процедуры \prods. + +\textit{Решение:} в качестве входной директории указать \verb*|//L3/events|. + +\textbf{4. Не перезаписываются файлы при повторном запуске процедуры \prods.} + +\textbf{4.1.} При повторном запуске процедуры \prods\ с ключом \verb*|--prepare-skytile| (см. секцию~\ref{sec:artprod1}) последний модуль завершается успешно, однако директория \verb*|\L3\events| не обновляется и где-то выше в текстовом выводе процедуры можно найти ошибку: +\begin{tcolorbox}[colback=Maroon!5!white,colframe=Maroon!75!black] +\begin{Verbatim}[breaklines=true, breakanywhere=true] +Dumping CFITSIO error stack: +-------------------------------------------------- +failed to create new file (already exists?): +./121100540010/L3/events/art121100540010T6_cl.evt +-------------------------------------------------- +CFITSIO error stack dump complete. +CFITSIO ERROR FILE_NOT_CREATED: couldn't create the named file +Task ftcopy 1.00 terminating with status 105 +[2023-01-17 14:51:46.346641] error: artevlist v1.0 exited with status 105 +exit with status: failed (at stage: run) +\end{Verbatim} +\end{tcolorbox} +Обратите внимание, что файлы в директории \verb*|\L3\img| при этом перезаписываются. + +\textbf{4.2.} При генерации спектров и кривых блеска повторным запуском процедуры \prods\ (см. секцию~\ref{sec:artprod2}) возникает следующая ошибка: +\begin{tcolorbox}[colback=Maroon!5!white,colframe=Maroon!75!black] +\begin{Verbatim}[breaklines=true, breakanywhere=true] +raise OSError(f"File {self.name!r} already exists.") +OSError: File './121100540010/L3/lc/art121100540010T1_src.lc' already exists. +\end{Verbatim} +\end{tcolorbox} + +\textit{Проблема:} в выходной директории остались файлы от прошлого запуска процедур. На данный момент не реализована возможность перезаписи файлов при повторном запуске процедуры \prods. + +\textit{Решение:} очистить директорию от файлов прошлых запусков процедур (или изменить выходную директорию) и вызвать процедуру заново. + + +\noindent + +% \section{Поочерёдный список примеров вызовов функций для обработки данных телескопа \art.} + +\section*{Приложение. Список изменений документа относительно версии 1.10.} +\addcontentsline{toc}{section}{Приложение. Список изменений документа. } + +\begin{table}[h] + \centering +%\caption{Список изменений документа относительно версии 1.10.} + + \begin{tabular}{| m{1.2cm} | m{1.2cm} | m{5cm} | m{7cm} |} + \hline + \textbf{Версия} & \textbf{Дата} & \textbf{Переработка} & \textbf{Дополнения}\\ + + \hline + 2.0 beta & 02.02.23 & Текста, оформление, структура документа, таблицы параметров & Описание структуры WCS-файла, схема уровней данных, рекомендации по настройке окружения на сервере, таблицы с описанием содержимого директорий, рекомендации по работе с научными продуктами, список возможных ошибок и их решений, оглавление, описание отдельных задач процедуры \prods. \\ + 2.1 beta & 2.03.23 & Описание группировки спектров, инициализация на серверах & \\ + \hline + \end{tabular} +\end{table} + + +\FloatBarrier + + +% \section*{Приложение 1. Структура файлов} + +% \subsection*{Данные уровня L0 --- исходные данные} + + +% \subsection*{Данные уровня L2 --- очищенные и калиброванные события} +% \subsection*{Данные уровня L3 --- научные продукты} +\end{document} diff --git a/image/data_levels.png b/image/data_levels.png new file mode 100644 index 0000000000000000000000000000000000000000..76069a5bc2964af9f7b1320737ae5d2a1526688e GIT binary patch literal 69509 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 literal 0 HcmV?d00001 diff --git a/pscyr.sty b/pscyr.sty new file mode 100644 index 0000000..076c705 --- /dev/null +++ b/pscyr.sty @@ -0,0 +1,166 @@ +%% +%% This is file `pscyr.sty' of PSCyr package +%% +%% Created by Vitaly Repin <2:5030/209.26@fidonet.org>, +%% . +%% Changes by Konstantin Chumachenko +%% Changes by Alexander Lebedev , 2000-2002 +%% +%% NO PERMISSION is granted to distribute a modified version +%% of this file under its original name. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ProvidesPackage{pscyr}[2002/07/04 v0.4d Cyrillic Type1 fonts as default] + +\def\acdefault{fac} %% Academy +\def\addefault{fad} %% Advertisement +\def\aqdefault{faq} %% AntiquaPSCyr +\def\codefault{fco} %% College +\def\cpdefault{fcp} %% CooperPSCyr +\def\erdefault{fer} %% ERKurierPSCyr +\def\hadefault{fha} %% HandbookPSCyr +\def\jndefault{fjn} %% JournalPSCyr +\def\lzdefault{flz} %% Lazurski +\def\madefault{fma} %% MagazinePSCyr +\def\svdefault{fsv} %% SouvenirPSCyr +\def\txdefault{ftx} %% TextbookPSCyr + +\def\ardefault{far} %% ArialMT +\def\crdefault{fcr} %% CourierNewPSMT +\def\tmdefault{ftm} %% TimesNewRomanPSMT + +%% +%% Define font families. +%% +\DeclareRobustCommand\acfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\acdefault\selectfont} + +\DeclareRobustCommand\adfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\addefault\selectfont} + +\DeclareRobustCommand\aqfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\aqdefault\selectfont} + +\DeclareRobustCommand\cofamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\codefault\selectfont} + +\DeclareRobustCommand\cpfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\cpdefault\selectfont} + +\DeclareRobustCommand\erfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\erdefault\selectfont} + +\DeclareRobustCommand\hafamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\hadefault\selectfont} + +\DeclareRobustCommand\jnfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\jndefault\selectfont} + +\DeclareRobustCommand\lzfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\lzdefault\selectfont} + +\DeclareRobustCommand\mafamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\madefault\selectfont} + +\DeclareRobustCommand\svfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\svdefault\selectfont} + +\DeclareRobustCommand\txfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\txdefault\selectfont} + + +\DeclareRobustCommand\arfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\ardefault\selectfont} + +\DeclareRobustCommand\crfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\crdefault\selectfont} + +\DeclareRobustCommand\tmfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\tmdefault\selectfont} + + +\DeclareTextFontCommand{\textac}{\acfamily} +\DeclareTextFontCommand{\textad}{\adfamily} +\DeclareTextFontCommand{\textaq}{\aqfamily} +\DeclareTextFontCommand{\textco}{\cofamily} +\DeclareTextFontCommand{\textcp}{\cpfamily} +\DeclareTextFontCommand{\texter}{\erfamily} +\DeclareTextFontCommand{\textha}{\hafamily} +\DeclareTextFontCommand{\textjn}{\jnfamily} +\DeclareTextFontCommand{\textlz}{\lzfamily} +\DeclareTextFontCommand{\textma}{\mafamily} +\DeclareTextFontCommand{\textsv}{\svfamily} +\DeclareTextFontCommand{\texttx}{\txfamily} + +\DeclareTextFontCommand{\textar}{\arfamily} +\DeclareTextFontCommand{\textcr}{\crfamily} +\DeclareTextFontCommand{\texttm}{\tmfamily} + +%% +%% Declare default font families. +%% +\def\rmdefault{faq} +\def\sfdefault{ftx} +\def\ttdefault{fer} + +%% +%% Math support for faq/ftx font families. +%% +\DeclareOption{math}{% + \def\rmdefault{faq} + \def\sfdefault{ftx} + \DeclareSymbolFont{operators}{OT1}{faq}{m}{n} + \DeclareSymbolFont{letters}{OML}{faq}{m}{it} + \SetSymbolFont{letters}{bold}{OML}{faq}{bx}{it} + \DeclareMathAlphabet{\mathbf}{OT1}{faq}{bx}{it} % bx/it or bx/m + \DeclareMathAlphabet{\mathit}{OT1}{faq}{m}{it} + \DeclareMathAlphabet{\mathsf}{OT1}{ftx}{m}{n} +} +\ProcessOptions +\renewcommand{\hbar}{{\mathchar'26\mkern-8.5muh}} + +%% +%% This part is added for compatibility with font names used in earlier +%% version. +%% + +\def\cldefault{\codefault} +\def\hbdefault{\hadefault} +\def\mgdefault{\madefault} + +\DeclareRobustCommand\clfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\cldefault\selectfont} + +\DeclareRobustCommand\hbfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\hbdefault\selectfont} + +\DeclareRobustCommand\mgfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\mgdefault\selectfont} + +\DeclareTextFontCommand{\textcl}{\clfamily} +\DeclareTextFontCommand{\texthb}{\hbfamily} +\DeclareTextFontCommand{\textmg}{\mgfamily} + +\endinput + +%% +%% End of file `pscyr.sty'.