HOWTO create a ROOT tree of detector hits and display event data with the tree

From GlueXWiki
Revision as of 11:19, 30 September 2014 by Staylor (Talk | contribs) (Looking at correlations)

Jump to: navigation, search

Getting started

The data in an evio file can be coverted into a ROOT tree by using the janaroot plugin. Suppose you want to look at the CDC hits in more detail. To do so, invoke the JANA framework using the following command line:

hd_ana -PPLUGINS=DAQ,TTab,janaroot file.evio -PAUTOACTIVATE=DCDCHit

The DAQ plugin converts the evio data into raw detector objects in memory. The TTab plugin applies the translation tables. The janaroot plugin fills a ROOT tree and writes it out to a file called janaroot.root in the current working directory. The -PAUTOACTIVATE command-line parameter invokes the code that produces the DCDCHit object in memory.

To look at the janaroot.root file, run root (root janaroot.root) and at the root command line invoke the browser (type TBrowser T; this will pop up another window). In the browser window, under ROOT files select janaroot.root, which gives you a list of branches on the tree. In the example below I have selected the distribution of the number of hits N in the CDC:

TBrowserView.png

In addition to the DCDCHit data, all the raw event data types (Df250PulseIntegral, etc.) are available for perusal.

Looking at correlations

A leaf quantity can be plotted against another leaf quantity in a given branch using the root command line interface. For example, to look at time in the CDC as function of charge for all straws, type

DCDCHit->Draw("t:q");

TBrowserView t vs q.png

You can apply cuts to the plotted distribution by using the second argument of the Draw method. For example, to restrict the plot above to single straw in a single ring, type

DCDCHit->Draw("t:q","ring==12&&straw==10","col");

In this example I used the third (optional) argument of Draw to use the color drawing method.

TBrowserView t vs q with cut.png

To look at correlations between variables in different branches of the tree, use the special event branch. For example, to plot FDC TDC times vs times reported by the FADC, type

event->Draw("DFDCWireDigiHit.time:DFDCCathodeDigiHit.pulse_time","DFDCCathodeDigiHit.pulse_time>0.","col");

TBrowserView event example.png

Note that you must explicitly reference each branch you are using in the Draw arguments.