I would like to ask advice on what the best way to create an event display that contains multiple views. In context this is for a liquid argon TPC where an event consists of three 2D views of an interaction, which are then pieced together to form a 3D view.
Currently an event display exists with the 3D and 2D views all placed inside the same world volume. However, I would like to create four views, each with a unique world volume containing the 3D and three 2D views. I have attempted to use multiple TEveManagers for the same event, but this has been unsuccessful and results in a crash when I initialise a TEveManager that isn’t gEve.
Is it possible to use multiple TEveManager objects in this way? Any thoughts and suggestions on how I could achieve this final aim are welcomed.
Thank you for your quick response to my question assistance with this. I have imported the MultiView structure into the event display that already existed and am trying to get it to work as in the Alice event display.
While I can see that this struct would allow me to get the 3D event display and projections of that 2D event display to appear on the same display, is there a way to display totally different TEveElements from the same event? This is needed because the three 2D images produced from a LAr TPC are not just projections of the 3D event being displayed. The 3D event in this case is reconstructed from the three 2D views and, as the problem is over constrained, they will not be simple projections. Ideally I would like to plot four different TEveElements on a per event basis.
(As an analogy I believe my question is the same as asking, for a traditional detector, would it be possible to display only tracks in the detector on one event display and calorimeter hits on a display in an event display in a different tab?)
I’ve also made some progress with the MultiView.C. I can get the different projections of the 3D event only if the TEveElement added to the TEveManager (gEve) is a TEvePointSet. Can the projection manager handle other TEveElement objects such as TEveBoxSet?
Yes, you can put anything into any view … just put the objects directly into scenes that are attached into the view.
You’ve probably noticed the convention of having geometry scene (static objects that remain between events, typically simplified geometry outlines) and event scene (objects that belong to current event and need to be either re-initialized or re-created for every event).
Yes, box-set is not projectable … you can see which classes are projectable by looking at the class inheritance diagram and looking if the class or any of its sub-classes is derived from TEveProjectable. You can also look at the last override of virtual TEveElement::ProjectedClass(TEveProjection*) … this will tell you which eve class will hold the result of projection (the problem here is that sometimes rhoz and rphi projections need different result types, that’s why projection is an argument to the call).
Do you actually need rho-z and r-phi projections? Or you could actually get by with side views (with orthographic camera)? If you put the same TEveBoxSet into several scenes the selection/highlight will work correctly, too (i.e., hoovering over one box will highlight it in all the views (if you SetAlwaysSecSelect())).
Implementing 2d projections for box-set shouldn’t be too difficult for axis-aligned boxes … but would get complicated to support any “box” type (the cones and elliptic cones). I believe the best resulting class would be TEveQuadSet.
How many digits/boxes do you have? If there aren’t too many you could get by by using one TEveBox per your digi. TEveBox is projectable but you will lose the TEvePalette support for dynamic setting of thresholds and handling of under/overflow entries.
Thank you for both of your responses. As I don’t actually require projections I will abandon use of the projection manager for the time being, although once I have the 3D and 3 x 2D views setup I may revisit the projections. A typical LAr event can contain many 100s of hits so attempting a workaround using the TEveBox is unnecessary.
I think from your previous comments what I need to do is to create 4 scenes and add the different views I need to them. I will keep you updated on how this goes. Thank you again for your help.