Wiki » History » Version 10

« Previous - Version 10/16 (diff) - Next » - Current version
Andrew Blake, 12/16/2014 01:02 PM

LArPandora (last updated on 16th December 2014)

Primary authors: Andy Blake, John Marshall, Mark Thomson (Cambridge University)


The larpandora repository contains the interfaces and algorithms for running the Pandora reconstruction chain within LArSoft. Pandora provides a highly modular approach to event reconstruction in fine-grain detectors, using a series of focused algorithms to reconstruct the particle flow of an event. This Particle Flow approach has now been implemented for LAr-TPC event reconstruction within LArSoft. The Pandora reconstruction currently supports the MicroBooNE and LBNE 35t detector geometries.

The Pandora LAr-TPC reconstruction chain takes as its input 2D hits and builds a set of 3D particles. The reconstruction chain runs within the lightweight framework supplied by the Pandora Software Development Kit (SDK), which manages the algorithms and provides a set of APIs for controlled memory management. The LAr-TPC algorithms themselves are developed and housed within LArSoft, and are run inside LArSoft using an ART Producer module, which inputs recob::Hit objects and outputs recob::PFParticle objects. The aim is to return one reconstructed particle for each true final-state particle in the event. The reconstruction also returns the parent/daughter hierarchy of particle associations (representing the particle flow of the event), along with a series of ART associations to low-level objects (recob::Cluster, recob::Seed, recob::SpacePoint).

The following sections provide notes on the two packages within the larpandora repository, LArPandoraAlgorithms and LArPandoraInterface, which support the pattern recognition algorithms and ART/LArSoft inputs/outputs respectively. Also included are instructions for running the Pandora reconstruction within LArSoft.



This package houses all the LAr-TPC specific helper functions and pattern recognition algorithms (note that this package only depends on the underlying Pandora SDK and so can exist both inside and outside LArSoft). The package is currently divided into a number of sub-directories, corresponding to different aspects of LAr-TPC reconstruction (e.g. 2D and 3D).


This package contains the interface between ART/LArSoft and the Pandora SDK. The central component is an ART Producer module that reads in recob::Hit objects from the ART framework, passes them to the Pandora SDK for pattern recognition, and then writes the reconstructed proto-particles back to the ART framework as recob::PFParticle objects. The LArPandoraInterface package holds a number of additional Producer and Analyzer modules that manipulate and analyse the reconstructed recob::PFParticle objects. Also distributed in this packages are .fcl scripts for configuring and running the Producer modules, and a number of Pandora .xml steering files, which are loaded into Pandora by the Producer module and define the order and configuration of the pattern recognition algorithms.

Pandora SDK (Note: this external package is distributed with NuSoft).

This external package houses a lightweight framework for running pattern recognition algorithms and performing memory management operations. The Pandora SDK also supplies design-pattern algorithms and helper functions that are used in building the MicroBooNE and LBNE reconstruction chains. Note that the LAr-TPC specific algorithms and helpers live in the LArPandoraAlgorithms package of LArSoft.


Running the reconstruction

Taking an example for MicroBooNE, the LArPandoraInterface package in larpandora contains a script "runpandora_microboone.fcl" that can be used to process collections of reconstructed 2D hits. This script inputs these hits and runs the pattern recognition. It is run as follows:

lar -c runpandora_microboone.fcl /path/to/file/of/reconstructed/hits.root

For completeness, here is the current version of the runpandora_microboone.fcl file in full.

#include "services_microboone.fcl" 
#include "pandoramodules_microboone.fcl" 

process_name: LArPandora

### SERVICES ###
  message:      @local::standard_debug
  user:         @local::microboone_services

### INPUT ###
  module_type: RootInput

### MODULES ###
    pandora:    @local::microboone_pandora 

  reco: [pandora]

  trigger_paths: [reco]

Build instructions for Pandora SDK