Protvino
                                    10 MARTA 1988



                     Г.В. Борисов

		Динаическое распределение памяти 
	для программ OFF-LINE реконструкции событий
		     на установке ВЕС.

 

                      Содержание

 

1. Общие сведения
2. Структуры RD и TD.
3. Структура PO.
4. Структуры LCDR, LCPR.
5. Структура геометрического описания детекторов (ГОД)
6. Структура для описания процессоров ПР.
7. Вспомогательные структуры.
8. DS-пакет

 

 

	Некоторые сокращения и понятия, используемые в тексте.

ДРП 		- Динамическое распределение памяти;
банк		- Логически независимый блок данных(ZEBRA);
структура 	- Иерархическое дерево, определяющее
		  логические отношения между объектами
		  пакета ZEBRA (банками или другими 
		  структурами)ZEBRA;
ПР		- программа реконструкции событий;
БД		- База Данных;
ЭД (ЭДД)	- элемент данных детектора- еденичный сигнал
		  (отклик) детектора при прохождении через него
		  одной частицы;
ФС		- фрагмент события, т.е. часть события, восста-
		  навливаемая в процессе работы ПР;
ГОД		- Геометрическое описание детектора;
процессор	- логически независимая часть ПР (подпрограмма),
		  которая на основе множества ЭДД или результатов
		  работы других процессоров восстанавливает от-
		  дельные фрагменты события;
R-список	- (Reduction List) список ссылок на ЭДД или ФС, 
		  которые были использованы при получении данного ФС;
I-список	- (Inclusion List) список ссылок на ФС, в которые
		  входит данный ЭДД или ФС;
RD-структурa	- Структура для хранения сырых данных
		  с установки (Row Data);
TD-структура	- Структура для хранения преобразованных данных
		  (Transformed Data);
РО-структура	- Структура для хранения ФС (Processors Output);
DR,PR-структуры	- Структуры для хранения I-списков для ЭДД,ФС;
ГОД-структура	- структура для хранения геометрического описания 
		  детекторов установки;
ICC-банк	- банк для хранения индивидуальных для каждого
		  канала детектора констант (Individual Channel
		  constants);
 CC-банк	- банк для хранения калибровочных констант детек-
		  тора (Calibratin Constants);
 SI-банк	- банк для хранения статусной информации о кана-
		  лах детектора (Status Information);



	             1.	 Общие сведения.

 

  В качестве базового пакета ДРП (динамического распределения
памяти) для установки ВЕС принят пакет ZEBRA. 
Информация о событии, о геометрии установки, а также некоторая
вспомогательная информация хранится в одном COMMON-блоке с именем /DSBANK/:
	parameter (nbank=20000)
	COMMON/DSBANK/NCZEBR,ICSTOR,ICDIV2,icdiv3,icdiv4,icdiv5,
     +             FENDC(16),LCMAIN,LCR1,WSC(nbank)  
	DIMENSION ICQ(1),CQ(1),LCQ(nbank) 
	INTEGER *2 ICQ2(1)
	CHARACTER CCQ(1)*4
	EQUIVALENCE (CQ(1),ICQ(1),LCQ(9)),(LCQ(1),LCMAIN)  
	EQUIVALENCE (CQ(1),CCQ(1)),(ICQ2(1),ICQ(1))
  В данном COMMON-блоке:
	ICSTOR     - Store Number (в рамках пакета ZEBRA).
	ICDIV2,ICDIV3,ICDIV4,ICDIV5- номера подразделений
		 (в рамках пакетa ZEBRA).
	WSC(nbank) - собственно рабочее пространство для 
		     программ реконструкции событий.
  Назначение различных подразделений:
	ICDIV2 - Подразделениe для нужд пользователя 
		 (User Short Term, Reverse);
	ICDIV5 - Подразделение для хранения события
		 (User Short Term, Forward);
	ICDIV3 - Подразделение для хранения геометрии установки
		 (User Long Term, Forward);
	ICDIV4 - Подразделение для нужд пользователя
		 (User Long Term, Reverse);

Кроме этих подразделений пользователь может отводить для себя
необходимую рабочую область (Working Space) при помощи стандартных
процедур пакета ZEBRA.

Для хранения адресов структур отведены 
COMMON/DSLINK/ (область постоянных структурных связей) и
COMMON/DSWORK/ (область временных структурных связей).
c
	COMMON/DSLINK/lchead,lcproc,lcsets,lcmtin,lcmtou,lctime,
     +		      lcpool,lcevnt,lcdata,
     +		      lcrd  ,lctd  ,lcpo  ,lcdr  ,lcpr  ,
     +		      lrgset,lrgdet,lrgprc,lrdset,lrddet,lrdprc,
     +		      lrefer(10)
c
	COMMON/DSWORK/lwaaaa,lwzebra,lwork(25)

Переменные LCHEAD...LCDATA служат для хранения адресов структур
(structural links), переменные LCRD...LRDPRC, LREFER(10) служат
для хранения ссылок на определенные структуры (reference links).
Назначение различных типов структур:
	LCHEAD - головной банк для загрузки геометрии установки;
	LCPROC - описание процессоров программы реконструкции;
	LCSETS - oписание сетов однотипных детекторов;
	LCMTIN - описание списка входных магнитных лент;
	LCMTOU - описание списка выходных магнитных лент;
	LCTIME - структура для хранения периодов справедливости
		 отдельных банков;
	LCPOOL - рабочая структура без права доступа к ней пользователя.
Данные структуры располагаются в подразделении ICDIV3.
	LCEVNT - структура для хранения события;
	LCDATA - вспомогательная структура;
Данные структуры располагаются в подразделении ICDIV5.
Назначение различных переменных-ссылок:
	LCRD   - ссылкa на банк с сырой информацией с установки 
		 (Raw Data, RD);
	LCTD   - ссылка на банк с преобразованными данными 
		 (Transformed Data, TD);
	LCPO   - ссылка на структуру для хранения результатов работы
		 процессоров (Processor Output, PO);
	LCDR   - ссылка на структуры с информацией о том, в какие
		 PO-банки входят элементы данных с установки (LCDR)
	LCPR   - и элементы других РО-банков (LCPR);
	LRGSET - ссылка на банк с описанием текущего сета детекторов;
	LRGDET - ссылка на банк с описанием геометрии детектора,
		 информация с которого используется в данный момент;
	LRGPRC - ссылка на банк с описанием работающего в
		 данный момент процессора;
	LRDSET - ссылка на банк с данными для текущего сета детекторов;
	LRDDET - ссылка на банк с данными от детектора, обрабатываемого
		 в данный момент;
	LRDPRC - ссылка на банк с результатами обработки информации
		 для данного модуля детекторов;
	LREFER(10) - массив ссылок, находящихся в распоряжении
		 пользователя.
 Детальное рассмотрение всех перечисленных структур
будет дано в соответствующих разделах данного описания. На внешних
носителях (магнитные ленты или диски) по желанию пользователя
могут быть спасены любые из перечисленных выше структур.
 В процессе работы программы может также понадобиться COMMON-блок:
            common/dssets/nsets,ndtot,ndet(20),iaddet(20)

  Здесь:
	NSETS  - Число сетов детекторов в ПР 
	         (о сетах см. ниже);
	NDTOT  - Общее число детекторов установки;
	NDET   - Число детекторов в каждом сете;
	IADDET - Кумулятивный адрес для детекторов каждого сета 
	         (см. ниже);
Представление о строении структур RD и TD возникло в результате
обсуждений с Жилиным, Кубаровским, Кульманом, Образцовым.


                2. Структуры RD и TD.
  Структура RD (Row Data, адрес структуры: LCRD) предназначена для
хранения сырых данных с установки. Данная структура создается на
стадии копирования исходных лент и может отсутствовать на последующих
генерациях DST. Структура TD (Transformed Data, адрес LCTD) 
содержит каким-либо образом преобразованную информацию
с детекторов. Процедура преобразования данных определяется пользователем
и может быть совершенно различной для различных типов детекторов.
Это может быть, например, перевод номеров каналов электроники
(меняющихся за время набора статистики) в стандартные номера каналов
для гамма- спектрометра, переход от времени дрейфа к дрейфовой
длине для дрейфовых камер и т.д.
Структуры RD и TD по своему строению практически
полностью идентичны, поэтому здесь мы будем говорить только об одной
из них.
 Все детекторы установки разбиваются на т.н. сеты детекторов.
По определению, в сет объеденяются детекторы, имеющие одинаковое
строение и выдающие о проходящих частицах идентичную информацию.
Процедура обработки информации со всех детекторов сета должна
быть одной и той же. Детекторы одного сета могут различаться лишь
размерами, геометрическими и калибровочными константами, а также
положением чувствительных плоскостей в пространстве.
Например, различные плоскости пропорциональных камер объеденяются в
один сет, плоскости гексагональных пучковых камер- во второй,
плоскости трехплоскостных дрейфовых камер - в третий, ГАМС образует
сет состоящий из одного детектора и т.д. Разбиение
детекторов на сеты закрепляется перед началом обработки эксперимента,
количество детекторов в сете в течение эксперимента может меняться.
Каждый сет детекторов имеет свое имя (4 буквы) и свой номер, это
также закрепляется перед началом эксперимента. 
 Головной банк ТD-структуры (имя 'TD##') находится по адресу LCTD.
Для обращения к информации от детектора IDET принадлежащего сету ISET
необходимо также сделать в своей подпрограмме следующее
описание (см. также часть 1 данного документа):
	common/dssets/nsets,ndtot,ndet(20),iaddet(20)
Тогда адрес информации для данного детектора находится следующим образом
	iad   =icq(lcrd+1)+iaddet(ISET)+IDET
	lrddet=lctd+icq2((lctd+iad)*2-1)
 Таким образом, в одном банке TD объединена информация от всех детекторов.

                  3. Структура PO.
 В процедуре обработки ключевым является понятие процессора данных. 
Под процессором данных понимается подпрограмма, которая на основе данных 
от детекторов или результатов работы предыдущих процессоров восстанавливает
отдельные фрагменты события или (как окончательный результат) событие целиком.
Для работы процессору необходимо указать источники входной информации
(т.е. те детекторы и/или процессоры, информация от которых будет
использована для восстановления фрагмента события). Результаты работы
процессора имеют строго определенный формат  и хранятся в
банках структуры PO (Processors Output). Таким образом, работа программы
реконструкции (ПР) строится по конвеерному принципу, т.е. разбивается на
отдельные элементарные операции, являющиеся по возможности независимыми
от предыдущих операций и конкретной конфигурации детекторов и выполняющиеся
последовательно друг за другом.
 Примеры процессоров: поиск ливней в ГАМС; определение пространственной
точки прохождения трека по трем сработавшим плоскостям дрейфовой камеры;
определение проекции трека в YZ- плоскости по хитам в пропорциональных
и дрейфовых камерах; определение типа частицы по показаниям черенковского
счетчика; определение вершины взаимодействия в мишени по пучковому треку
и восстановленным в установке трекам.
 Так как при инициализации структуры РО не известно общее
число фрагментов события, которые восстанавит данный процессор
(можно даже представить себе ситуацию, когда заранее неизвестно 
общее число процессоров ПР), то строение ее
банков должно быть достаточно
гибким и допускать возможность простого расширения.
 Головной банк РО (адрес - LCPO) имеет NPROC структурных связей
(NPROC - общее число процессоров ПР),
их количество в процессе работы может быть изменено
стандартными средствами пакета ZEBRA. 
При инициализации устанавливается последовательность
запуска отдельных процессоров, в соответствии с этой последовательностью
каждому процессору присваивается свой номер.
Число слов, отводимое под данные в головном банке не фиксировано (т.е.
может не совпадать в разных версиях ПР).
В банке с адресом LADPRC=LCQ(LCPO-IPROC), где IPROC- номер процессора,
хранятся результаты его работы. Строение банка выбрано исходя из
требований обеспечения экономичного
механизма его расширения и простого способа поиска интересующих
фрагментов события. Этот банк не имеет ни структурных связей,
ни связей-ссылок. При создании банка резервируется заведомо достаточное
для работы ПР количество слов. Восстановленные фрагменты
заносятся в банк последовательно, один за другим. В самом последнем
слове банка хранится общее число фрагментов. Перед ним в обратном
(по отношению к заполнению) порядке
записываются относительные адреса
фрагментов, т.е. разность между адресом фрагмента и LADPRC.
Так, фрагмент IFRAGM процессора IPROC можно найти по адресу LADFRG:
	LADPRC=LCQ(LCPO-IPROC)
	NWPROC=ICQ(LADPRC-1)
	LADFRG=LADPRC+ICQ(LADPRC+NWPROC-IFRAGM)
 Для записи фрагментов в банк существует специальная подпрограмма,
которая сама вычисляет все нужные адреса и осуществляет 
необходимый контроль за правильностью заполнения. При
необходимости она аккуратно расширяет банк (т.е. не только увеличивает
его размер, но и переносит 
адреса фрагментов на новое место). Пользователю предоставляется
возможность уничтожения отдельных фрагментов внутри банка, имеется
процедура " сборки мусора", которая при данной простой
структуре не слишком громоздка и достаточно быстра.
После того как банк полностью заполнен, т.е. после окончания работы 
процессора, выполняется процедура "схлопывания" банка, так что он
сжимается до своей границы заполнения. 
 Как нам кажется, такое строение банка РО обеспечивает минимальное число
обращений к громоздким и времяемким процедурам пакета ZEBRА, экономит
оперативную память и тем не менее дает все необходимые для создателей
ПР удобства работы.
 Кратко остановимся на формате отдельного фрагмента в банке РО.
Как уже упоминалось, для каждого процессора форма фрагмента строго
определена. Кажется целесообразным разделить его на две части. В
первой части записывается результат обработки данных процессором.
Это могут быть, например, параметры восстановленного ливня
(энергия ливня, его координаты, соответствующие ошибки), параметры
трека заряженной частицы и т.д. Во второй части записывается список
ссылок (будем называть его R-список от Reduction List)
на использованные процессором данные от детекторов и/или фрагменты
других процессоров. Такие списки могут помочь
при многоуровневой структуре ПР, когда работа процессоров верхнего уровня
опирается на результаты работы процессоров нижних уровней.
Например, процедуру поиска треков на установке ВЕС можно разбить
на такие этапы: 1) поиск прямых проекций треков в YZ- плоскости;
2) поиск связанных троек сигналов в трехплоскостных дрейфовых камерах;
3) поиск прямых проеций треков в XZ- плоскости до магнита;
4) поиск полных проекций треков в XZ-плоскости (с использованием
результатов работы процессора 3); 5) сшивка проекций трека в YZ- и 
XZ- плоскостях (с использованием результатов работы процессоров 1), 2)  и 4);
6) полный пространственный фит отобранных кандидатов в треки с определением
точных параметров треков. При таком построении ПР в процессе работы необходимо
знать, на основе  каких данных получены те или иные фрагменты события и
эта информация извлекается из R-списков.
Формат ссылок в R-списках будет приведен ниже.
 Требование записи R-списка в фрагмент события не является жестким и 
если для последующей работы ПР такой список не потребуется, его можно 
не заполнять.

 

                 4. Структуры LCDR, LCPR.
 Кроме R-списков, предполагается также наличие т.н. I-списков
(Inclusion Lists), которые хранятся в структурах LCDR и LCPR.
I-списки считаются дополнительными к R-спискам:
если в R-списках хранятся ссылки на ЭДД
и/или ФС более низкого уровня, на основе которых
был построен данный ФС, то в I-списках для каждого ЭДД или ФС
хранятся ссылки на те фрагменты, в которых они используются.
 Когда могут понадобиться I-списки? Например, в процессе
работы ПР найдено несколько проекций треков в YZ-плоскости и нужно 
определить, все ли детекторные данные входят в проекции треков.
В этом случае мы просто проверяем, для всех ли данных существуют I-списки.
Другой пример: найдены XZ- и YZ- проекции треков и необходимо "сшить"
их при помощи наклонных плоскостей дрейфовых камер. Для этого
мы для каждой XZ-проекции трека по R-списку определяем 
"хиты" в Х-плоскостях дрейфовых камер (хит А), далее по I-списку
для хита А находим нужный фрагмент (фрагмент В), описывающий связанную тройку
хитов в дрейфовой камере (т.е. хиты в трех различных плоскостях дрейфовой
камеры, вызванных одной заряженной частицей), по R-списку фрагмента В
находим соответсвующий треку хит в Y-плоскости дрейфовой камеры
(хит С), по I-списку для хита С находим нужный фрагмент проекции
трека в YZ-плоскости и тем самым решаем поставленную задачу.
 На последнем примере видна взаимосвязь R- и I-списков. Так как
банки РО-структуры заполняются при помощи специальной подпрограммы,
то пользователь не должен беспокоиться о заполнении I-списков,
они создаютcя и поддреживаются $_автоматически$_, по мере
заполнения РО-структуры. Ясно, что в том
случае, когда отсутствует необходимость в R-списке для фрагментов
какого-либо процессора, не создается и I-список.
 Из сказанного выше понятно, что длина I-списка для каждого ЭДД
заранее не известна. Его начало
для ЭД IED детектора IDET сета ISET можно найти по адресу LDRIL:
		LDRSET=LCQ(LCDR  -ISET)
		LDRDET=LCQ(LDRSET-IDET)
		LDRIL =LDRDET-1+IED*2
Для фрагмента события IFS полученного процессором IPROC начало
I-списка находится по адресу LDRIL:
		LPRPRC=LCQ(LCPR-IPROC)
		LDRIL =LPRPRC-1+IFS*2
 В слове ICQ(LDRIL) записана в определенном
формате (см. ниже) ссылка на ФС, в который входит данный ЭДД (или ФС).
В первых двух байтах слова ICQ(LDRIL+1) записан относительный 
адрес продолжения списка. Т.о., продолжение списка можно найти следующим
способом:
		IADR=ICQ2(LDRIL*2-1)
		LDRIL=LDRIL+IADR
		и т.д.
 Отсюда видно, что под каждую новую ссылку отводится два слова: в первом
слове находится собственно ссылка на ФС, во втором находится 
относительный адрес продолжения списка.
 Несколько слов о формате ссылок. Он одинаков как для
R-списков, так и для I-списков. Одна ссылка занимает
целое слово (32 бита). Первый бит указывает тип ссылки (b1=0 соответствует
ссылке на ЭДД, b1=1 соответствует ссылке
на ФС). Далее, 
при b1=0:
	биты  2-16	- номер детектора (=iaddet(ISET)+IDET-1,
			  см. COMMON/DSSETS/)
	биты 17-32	- номер ЭДД для данного детектора и сета.
При b1=1:
	биты  2-16	- номер процессора;
	биты 17-32	- номер фрагмента для данного детектора.

 

     5. Структура геометрического описания детекторов (ГОД). 
 Как уже упоминалось, все детекторы устновки разбиты на сеты.
В соответствии с этим головной банк ГОД-структуры (адрес LCSETS) 
имеет NSET структурных
связей (где NSET- общее число сетов), и NSET+1 слов под данные.
При этом в слове ICQ(LCSETS+1) записано число сетов NSET,
далее в последовательности, соответсвующей номерам сетов записаны
имена сетов. 
 Геометрическое описание детектора IDET принадлежащего сету ISET
можно найти по адресу LADDET:
	LADSET=LCQ(LCSETS-ISET)
	LADDET=LCQ(LADSET-IDET)
 В ссылках-связях LRDSET, LRDDET (COMMON/DSLINK/ см. часть 1 данного
описания) можно хранить адреса текущего сета и текущего детектора.
Банк геометрического описания детектора имеет следующий формат:
LCQ(LADDET-1)		- aдрес ICC-банка;
LCQ(LADDET-2)		- адрес  CC-банка;
LCQ(LADDET-3)		- адрес  SI-банка;
LCQ(LADDET-4)		- адрес RD-банкa, соответсвующего данному
			  детектору;
LCQ(LADDET-5)		- адрес TD-банка, соответсвующего данному
			  детектору;
LCQ(LADDET-6)=LRSIZ	- адрес начала хранения констант, описы-
			  вающих геометрические размеры 
			  детектора;
LCQ(LADDET-7)=LRPHY	- адрес начала хранения физических 
			  констант детектора;
LCQ(LADDET-8)=LRGEA	- адрес начала адреса детектора в 
			  системе GEANT; 
ICQ(LADDET+1)           - data sozdaniya banka?
ICQ(LADDET+2)           - ?
ICQ(LADDET+3) 		- Номер сета (первое полуслово)
			  и номер детектора (второе полуслово);
CCQ(LADDET+4)		- имя детектора в системе GEANT;
CQ(LADDET+5) =NLOC	- число констант, описывающих положение
			  детектора в пространстве;
CQ(LADDET+6)		- константы, описывающие положение 
 . . .			  детектора в пространстве;
CQ(LADDET+5+NLOC)
CQ(LRSIZ)    =NSIZ	- число констант, описывающих геометричес-
			  кие размеры детектора;
CQ(LRSIZ+1)		- константы, описывающие геометрические
 . . .			  размеры детектора;
CQ(LRSIZ+NSIZ)
CQ(LRPHY)    =NPHY	- число физических констант детектора;
CQ(LRPHY+1)		- физические константы детектора;
 . . .
CQ(LRPHY+NPHY)
CQ(LRGEA)    =NGEA	- число параметров в GEANT-адресе 
			  детектора;
CQ(LRGEA+1)		- GEANT-адрес детектора;
 . . .
CQ(LRGEA+NGEA)
 В ICC-банке хранится информация, относящаяся к индивидуальным каналам
детектора. Его адрес и формат имеют следующий вид:
	LADSET=LCQ(LCSETS-ISET)
	LADDET=LCQ(LADSET-IDET)
	LADICC=LCQ(LADDET-1)
ICQ(LADICC+1)		- Номер сета (первое полуслово)
			  и номер детектора (второе полуслово);
CQ(LADICC+2)		- номер первого канала, информация для 
			  которого хранится в данном банке;
CQ(LADICC+3)		- число каналов, информация о которых
			  хранится в данном банке;
CQ(LADICC+4)		- число слов, отведенных под один канал;
CQ(LADICC+5)=NWORD	- оставшееся число слов в банке;
CQ(LADICC+5+1)		- константы для каждого канала;
 . . .
ICQ(LADICC+5+NWORD)	
  В CC-банке хранятся калибровочные константы для каждого канала детектора
и для детектора в целом. Его адрес и формат имеют следующий вид:
	LADSET=LCQ(LCSETS-ISET)
	LADDET=LCQ(LADSET-IDET)
	LADCC =LCQ(LADDET-2)
LCQ(LADCC-1)=LRCC	- адрес начала хранения калибровочных
			  констант для каждого канала;
ICQ(LADCC+1)		- Номер сета (первое полуслово)
			  и номер детектора (второе полуслово);
CQ(LADCC+2)		- номер первого канала, информация для 
			  которого хранится в данном банке;
CQ(LADCC+3)		- число каналов, информация о которых
			  хранится в данном банке;
CQ(LADCC+4)		- число слов, отведенных под один канал;
CQ(LADCC+5)=NWG		- число слов для калибровочных констант,
			  общих для всего детектора
CQ(LADCC+5+1)		- калибровочные константы, общие для всего
 . . .			  детектора;
CQ(LADCC+5+NWG)
CQ(LRCC)   =NWCC	- число слов, отведенных под индивидуальные
			  калибровочные константы;
CQ(LRCC+1)		- калибровочные константы для каждого 
 . . .			  канала;
CQ(LRCC+NWCC)
 SI-банк содержит статусную информацию о работе каналов детектора.
Его адрес и формат имеют следующий вид:
	LADSET=LCQ(LCSETS-ISET)
	LADDET=LCQ(LADSET-IDET)
	LADSI =LCQ(LADDET-3)
LCQ(LADSI-1)=LRSI	- адрес начала хранения статусной
			  информации для каждого канала;
ICQ(LADSI+1)		- Номер сета (первое полуслово)
			  и номер детектора (второе полуслово);
CQ(LADSI+2)		- номер первого канала, информация для 
			  которого хранится в данном банке;
CQ(LADSI+3)		- число каналов, информация о которых
			  хранится в данном банке;
CQ(LADSI+4)		- число бит, отведенных под один канал;
CQ(LADSI+5)=NWG		- число слов для статусной информации,
			  общей для всего детектора;
CQ(LADSI+5+1)		- статусная информация, общая для всего
 . . .			  детектора;
CQ(LADSI+5+NWG)
CQ(LRSI)   =NWSI	- число слов, отведенных под индивидуальную
			  статусную информацию;
CQ(LRSI+1)		- упакованная побитно статусная информация
 . . .			  для каждого канала;
CQ(LRSI+NWSI)

 

              6. Структура для описания процессоров ПР.

 

 Структура для описания процессоров ПР находится по адресу LCPROC.
Перед началом работы процессоры упорядочиваются в порядке
вызова их из ПР, в соответствии с этим каждый процессор имеет свой
номер. Описание процессора IPROC находится по адресу LADPRC:
	LADPRC=LCQ(LCPROC-IPROC)
 В банке, описывающем отдельный процессор, содержится информация 
о том, какие детекторы или процессоры более низкого уровня будут
данным процессором обрабатываться, а также необходимые для работы процессора 
параметры. Форма банка следующая.
	LADPRC=LCQ(LCPROC-IPROC)
	NRPRC =ICQ(LADPRC+2) 
	NRTOT =ICQ(LADPRC-3)
	NRDET =NRTOT-3-NRPRC
LCQ(LADPRC-1)		- ссылки на банки детекторов, информация от 
 . . .			  которых используется данным процессором;
LCQ(LADPRC-NRDET)
LCQ(LADPRC-NRDET-1)	- ссылки на банки процессоров, результаты 
 . . .			  работы которых (т.е. ФС) используются 
LCQ(LADPRC-NRDET-NRPRC)	  данным процессором;
LCQ(LADPRC-NRTOT+1)=	- начало списка имен детекторов, ЭД которых
	=LRDET		  используются данным процессором;
LCQ(LADPRC-NRTOT+2)=	- начало списка имен процессоров, ФС 
	=LRPRC		  которых используются данным процессором;
LCQ(LADPRC-NRTOT)	- ссылка на банк РО-структуры, содержащий
			  ФС, восстановленные данным процессором;
CCQ(LADPRC+1)		- тип процессора (слово из 4-х букв);
CQ(LADPRC+2)=NRPRC	- число процессоров, ФС которых используются
			  данным процессором;
CQ(LADPRC+3)=NCONST	- число необходимых для работы процессора
			  констант;
CQ(LADPRC+3+1)		- нужные для работы процессора константы;
 . . .
CQ(LADPRC+3+NCONST)
CQ(LRDET)=NDNAM		- число слов, отведенных под имена 
			  детекторов, ЭД которых используются
			  данным процессором
CCQ(LRDET+1)		- имена детекторов, ЭД которых исполь-
 . . .			  зуются данным процессором
CCQ(LRDET+NDNAM)
CCQ(LRPRC)=NPNAM	- число слов, отведенных под имена
			  процессоров, ФС которых используются
			  данным процессором
CCQ(LRPRC+1)		- имена процессоров, ФС которых исполь-
 . . .			  зуются данным процессором
CCQ(LRPRC+NPNAM)

 

                   7. Вспомогательные структуры.

 

Кроме описанных выше структур, в ходе работы ПР создается ряд
вспомогательных структур. Пользователь (разработчик программного
обеспечения) практически никогда не будет непосредственно общаться
с данными структурами, поэтому здесь мы только перечислим их,
без описания конкретного построения.
 Вспомогательными структурами являются:
 - MTIN-структура, в которой хранится информация о входных лентах;
 - MTOU-структура, в которой хранится информация о выходных лентах;
 - TIME-структура, в которой хранится информация о периодах справедливости
  (Period of Validity) описаний различных детекторов. Данная структура
   заполняется по мере извлечения информации из Базы Данных и нужна
  для поддержания в операционной памяти адекватного описания установки.

 

                  8. DS-пакет.
 Для создания описанного ДРП, для заполнения структур геометрического
описания установки информацией из БД, для определения необходимых
для обработки лент и считывания событий с них создан пакет подпрограмм,
объедененных общим названием DS. Описание его функциональных
возможностей и способов общения с ним будет дано в последующих публикациях.
Здесь мы отметим, что пакет создавался с таким расчетом, чтобы по
возможности избавить пользователей от непосредственного общения 
с пакетoм ZEBRA и БД.
 Исходя из требования быстроты работы ПР, DS-пакет контролирует 
только заполнение различных структур, извлечение необходимой информации
пользователь должен осуществлять сам.