|
Публиченко Павел Андреевич / Pavel A. Publichenko
Наука и знание - лучшее средство от бедности и недоедания
|
|
|
Павиком на службе эксперимент OPERA6. Модернизация программы libACQИтак, для работы с материалами OPERA был взят за основу пакет libACQ работающий в программной среде ROOT. Работа с libACQ потребовала изучение ROOT, умения написания динамических библиотек под ROOT в среде Microsoft VC. Работая над программой, были пройдены следующие этапы:
Программа управления столом существует в двух упрощенных версиях – только управление столом и только захват изображения. Полная версия выполняет полный цикл обработки одного поля зрения, а именно: захват 15 кадров по толщине эмульсионного слоя с шагом 3 мкм, выделение кластеров, восстановление микротреков (тестовая версия). Перечислим классы, которые используются в программе
AcqStage1 Класс, управляющий контроллером NI7344, используемый для управления механикой европейской сканирующей установки. Класс содержит 3 объекта AcqAxis для каждой из осей. Посредством этих объектов инициализируются оси и управляются, в самом классе AcqStage1 имеется функция ScanToZ0AndGotoXYZ() – основная функция, используемая при сканировании, которая управляет осями, не используя AcqAxis. Так же AcqStage1 содержит класс для управления светом AcqLight, который в нашей работе не потребовался. AcqStage1 использует функции, написанные производителем контроллера европейской сканирующей установки (начинаются они на «flex_»). AcqOdyssey Класс используется для управления платой захвата и обработки изображения Matrox Odyssey XPro. С платой поставляются функции MIL (Matrox Imaging Library, названия их начинаются на «М»), большинство из которых могут либо выполняться на хосте (наличие платы при этом не обязательно), либо загружаться на плату и выполняются на ней. Кроме того, в плату зашиты функции ONL (Odyssey Native Library, названия их начинаются на «im»), которые вызываются путем кидания плате идентификатора нужной функции. Та часть функций, которая нужна для обработки изображения, в ONL и MIL одинакова. В AcqOdyssey всегда, кроме случаев, когда необходимо что-то отобразить на экране, используется ONL. При инициализации платы загружается dcf-файл (в нем указываются параметры захвата изображения с камеры), выделяется память под буфер (для хранения изображений и других данных) и потоки (threads) (для передачи данных между хостом, камерой и разными частями платы). Буферы могут выделяться как на хосте, так и на самой плате. Все функции управления платой можно разделить на служащие для:
GrabAndFillView() – основная функция, используемая для сканирования. С помощью функции ONL imDigGrabSequence() она захватывает N изображений, обрабатывает их и загружает эти изображения и информацию о кластерах в массив объектов EdbView. AcqTrackScanner Содержит указатели на AcqStage1 и AcqOdyssey (при создании класса они ни на что не указывают). AcqTrackScanner содержит функции, которые непосредственно сканируют, вызывая функции из AcqStage1 и AcqOdyssey. В основной функции AcqTrackScanner ::ScanAndFillView() сначала вызывается AcqStage1::ScanToZ0AndGotoXYZ(), которая за несколько миллисекунд кидает кучу идентификаторов контролеру, и тот начинает ехать. Сразу после нее вызывается функция GrabAndFillView(), которая, пока контроллер едет, подхватывает и обрабатывает изображение. В результате у нас получается массив EdbView, с которым потом можно работать. AcqTrackReconstructor Класс содержит несколько функций, по-разному выполняющих одно и тоже: они получают на входе массив EdbView и находят в нем треки. Перечислим все функции адоптированной программы сканирования libACQ для ПАВИКОМ-1.
|
| © 20082012 «Публиченко Павел Андреевич» E-mail: О сайте | |