Multiparametric

Wykresy 3d

Są biblioteki do wykresów 3d!

JAS3 is a general purpose, open-source, data analysis tool with the following features

* Plotting of 1d, 2d and 3d histograms, XY plots, scatterplots etc.
* High quality print output.
* Fitting (binned or unbinned) using an extensible set of optimizers including Minuit.
* Export of plots in a variety of formats including PS, EPS, PDF, SVG, GIF, PNG.
* Easy to learn GUI for performing common analysis tasks (plotting, ntuple-analysis, fitting etc.).
* More complex analysis can be performed using a variety of scripting languages (pnuts, jython, etc.), or by writing Java analysis modules.
* Able to read data in a variety of formats including: SQL databases, text-files (see also HEP specific features).
* AIDA compliant analysis system.
* Built-in editor and compiler.
* Simple spreadsheet capabilities.
* Logbook for recording analysis tasks, and optionally publishing results to the web.
* Highly modular structure allows addition, replacement or removal of modules to customize application

[http://jas.freehep.org/jas3/]

Propozycje bibliotek 3d ogólnego przeznaczenia w Javie

http://stackoverflow.com/questions/555347/3d-scene-graph-library-for-java

ROOT

Da się spokojnie tworzyć kod JNI korzystający z bibliotek numerycznych ROOTa. To jest nawet proste :) starczy zainstalować sobie w ubuntu paczki roota (w tym libroot-dev) wszsytkie pliki nagłówkowe są w katalogu /usr/includes/root, a biblioreki /usr/lib/root.

Natomiast jest to dość pracochłonne.

Na skróty

Są rózne narzędzia wykonujące mapowania na skróty. Niesety te które znalazłem niestety nie wspierają C++.

Próbowałem wygenerować interfejsy SWIGiem (http://www.swig.org/tutorial.html), swig teoretycznie jest w stanie wygenerować wrappery javy i kilku innych języków. Ale wsparcie C++ jest w swigu niepełne, na przykład nie jest w stanie rozumieć szablonów (a najnowsze wersje ROOTa korzysjają z nich).

Inne języki.

Zamiast korzystać z Qt, można wykorzystać inne języki. ROOT ma pełne interfejsy w Pyhonie i Rubym.

Przewaga Pythona i Rubyego nad C jest taka że oba te jeżyki używają Garbage collectora (co bardzo przyśpiesza tworzenie aplikacji).

Wyświetlanie wykresów ROOT w środowisku Javy.

Nie próbowałem. Ale można to zrobić na takie sposoby

  • Zmusić ROOTa do wyplucia obrazka zawierającego wykres i wyświetlenie wykresu do okienka Javy.
  • Użyć SWT. Zupełnie nie wiem jak, ale zasugerowano mi że SWT potrafi wyświetlać natywne okienka jako komponenty Javy.

Propozycje

Nie przywiązujmy się do ROOTa. Poprzestańmy na zdefiniowaniu wymagań co do aplikacji a jak one zostaną zrealizowane pozostawmy programistom. Zawsze ostatecznie można korzystać obliczeń numerycznych w rootcie z poziomu Javy za pomocą JNI.

JAS3 ma zaawansowane narzędzia numeryczne. Ja z kolei zrobiłem w mojej pracy inż fitowanie metodą Lavenberga-Marquarda korzystając z dostępnych bibliotek Javy.

Szczególnie nie warto rezygnować z tego że jednak Java jest lepiej znana nić Python, C++/Qt, Ruby. Można by postawić calkiem na roota, gdyby znaleźli się ludzie majacy doświadczenie w tych językach. (ja ostatecznie mógłbym się nauczyć pythona z tym że: najchętniej na mniejszym projekcie, projekt by na tym cierpiał, ciągle nie wiem na jakim etapie studióe jestem i czy i kiedy będę robił magisterkę).

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-NonCommercial-NoDerivs 3.0 License