Panoramix : F.A.Q. and First Manual

Welcome to the first Panoramix Wiki page. This page is to be used as a F.A.Q. where everybody can add any question or answer he has. The goal is to create some kind of documentation for this software.

Any comments and modifications are welcome... Don't forget to sign when adding or modifying an element.

Useful links

http://lhcb-comp.web.cern.ch/lhcb%2Dcomp/Frameworks/Visualization/

As many scripts are written in Python, here is the link to Python main page : http://www.python.org/

Contact persons at CERN

Thomas Ruf : Mail


General features

History

  • When was it implemented for the first time ?

It was on October 2001, by Guy Barrand : Mail

How to start ?

It is strongly recommended to install the LHCb software locally, see http://lhcb-comp.web.cern.ch/lhcb-comp/Support/html/NEW_Install.htm .

Speciall installation instructions when using Windows can be found here: http://lhcb-reconstruction.web.cern.ch/lhcb-reconstruction/Panoramix/local_installation.htm

Starting from version v15r4, a python script will help you to configure Panoramix for your use case. You only need to do:

SetupProject Panoramix v15r4
python $myPanoramix -h : will give you some help
python $myPanoramix -f input.dst -x none : most common use case 
for windows, replace $myPanoramix with %myPanoramix% 

-- ThomasRuf - 4 June 2007

Technical problems for Panoramix v*

How to retrieve something in TES ?

First thing to know is that the containers has only addresses to the particles. It's some kind of array of addresses.

In Panoramix, it is really easy to retrieve any information in TES : do it with the command

evt['Event/Phys/...']
if your container is there... -- SposS - 16 Aug 2005

How do we know what can be done or what information can we get from something in TES ?

It is possible to get this information typing :

dir(evt['Phys/...'])
For example, for a container containing particles we could get :
>>> m=evt['Phys/Wiki/Particles']
>>> dir(m)
['DataObject', '__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__',
 '__module__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__',
 '__weakref__', '__zero__', '_theObject', 'add', 'addRef', 'begin', 'clID', 'classID', 'clear', 
 'configureDirectAccess', 'containedObject', 'containedObjects', 'empty', 'end', 'eraseIter', 'eraseKey', 
 'eraseObj', 'eraseRange', 'fillStream', 'index', 'insert', 'insertWithKey', 'linkMgr', 'name', 'numberOfObjects', 
 'object', 'refCount', 'registry', 'release', 'remove', 'reserve', 'serialize', 'setRegistry', 'setVersion', 'size', 
 'version']
>>>
And if we want to have access to a specific particle, it is done by this command :
>>> evt['Phys/Wiki/Particles'].containedObjects(m)
for the m+1 particle in the list. It is also possible to make a loop on the container, and the syntax is not different from a normal loop in python.

-- SposS - 16 Aug 2005

What are the instruction lines needed to display a track ?

In a python script, you need :

session.setParameter('Particle.location','/Event/Phys/Wiki/Particles')
data_collect('Particle','')
data_visualize()
-- SposS - 16 Aug 2005

It is also possible to make cuts on the selection of the particles we want to display :

data_collect('Particle','(mass>1000)')
Or for another example :
data_collect('MCParticle','(particle==\'pi+\'||particle==\'pi-\'||particle==\'K-\'||particle==\'K+\')&&(bcflag>9)')
-- SposS - 18 Aug 2005

What about the vertices ?

It is the same :

session.setParameter('Particle.location','/Event/Phys/Wiki/Vertices')
data_collect('Vertex','')
data_visualize()
-- SposS - 16 Aug 2005

What is the code to be used to get the real name of the particles and not their ID number when printing info on the tracks ?

Just add this line in your script :

part = appMgr.partSvc()
part.findByStdHepID(cond.containedObject(m).particleID().pid()).particle()
Where you chang cond for your container, for example evt['Phys/Wiki/Particles'].

-- SposS - 18 Aug 2005

How to change the color of a track ?

Just use this line :
session_setColor('blue')

You can also use :

session.setParameter('modeling.color','R G B')
You have to define the three arguments R G B with a number between 0 and 1. -- SposS - 15 Aug 2005

See question about modeling.color. -- SposS - 17 Aug 2005

What is the difference between session_setColor('yellow') and session.setParameter('modeling.color','yellow') ?

Is it possible to change the style of the line ?

Yes, by adding this line before drawing :

session.setParameter('modeling.type','wireFrame')
-- SposS - 16 Aug 2005

Is there a list of available arguments for the 'modeling' ?

The lineWidth argument receives an integer as option, and it defined the width of the line which will be drawn after this line. It is in pixels. -- SposS - 16 Aug 2005

What are the possible options for the modeling.showText ?

It can be set to true or false, and it enables or disables the printing of the particle ID for example. if it's enable, it is possible to define the position of the text, and the modeling argument is posText (modeling.posText), wich can be set to an integer value. The size of the text can be defined with sizeText (modeling.sizeText). -- SposS - 16 Aug 2005

What are the possible options for the modeling.type ?

It defines the style of line we want. The available options are : solid, wireframe -- SposS - 16 Aug 2005

What are the possible options for the modeling.color ?

The available colors are :

greenyellow, yellow, goldenrod, gold, orange, maroon, red, indianred, darkred, orangered, firebrick, salmon, sienna, pink, magenta, violetred, mediumvioletred, thistle, orchid, mediumorchid, darkorchid, purple, plum, violet, blueviolet, cadetblue, cornflowerblue, darkslateblue, mediumslateblue, slateblue, midnightblue, darkblue, navyblue, navy, blue, coral, cyan, skyblue, lightblue, steelblue, lightsteelblue, turquoise, mediumturquoise, darkturquoise, mediumaquamarine, aquamarine, seagreen, mediumseagreen, darkseagreen, green, darkgreen, forestgreen, mediumspringgreen, springgreen, palegreen, limegreen, yellowgreen, darkolivegreen, olivegreen, khaki, brown, tan, white, wheat, black, darkslategrey, lightgrey, grey, dimgrey, ...

-- SposS - 18 Aug 2005

What are the possible options for the modeling.transparency ?

A number between 0 and 1. -- SposS - 16 Aug 2005

What is the modeling.useVisSvc used for ?

What is the modeling.magneticField used for ?

What is the modeling.what used for ?

What is the modeling.opened used for ?

This parameter is a boolean (true or false) used when displaying detector elements : if set to true, the volume will be opened, that means that we will be able to see what is inside the element. For example, we could see the beam pipe through the ECAL...

What is the modeling.showCurve used for ?

What is the modeling.useExtrapolator used for ?

Orientation of the camera ?

In my Python script I have this line of code :

region.setParameter('camera','height 10 position 0 0 90 orientation -0.513 0.688 0.513 1.936')

The height defines the radius of a sphere which is centered on position, and the 3 first parameters of the orientation define a vector in the initial frame, and the last parameter is an angle of rotation around this vector. For example, this combination :

height 10 position 0 0 0 orientation 0 1 0 3.1415
sets the position of the camera on a cercle of radius 10 (height) centered on 0 0 0 (position) and on a line in a plane perpendicular to the vector (here coordinates are 0 1 0 (y axis)) going in the direction defined by the angle, here 3.1415. The origin for the angle depends on the orientation of the initial frame. For this case, as the vector points to y, the rotation is on the x z plane. The rotation 0 would put the camera on the +z axis looking toward the point defined by position, and in our case, it's on the -z axis as we are turning around the vector with an angle of approximatly pi.

-- SposS - 15 Aug 2005 and 25 Aug 2005

Problem between rotate and move

Sometimes when using rotate/move mode, when pressing the control button and clicking on the mouse button, we still keep the rotation function and not the move mode. To avoid this, a solution is to press control, click once without moving, and press the mouse button again. Then the move mode should be fine.

Is it possible to display different regions on the same page ?

Yes it is possible, and some examples are in the $PANORAMIXROOT/examples/Python : truf_velo3dview_setup.py

-- SposS - 16 Aug 2005 and 26 Aug 2005

Is it possible to visualize Flavour Tagging information with Panoramix ?

Yes it is possible, but the files have not yet been added in the releases. You can ask Thomas Ruf for the files to be added in the examples folder and in the SoEvent folder. See also FlavourTagging

-- SposS - 16 Aug 2005

How do we select the first event to be run from a file?

The following piece of code needs to be added in Panoramix.opts just before the event file name:

EventSelector.FirstEvent = 'number'
The number is the position of the event in the particular file and NOT the event number.

-- JamieTattersall - 30 Aug 2005

Technical problems for Panoramix v11r* (RTTC data)

My general option file used in Panoramix v9r5 doesn't work anymore in Panoramix v11r1, why ?

It's because there was some major modification in the GAUDI software architecture (arrival of the RTTC data), and some package changed their name, and Panoramix does not depend anymore on DaVinci. For few details about the modification in the architecture, see : P.Koppenburg transparencies -- SposS - 16 Aug 2005

How do we use Panoramix in Python mode ?

It's same as in Panoramix v9r*. -- SposS - 16 Aug 2005

How do I find the digi file that contains an event seen in a RAW file ?

This information is obtainable from the individual event number and the run number. The digi files come in the format 0.....'run'_0....'evt'_8.digi' with each of the number sections containing 8 digits. To find the run is simply the first three numbers of the run number. e.g. 84702 -> 847 For the evt it is a bit more complicated: Digi files contain either 500 or 1000 events (to my knowledge) and by applying this formula to the event number (('eventNo'-1)/containedNo)+1 the file evt can be found (rounding down to the integer). E.g 4111104 -> 4112 (when the digi files contained 1000 events). So in my example, the digi file would be: 00000847_00004112_8.digi

-- JamieTattersall - 30 Aug 2005

Printouts available in Panoramix

How do we print the trigger properties of an event (greater than v11r4)?

Under the menu 'Examples', go to 'Trigger' and then 'Trigger Properties'. This will print all the different trigger decisions and the important properties that were used to make the decision. If the HLT is exclusive it will also show the general algorithm used and its particular properties.

How do we print the vertex information of different reconstructed vertices and the associated MC vertex (greater than v11r4)?

Under the menu 'Examples', go to 'Vertex' and then 'Vertex Information'. This will print the position and error of the various reconstructed vertices. In addition it will also print the position of the actual MC vertex and the kind of collision that created the vertex.

How do we print a list of the algorithms in use by Panoramix and their properties?

Under the menu 'Examples', go to 'Dump' and then 'Dump Settings of Algorithms' This dumps all the algorithm information into a text file called 'alg_propeties.txt' in $PANORAMIXROOT/examples/python

-- JamieTattersall - 30 Aug 2005

What does the dump raw buffer mean?

Altering and adding items in Panoramix

How do I add new item into the Panoramix menu bar?

The easiest way to add a new option is alter or add a feature in the 'Examples' section. These files can be found at $PANORAMIXROOT/examples/python, e.g 'Examples_detviews.onx'. The best way is to copy and paste an existing menu item and change the name and file it refers to. Please note that the file must be saved and Panoramix reloaded before the changes will take effect.

How can I add a new feature to Panoramix?

Anything that can be written in Python script can be easily added into Panoramix. Simply refer to the script from the menu bar as shown above and the script will run. For working example scripts look in $PANORAMIXROOT/examples/python. A nice feature of the python script is that changes can be made and tested without needing Panoramix to reload. This makes debugging very quick and easy.

-- JamieTattersall - 30 Aug 2005

Edit | Attach | Watch | Print version | History: r21 < r20 < r19 < r18 < r17 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r21 - 2007-06-04 - ThomasRuf
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    LHCb All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback