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); ICDIV3 - Подразделение для хранения геометрии установки (User Long Term, Forward); ICDIV4 - Подразделение для нужд пользователя (HBOOK здесь) (User Long Term, Reverse); ICDIV5 - Подразделение для хранения события (User Short Term, Forward);Для хранения адресов структур отведены 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). Назначение различных типов структур:
В подразделении ICDIV3 располагаются следущие структуры: LCHEAD - головной банк для загрузки геометрии установки; LCPROC - описание процессоров программы реконструкции; LCSETS - oписание сетов однотипных детекторов; LCMTIN - описание списка входных магнитных лент; LCMTOU - описание списка выходных магнитных лент; LCTIME - структура для хранения периодов справедливости отдельных банков; LCPOOL - рабочая структура без права доступа к ней пользователя. В подразделении ICDIV5 располагаются следущие структуры: LCDATA - вспомогательная структура; (Пустой RD банк) LCEVNT - структура для хранения события; Эта структура состоит из 4 подструктур: RD - сырая информация TD - полусырая информация PO - Processors output IL - Inclusion Lists Structures Назначение различных переменных-ссылок: LCRD - ссылкa на банк с сырой информацией с установки (Raw Data, RD, подвешен к EVNT lq(lcevnt-1)); LCTD - ссылка на банк с преобразованными данными (Transformed Data, TD, подвешен к EVNT lq(lcevnt-2)); LCPO - ссылка на структуру для хранения результатов работы процессоров (Processor Output, PO, подвешен к EVNT lq(lcevnt-3)); LCDR - ссылка на структуры с информацией о том, в какие PO-банки входят элементы данных с установки (подвешен к EVNT, lq(lcevnt-4)) LCPR - PR банки (с Inclusion Lists for processors) подвешены к Leading банкам результатов процессоров lq(lprc-1) и таким образом входят в PO-структуру. LRGSET - ссылка на банк с описанием текущего сета детекторов; LRGDET - ссылка на банк с описанием геометрии детектора, информация с которого используется в данный момент; LRGPRC - ссылка на банк с описанием работающего в данный момент процессора; LRDSET - ссылка на банк с данными для текущего сета детекторов; LRDDET - ссылка на банк с данными от детектора, обрабатываемого в данный момент; LRDPRC - ссылка на банк с результатами обработки информации для данного модуля детекторов; LREFER(10) - массив ссылок, находящихся в распоряжении пользователя.
1. Подструктура Header (первый рекорд). Состоит из одного банка по адресу LCHEAD, который не имеет structural links и два reference links, которые ссылаются на внутренности самого банка (на какую-то холерику). Содержимое банка не установлено. Нигде не используется.
2. Подструктура SETS (второй рекорд). Содержит реальную информацию о детекторах. Банки WORK создаются в подпрограмме DSCOPY (file DSCONV_??). Имееет следущее строение:
SETS | -1 |---------------------------------------------------- BHOD | | -2 |----------------------------------------- BHPC -1 |-- WORK | | -3 |---------------------------- TARG (-1-9)|-- HPC* -- WORK | | | -4 |----------------- PROP (-1-3)|-- WORK | | -5 |----- INOX (-1-16)|-- PC** -- WORK | | | (-1-4)|-- INO* -- WORK | -6 |---------------------------------------------------- CHER | | -7 |----------------------------------------- DRFT -1 |-- WORK | | -8 |---------------------------- HODO (-1-9)|-- DRF* -- WORK -- DRF* | | | -9 |----------------- GAMS (-1-2)|-- WORK | | | -10 |----- POLC -1 |-- WORK | | | (-1-2)|-- POL* -- WORK
Предупреждение ! Реальная структура банков не всегда соответствует настоящему описанию !
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-банк - банк для хранения индивидуальных для каждого канала детектора констант (Individual Channel constants); CC-банк - банк для хранения калибровочных констант детек- тора (Calibratin Constants); SI-банк - банк для хранения статусной информации о кана- лах детектора (Status Information); R-список - (Reduction List) список ссылок на ЭДД или ФС, которые были использованы при получении данного ФС; I-список - (Inclusion List) список ссылок на ФС, в которые входит данный ЭДД или ФС; RD-структурa - Структура для хранения сырых данных с установки (Row Data); TD-структура - Структура для хранения преобразованных данных (Transformed Data); РО-структура - Структура для хранения ФС (Processors Output); DR,PR-структуры - Структуры для хранения I-списков для ЭДД,ФС;
1. Количество сетов. (=10 для 17-го сеанса) 2. "BHOD" 3. "BHPC" 4. "TARG" 5. "PROP" 6. "INOX" 7. "CHER" 8. "DRFT" 9. "HODO" 10. "GAMS" 11. "POLC"
1. "BHOD" 2. "BHOD"
1 891129 H Дата создания банка 2 0 H Не известно 3 65538 H = 1*2^16 + 2 : Номер детектора 1, сет 2 4 " BHPC H имя детектора в системе GEANT; 5 6.0000000 G NLOC - число констант, описывающих геометрию детект. 6 -528.00000 G Z-координата 7 4.3717594 G X/Y-координата нулевой проволочки 8 -0.40000001 G расстояние между проволочками (со знаком) 9 32.000000 G Число каналов 10 0.53231786E-02 G Временной коэффициент для кластеров. G (считается в DSBEAM, с обрезанием 0.10) 11 0.00000000E+00 G Ориентация плоскости (=0 для x и =90 для y-плоскости) 12 14.000000 T NSIZ - длина временного профиля детектора. (lq(l-6)) 13 0.74202187E-01 T временной профиль (нормированный интеграл), 14 0.22690247 T используемый dhpctm (File DSTD3.FOR) для кластеров. 15 0.50652754 T ... .. .......... T ... 25 13.91173826 T ... 26 14.000000 T Должно быть NPHY, но ссылка lq(l-6) идет на слово 41 ! 27 0.00000000E+00 T 28 5.0734010 T временной профиль для одиночных хитов (dhpctm) 29 8.342296639 T .. .......... T 39 13.000000 T 40 0.37659281E-02 T Временной коэффициент для одиночных хитов. (считается в DSBEAM, с обрезанием 0.07 ) 41 11.000000 P Должно быть NGEA, но ссылка NPHY (lq(l-7)) 42 1.0000000 P ?????????? 43 0.00000000E+00 P ?????????? 44 1.0000000 P ?????????? 45 0.00000000E+00 P ?????????? 46 0.00000000E+00 P ?????????? 47 0.00000000E+00 P ?????????? 48 1.0000000 P ?????????? 49 0.00000000E+00 P ?????????? 50 0.00000000E+00 P ?????????? 51 0.00000000E+00 P ?????????? 52 1.0000000 P ?????????? 53 1.0000000 M A сюда ссылка NGEA (lq(l-8)) 54 2.0000000 M ??????????
Банк PC01, например, содержит:
Внимание ! наклонные камеры имеют вместо слова 11 (ориентация проволочек) два слова, и там не угол в градусах, а SIN и COS угла ! Смотри пример PC15, который следует за PC01.
1 891129 H Дата создания банка 2 0 H Не известно 3 65540 H = 1*2^16 + 4 : Номер детектора 1, сета 4 4 " PROP H имя детектора в системе GEANT; 5 6.0000000 G NLOC - число констант, описывающих геометрию детект. 6 -183.80000 G Z-координата 7 -17.966784 G X/Y-координата нулевой проволочки 8 0.20000000 G расстояние между проволочками (со знаком) 9 160.000000 G Число каналов 10 0.00000000E+00 G Не используется (может использоваться для вр. коефф.) 11 0.00000000E+00 G Ориентация плоскости (=0 для x и =90 для y-плоскости) 12 14.000000 T NSIZ - длина временного профиля детектора. (lq(l-6)) 13 0.17441647E-01 T временной профиль 14 0.38987212E-01 T ... .. ..... T ... 25 13.675278 T 26 14.000000 T 27 11.000000 P NPHY (lq(l-7)) 28 1.0000000 P ???????? 29 0.00000000E+00 P ???????? 30 1.0000000 P ???????? 31 0.00000000E+00 P ???????? 32 0.00000000E+00 P ???????? 33 0.00000000E+00 P ???????? 34 1.0000000 P ???????? 35 0.00000000E+00 P ???????? 36 0.00000000E+00 P ???????? 37 0.00000000E+00 P ???????? 38 1.0000000 P ???????? 39 1.0000000 M NGEA (lq(l-8)) 40 1.0000000 M ????????Пример наклонной камеры PC15:
1 891129 H Дата создания банка 2 0 H Не известно 3 983044 H = 15*2^16 + 4 : Номер детектора 1, сета 4 4 " PROP H имя детектора в системе GEANT; 5 7.0000000 G NLOC - число констант, описывающих геометрию детект. 6 -164.39999 G Z-координата 7 -19.285496 G X/Y-координата нулевой проволочки 8 0.20000000 G расстояние между проволочками (со знаком) 9 256.000000 G Число каналов 10 0.00000000E+00 G Не используется (может использоваться для вр. коефф.) 11 -0.26072043 G Sin угла наклона проволочек 12 0.96541435 G Cos угла наклона проволочек 13 14.000000 Т NSIZ - Длина временного профиля .. ........... ... Далее все как для PC01 со сдвигом на одно слово.
Банк DRF1, например, содержит:
Внимание ! наклонные камеры имеют вместо слова 11 (ориентация проволочек) два слова, и там не угол в градусах, а SIN и COS угла ! Смотри пример POL1, который следует за DRF1. Наклонные камеры Полякова имеют точно такую же структуру, как наклонные DRFT.
1 891223 H Дата создания банка 2 40000 H Не известно 3 65543 H = 1*2^16 + 7 : Номер детектора 1, сета 7 4 " DRFT H имя детектора в системе GEANT; 5 6.0000000 G NLOC - число констант, описывающих геометрию детект. 6 265.22305 G Z-координата 7 -133.28427 G X/Y-координата нулевой проволочки 8 1.60000000 G расстояние между проволочками (со знаком) 9 160.000000 G Число каналов 10 0.25545996E-01 G Временной коэффициент. 11 0.00000000E+00 G Ориентация плоскости (=0 для x и =90 для y-плоскости) 12 30.000000 T NSIZ - длина временного профиля детектора. (lq(l-6)) 13 0.33250374 T временной профиль 14 1.5545048 T ... .. ..... T ... 41 29.876556 T ... 42 29.973619 T ... 43 11.000000 P NPHY (lq(l-7)) 44 1.0000000 P ???????? 45 0.00000000E+00 P ???????? 46 1.0000000 P ???????? 47 0.00000000E+00 P ???????? 48 0.00000000E+00 P ???????? 49 0.00000000E+00 P ???????? 50 1.0000000 P ???????? 51 0.00000000E+00 P ???????? 52 0.00000000E+00 P ???????? 53 0.00000000E+00 P ???????? 54 1.0000000 P ???????? 55 1.0000000 M NGEA (lq(l-8)) 56 1.0000000 M ????????Пример наклонной камеры POL1:
1 970614 H Дата создания банка - не заполнена, к сожалению... 2 0 H Не известно 3 65546 H = 1*2^16 + 10 : Номер детектора 1, сета 10 4 " POLC H имя детектора в системе GEANT; 5 7.0000000 G NLOC - число констант, описывающих геометрию детект. 6 -70.099998 G Z-координата 7 -50.307343 G X-координата нулевой проволочки 8 0.20000000 G расстояние между проволочками (со знаком) 9 542.000000 G Число каналов 10 0.00000000E+00 G Пока не испол. (может использоваться для вр. коефф.) 11 0.99070483 G Sin угла наклона проволочек 12 -0.13602920 G Cos угла наклона проволочек 13 30.000000 Т NSIZ - Длина временного профиля .. ........... ... Далее все как для DRF1 со сдвигом на одно слово.
Очень большие банки (173 слова), заполненные почти сплошь нулями. Созданы раньше нормальных банков. Либо вообще не используются, либо используются в Монте-Карло.
Структура имееет следующее строение: (Примеры банков можно найти кликнув соответствующюю ссылку)
PROC | -1 |------ BEAM | -2 |------ VTNY | | .. |------ ......... | Структура для описания процессоров программы находится по адресу LCPROC. Перед началом работы процессоры упорядочиваются в порядке вызова их из программы, в соответствии с этим каждый процессор имеет свой номер. Описание процессора IPROC находится по адресу LADPRC: LADPRC=LCQ(LCPROC-IPROC) В банке, описывающем отдельный процессор, содержится информация о том, какие детекторы или процессоры более низкого уровня будут данным процессором обрабатываться, а также необходимые для работы процессора параметры. Форма банка следующая. LADPRC=LCQ(LCPROC-IPROC) NRPRC =ICQ(LADPRC+2) NRTOT =ICQ(LADPRC-3) 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-х букв); ICQ(LADPRC+2)=NRPRC - число процессоров, ФС которых используются данным процессором; ICQ(LADPRC+3)=NCONST - число необходимых для работы процессора констант; CQ(LADPRC+3+1) - нужные для работы процессора константы; . . . CQ(LADPRC+3+NCONST) ICQ(LADPRC+4+NCONST) - NDNAM - число слов, отведенных под имена (LRDET) детекторов, ЭД которых используются данным процессором CCQ(LRDET+1) - имена детекторов, ЭД которых исполь- . . . зуются данным процессором CCQ(LRDET+NDNAM) ICQ(LRDET+NDNAM+1) - NPNAM - число слов, отведенных под имена (LRPRC) процессоров, ФС которых используются данным процессором CCQ(LRPRC+1) - имена процессоров, ФС которых исполь- . . . зуются данным процессором CCQ(LRPRC+NPNAM)
1. 15 2. "BEAM" 3. "VTNY" 4. "VRTY" 5. "VANY" 6. "VANX" 7. "VERS" 8. "SDRY" 9. "DALI" 10. "CURV" 11. "TRSP" 12. "VRSF" 13. "IMPR" 14. "FINA" 15. "GAMS" 16. "CHER"
VTNY. 2 69376(QDIV2) SY/US/IO 2/ 0/4D5D NL/NS/ND 10/ 0/ 20 REFERENCE links 1 PC12 73869 3 PC08 73751 5 PC04 73633 7 BEAM 69419 9 ?**** 69395 2 PC10 73810 4 PC06 73692 6 PC02 73574 8 ?**** 69388 10 VTNY 78740 DATA part of bank 1 " LINE - тип процессора 2 1 - число процессоров, рез. которых исп. данным проц. 3 8 - число необходимых процессору констант (параметров) 4 2.0000000 - 1-й параметр 5 -222.00000 - 2-й параметр 6 -195.00000 - ... 7 0.10000000 - ... Назначение параметров для некоторых 8 3.0000000 - ... процессоров можно найти ЗДЕСЬ 9 4.0000000 - ... 10 -200.00000 - ... 11 -195.00000 - 8-й параметр 12 6 - NDNAM - число слов, отведенных под имена детекторов 13 " PC12 - на предыдущуе слово есть reference link 14 " PC10 15 " PC08 16 " PC06 17 " PC04 18 " PC02 19 1 - NPNAM - число слов, отведенных под имена процессоров 20 " BEAM - на предыдущуе слово есть reference linк Промечание: Банк имеет 10 reference links: 1-6 - ссылки на банки описания детекторов 7 - ссылка на банк описания используемого процессора 8 - внутренняя ссылка на список детекторов (lvtny+12) 9 - внутренняя ссылка на список процессоров(lvtny+19) 10 - ссылка на VTNY банк PO-структуры.
EVNT | -1 |------ RD | -2 |------ TD | -3 |--------------------------- PO | | -4 |------ DR (-1-NPROC)|-- PRCleading ---- PRCtrailing | | -5 | -1 |-- PR
Банк создается в головной программе (файл MPLSLTN.FOR, call dscred). Банк не имеет ничего, кроме 5 структурных линков, из которых используются первые 4:
Links: Structural - 5: -1 RD-банк -2 TD-банк -3 PO-структура -4 DR-банк -5 не используется Reference - 0 Up - 0
Банк создается в головной программе (файл MPLSLTN.FOR, call dscred). Там же заполняются первые 3 слова. Все остальное заполняется в DSCOPI (fail DSCONV_??.FOR).
Замечание. В слове icq(l-5) хранится относительный адрес последнего заполненного слова (а не номер банка, как по ZEBRA конвенции). Это может привести к недоразумениям при отладке программ, например при использовании DZCHBK.
Links: Structural - 0 Reference - 0 Up - EVNT, -1 Data: .GE. 1000 1 2 H длина заголовка (слова 2 и 3) 2 606031738 H Absolute Tape Number: H year*100000000+month*1000000+day*10000+hour*100+minute H year - one digit, month = 6 always! (file MPRL_DSPN.FOR) 3 Z 30001 H spill*2^16 + event nmb. in the spill (spill in the tape) 4 Z 60034 A (число хитов для детектора #1)*2^16 + отн. адрес данных 5 Z 20037 A (число хитов для детектора #2)*2^16 + отн. адрес данных 6 Z 10038 A .... Количество байт на один хит зависит от детектора ! .. .. ......A .................. 51 Z 60106 A (число слов для детектора #48)*2^16 + отн. адрес данных 52 Z 2670322 D raw data для 1-го детектора (хиты 1-2) 53 Z 3A802A8 D raw data для 1-го детектора (хиты 3-4) 54 Z 3F602EA D raw data для 1-го детектора (хиты 5-6) 55 Z 2AC008C D raw data для 2-го детектора (хиты 1-2) 56 Z 12B D raw data для 3-го детектора (хит 1) ...................... И так далее ......................Примечания.
Банк создается в подпрограмме dscret (file DSTD3). В нем создаются NDET reference links, по числу детекторов. Каждая ссылка указывает на область внутри банка для данных этого детектора. В первом слове области находится длина этой области (без первого слова).
Links: Structural - 0 Reference - NDET - число детекторов Up - EVNT, -2 Data: .GE. 2000 1 8 - число слов для детектора #1 2 -1.2165127 - хит 1 3 0.10000000 хит 1 4 -1.0165119 хит 2 5 0.10000000 хит 2 6 1.7834873 хит 3 7 0.10000000 хит 3 8 1.9834881 хит 4 9 0.10000000 хит 4 10 6 - число слов для детектора #2 11 -0.95972919 хит 1 12 0.10000000 хит 1 ... .......... ..... и так далее ..........Формат полусырых данных в TD-банке:
HPC-камеры: 1. cq(lrtdet+ih*2-1) =st/4.*iclc+x0 Координата начала кластера 2. icq(lrtdet+ih*2) =iclw+itmc(1)*16+itmc(2)*256 Последняя проволока кластера и времена Нету больше пока...
Цитата из работы Г. Борисова:
3. Структура PO.
В процедуре обработки
ключевым является понятие процессора данных. Под процессором данных
понимается подпрограмма, которая на основе данных от детекторов или
результатов работы предыдущих процессоров восстанавливает отдельные фрагменты
события или (как окончательный результат) событие целиком.
Для работы процессору необходимо указать источники входной информации
(т.е. те детекторы и/или процессоры, информация от которых будет
использована для восстановления фрагмента события). Результаты работы
процессора имеют строго определенный формат и хранятся в
банках структуры PO (Processors Output). Таким образом, работа программы
реконструкции (ПР) строится по конвеерному принципу, т.е. разбивается на
отдельные элементарные операции, являющиеся по возможности независимыми
от предыдущих операций и конкретной конфигурации детекторов и выполняющиеся
последовательно друг за другом.
Примеры процессоров: поиск ливней в ГАМС; определение пространственной
точки прохождения трека по трем сработавшим плоскостям дрейфовой камеры;
определение проекции трека в YZ- плоскости по хитам в пропорциональных
и дрейфовых камерах; определение типа частицы по показаниям черенковского
счетчика; определение вершины взаимодействия в мишени по пучковому треку
и восстановленным в установке трекам.
Так как при инициализации структуры РО не известно общее
число фрагментов события, которые восстанавит данный процессор
(можно даже представить себе ситуацию, когда заранее неизвестно
общее число процессоров ПР), то строение ее
банков должно быть достаточно
гибким и допускать возможность простого расширения.
Головной банк РО (адрес - LCPO) имеет NPROC структурных связей
(NPROC - общее число процессоров ПР),
их количество в процессе работы может быть изменено
стандартными средствами пакета ZEBRA.
При инициализации устанавливается последовательность
запуска отдельных процессоров, в соответствии с этой последовательностью
каждому процессору присваивается свой номер.
Число слов, отводимое под данные в головном банке не фиксировано (т.е.
может не совпадать в разных версиях ПР).
В банке с адресом LADPRC=LCQ(LCPO-IPROC), где IPROC- номер процессора,
хранятся результаты его работы. Строение банка выбрано исходя из
требований обеспечения экономичного
механизма его расширения и простого способа поиска интересующих
фрагментов события. Этот банк не имеет ни структурных связей,
ни связей-ссылок.
Кратко остановимся на формате отдельного фрагмента в банке РО.
Как уже упоминалось, для каждого процессора форма фрагмента строго
определена. Кажется целесообразным разделить его на две части. В
первой части записывается результат обработки данных процессором.
Это могут быть, например, параметры восстановленного ливня
(энергия ливня, его координаты, соответствующие ошибки), параметры
трека заряженной частицы и т.д. Во второй части записывается список
ссылок (будем называть его R-список от Reduction List)
на использованные процессором данные от детекторов и/или фрагменты
других процессоров. Такие списки могут помочь
при многоуровневой структуре ПР, когда работа процессоров верхнего уровня
опирается на результаты работы процессоров нижних уровней.
Например, процедуру поиска треков на установке ВЕС можно разбить
на такие этапы:
Требование записи R-списка в фрагмент события не является жестким и
если для последующей работы ПР такой список не потребуется, его можно
не заполнять.
[Здесь выброшен кусок цитаты, так как не соответствует реальности.]
Для записи фрагментов в банк существует специальная подпрограмма,
которая сама вычисляет все нужные адреса и осуществляет
необходимый контроль за правильностью заполнения. При
необходимости она аккуратно расширяет банк (т.е. не только увеличивает
его размер, но и переносит
адреса фрагментов на новое место). Пользователю предоставляется
возможность уничтожения отдельных фрагментов внутри банка, имеется
процедура " сборки мусора", которая при данной простой
структуре не слишком громоздка и достаточно быстра.
1) поиск прямых проекций треков в YZ- плоскости;
2) поиск связанных троек сигналов в трехплоскостных дрейфовых камерах;
3) поиск прямых проеций треков в XZ- плоскости до магнита;
4) поиск полных проекций треков в XZ-плоскости (с использованием
результатов работы процессора 3);
5) сшивка проекций трека в YZ- и
XZ- плоскостях (с использованием результатов работы процессоров 1), 2) и 4);
6) полный пространственный фит отобранных кандидатов в треки с определением
точных параметров треков.
При таком построении ПР в процессе работы необходимо
знать, на основе каких данных получены те или иные фрагменты события и
эта информация извлекается из R-списков.
Формат ссылок в R-списках будет приведен ниже.
PO.. Содержание банка.
Банк создается в подпрограмме dscret (file DSTD3). В нем создаются NDET
reference links, по числу детекторов. Каждая ссылка указывает на область
внутри банка для данных этого детектора. В первом слове области находится
длина этой области (без первого слова).
Links: Structural - NPROC - число процессоров, задействованных в программе Reference - 0 Up - EVNT, -3 Data: 0 Пример банка в программе PICT: PO . 3 78679(DataStor) SY/US/IO 0/ 0/ 2 NL/NS/ND 20/ 20/ STRUCTURAL links 1 BEAM 78690 5 VANX 80205 9 CURV 81889 2 VTNY 78740 6 VERS 80626 10 TRSP 82310 3 VRTY 80170 7 SDRY 81047 11 VRSF 82951 4 0 8 DALI 81468 12 0
На самом деле это два банка, сцепленных последовательно. В первом банке находится "карта" второго. Фрагменты находятся во втором. На каждый фрагмент отводится блок из 4 слов первого банка. Блок содержит:
1. Относительный адрес фрагмента во втором банке + какие-то флаги. 2. Длина фрагмента. 3. Относительный адрес первого сегмента I-списка в PR-банке (lq(l-1)). 4. Количество живых сегментов в цепочке I-списка. Пример банка процессора VTNY: VTNY. 28 78740(DataStor) SY/US/IO 0/ 0/ 2 NL/NS/ND 1/ 1/ 100 N/U/O/@O 78850/ 78679/ 78677/ STRUCTURAL links -------------------- 1 PR 88888 DATA part of bank -------------------- DATA 1 Z 8001 11 0 21 110 2 23 12 0 22 20 3 0 13 69 23 0 4 0 14 20 24 0 5 24 15 0 25 130 6 24 16 0 26 21 7 0 17 89 27 0 8 0 18 21 28 0 9 48 19 0 29 0 10 21 20 0 30 0 ........................ Каждый фрагмент состоит из двух динамических секторов (*F *B). В первом секторе расположена информация о вичисленных параметрах фрагмента, во второй запакованы элементы R-списков. VTNY. 150 78850(DataStor) SY/US/IO 0/ 0/6039 NL/NS/ND 0/ 0/ 300 N/U/O/@O 0/ 78679/ 78740/ DATA part of bank -------------------- DATA 1 *F( 15) 11 5.0000000 21 Z 10014 2 2.0000000 12 1349.9999 22 Z 10012 3 0.00000000E+00 13 -6086.0005 23 Z 10010 4 0.00000000E+00 14 -205241.52 24 *F( 15) 5 -0.51290654E-01 15 873352.81 25 2.0000000 6 -12.305907 16 32215030. 26 0.00000000E+00 7 1349.9999 17 *B( 6) 27 0.00000000E+00 8 -205241.52 18 Z 1000E 28 0.81027918E-01 9 32215030. 19 Z 10018 29 14.399518 10 4.0619006 20 Z 20018 30 1199.9999Значение параметров для некоторых процессоров можно найти ЗДЕСЬ
Цитата из работы Г. Борисова:
Кроме 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-списка для каждого ЭДД
заранее не известна. Его начало....
4. Структуры LCDR, LCPR.
Далее все скипнуто, потому что не соответствует действительности.
Для работы с Inclusion Lists структурами нужно пользоваться пакетом подпрограмм PS.
В действительности DR (Detectors Inclusion Lists)
и PR (Processors Inclusion Lists)
структуры организованы по разному.
DR-структура целиком находится в одном банке DR.
PR-структура распределена по
Leading банкам процессоров, подвешенных к PO-банку
и по специальным банкам PR, подвешенным к этим
Leading банкам.
Рассмотрим структуры по-отдельности.
Links: Structural - 0 Reference - NDET - число детекторов Up - EVNT, -4Банк содержит довольно сложную структуру, которая состоит из объектов двух типов:
Каждый детектор имеет свою "базовую область", длина которой равна длине области в TD-банке для данного детектора (т.е. числу хитов, умноженному на два). Адрес этой области находится в reference link DR-банка (lq(ldr-idet)).
Каждый хит имеет (или не имеет) свою собственную цепочку элементов списка.
Для каждого хита отведено два слова в "базовой области": 1. Ссылка на первый элемент цепочки I-списка. 2. Количество "живых" элементов I-списка. Элемент I-списка состоит из 4 слов: 1. Статус элемента: 0 - пустой, 1 - живой, 3 - убитый. 2. Ссылка на следующий элемент списка. 3. Номер процессора, который использовал хит. 4. Номер фрагмента события, в котором использован данный хит. Пример DR банка: 1 31 - хит 1, ссылка на 1-й сегмент списка (сюда есть reference link) 2 0 - хит 1, число сегментов в цепочке. (0 - потому что ссылка убита) 3 0 - хит 2, не использованный хит 4 0 - хит 2, -- 5 151 - хит 3, ссылка на 1-й сегмент в цепочке 6 1 - хит 3, число сегментов в цепочке. ... ... ....... 31 3 - статус элемента списка - убит 32 0 - ссылка на следующий элемент (нету) 33 2 - использован процессором номер 2 34 1 - использован в 1-м фрагменте события 2-го процессора ... ...
3. Ссылка на первый элемент цепочки I-списка. 4. Количество "живых" элементов I-списка.
Банк заполнен элементами списков. Элемент списка состоит из 4 слов: 1. Статус элемента: 0 - пустой, 1 - живой, 3 - убитый. 2. Ссылка на следующий элемент списка. 3. Номер процессора, который использовал хит. 4. Номер фрагмента события, в котором использован данный хит.E. Vlasov