Визуализация с помощью JAS3
Моя программа в процессе работы выдает текст:
Current available graphics systems are: ASCIITree (ATree) DAWNFILE (DAWNFILE) GAGTree (GAGTree) G4HepRep (HepRepXML) G4HepRepFile (HepRepFile) RayTracer (RayTracer) VRML1FILE (VRML1FILE) VRML2FILE (VRML2FILE) FukuiRenderer (DAWN) OpenGLImmediateX (OGLIX) OpenGLStoredX (OGLSX) RayTracerX (RayTracerX) VRML1 (VRML1) VRML2 (VRML2)
Это список зарегистрированных в подсистеме визуализации драйверов. Разберем по порядку, что они из себя.
- ATree печатает структуры геометрии в виде дерева. Толку от него немного и в нем нет треков. Но иногда это бывает полезно.
- DAWNFILE создает файлы в формате .prim, которые потом можно превратить в postscript программой DAWN. Или же их можно проанализировать на предмет наличия перекрытий примитивов программой David. Но dawn достаточно неудобный, хотя и позволяет получать очень качественные иллюстрации, похожие на чертежи. Он поддерживает только один выходной формат — EPS, который трудно поддается редактированию.
- GAGTree — это нечто вроде ATree, но предназначен для ввода геометрии в другие программы.
- G4HepRep & G4HepRepFile — о них речь пойдет ниже.
- RayTracer якобы генерирует JPEG методом рейтрейсинга, но у меня он создавал только какие-то страшные черно-белые силуэты без антиалиасинга. Хотя делает он это остроумно: пропускает через геометрию оптические фотоны методами самого GEANT'а. Работает очень медленно и не обеспечивает визуализацию треков.
- FukuiRenderer — это то же самое, что и DAWNFILE.
- OpenGLImmediateX и OpenGLStoredX. Из всех визуализаций только OpenGL и OpenInventor могут работать в реальном времени. Это, конечно, очень удобно, но рисуют они некрасиво, да и пользоваться ими неудобно, так как окошки не обновляются, если их случайно заслонить (приходится явно вызывать /vis/viewer/flush для перерисовки). Но первый плюс, безусловно, перевешивает недостатки.
- RayTracerX — это RayTracer, который вместо файлов создает окно, куда и рисует.
- VRML1 и VRML2 — две версии vrml. Но толку от них мало. Во-первых под линукс нет ни одного удобного vrml-браузера. А во-вторых этот драйвер не передает иерархию объемов, поэтому нельзя запретить показывать объем вместе с детишками. VRML можно смотреть в виде 3D, вращать мышкой, приближать и удалять. Поддерживается визуализация треков.
JAS
В свете вышеизложенных фактов отличным методом работы с off-line-визуализацией является HepRep. Этот формат позволяет сохранять в файле геометрию и треки. Для просмотра существует программа JAS3 (http://jas.freehep.org/jas3/) (Java Analisys Studio). На сайте есть дистрибутивы для Win32, Mac OS X и linux. Они работают и на экзотических платформах тоже: запустилось и в linux на amd64, и в MacOSX с аппаратным ускорением 3D.
Сам JAS3 это культурный шок. Чуть ли не единственная программа на джаве, которая работает быстро и без раздражающих ошибок. Правда, 512 Мб памяти для него это самый минимальный минимум.
Вот и скриншот:
Для того, чтобы запустить jas3 в линуксе, надо распаковать архив: tar xzf jas3-Linux-0.8.2.tar.gz, и запустить команду ./jas3/jas3. После чего надо установить плугин для работы с HepRep. Последнее вообще проще простого, т. к. плугины он скачивает из интернета автоматически. В меню View выбираете Plugin Manager, там на вкладке Avaiable находите Wired4, Wired4 Base Library и HepRep plugin, выбираете и нажимаете Install selected plugins. Естественно нужно подключение к интернету. После установки даже перезапускать JAS3 не нужно, все начинает работать сразу!
Чтобы G4 создавал файлы в формате HepRep надо добавить в vis.mac строчки
/vis/scene/create filename.bheprep /vis/open HepRepXML
Filename.bheprep, конечно, надо заменить на что-нибудь более подходящее.
Еще HepRep адекватно реагирует на endOfEventAction и по умолчанию добавляет в файл только треки от одного события. Если же вы укажете accumulate, то он будет сохранять все обработанные траектории.
В Jas'е модель можно поворачивать по-разному, включать-выключать отдельные объемы и треки, и для каждого трека там есть таблица с энергией, импульсом и остальными параметрами. Через Файл→Сохранить как... можно экспортировать файл в векторном и растровом формате.