You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 122 Next »

Overview

This tutorial will show you how to process SLIC output files with the Pandora PFA New package, currently the best performing PFA algorithm, in order to produce Particle Flow Objects (PFOs) (also called ReconstructedParticles) for analysis. It covers building and installing a slic-specific frontend called slicPandora and all its dependencies. Then it will go through the steps for processing slic output using LCSim in order to prepare it for Pandora. Finally, it shows how to run slicPandora using these events. There is also a note on how to generate Pandora detector XML files from compact descriptions.

SlicPandora Build Procedures

Preliminaries

A Linux or Unix platform is assumed and the bash shell is used for all command-line instructions. The actual setup procedures have been tested on Redhat Enterprise Linux 5.5 (Tikanga).

You will need the standard GNU tools installed, e.g. Make, gcc/g++, etc.

The cvs and svn command-line tools are also required for obtaining project source codes.

The cmake tool must be installed, as it is used to build most of the dependencies.

CMake Version

The ilcutils package requires cmake 2.8.2 or greater.

Dependencies

The slicPandora package currently has the following dependencies.

Package

Version

Get It

slicPandora

head

SLAC cvs

lcio

v01-51

SLAC cvs

PandoraPFANew

v00-05

Pandora SVN

ROOT

5.26 or greater

Download ROOT

PandoraMonitoring

v00-04

PandoraMonitoring SVN

ilcutil

head

ilcutil SVN

cmake

2.8.2 or greater

cmake.org

Quick Build Instructions

Pandora Version

Old versions of PandoraPFANew will not work, due to changes and additions to its API. It is recommended to use the last tagged version. The build instructions on this page use tagged versions of PandoraPFANew and PandoraMonitoring. Commands for using the trunk versions instead are listed as comments.

These commands can be executed to produce a working slicPandora, using a shell such as bash. Start by making a directory
where Pandora will be built. The following commands should then be executed in order from this working directory.

You need to have a preexisting installation of ROOT, which is not covered here.

# ROOT
export ROOTSYS=/path/to/root/directory
export PATH=$ROOTSYS/bin:$PATH

# Build ilcutil
svn co http://svnsrv.desy.de/public/ilctools/ilcutil/trunk ilcutil
cd ilcutil
cmake .
make install
export ILCUTIL_DIR=`pwd`
# Back to work dir.
cd ..

# Checkout PandoraPFANew
# Head checkout.
#svn co http://svnsrv.desy.de/public/PandoraPFANew/PandoraPFANew/trunk PandoraPFANew
# Use tag v00-05.
svn co http://svnsrv.desy.de/public/PandoraPFANew/PandoraPFANew/tags/v00-05 PandoraPFANew
export PandoraPFANew_DIR=`pwd`/PandoraPFANew

# Build PandoraMonitoring
#Head checkout.
#svn co http://svnsrv.desy.de/public/PandoraPFANew/PandoraMonitoring/trunk PandoraMonitoring
svn co http://svnsrv.desy.de/public/PandoraPFANew/PandoraMonitoring/tags/v00-04 PandoraMonitoring
cd PandoraMonitoring
mkdir build
cd build
cmake -DROOT_DIR=$ROOTSYS -DILCUTIL_DIR=$ILCUTIL_DIR -DPandoraPFANew_DIR=$PandoraPFANew_DIR ..
make install
cd ..
export PandoraMonitoring_DIR=`pwd`
cd ..

# Setup Java
export JAVA_HOME=/path/to/java/directory
export PATH=$JAVA_HOME/bin:$PATH

# Build LCIO
cvs -d :pserver:anonymous@cvs.freehep.org:/cvs/lcd co -r v01-51 lcio
cd lcio
mkdir build
cd build
cmake -DINSTALL_DOC=OFF -DBUILD_32BIT_COMPATIBLE=OFF ..
make install
cd ..
export LCIO_DIR=`pwd`
cd ..

# Build PandoraPFANew
cd PandoraPFANew
mkdir build
cd build
cmake -DILCUTIL_DIR=$ILCUTIL_DIR -DPandoraMonitoring_DIR=$PandoraMonitoring_DIR -DROOT_DIR=$ROOTSYS ..
make install
cd ../..

# Build slicPandora
cvs -d :pserver:anonymous@cvs.freehep.org:/cvs/lcd co slicPandora
cd slicPandora
mkdir build
cd build
cmake -DBUILD_32BIT_COMPATIBLE=OFF -DROOT_DIR=$ROOTSYS -DCMAKE_MODULE_PATH=$ILCUTIL_DIR/cmakemodules \
-DLCIO_DIR=$LCIO_DIR -DPandoraPFANew_DIR=$PandoraPFANew_DIR -DPandoraMonitoring_DIR=$PandoraMonitoring_DIR ..
make install

The slicPandora project should now be built successfully with the binary installed to slicPandora/bin/PandoraFrontend.

If compilation or linking errors occur, then check that the dependencies were installed successfully.

PandoraFrontend

The PandoraFrontend binary provides a simple frontend to slicPandora.

The syntax of this command is the following.

./bin/PandoraFrontend geometry.xml pandoraSettings.xml inputEvents.slcio reconOutput.slcio [nevents]

The nevents command is optional, but all other arguments are required and must be supplied in order.

For example, to repeat the results of the JobManagerTest using PandoraFrontend, execute this command.

./bin/PandoraFrontend ./examples/sidloi3_pandora.xml ./examples/PandoraSettingsRelease.xml ./input.slcio ./pandoraRecon.slcio 2

The above command requires that the input events were generated in the sidloi3 detector and that a symlink has been setup pointing from "input.slcio" to your input event file.

Running Events in SlicPandora

Steps

The essential steps to generating events with SlicPandora are as follows.

1) Use SLIC to generate an LCIO file.
2) Add tracks to the event by running a tracking package such as LCSim's SeedTracker.
3) Add the TrackState collections so slicPandora knows the Track momenta. (can be combined with #2 into one LCSim job)
4) Run SlicPandora with the LCSim output, a Pandora XML geometry generated by GeomConverter, and a Pandora settings XML file.

These steps are covered in more detail below.

Generating Tracks Using LCSim

Before the simulated LCIO events can be run through Pandora, the LCSim tracking needs to run in order to add a collection of tracks.

If you don't know how LCSim batch mode works, then review the LCSim XML instructions.

Tracking Steering File

Below is an example XML steering file for LCSim to generate the Tracks and TrackStates for the sidloi3 detector.

<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
        xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
    <inputFiles>
        <file>./pi_Theta90_10GeV-0-1000_SLIC-v2r8p3_geant4-v9r3p1_QGSP_BERT_sidloi3.slcio</file>
    </inputFiles>
    <control>
        <numberOfEvents>1000</numberOfEvents>
        <verbose>true</verbose>
        <printSystemProperties>false</printSystemProperties>
    </control>
    <execute>
        <driver name="EventMarkerDriver"/>
        <driver name="CalInfoDriver"/>
        <driver name="MainTrackingDriver"/>
        <driver name="TrackStateDriver"/>
        <driver name="Writer"/>
    </execute>
    <drivers>
        <driver name="CalInfoDriver"
                type="org.lcsim.recon.util.CalInfoDriver"/>
        <driver name="MainTrackingDriver"
                type="org.lcsim.recon.tracking.seedtracker.trackingdrivers.sidloi2.MainTrackingDriver"/>
        <driver name="EventMarkerDriver"
                type="org.lcsim.job.EventMarkerDriver">
            <eventInterval>10</eventInterval>
        </driver>
        <driver name="TrackStateDriver"
                type="org.lcsim.recon.tracking.seedtracker.SeedTrackerTrackStateDriver"/>
        <driver name="Writer"
                type="org.lcsim.util.loop.LCIODriver">
            <outputFilePath>./pi_Theta90_10GeV-0-1000_SLIC-v2r8p3_geant4-v9r3p1_QGSP_BERT_sidloi3_lcsimTracking.slcio</outputFilePath>
        </driver>
    </drivers>
</lcsim>

The input files section needs to be changed to point to your local simulated SLIC events, and the outputFilePath would also be changed to have a name based on the input file. You can easily make a script to automate this.

More LCSim Tracking Details

The LCSim job must accomplish three tasks before the events can be read into Pandora, in this order.

  1. Generation of a Tracks collection using an appropriate Seed Tracker Driver.
  2. Adding TrackState collections using the SeedTrackerTrackState Driver.
  3. Writing out the necessary LCIO collections to a data file to be read into Pandora.

To generate the Tracks, a top-level Driver should be run that covers subdetector setup, digitization, and track finding and fitting. This top-level Driver will likely be specific to a certain detector design.

For instance, this simple Driver definition is sufficient to generate tracks in the sidloi3 detector.

 <driver name="MainTrackingDriver"
         type="org.lcsim.recon.tracking.seedtracker.trackingdrivers.sidloi3.MainTrackingDriver"/>

Three TrackState collections need to be added to the LCIO output to provide Pandora with track information at the track origins, the ECal, and the end point.

The following Driver in the Seed Tracker package will add these necessary TrackState collections. This Driver also requires that another Driver be run beforehand to cache Calorimeter subdetector data.

<driver name="CalInfoDriver"
        type="org.lcsim.recon.util.CalInfoDriver"/>
<driver name="TrackStateDriver"
        type="org.lcsim.recon.tracking.seedtracker.SeedTrackerTrackStateDriver"/>

Finally, an LCIODriver should be added to the end of the event processing to output the appropriate collections.

<driver name="Writer"
        type="org.lcsim.util.loop.LCIODriver">
            <outputFilePath>OUTPUT_FILE</outputFilePath>
</driver>

The OUTPUT_FILE argument needs to be replaced with the actual name of the LCIO output file to be fed to Pandora.

Once these Drivers are defined in the <driver> section of your LCSim XML file, the execution order should look like the following.

<execute>
    <driver name="CalInfoDriver"/>
    <driver name="MainTrackingDriver"/>
    <driver name="TrackStateDriver"/>
    <driver name="Writer"/>
</execute>

Now that tracks and track states have been added to the events, we are ready to use Pandora itself.

Using GeomConverter to Output the Pandora Geometry Format

The GeomConverter package can convert from compact detector descriptions to various output formats, including one for input to slicPandora. (Installation of GeomConverter is not covered here.)

Use this command from your GeomConverter root directory to generate a Pandora geometry file from a compact detector description.

java -jar ./target/GeomConverter-1.10-SNAPSHOT-bin.jar -o pandora ./myCompactDetector.xml ./myPandoraGeom.xml

This will write out a Pandora XML file to "myPandoraGeom.xml" from the compact description in "myCompactDetector.xml".

  • No labels