[Amelia-development] AMELIA Updates
Status: Alpha
Brought to you by:
jppequenao
|
From: Karol K. <kk...@gm...> - 2009-03-09 16:39:12
|
Hi Joao, I think it's time for a long delayed update on my work on AMELIA. Last time we talked about the plugin system that I developed and if it works on Windows. Well, it does. The only change I had to make was to do some magic to export/import symbols from DLL's. Basically, if a class is to be used outside, it has to be exported in the header when compiling the library and imported in the header when compiling the application that uses the library. Sounds fun, eh? The standard way to accomplish this is to define a define thing as export/import based on compile swtiches. This is what I've done. See trunk/src/libamelia/ADefines.h for an example. I've committed this to the SVN a couple of weeks ago. In the meantime, I've been working on some other things too. One was, as I already mentioned, a slightly different event model. Actually, after I was done with it was not that different. Right now there is an AFilteredEvent class (inherits AEvent), which acts basically like the old AXmlEvent class. It contains a subset of events that passed a set of filters and a pointer to an AEvent instance that contains the entire subset of events. The cool part, I think, is that the filters are classes that can be added to AFilteredEvent in a sort of a linked list. For example, I've added a class to filter to jet type, miset type, particle type and pt cut. If you update one of those classes , then the AFilteredEvents associated with it (you can have the same filter on multiple subsets) will be automatically updated. I've also added a histogram plugin. To compile it, you'll need ROOT with Qt enabled. If you do not have that, CMake will skip the plugin. To use the histogram plugin, you go to AGeometry, load an event, create a track combination, add it to the table, right click its entry and select "Add to..". Then you're asked for the histogram name. After, you go back to the main menu, pick analysis and click one of the windows that appeared. It should display the histograms of the invariant masses of the added combinations. There you can change the binning and max/min. The next improvement to this plugin that I plan to add is a right-click menu to the 3D view of ageometry (so you can skip the table) and a way to histogram something else other than invariant mass. Do you have any other suggestions. Finally, I've made a small change to our QIrrWidget to improve it's performance. We used to redraw the scene every 30 milliseconds, which is a waste of time because most interaction is done with the Qt GUI. So I've added a check to redraw on OpenGL only if the camera has moved or something special triggered the redraw (ie: selecting a track, hiding modules). The same check is done (camera moved) when recalculating what parts of the detector to hide and how to set the camera speed. On my desktop, it definitely improves the interaction with the GUI. But let me know if you run into any problems... -- Cheers, Karol Krizka |